Jak zprovoznit MQTT server Mosquitto na Synology DS218

Začal jsem stavět chytrou domácnost. Nemám s tím žádné zkušenosti a návody, které nacházím, jsou vždy jen na kousek problému, který se objeví. Proto si vytvářím tyto zápisky, abych v případě problémů mohl začít od začátku. Tento příspěvek je o tom, jak jsem zjistil, co je protokol MQTT a jak se přes něj komunikuje. Bude to základ pro celý můj chytrý dům, pro internet věcí a pro komunikaci mezi zařízeními.

Již nějakou dobu měřím množství vody ve studni. Spustím tam metr připevněný na dřevěné lati, která má dole závaží. Podle mokré stopy na lati vidím, kolik vody je ve studni. Naměřenou hodnotu zapisuji do android aplikace ECAS, kam občas zapíšu stav elektroměru a plynoměru. Jednoduché, funkční, geniální. A taky časově náročné. Celou dobu přemýšlím nad tím, jak tuto činnost zautomatizovat. Pročetl jsem soustu návodů, viděl různé možnosti řešení, ale žádné řešení nebylo podle mých představ. Navíc, čím více informací jsem získával, tím více funkcí jsem přidával. Nakonec jsem zjistil, že si chci vybudovat chytrou domácnost.

Jednotlivá zařízení mezi sebou budou komunikovat prostřednictvím protokolu MQTT. Celé to funguje tak, že připojená zařízení publikují zprávy a čtou zprávy. Na základě zpráv pak vykonávají různé činnosti. Aby v tom byl přehled, publikují do různých skupin. Jak jsou skupiny pojmenovány a kolik jich je, záleží jen na tvůrci celé aplikace. Jen je potřeba si vymyslet nějaký systém. Kromě jednotlivých zařízení, je potřeba ještě MQTT server (MQTT broker). To je místo, kam všechna zařízení publikují svoje zprávy a zároveň odtud také zprávy čtou. Vše, co jsem o MQTT komunikaci potřeboval vědět, jsem se dozvěděl z článku Protokol MQTT: komunikační  standard pro IoT.

Instalace Mosquitto na Synology NAS

Protože mám doma NAS od Synology, rozhodl jsem se mu přidat další užitečnou funkci. Tou je zmiňovaný MQTT broker. Nejpoužívanější je aplikace Mosquitto. Ta bohužel není součástí standardních balíčků a proto musíme v Synology > Centrum balíčků > Nastavení > Zdroje balíčků přidat další zdroj balíčků z webu synocommunity.com.

Přidání zdroje balíčků do Synology DMS

Po přidání dalšího zdroje balíčků vyhledáme balíček Mosquitto a nainstalujeme ho běžným způsobem. Po instalaci balíčku uvidíte zelený nápis „spuštěno“. Rovnou zde klineme na tlačítko „zastavit“. Budeme totiž zasahovat do konfiguračního souboru, tak ať nám v tom běžící Mosquitto nedělá neplechu.

Nainstalovaný balíček Mosquitto

Ve výchozím nastavení je Mosquitto nastaveno tak, aby se k němu mohl připojit kdokoliv. To se mi nezdá moc bezpečné. Aby s mým MQTT brokerem nemohl komunikovat jen tak někdo, změníme konfigurační soubor tak, aby přihlášení vyžadovalo jméno a heslo.

Z bezpečnostních důvodů je přístup do Synology pro uživatele root omezen. Zároveň je ve výchozím nastavení vypnutý přístup přes SSH. Pro povolení přístupu uživatele root prostřednictvím SSH připojení přejdeme v Synology na Ovládací panel > Terminál a SNMP > Terminál a zaškrtneme pole Povolit službu SSH. Po provedení všech změn doporučuji přístup přes SSH opět deaktivovat.

Povolení SSH přístupu

Tím je veškeré nastavení uvnitř Synology hotové. Když už máme otevřenou Synology aplikaci, tak se podíváme, na jaké IP adrese je Synology připojené.

IP adresa Synology

Nyní máme připraveno vše ke změně nastavení konfiguračního souboru Mosquitto. Otevřeme terminál a připojíme se přes ssh uživatelské_jméno@IP_adresa_Synology a následně zadáme heslo. Je to uživatelské jméno a heslo, přes které jsme se před chvilkou přihlašovali do Synology. V mém případě píšu do terminálu

