# Skalowanie systemu do sterowania automatyką domową - 🌉 most MQTT pomiędzy bramkami

**URL:** <https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537>\
**Category:** faq\
**Created:** [26 Czerwiec 2020 11:25 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537 "2020-06-26T11:25:17Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

Autor: ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
Data publikacji: [26 Czerwiec 2020 11:25 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/1 "2020-06-26T11:25:17Z")

</div>

# Opis ten ma na celu pokazać, w jaki sposób możemy radzić sobie z rosnącą ilością urządzeń w naszym domu i jak możemy skalować system.

Motywacją do tego posta jest e-mail od naszego klienta, który podłączył do bramki, cytuje:  
“_po wifi ok. 80 urządzeń ( w tym proste sonoff do świateł), Zigbee 60 urządzeń - czujniki +światła, monitoring 6 kamer, multimedia po IR i RF 5 pomieszczeń_”

Przy tej ilości urządzeń Klient zauważył spowolnienie systemu na bramce i zapytał nas, czy mamy w ofercie mocniejszy sprzęt, np. NUC Intela.

## W którą stronę skalować?

Dało nam to do myślenia i doszliśmy do wniosku, że mamy dwa sposoby na rozwiązanie problemu ze skalowaniem systemu i obsługą wiekszej ilości urządzeń:

1. Wydać mocniejszą wersję bramki (PRO - dla profesjonalistów) - skalować system pionowo.
2. Łącznie bramek - skalować system poziomo.

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/0/0e87051461375ef213863df2c4a89d53e433b72d.jpeg)

Jak widać na powyższej grafice → skalowanie pionowe (scale-up)/ w górę / wertykalne to po prostu wymiana urządzenia na “większe”.  
Przy modelu skalowalności poziomej (scale-out) / w bok / horyzontalnie nie trzeba wymieniać urządzeń na nowe, a rozwój systemu odbywa się przez dodawanie kolejnych urządzeń.

## Łączenie urządzeń - skalowanie poziome

W tym poście będzie o tym jak wykonać skalowanie poziome - most mqtt (mqtt bridge) pomiędzy bramkami AIS dom.  
W ten sposób możemy wykonać coś w rodzaju sieci mesh. W tym poście opiszemy krok po kroku, jak połączyć dwie instancje (podwoić ilość obsługiwanych urządzeń) i osiągnąć następujący scenariusz:

 ![ais-dom-1-2](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/f/fea9aee7a9d53a46ab08c44dc9bb003356fc00bb.png)

## Dlaczego poziomo?

Łatwo dojść do wniosku, że nasze poziome skalowanie ma pewnie na celu sprzedanie większej ilości bramek 😉 ktoś pewnie dojdzie do wniosku, że lepiej jest kupić jedno urządzenie typu Intel NUC które ogarnie wszystko.

Każdy ma swoją ekonomię i wybiera najlepsze dla siebie rozwiązanie. Faktycznie łatwiej się sprzedaje urządzenie za 200 zł niż za 2000 i ekonomia jest jednym z powodów naszego modelu skalowania.  
Inny powód to produkt, nad którym pracujemy - inteligentny głośnik. Docelowo łączenie instancji Asystenta domowego będzie wyglądało tak:

 ![ais-dom-ai-speaker](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/b/bb63ffa6e78d5e4c015cbfd46458a01144068489.png)

> Oczywiście w ten sam sposób można wykonać most pomiędzy bramką AIS dom a dowolną inną instancją Home Assistant działającą na dowolnej maszynie (nie musi to być bramka AIS dom).

## MQTT broker

Na każdej bramce działa broker MQTT Mosquitto. Broker ten pełni rolę serwera dla urządzeń/klientów, urządzenia za pośrednictwem brokera publikują informacje do systemu Asystent domowy i odbierają komunikaty sterujące z systemu.  
Mosquitto to mały, lekki, otwarty broker MQTT napisany w języku C / C ++. Dostarczamy najnowszą wersję Mosquitto, która w pełni obsługuje protokoły MQTT w wersji 5.0 i 3.1.1.

 ![ais-dom-mosquitto](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/4/42556d40e67a368fbf807b05603a3cee9a299d56.png)

## MQTT bridge

Broker Mosquiito na bramce można skonfigurować do pracy jako most MQTT.  
Most pozwala połączyć ze sobą brokery MQTT co pozwala na udostępnianie wiadomości między systemami.

 ![ais-dom-mosquitto-bridge](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/b/b030a369e9e39c2abf70aacca3437cf27e262ecd.png)

