リトコが団結

少し前にご玹介させおいただきたした スマヌトサヌモスタット。 この蚘事は元々、ファヌムりェアず制埡システムのデモンストレヌションを目的ずしたものでした。 しかし、サヌモスタットのロゞックず実装内容を説明するには、党䜓の抂念を党䜓的に抂説する必芁がありたす。

リトコが団結

自動化に぀いお

埓来、すべおの自動化は次の XNUMX ぀のカテゎリに分類できたす。
カテゎリヌ1 — 個別の「スマヌト」デバむス。 さたざたなメヌカヌから電球やティヌポットなどを賌入したす。 長所: 各デバむスは機胜を拡匵し、快適性を高めたす。 短所: 新しいメヌカヌごずに独自のアプリケヌションが必芁です。 異なるメヌカヌのデバむスのプロトコルは、盞互に互換性がないこずがよくありたす。

カテゎリヌ2 — シングルボヌド PC たたは x86 互換のむンストヌル。 これにより、コンピュヌティング胜力の制限がなくなり、MajorDoMo たたはスマヌト ホヌムを管理するためのその他のサヌバヌ ディストリビュヌションがこのマシンにむンストヌルされたす。 したがっお、ほずんどのメヌカヌのデバむスは単䞀の情報空間に接続されおいたす。 それらの。 スマヌトホヌム甚の独自のサヌバヌが衚瀺されたす。 長所: 単䞀センタヌでの互換性により、管理機胜が匷化されたす。 短所: サヌバヌに障害が発生するず、システム党䜓がステヌゞ 1、぀たりステヌゞ XNUMX に戻りたす。 断片化したり、圹に立たなくなったりしたす。

カテゎリヌ3 - 最もハヌドコアなオプション。 修理段階では、すべおの通信が敷蚭され、すべおのシステムが二重化されたす。 長所: すべおが完璧になるず、家は真にスマヌトになりたす。 欠点: カテゎリヌ 1 および 2 に比べお非垞に高䟡で、事前にすべおを怜蚎し、あらゆる现郚を考慮する必芁がありたす。

ほずんどのナヌザヌはオプション 3 を遞択し、その埌スムヌズにオプション XNUMX に進みたす。 そしお、最も持続的なものはオプション XNUMX に到達したす。

しかし、分散システムず呌ぶこずができるオプションがありたす。぀たり、個々のデバむスがサヌバヌずクラむアントの䞡方になりたす。 本質的に、これはオプション 1 ずオプション 2 を組み合わせお怜蚎する詊みです。䞡方の長所をすべお取り入れ、短所を排陀しお、黄金比を芋぀けたす。

おそらく、そのようなオプションはすでに開発されおいるず誰かが蚀うでしょう。 しかし、そのような決定は狭い範囲に焊点を圓おおいたす。 プログラミングに詳しい人向け。 私たちの目暙は、゚ンドデバむスの圢でも、既存のデバむスをシステムに統合する圢でも、このような分散システムぞの参入障壁を䞋げるこずです。 サヌモスタットの堎合、ナヌザヌは叀いサヌモスタットを取り倖し、スマヌトサヌモスタットを取り付け、既存のセンサヌをそれに接続するだけです。 远加の手順は必芁ありたせん。

䟋を䜿甚しおシステムぞの統合を芋おみたしょう。

ネットワヌク䞊に 8 ぀の Sonoff モゞュヌルがあるず想像しおみたしょう。 䞀郚のナヌザヌにずっおは、Sonoff クラりド (カテゎリ 1) 経由の制埡で十分です。 䞀郚のファヌムりェアはサヌドパヌティのファヌムりェアを䜿甚し始め、スムヌズにカテゎリ 2 に移行したす。サヌドパヌティのファヌムりェアの倧郚分は、MQTT サヌバヌにデヌタを転送するずいう同じ原理で動䜜したす。 OpenHub、Majordomo、たたはその他のものは、むンタヌネットたたはロヌカル ネットワヌク䞊にある単䞀の情報空間に異皮のデバむスを統合するずいう XNUMX ぀の目的を果たしたす。 したがっお、サヌバヌの存圚は必須です。 ここで䞻な問題が発生したす。サヌバヌに障害が発生するず、システム党䜓が自埋的に動䜜を停止したす。 これを防ぐために、システムはより耇雑になり、サヌバヌ障害が発生した堎合の自動化を二重化する手動制埡方法が远加されたす。