ssh TataGEEK@192.168.0.106

Pokud vše proběhne správně, vidíme v terminálu TataGEEK@SynologyDS218: To znamená, že jsme přihlášeni jako uživatel TataGEEK. Pro úpravy konfiguračního souboru potřebujeme získat oprávnění superuživatele root. Ty získáme zapsáním příkazu sudo -i

sudo -i

Terminál nás upozorní, ať získané „superschopnosti“ nezneužijeme a ať dáváme pozor, ať si nic nepoškodíme. Nakonec zapíšeme heslo (stejné jako heslo prvního uživatele na Synology) a naše uživatelské jméno se změní na root@SynologyDS218.

Konfigurační soubor nalezneme v usr/local/mosquitto/var/mosquitto.conf Přepneme se tam přepneme pomocí

cd ../usr/local/mosquitto/var/

Jediný předinstalovaný textový editor, který máme k dispozici, je editor vi https://cs.wikipedia.org/wiki/Vi_(editor) . Tím upravíme konfigurační soubor.

vi mosquitto.conf

V konfiguračním souboru odkomentujeme a upravíme řádky 513 a 555 tak, aby vypadaly následovně

allow_anonymous false
password_file /usr/local/mosquitto/etc/mosquitto/pwfile

Po provedení úprav stiskneme klávesu „ESC“ a pak dvojtečku, tím se nám dole v editoru zůstane zobrazený příkazový řádek. Pak napíšeme wq. Takže po sobě stiskneme :wq a stiskneme „ENTER“. A máme hotovo. Pokud chceme editor ukončit bez uložení změn, stiskneme „ESC“, dvojtečku, klávesu „q“, pak vykřičník a nakonec „ENTER“.

Tím jsme k MQTT brokeru povolili přístup jen pro konkrétní uživatele s heslem. Nyní potřebujeme uživatele vytvořit a přiřadit jim heslo. Přepneme se do adresáře /usr/local/mosquitto/bin pomocí

cd ../usr/local/mosquitto/bin/

A spustíme příkaz k vytvoření nového uživatele, kde část <uzivatel> nahradíme uživatelským jménem. Následně jsme vyzváni k zadání hesla, které uživatel bude používat. Pro odstranění překlepů musíme zadat vybrané heslo jednou.

sudo ./mosquitto_passwd -c /usr/local/mosquitto/etc/mosquitto/pwfile <uzivatel>

Tím pro nás nastavování aplikace Mosquitto končí a ve správci balíků můžeme Mosquitto opět spustit.

Testování komunikace pomocí MQTT klienta MQTT.fx

MQTT broker Mosquitto jsme tedy zprovoznili, teď už ho jen zbývá otestovat. K tomu použijeme aplikaci MQTT.fx. Je k dispozici na všechny operační systémy a nalezneme na ni spoustu návodů. Protože používám Ubuntu, stáhnul jsem soubor s příponou .deb, což je zkompilovaný balíček pro Debian (kompatibilní s Ubuntu). Instalaci spustíme dvojklikem na stažený soubor a o vše další se už postará správce balíčků.

Nejprve musíme spustit nastavení, aby klient věděl, kam se připojit. Klikneme na ozubené kolo.

Nastavení aplikace MQTT.fx

Profil připojení si nějak pojmenujeme, zadáme IP adresu, na které je připojeno Synology. Protože jsme četli v úvodu odkazovaný článek Protokol MQTT: komunikační  standard pro IoT, tak už víme, že Broker Port je 1883. Jako Client ID můžeme dát libovolný název nebo klikneme na vygenerování řetězce.

V záložce User Credentials napíšeme uživatelské jméno a heslo, které jsme v terminálu vytvořili. Po uložení již můžeme kliknout na tlačítko Connect.

Připojení k MQTT brokeru

Pokud jsme vše nastavili správně, na pravé straně se nám rozsvítí zelené světlýko. Zároveň jsme přepnuti v záložce Publish, tak rovnou napíšeme nějakou zprávu a kliknutím na tlačítko „Publish“ ji odešleme do skupiny předpřipravené skupiny home/garden/fountain.