> Istotne jest to, że po skonfigurowaniu brokera Mosquitto jako mostu 🌉 stanie się on klientem MQTT w drugim brokerze. Klient ten będzie publikował i odbierał komunikaty do wszystkich urządzeń które ma dołączone. Czyli drugiemu brokerowi (bramce 2) doszedł tylko jeden klient, a może znać status i sterować wszystkimi urządzeniami dołączonymi do innego brokera (bramki 1).

### Pokaż mi kod

> 👷‍♂️ Na tę chwilę konfiguracja mostu wymaga dodania odpowiednich wpisów do konfiguracji brokera MQTT na bramce. Czyli tylko bardziej zaawansowani użytkownicy są w stanie to wykonać. Ale jeżeli ktoś podłączył kilkadziesiąt urządzeń po wifi i zigbee to poradzi sobie z taką konfiguracją 😉  
> W przyszłości dodamy możliwość łączenia bramek z interfejsu użytkownika.

Konfiguracja brokera mqtt na bramce jest dostępna w pliku:  
`/data/data/pl.sviete.dom/files/usr/etc/mosquitto/mosquitto.conf`

Zakładając, że nasza brmka `AIS dom 1` ma adres IP: `192.168.6.100` a bramka `AIS dom 2` ma adres IP: `192.168.6.220` to żeby uruchomić most pomiędzy tymi bramkami wykonujemy:

- uruchamiamy konsole na bramce `AIS dom 1`
- otwieramy do edycji plik `/data/data/pl.sviete.dom/files/usr/etc/mosquitto/mosquitto.conf`

```auto
nano /data/data/pl.sviete.dom/files/usr/etc/mosquitto/mosquitto.conf

```

- do mosquitto.conf dodajemy taką konfigurację

```auto
# Most do AIS dom 2
connection most-do-bramki-2
address 192.168.6.220:1883
remote_clientid bramka-ais-dom-1

topic # in 0
topic # out 0

```

i to już wszystko.

Wyjaśnijmy cała konfigurację linijka po linijce:

- connection most-do-bramki-2  
to jest nazwa połączenia pomiędzy bramkami

- address 192.168.6.220:1883  
tu podajemy adres do brokera mqtt z którym chcemy się połączyć

- remote\_clientid bramka-ais-dom-1  
to unikalna nazwa naszego klienta który pojawi się w brokerze na bramce 2