私たちは、各デバむスが自立するずいう別の道を遞びたした。 したがっお、サヌバヌは決定的な圹割を果たさず、機胜を拡匵するだけです。

思考実隓に戻りたしょう。 同じ 8 ぀の Sonoff モゞュヌルをもう䞀床䜿甚しお、Lytko ファヌムりェアをそれらにむンストヌルしおみたしょう。 すべおの Lytko ファヌムりェアにはこの機胜がありたす SSDP。 SSDP は、ネットワヌク サヌビスのアドバタむズず怜出のためのむンタヌネット プロトコル スむヌトに基づくネットワヌク プロトコルです。 リク゚ストに察する応答は、暙準たたは拡匵のいずれかになりたす。 この回答には、暙準機胜に加えお、ネットワヌク䞊のデバむスのリストの䜜成が含たれおいたす。 したがっお、デバむス自䜓がお互いを芋぀け、それぞれがそのようなリストを持぀こずになりたす。 SSDP シヌトの䟋:

"ssdpList": 
	{
		"id": 94967291,  
		"ip": "192.168.x.x",
                "type": "thermostat"
	}, 
	{
		"id": 94967282,
		"ip": "192.168.x.x",
                "type": "thermostat"
	}

䟋からわかるように、リストにはデバむス ID、ネットワヌク䞊の IP アドレス、ナニット タむプ (この堎合は Sonoff ベヌスのサヌモスタット) が含たれおいたす。 このリストは XNUMX 分ごずに曎新されたす (この期間は、ネットワヌク䞊のデバむス数の動的な倉化に察応するには十分です)。 このようにしお、ナヌザヌのアクションを必芁ずせずに、デバむスの远加、倉曎、無効化を远跡したす。 このリストはブラりザヌたたはモバむル アプリケヌションに送信され、スクリプト自䜓が指定された数のブロックを含むペヌゞを生成したす。 各ブロックは XNUMX ぀のデバむス/センサヌ/コントロヌラヌに察応したす。 芖芚的にはリストは次のようになりたす。

リトコが団結

しかし、他の無線センサヌが cc8266 (ZigBee) たたは nrf32 (MySensors) 経由で esp2530/esp24 に接続されおいる堎合はどうなるでしょうか?

プロゞェクトに぀いお

垂堎にはさたざたな分散システムが存圚したす。 圓瀟のシステムを䜿甚するず、最も人気のあるシステムず統合できたす。

以䞋は、さたざたなメヌカヌ間の非互換性に関する状況を䜕らかの圢で倉えようずしおいるプロゞェクトです。 これは、䟋えば、 SLSゲヌトりェむ, マむセンサヌ たたは ZESP32. ZigBee2MQTT は MQTT サヌバヌに関連付けられおいるため、この䟋には適しおいたせん。

MySensors を実装するための 8266 ぀のオプションは、ESP32 に基づくゲヌトりェむです。 残りの䟋は ESPXNUMX 䞊にありたす。 そしお、それらの䞭で、デバむスの怜出ずリストの䜜成ずいう動䜜原理を実装できたす。

別の思考実隓をしおみたしょう。 ZESP32 ゲヌトりェむ、SLS ゲヌトりェむ、たたは MySensors を䜿甚しおいたす。 それらを単䞀の情報空間に組み合わせるにはどうすればよいでしょうか? これらのゲヌトりェむの暙準機胜にSSDPプロトコルラむブラリを远加したす。 SSDP 経由でこのコントロヌラヌにアクセスするず、接続されおいるデバむスのリストが暙準応答に远加されたす。 この情報に基づいお、ブラりザはペヌゞを生成したす。 䞀般的には次のようになりたす。

リトコが団結
りェブむンタヌフェヌス

リトコが団結
PWAアプリケヌション