Publikování testovací zprávy

Přepneme se na kartu Subscribe, kde je připravená stejná skupina home/garden/fountain. Zde klikneme na tlačítko „Subscribe“, čím se přihlásíme k odběru zpráv v této skupině. V okně níže pak vidíme publikované zprávy.

Příjem testovací zprávy

A to je vše. Mosquitto již zůstane stále zapnuté a MQTT.fx spustíme vždy, když budeme chtít ověřit, zda naše zařízení a kódy fungují tak, jak od nich požadujeme.

Jak vytvořit domeček pro ježka

Kromě návodu, jak vytvořit domeček pro ježka, se dozvíte i spoustu zajímavostí o ježcích, co jedí, jak jim pomáhat a jak je nalákat na zahradu. Víte jak velký domeček ježek potřebuje? Jak rychle umí ježek běhat nebo kolik denně nachodí kilometrů? To vše se dozvíte v tomto ježčím speciálu.

Přehled

ikona obtížnost Obtížnost:

Projekt je vhodný pro začátečníky. Mechanické zpracování nevyžaduje velkou přesnost.

ikona nástroje Vybavení:

Ke stavbě nepotřebujete speciální nářadí, postačí běžně vybavená kutilská dílna. Spoustu nářadí lze nahradit jiným, stačí improvizovat.

ikona čas Čas:

Stavbu stihnete za 1 den.

ikona peníze Peníze:

Pokud použijete staré dřevo, například z jednorázové palety, náklady na projekt jsou do 100,- Kč.

Pokračování textu Jak vytvořit domeček pro ježka

Horkovzdušná trouba vyhazuje proudový chránič?

Od konce minulého roku nám vestavná horkovzdušná trouba vyhazuje proudový chránič. Správný táta geek si nejenom že hraje s dětmi, ale zároveň udržuje v provozu vybavení domácnosti. Já vždycky hledám cestu, jak tyto 2 činnosti spojit dohromady. Zkusil jsem tedy s Holkou 2.08 společnou opravu a bylo to super.

Od konce minulého roku nám vestavná horkovzdušná trouba vyhazuje proudový chránič. Nestává se to pravidelně, někdy třeba měsíc běží bez problémů a pak se závada opět vyskytne. Poslední měsíc byla horkovzdušná trouba téměř nepoužitelná, tak jsme začali hledat.

Pokračování textu Horkovzdušná trouba vyhazuje proudový chránič?

Vlastní šplhající hračka

Vytvořte si jednoduchou mechanickou hračku, která leze po napnutém provázku nahoru. Stihnete to za 15 minut a k výrobě nepotřebujete nic speciálního. Stačí vám papír, karton, lepidlo, provázek, lepicí páska a brčko na pití.

Asi je s Holkou 2.09 na fyziku moc brzy, ale když nebudu mluvit o třecí síle, tak to doma nějak projde. Prostě si jen tak hrajeme, tak si pojďte hrát s námi. Vezměte si nějaký oblíbený obrázek zvířátka, komiksového nebo akčního hrdiny a nalepte ho na karton. Pak vystřihněte jeho obrys. Ideální výška obrázku je kolem 20 cm.

Pomocí lepicí pásky přilepte z druhé strany kartonu 2 krátká brčka. Přilepte je šikmo, jako na obrázku, jinak to nebude fungovat. Skrz brčka provlečte provázek. Nahoře nechte smyčku tak, aby hračka šla zavěsit. Na spodních koncích provázků udělejte očka. Za ně budete za chvilku tahat. Zavázáno? Tak máte hotovo.

Zadní strana šplhající hračky s nalepenými brčky a provlečeným provázkem
Na zadní stranu přilepte 2 brčka a provlečte jimi provázek

Horní smyčku někam zavěste nebo ji držte v jedné ruce. Na ukazováček a prostředníček druhé ruky nasaďte zavázaná očka a provázek napněte. Nyní střídavě pohybujte prsty nahoru a dolů. Při každém prostřídání prstů popoleze hračka kousek nahoru. Až bude hračka nahoře, povolte napnutý provázek a karton sjede vlastní vahou zase zpět dolů.