- topic # in 0  
tu deklarujemy, że chcemy subskrybować (in) wszystkie (#) wiadomości z brokera na bramce 2 i że chcemy je otrzymywać co najwyżej raz (0)

- topic # out 0  
tu deklarujemy, że chcemy publikować (out) wszystkie (#) wiadomości z brokera na bramce 2 i że chcemy je publikować co najwyżej raz (0)

Na koniec zapisujemy plik i restartujemy usługę mqtt

```auto
pm2 restart mqtt

```

To wszystko, urządzenia komunikujące się po mqtt z bramki ais dom 1 pojawią się na na bramce ais dom 2 i odwrotnie. Oczywiście przy odpowiedniej konfiguracji `topic` możemy określać jaki komunikaty chcemy otrzymywać a jakie publikować. Pokażemy to w kolejnym przykładzie w którym opiszemy jak sterować milionem urządzeń! 🎉

## Co z urządzeniami które nie komunikują się po MQTT?

Dodatkowo możemy włączyć na bramce publikowanie zdarzeń:

> **[MQTT Eventstream](https://www.home-assistant.io/integrations/mqtt_eventstream/)**
>
> Instructions on how to setup MQTT eventstream within Home Assistant.

oraz publikowanie statusów:

> **[MQTT Statestream](https://www.home-assistant.io/integrations/mqtt_statestream/)**
>
> Instructions on how to setup MQTT Statestream within Home Assistant.

Natępnie te dane zostaną przekazane za pomocą mostu mqtt do innych bramek. W ten sposób możemy przekazać status i sterowanie do dowolnego urządzenia (komunikującym się dowolnym protokołem) z bramki X do innych bramek.

---

<div class="post-metadata">

Autor: ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
Data publikacji: [26 Czerwiec 2020 19:06 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/2 "2020-06-26T19:06:06Z")

</div>

> [@jolka](#):
>
> Zakładając, że nasza brmka `AIS dom 1` ma adres IP: `192.168.6.100` a bramka `AIS dom 2` ma adres IP: `192.168.6.200` to żeby uruchomić most pomiędzy tymi bramkami wykonujemy:

Super rozwiązanie - gratuluję pomysłu. Poprawcie tylko w cytowanym tekście nr IP, bo w dalszej części posta wpisujecie IP 192.168.6.220

---

<div class="post-metadata">

Autor: ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
Data publikacji: [29 Czerwiec 2020 09:21 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/3 "2020-06-29T09:21:00Z")

</div>

> [@Cino111](#):
>
> Poprawcie tylko w cytowanym tekście nr IP, bo w dalszej części posta wpisujecie IP 192.168.6.220

dzięki, miło wiedzieć, że ktoś przeczytał i to dokładnie 🙂  
już poprawione 👍

---

<div class="post-metadata">

Autor: ![Tomasz](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/tomasz/32/286_2.png) [@Tomasz](https://ai-speaker.discourse.group/u/Tomasz)\
Data publikacji: [8 Październik 2020 12:48 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/4 "2020-10-08T12:48:26Z")

</div>

> [@jolka](#):
>
> Oczywiście w ten sam sposób można wykonać most pomiędzy bramką AIS dom a dowolną inną instancją Home Assistant działającą na dowolnej maszynie (nie musi to być bramka AIS dom).

Ktoś już próbował zrobić mostek Jolki z HA na innej maszynie?

---

<div class="post-metadata">

Autor: ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
Data publikacji: [9 Październik 2020 05:20 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/5 "2020-10-09T05:20:26Z")

</div>

Taaaaa z HA  
dodajesz do pliku:  
# Most do AIS dom 2  
connection most-do-HA  
address 192.168.1.100:1883

remote\_clientid homeassistant  
remote\_username Login  
remote\_password Hasło  
topic # in 0  
topic # out 0

Login i Hasło to dane do logowania do HA  
IP oczywiście naszego HA

---

<div class="post-metadata">

Autor: ![Tomasz](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/tomasz/32/286_2.png) [@Tomasz](https://ai-speaker.discourse.group/u/Tomasz)\
Data publikacji: [16 Październik 2020 16:43 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/6 "2020-10-16T16:43:11Z")

</div>

Zrobiłem mostek z Jolki do HA, pokazały się wszystkie urządzenia z Tasmotą.  
Na HA mogę odczytywać np. temperaturę, zasięg ale nie mogę przełączać switch/light.  
Przełącznik zmienia na chwile stan ale zaraz wraca na OFF i nie zapala się światło.  
Też tak masz?

---

<div class="post-metadata">

Autor: ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
Data publikacji: [16 Październik 2020 18:18 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/7 "2020-10-16T18:18:31Z")

</div>

Mam to samo. Myślałem, że coś namieszałem i nie chciało mi się już z tym bawić, ale wygląda, że coś nie tak mamy w configu. @jolka pomożesz?

---

<div class="post-metadata">

Autor: ![Tomasz](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/tomasz/32/286_2.png) [@Tomasz](https://ai-speaker.discourse.group/u/Tomasz)\
Data publikacji: [16 Październik 2020 18:55 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/8 "2020-10-16T18:55:58Z")

</div>

A w drugą stronę czyli z HA na AIS próbowałeś?

---

<div class="post-metadata">

Autor: ![Cezary.K](https://avatars.discourse-cdn.com/v4/letter/c/a88e4f/32.png) [@Cezary.K](https://ai-speaker.discourse.group/u/Cezary.K)\
Data publikacji: [25 Listopad 2020 10:48 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/9 "2020-11-25T10:48:49Z")

</div>

@Cino111, @Tomasz - czy coś się zmieniło w kwestii komunikacji pomiędzy HA? Jest sens stawiać most?

---

<div class="post-metadata">

Autor: ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
Data publikacji: [25 Listopad 2020 13:00 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/10 "2020-11-25T13:00:28Z")

</div>

To musi działać, tylko nie chciało nam się posiedzieć. Powiem tak - właśnie wczoraj postawiłem Mosquitoo na synology i jakoś na dniach będę się zabierał za most. Tym razem musi się udać 🙂  
Prawdopodobnie w HA był inny prefix, albo topic. Trzeba na spokojnie usiąść i porównać konfiguracje na obu brokerach. Przy połączeniu 2 bramek AIS zapewne nie ma problemu bo mają identyczne konfiguracje.

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [25 Listopad 2020 13:33 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/11 "2020-11-25T13:33:32Z")

</div>

Mam postawionego drugiego brokera MQTT na NUCu. Wszystko śmiga.

---

<div class="post-metadata">

Autor: ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
Data publikacji: [25 Listopad 2020 14:06 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/12 "2020-11-25T14:06:49Z")

</div>

Zmieniałeś konfigurację na brokerze na NUCu, czy tylko wprowadzałeś wpis odnośnie mostu w konfiguracji brokera na IAS?

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [25 Listopad 2020 14:30 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/13 "2020-11-25T14:30:03Z")

</div>

Wpis w AIS że chce synchro w obu kierunkach (topic both 0)

---

<div class="post-metadata">

Autor: ![Akszyn](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/akszyn/32/4038_2.png) [@Akszyn](https://ai-speaker.discourse.group/u/Akszyn)\
Data publikacji: [28 Listopad 2020 22:25 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/14 "2020-11-28T22:25:05Z")

</div>

Szkoda że kiedyś nie było takiej opcji zakupu

> [@jolka](#):
>
> mocniejszą wersję bramki

Bo dziś zauważyłem że nowsza wersja bramki dev By na allegro i jest lepsza od poprzedniej bez bluetooth bo ma opcję wifi 2,4 i 5 GHz oraz jest w wariancie 2/16 w przeciwieństwie do poprzedniej wersji 1/8 i z wifi tylko 2,4 GHz jak dev1

---

<div class="post-metadata">

Autor: ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
Data publikacji: [15 Styczeń 2021 20:40 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/15 "2021-01-15T20:40:35Z")

</div>

Słuchajcie - czy mogę do jednego brokera mqtt podpiąć kilka instancji HA? Brokera mam na Synology i podpiętą do niego Jolkę. Mam testowy HA na wirtualce też na Synology i tak się właśnie zastanawiam, czy podpinając HA nie będzie to stwarzało problemu?

---

<div class="post-metadata">

Autor: ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
Data publikacji: [15 Styczeń 2021 21:29 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/16 "2021-01-15T21:29:58Z")

</div>

Hej, możesz i nie będzie to problem. Każdy HA jest takim samym klientem MQTT jak gniazdko czy przełącznik.  
Każdy klient MQTT subskrybuje(nasłuchuje) tematy i publikuje wiadomości na jakimś temacie.  
Jedyna różnica pomiędzy gniazdkiem a HA jest taka że gniazdko subskrybuje tylko jeden temat a HA wszystkie. Ale dla brokera MQTT to nie problem

---

<div class="post-metadata">

Autor: ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
Data publikacji: [16 Styczeń 2021 14:49 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/17 "2021-01-16T14:49:05Z")

</div>

Hmmm.  
Taki wpis mam w Jolce i taki sam wpisałem do testowego HA.

```
mqtt:
  broker: 192.168.1.80
  port: 1883
  client_id: home-assistant
  discovery: true
  discovery_prefix: homeassistant
  birth_message:
   topic: "tele/hass1/LWT"
   payload: "Online"
   qos: 1
   retain: true
  will_message:
   topic: "tele/hass1/LWT"
   payload: "Offline"
   qos: 1
   retain: true

```

W Jolce i w HA wszystkie urządzenia które komunikują się po mqtt sekundę są a kolejną sekundę niedostępny i tak cały czas. Tak ja by w jednej sekundzie dane idą do HA a w drugiej do Jolki. 🤔

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [27 Styczeń 2021 12:40 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/18 "2021-01-27T12:40:40Z")

</div>

Pierwsze co rzuciło mi się w oczy to czy zmieniłeś client\_id dla drugiej instancji?

---

<div class="post-metadata">

Autor: ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
Data publikacji: [27 Styczeń 2021 13:52 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/19 "2021-01-27T13:52:24Z")

</div>

I tu mnie masz 🤫  
Teraz działa.

---

<div class="post-metadata">

Autor: ![qumi](https://avatars.discourse-cdn.com/v4/letter/q/a88e57/32.png) [@qumi](https://ai-speaker.discourse.group/u/qumi)\
Data publikacji: [3 Luty 2021 20:28 UTC](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537/20 "2021-02-03T20:28:04Z")

</div>

Również chciałbym połączyć AIS z HA, czy mogę całą konfigurację mieć na HA, a AIS dołączyć tylko do sterowania głosowego i multimediów?

Czy zadziała połączenie między ASI a HA poprzez [Remote Home-Assistant](https://github.com/custom-components/remote_homeassistant)

[Następna strona](https://ai-speaker.discourse.group/t/skalowanie-systemu-do-sterowania-automatyka-domowa-most-mqtt-pomiedzy-bramkami/537.md?page=2)