"ssdpList": 
{
   "id": 94967291, // уМОкальМый ОЎеМтОфОкатПр устрПйства
   "ip": "192.168.x.x", // ip аЎрес в сетО
   "type": "thermostat" // тОп устрПйства
},
{
   "id": 94967292,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{
   "id": 94967293,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{  
   "id": 13587532, 
   "type": "switch"  
},
{  
   "id": 98412557, 
   "type": "smoke"
},
{  
   "id": 57995113, 
   "type": "contact_sensor"
},
{  
   "id": 74123668,
   "type": "temperature_humidity_pressure_sensor"
},
{
    "id": 74621883, 
    "type": "temperature_humidity_sensor"
}

この䟋は、デバむスが互いに独立しお远加されるこずを瀺しおいたす。 独自の IP アドレスを持぀ 3 ぀のサヌモスタットず、䞀意の ID を持぀ 5 ぀の異なるセンサヌが接続されおいたす。 センサヌが Wi-Fi ネットワヌクに接続されおいる堎合、センサヌには独自の IP が割り圓おられ、ゲヌトりェむに接続されおいる堎合、デバむスの IP アドレスはゲヌトりェむの IP アドレスになりたす。

デバむスずの通信には WebSocket を䜿甚したす。 これにより、リク゚ストを取埗する堎合に比べおリ゜ヌスコストを最小限に抑え、接続時や倉曎時に動的に情報を取埗できたす。

デヌタは、サヌバヌを経由せず、ブロックが属するデバむスから盎接取埗されたす。 したがっお、いずれかのデバむスに障害が発生しおも、システムは動䜜を継続したす。 Web むンタヌフェむスでは、リストに芋぀からないデバむスが衚瀺されたせん。 ただし、玛倱に関する信号は、必芁に応じお、ナヌザヌのアプリケヌションに通知の圢で送信されたす。

このアプロヌチを実装する最初の詊みは、PWA アプリケヌションでした。 これにより、ブロックベヌスをナヌザヌのデバむスに保存し、必芁なデヌタのみをリク゚ストするこずができたす。 ただし、構造の特殊性により、このオプションは䞍完党です。 そしお、解決策は XNUMX ぀だけあり、Android および IOS 甚のネむティブ アプリケヌションが珟圚掻発に開発されおいたす。 デフォルトでは、アプリケヌションは内郚ネットワヌク䞊でのみ動䜜したす。 必芁に応じお、すべおを倖郚コントロヌルに転送できたす。 そのため、ナヌザヌがロヌカル ネットワヌクを離れるず、アプリケヌションは自動的にクラりドに切り替わりたす。

倖郚制埡 - 完党なペヌゞ耇補。 ペヌゞがアクティブになるず、ナヌザヌはサヌバヌにログむンし、個人アカりントを通じおデバむスを管理できるようになりたす。 したがっお、サヌバヌの機胜が拡匵され、ポヌト転送や専甚 IP に瞛られずに、倖出先からデバむスを管理できるようになりたす。

したがっお、䞊蚘のオプションにはサヌバヌ アプロヌチの欠点がなく、新しいデバむスを接続する際の柔軟性ずいう圢で倚くの利点もありたす。

サヌモスタットに぀いお

䟋ずしおサヌモスタットを䜿甚しお制埡システムを芋おみたしょう。

提䟛された

  1. 各サヌモスタットの枩床制埡 (別個のブロックずしお衚瀺)。
  2. サヌモスタットの動䜜スケゞュヌルを蚭定したす朝、昌、倕方、倜。
  3. Wi-Fi ネットワヌクを遞択し、デバむスをそれに接続したす。
  4. デバむスを「無線で」曎新したす。
  5. MQTT のセットアップ;
  6. デバむスが接続されおいるネットワヌクを蚭定したす。

リトコが団結

Web むンタヌフェヌスを介した制埡に加えお、ディスプレむをクリックするずいう埓来のむンタヌフェヌスも提䟛したした。 Nextion NX3224T024 2.4 むンチ モニタヌが搭茉されおいたす。 この遞択は、デバむスの操䜜の容易さから圌に䞋されたした。 しかし、私たちは STM32 に基づいお独自のモニタヌを開発しおいたす。 その機胜は Nextion より劣っおいたせんが、コストが安くなり、デバむスの最終䟡栌にプラスの圱響を䞎えるでしょう。

リトコが団結

他の自尊心のあるサヌモスタット スクリヌンず同様に、Nextion は次のこずができたす。

  • ナヌザヌが必芁ずする枩床を蚭定したす (右偎のボタンを䜿甚)。
  • スケゞュヌルされた動䜜モヌドをオンたたはオフにしたす (ボタン H)。
  • リレヌ動䜜を衚瀺したす巊偎の矢印。
  • チャむルドプロテクション機胜を備えおいたすロックが解陀されるたで物理的なクリックはブロックされたす。
  • WiFi 信号匷床を衚瀺したす。

さらに、モニタヌを䜿甚するず、次のこずが可胜になりたす。

  • ナヌザヌが取り付けたセンサヌの皮類を遞択したす。
  • チャむルドロック機胜を管理したす。
  • ファヌムりェアを曎新したす。

リトコが団結

WiFi バヌをクリックするず、接続されおいるネットワヌクに関する情報が衚瀺されたす。 QR コヌドは、HomeKit ファヌムりェアでデバむスをペアリングするために䜿甚されたす。

リトコが団結

ディスプレむを操䜜するデモ:

リトコが団結

私たちが開発したのは、 デモペヌゞ XNUMX ぀のサヌモスタットが接続されおいたす。

「サヌモスタットの䜕が特別なのですか?」ず疑問に思うかもしれたせん。 珟圚、Wi-Fi機胜、スケゞュヌル運転、タッチコントロヌルを備えたサヌモスタットが数倚く販売されおいたす。 たた、愛奜家は、最も人気のあるスマヌト ホヌム システム (Majordomo、HomeAssistant など) ず察話するためのモゞュヌルを䜜成したした。

圓瀟のサヌモスタットはそのようなシステムず互換性があり、䞊蚘のすべおを備えおいたす。 しかし、特城的なのは、システムの柔軟性のおかげで、サヌモスタットが垞に改良されおいるこずです。 アップデヌトのたびに機胜が拡匵されたす。 (スケゞュヌルに埓った) システム管理の暙準的な方法に、適応的な方法を远加したす。 このアプリケヌションを䜿甚するず、ナヌザヌの地理䜍眮情報を取埗できたす。 このおかげで、システムはその堎所に応じお動䜜モヌドを動的に倉曎したす。 たた、倩気モゞュヌルを䜿甚するず、気象条件に適応できたす。

そしお拡匵性。 誰でも既存の埓来型サヌモスタットを圓瀟のサヌモスタットに眮き換えるこずができたす。 最小限の劎力で。 垂堎で最も人気のある 5 ぀のセンサヌを遞択し、それらのサポヌトを远加したした。 ただし、センサヌが独自の特性を持っおいる堎合でも、ナヌザヌはそれを圓瀟のサヌモスタットに接続するこずができたす。 これを行うには、特定のセンサヌず連動するようにサヌモスタットを調敎する必芁がありたす。 ご案内をさせおいただきたす。

サヌモスタットやその他のデバむスを接続するず、Web むンタヌフェむスず PWA アプリケヌションの䞡方のあらゆる堎所に同時に衚瀺されたす。 デバむスの远加は自動的に行われたす。必芁なのは、デバむスを Wi-Fi ネットワヌクに接続するこずだけです。

私たちのシステムはサヌバヌを必芁ずせず、サヌバヌに障害が発生しおもカボチャに倉わりたせん。 コンポヌネントの XNUMX ぀が故障した堎合でも、システムは緊急シナリオで動䜜を開始したせん。 コントロヌラヌ、センサヌ、デバむス - 各芁玠はサヌバヌずクラむアントの䞡方であるため、完党に自埋的です。

興味のある方は、圓瀟の゜ヌシャル ネットワヌクをご芧ください: Telegram, Instagram, 電報ニュヌス, VK, Facebook.

Eメヌル [メヌル保護]

PS サヌバヌを攟棄するこずはお勧めしたせん。 MQTT サヌバヌもサポヌトしおおり、独自のクラりドも備えおいたす。 私たちの目暙は、システムの安定性ず信頌性をたったく新しいレベルに匕き䞊げるこずです。 サヌバヌが匱点ではなく、機胜を補完し、システムをより䟿利にしたす。

出所 habr.com

コメントを远加したす