Ovladač rolet s pohonem Somfy RTS

Již delší dobu jsem chtěl automaticky ovládat předokenní rolety s motorem Somfy RTS, ale nechtělo se mi do toho, protože se používá plovoucí kód a řešení tím pádem není jednoduché. V lednu tohoto roku Martin Hubáček publikoval video, kde ovládá zařízení na 433 MHz. Pro zjištění vysílaného kódu z originálního ovladače použil nástroj Universal Radio Hacker a zkopírovaný kód vysílá z levného čínského modulu připojeného k BigClown Core Module. Nevypadalo to moc složitě, tak jsem zkusil zkopírovat kód z jednoduchého zařízení na 433 MHz a vážně to fungovalo. To mě nakoplo, že bych měl konečně zkusit i Somfy.

Naštěstí jsou pohony Somfy rozšířené po celém světě a našel jsem několik postupů, jak je ovládat pomocí vlastního zařízení:

Vybral jsem si poslední možnost, ale kód pro Arduino jsem přepsal pro BigClown:

https://github.com/kybermonty/bcf-somfy-controller

Hardware pak vypadá takto jednoduše:

Hardware ovladače

Aby se vše posílalo přesně na mikrosekundy, naučil jsem se pracovat s hardwarovým časovačem TIM3 a využil jej. Použitý plovoucí kód si nikam nezapisuju, posílá se přes MQTT a v Node-RED si jej načítám/ukládám z/na SD kartu v Raspberry Pi.

Pro ovládání se využívá tento topic:
node/{node id}/somfy/s{shutter number}/cmd/{command}

  • node id - identifikátor/pojmenování uzlu BigClown sítě
  • shutter number - číslo rolety, od 1 do 5
  • command - jeden z těchto příkazů - up, stop, down, prog

Ve zprávě se posílá již zmíněný plovoucí kód, může se začít od libovolného čísla (např. 1) a každé další číslo musí být větší než předchozí.

Tento nový ovladač je potřeba s každou roletou spárovat. Postup je následující:

  • Na stávajícím originálním ovladači dlouze podržte tlačítko pro programování. Je z druhé strany ovladače a ke stlačení je potřeba nějaký špičatý předmět (např. pinzeta nebo propiska).
  • Roleta vyjede kousek nahoru a pak kousek dolů.
  • Přes MQTT zašlete novému ovladači příkaz “prog”.
  • Roleta opět vyjede kousek nahoru a pak kousek dolů. Tím potvrdila registraci nového ovladače a už budou fungovat ostatní příkazy.

Pokud si uzel sítě pojmenujeme “test” a budeme ovládat roletu pod číslem 3, mohou vypadat MQTT zprávy takto:

mosquitto_pub -t 'node/test/somfy/s3/cmd/prog' -m 1
mosquitto_pub -t 'node/test/somfy/s3/cmd/down' -m 2
mosquitto_pub -t 'node/test/somfy/s3/cmd/stop' -m 3
mosquitto_pub -t 'node/test/somfy/s3/cmd/up' -m 4

V Node-RED poslouchám zprávy s tímto topicem:
node/{node id}/somfy/s{shutter number}/send-cmd
Do každé doplním plovoucí kód, který mám uložený v souboru a převedu zprávu na výše popsaný formát.

Node-RED flow

Toto je poměrně složité řešení. Chtěl jsem mít nad plovoucím kódem kontrolu, protože při ztrátě nelze ovladač jednoduše z motoru smazat a maximum zaregistrovaných ovladačů je 12. Pro zjednodušení lze tento kód zapisovat do EEPROM pomocí funkce bc_eeprom_write a načítat přes bc_eeprom_read. Také bude potřeba upravit firmware, pokud máte více zařízení než 5.

Jestliže tedy máte rolety, žaluzie, vrata nebo markýzu s pohonem RTS, můžete vyzkoušet toto řešení. Kdyby jste si nevěděli s něčím rady, klidně mi napište.

Viz také

comments powered by Disqus