Nový firmware do vánočního stromečku
Začnu trochu od konce. Dělal jsem toho za svůj život už hodně, ale dneska poprvé jsem seděl pod vánočním stromečkem, do notebooku připojený USB kabel, co od něj vede, a debugoval a upgradoval jeho firmware ;-)).
Ale od začátku. Dostali jsme vánoční světýlka na stromeček. Bohužel, měly drobnou vadu. Po zapnutí elektriky se samy nerozsvítily. Bylo ještě potřeba na zdroji zmáčknout tlačítko. A to pokaždé, když se elektrika znovu zapnula.
No a to je naprd. Přece v chytrém domě nebudu ručně rozsvěcet vánoční stromeček, žejo. Takže začlo zkoušení a vymýšlení, jak problém vyřešit.
Problémů k vyřešení bylo hned několik. Jak ledky napájet, jak je spínat, čím spínat relátka a jak to propojit do Loxonu.
Napájení se nakonec vyřešilo elegantně. Od původního plánu napájet to 24V zdrojem s napěťovým děličem jsem se přes svůj laboratorní zdroj a měření spotřeby dostal až k USB 2A nabíječce, která krásně splinila zadání.
Další problém byly relátka. Z číny dorazil 8-modulový relé modul, jenže na spínání je potřeba 5V a to můj Wemos čip neměl. Tak jsem wemos vyměnil za Arduino UNO a zkusil to zapojit na něm. A relé se poprvé seplo, to bylo radosti.
Jenže jen do chvíle, kdy jsem si uvědomil, že UNO nemá ani ethernet, ani wifi. Takže pro dálkové spínání naprd. Takže zpět k Wemosu a jeho wifi.
Další cesta tak vedla přes samostatné napájení relé modulu 5V a pokusu, jestli náhodou relé pak nejde sepnout pomocí 3V z Wemosu. A abych to netestoval rovnou na Wemosu, využil jsem opět laboratorní zdroj (fakt ho miluju) a na napájení opět využil USB nabíječku.
A hle, prošlo to. Takže tudy by to mohlo jít. Takže jsem zkusil popropojovat Wemos a relátko, wemos napájet z USBčka, relé přes uřízlý USB kabel taky z USB nabíječky, a k tomu LEDky také z USB nabjíčeky.
To máme spoustu USB nabíječek ;-). Naštěstí relé modul a wemos utáhne jedna, a druhá na LEDky. To už jde. A časem koupím 5V 4A zdroj a bude to.
A protože s jedním relé není žádá sranda, tak sem to rozšířil na dub-step čtyř relátek 😉
Když byl hotový proof-of-concept, začal jsem to celé propojovat. Tady byla největší brzda nedostatek materiálu (tím jsem trpěl už i zkoušení, ale tady to byl extrém). Nejvíc mi chyběly kabílky na propojování PINů. Zatím jich dorazilo jen pár a tak jsem si zbytek povyráběl, z čeho šlo (hlavně pak z těch černých male-female patic, které lze stříhat štípačkama a dělat multi-konektory, viz ty žlutě zalepené konektory).
Po propojení a ověření, že vše bliká a cvaká, jak má, byla další mise nacpat to do nějaké krabičky, aby to vypadalo alespoň trochu civilizovaně a mohlo se to válet v obyváku. To se našetěstí povedlo také docela rychle a tak bylo řešení téměř hotové.
Nakonec pak už jen řetězy rozmotat, přenést do obyváku, znovu otestovat, a… vyhodit elektriku v celém baráku. Samozřejmě v deset večer, takže tma jak v řiti. A samozřejmě vyhozeno až venku na ulici.
I I. se přišla podivat, co jsem to zas udělal ;-). Kupodivu ale na vině nebylo moje udělátko, ale očividně dosloužilý zdroj k notebooku, co jsem si potřeboval zapojit. Po nahození se tím pádem mohlo pokračovat dál ;-).
Dneska jsem přesunul do obyváku stromek a ověsil ho lampičkama. Na řadu tak přišla softwareová část. Samoblikání je sice pěkné, ale chtělo to hlavně to zapínání a vypínání přes Loxone.
Plán byl využít už připravené MQTT komponenty z minula a jen to použít na něco konkrétního. Založil jsem další topic christmas-tree/relay a začal propojovat. Část v arduinu byla snadná. Vzít data ve formátu 101011 a podle toho postupně pozapínat/povypínat relátka. Easy.
Pak upravit Node-Red tak, aby se daly MQTT data posílat a testovat přes něj. Opět easy. Trochu složitější pak bylo parsování dat dle typu, tzn. když přijde z Loxonu “christmas-tree/relay/xxxx”, tak aby to poslal na správný kanál se správnýma datama. Ale stačilo zjistit, jak fungují v MQTT funkce, že je to Javascript a zjistit, jak se v JS pracuje se stringama. Easy.
EDIT: Večer jsem měl ještě chvilku čas, tak jsem si pohrál s Node-RED nastavením. Nutno říct, že je to naprosto impozantní a lze tam udělal naprosto cokoli (hlavně díky možnosti scriptovat pomocí JS). Takže nyní má stromeček ještě pět režimů blikání 🙂
Pak ale přišel kámen úrazu. To, co jsem očekával, že bude to nejjednodušší, tak nefungovalo. V Loxonu se mi nedařilo rozběhnout virtuální výstupy HTTP. Ať jsem dělal, co jsem dělal, tak z Loxonu data prostě nelezly. Nejen do Node-Red, ale ani na testovací app, ani do aplikace Hercules, co Loxon doporučuje, a ani nebyly vidět přes Ethereal či Wireshark.
A tak jsem zkoušel a zkoušel, nastavoval, ptal se na fóru a to, co všem funguje, mně nejelo. Nakonec jsem to všechno natvrdo zrestartoval a pakety začaly chodit. Bohužel, HTTP výstupy u mne mají cca 15sekund prodlevu. Pokud pošlu 10 signálů, místo aby přišly hned, dorazí vždy jeden, 15s pauza, další, zase pauza, …
Co naštěstí funguje bleskově jsou přímé TCP spojení. A protože HTTP nepotřebuju a TCP je přes NodeRED mnohem rychlejší/jednodušší, zůstal jsem u něj a HTTP dál neřešil.
A to byla poslední část potřebná k tomu, aby se z mobilu dal poslat příkaz do Loxonu, který pošle příkaz do NodeRED, který pošle MQTT zprávu na Ubuntu server, kde je pak zpráva poslána do Wemosu, který přes digitální výstupy pošle impulzy do relátek, které rozsvítí vánoční stromeček.
Jako jo, šlo by to asi o něco jednodušeji, ale takhle je to prostě cooool 😉
PĚKNÉ VÁNOCE VÁM VŠEM!
Zdravím, super článek! Bylo by možné pro inspiraci nasdílet zdrojáky (wemos, nodered, loxone)?
Pohodové svátky,
Honza
zdrojak na MQTT (arduino) je v predeslem clanku, kod v Loxone zadny neni, jen to co je na tech dvou screenshotech. a kod Nodered je rovnez vyfocen. vic toho neni.
https://www.vodnici.net/2016/12/mosquitto-mqtt-message-broker/
https://www.vodnici.net/2016/12/nodered-propojeni-vseho-se-vsim-od-arduina-po-loxone/
No a ked Ti zacne liezt to neustale cvakanie na nervy a z on/off blikania dostanes epilepticky zachvat, otvoris svoj oblubeny aliexpress, objdnas par 2083, zapojis ich na pwm vystupy arduina/wemosu a zacnes to riesit ‘analogovo’ 😀
2803
Ja tu mam jeste na zaklade doporuceni (mozna dokonce tveho) tenhle ctyrkanalovy mosfet – Four Channel 4 Route MOSFET Button IRF540 V4.0+ MOSFET Switch Module For Arduino – http://s.click.aliexpress.com/e/QnaEybE
Tak ty chci taky jeste zkusit.
Ale ty 2803 sem rovnou objednal taky, to se neztrati 😉 –
http://s.click.aliexpress.com/e/iuFURrR
Vidis, este lepsie riesenie. 20A na kanal asi neprekrocis :D.
2803 sa da pouzit tiez, ale ten je vhodnejsi skor na spinanie indukcnej zataze kvoli vstavanej diode a ma len 0.5A na kanal.
A ked tie mosfety zapojis na PWM vystup arduina, mozes tie led-ky plynule stmievat, resp. si naprogramovat nejaky efekt ktory meni farby plynulo.
Asi si spravim na buduci rok radost a ked uz budeme v dome, spravim to ako Ty – kupim na stromcek nejake led-ky, ale modul vyhodim a spravim si vlastny :D.
😉
Urcite ten stromecek takto vylepsit doporucuju. Pekne sem si na tom otestoval vsechny technologie, co pak budu pouzivat dal treba na zavlahu zahrady nebo jiny blbiny 😉
Vsimol som si, ze v appke na telefone mas hodnotu CO2, ako/cim ju prosim meras? 🙂
mam jak CO2 od loxone, ktery je drahy jak prase, ale funguje pekne, tak pak mam 2x CO2 od BigClown, se kterym jsem se upne nezzil, ackoli HW asi nebude spatny. Kdyby byl zajem, klidne prodam 🙂