Když jsem si k bazénu pořídil tepelné čerpadlo, začal jsem zároveň řešit, jak efektivně využít přebytky z FVE a jak to celé propojit. Prvním nápadem bylo spínat čerpadlo rovnou přes relé, ale nebyl jsem si jistý, jestli po zapnutí naběhne samo, a taky jsem měl obavy, že časté vypínání by mohlo kompresoru škodit.
Další volba tak padla na Wi-Fi modul a jeho propojení přes TinyTuya (LoxBerry). Základní funkce, které jsem potřeboval – tedy zapnutí/vypnutí, čtení teploty vody v bazénu a nastavení požadované teploty – jsem tímto způsobem získal, a víc jsem v té chvíli nepotřeboval.
Jenže letos při odzimování bazénu přišlo “ale”. Wi-Fi modul se začal samovolně odpojovat od sítě – klidně i na hodinu. A to je problém, když potřebujete spínat podle přebytků z FVE v reálném čase.
Začal jsem proto hledat jiné řešení a zjistil, že čerpadlo má rozhraní RS485.
Takže hurá do toho.
Model, který mám je Rapid Mini Inverter RMIC06, ale ve skutečnosti je to výrobce Fairland, takže by měli fungovat stejné adresy pro všechny modely od nich.
Nejprve je potřeba sejmout kryt, pod kterým se nachází hlavní elektrický přívod. Kryt je upevněn několika šrouby – po jejich odšroubování lze kryt jednoduše sundat.
2. Demontáž displeje
Pod tímto krytem se nachází další šrouby, které drží displej. Ty je třeba vyšroubovat a displej opatrně vyjmout.
3. Odstranění horního krytu čerpadla
Po demontáži displeje se zpřístupní další dva šrouby, které upevňují horní kryt čerpadla. I tyto šrouby je třeba odstranit. Poslední šroub, který drží horní kryt, je umístěn na zadní straně jednotky, v blízkosti chladiče (radiátoru). Po jeho odšroubování lze horní kryt kompletně sejmout a získat tak přístup k vnitřní elektronice a sběrnici RS485.
4. Sejmutí krytů řídicí jednotky
Po odstranění všech krytů řídicí jednotky je možné najít konektor typu JST XH 2,54 mm (4pin), do kterého je zapojen modul pro připojení Wi-Fi.
Zde je můžeme vidět 4 piny – první dva jsou RS485 B a A zbylé dva je napájení tedy G zem a +12V, takže můžeme z desky rovnou napájet náš převodník
5. výsledné propojení
Nyní stačí jen pro jednotku najít vhodné umístění a přivést LAN kabel a znovu vše tepelné čerpadlo poskládat zpět.
6. Nastavení převodníku
přenosová rychlost 9600
Parity NONE
data 8
Stop 1
TCP Server
port 502
Modbus TCP
7. Loxone config
Přidáme nový modbus server kde zadáme IP adresu + port a nyní v předefinovaných zařízení přidáme šablonu ke stažení zde
ZigBee přes Tasmotu 4: Automatické posílání dat senzorem
Přes Tasmotu můžeme nastavit koncové ZigBee zařízení tak, aby automaticky posílalo data (změny “attributes”) buď na jiné koncové zařízení nebo na koordinátora (Tasmotu) a tedy i na Loxone. Automatické posílání dat na Tasmotu si u většiny senzorů nastaví Tasmota sama. Pokud ale chceme dostávat data z pro Tasmotu neznámého clusteru (například chceme automaticky dostávat atribut LockState z clusteru 0x0101 Door Locks), musíme si binding nastavit sami příkazem:
Stejně tak můžeme na koncovém zařízení nastavit jak často a s jakou citlivostí (hysterezí) má data posílat. Například frekvenci a citlivost posílání dat z teplotního senzoru můžeme snadno nastavit pomocí příkazu:
Příkazy pro koordinátora, příkazy pro koncové zařízení
Ještě, než se pustíme do nastavování koncového zařízení, musíme si uvědomit, že některé ZigBee Tasmota příkazy směřují na koordinátora (tj. ZigBee modul připojený k ESP32 čipu), některé příkazy směřují na samotná koncová zařízení.
Příkazy pro koordinátora (tj. pro ESP32 resp. pro rádiový modul k němu připojený) jsou mimo jiné:
ZbConfig (nastavení ZigBee sítě vč. kanálu)
ZbForget (smazání informací o koncovém zařízení)
ZbStatus (zobrazí uložené informace o koncovém zařízení)
ZbName
ZbPermitJoin
ZbScan
Příkazy pro koncová zařízení jsou mimo jiné:
ZbBind
ZbBindState
ZbLeave
ZbPing
ZbProbe
ZbSend
Proč je důležité to rozlišovat? Za prvé, zatímco koordinátor reaguje na příkazy okamžitě, příkaz pro koncové zařízení většinou končí chybou. Nenechte se tím vystrašit a odradit! Pokud narazíte na chybu
tak to má (většinou) prozaické vysvětlení. Koncové zařízení (senzor) je napájené baterií a z důvodu úspory energie přešlo do režimu spánku a vypnulo své ZigBee rádio. Pokud na něj chcete poslat nějaký příkaz, musíte ho nejdřív probudit, například změnou teploty okolo senzoru, otevřením/zavřením kontaktu atp. Senzor se na pár sekund probudí a máte šanci mu něco poslat.
Za druhé, zatímco první skupinou příkazů nastavujeme koordinátora (Tasmotu), druhou skupinou příkazů můžeme nejenom číst a ovládat, ale i nastavovat koncová zařízení. A tato nastavení (“bindings”, “groups” a “attribute reporting”) se ukládají do paměti koncových zařízení, nikoliv koordinátora!
Bindings
V předchozím díle tutorialu jsme si ukázali jak si můžeme vyžádat data (attribute) od koncového ZigBee zařízení. Probíhalo to podobně jako u Modbusu: poslali jsme příkaz 0x00 “Read Attribute” na konkrétní atribut v rámci konkrétního clusteru a v odpovědi nám ZigBee zařízení poslalo požadovaná data. Ale na rozdíl od Modbusu, koncová zařízení ZigBee umí data odesílat i sama! Slouží k tomu “bindings”.
Nejdřív trocha teorie. Začneme tím, že rozlišíme “pairing” a “binding”. Párování znáte – párujete koncové zařízení ke koordinátorovi (ZigBee hub). Je to vlastně připojení k síti (ke koordinátorovi) na fyzické vrstvě. Naopak binding je propojení na datové vrstvě mezi koncovým zařízením a jiným zařízením (jiným koncovým zařízením nebo koordinátorem) nebo skupinou zařízení (“group” – viz níže). Binding se vždy nastavuje na konkrétní cluster: pokud na koncovém zařízení nastavíte “binding”, bude automaticky odesílat cílovému zařízení zprávu, pokud se změní hodnota nějakého attributu v daném clusteru.
ZigBee “binding” se možná dá přirovnat k MQTT “publish” a “subscribe”, ale s jedním podstatným rozdílem: MQTT je centralizovaný protože informace o tom co se komu má (pře)poslat jsou uložena centrálně v “MQTT broker” (např. Mosquitto). Naopak ZigBee bindings jsou decentralizované, protože je nastavujeme na koncovém zařízení. Každé ZigBee zařízení (vč. zdánlivě “pitomých” senzorů a tlačítek) můžeme naučit co (“Cluster”) má komu (“ToDevice” nebo “ToGroup”) posílat. Odesílání dat potom probíhá automaticky, dokonce i když odstraníte koordinátora ze sítě! Počet bindings, které si může zařízení zapamatovat, je omezený, ale v jednu chvíli můžete mít nastaveno několik různých bindings na různá cílová zařízení (resp. cílové skupiny) současně.
OK, trocha praxe. Nejdřív by stálo za to zjistit, kam všude ZigBee zařízení svá data posílá. Nejdřív dotaz na Sonoff čidlo vlhkosti a teploty:
ZbBindState ZB2.02_Digestor
Z výsledku zjistím, že tenhle senzor má v paměti uložené celkem 3 bindings týkající se clusterů 0x0001 (Power Configuration, ve kterém je i atribut ke stavu baterky), 0x0402 (Temperature Measurement) a 0x0405 (Relative Humidity Measurement). Všechny bindings mají stejné cílové zařízení “ToDevice”, v mém případě tajuplné “0x04CD15FEDEB49F81”. To není nikdo jiný než moje Tasmota. Jak je možné, že sensor má v paměti tyhle 3 bindings? No protože ho to Tasmota naučila poté, co se s tímto senzorem spárovala. Během “párování” senzoru Tasmota zjistila, že se jedná o senzor vlhkosti a teploty a rovnou odělala i “bindování” – poslala na něj tři příkazy ZbBind, kterými senzor nastavila tak, aby jí posílal změny ve třech clusterech, ve kterých jsou atributy, které ji zajímají (tj. stav baterky v %, teplota a vlhkost). Teď zkusíme Danalock:
ZbBindState ZB4.01_Obyvak_zamek
mi vyplivne jenom jedno binding (na cluster 0x0001 – baterka):
Tasmota bohužel neumí door locks, takže během párování udělala automatické binding jenom na baterku. To musíme napravit tím, že naučíme Danalock nové binding na cluster 0x0101 (Door Lock) pomocí příkazu ZbBind (dokumentaci k tomuto příkazu najdete zde). “ToDevice” vynecháme, což znamená, že cílovým zařízením odesílaných dat bude Tasmota samotná:
Od této chvíle bude Danalock automaticky posílat Tasmotě (a tedy i Loxonu) zprávu vždy když ručně zamknu nebo odemknu zámek (tj. vždy když se změní atribut 0x0000 “LockState” v clusteru 0x0101 “Door Lock”).
Podobným způsobem můžete udělat binding mezi jedním koncovým zařízením a jiným koncovým zařízením. Použijete opět příkaz ZbBind, ale doplníte do něj “ToDevice”. Jak už jsme se zmínili výše, v tomto případě bude zdrojové zařízení posílat data a příkazy přímo na cílové zařízení, i když bude koordinátor odpojený ze sítě. Pokud bude koordinátor v síti přítomný, bude “v kopii” dostávat zprávy, které si mezi sebou koncová zařízení posílají.
Pro zrušení propojení použujeme příkaz ZbUnbind. Pokud zadáme “ToDevice”, ruší se binding na dané cílové zařízení. Pokud jej vynecháme, smaže se binding na Tasmotu, např:
ZigBee protokol umí sloučit vícero zařízení do “groups”. Přesněji řečeno, můžete své ZigBee zařízení naučit, aby se stalo členem nějaké ZigBee skupiny (group). Jakmile máte zařízení přiřazená do skupiny, můžete příkazy ZbSend, ale i ZbBind posílat nikoliv na jedno konkrétní zařízení, ale na celou grupu. V praxi tak můžeme provázat (“binding”) jedno zdrojové zařízení (například tlačítko) s celou skupinou cílových zařízení (např. ZigBee žárovek) najednou.
Podobně jako “bindings” (informace o tom, jakému koncovému zařízení nebo koncové skupině se mají posílat informace z daného clusteru), tak i informace o členství v “groups” není uložena v koordinátorovi (Tasmotě), ale v paměti samotných koncových zařízení. Zatímco ale “bindings” umí udělat všechna ZigBee zařízení, připojování do skupin umí pouze některá z nich – ta která umí cluster 0x0004 (Groups). Bližší info ke skupinám najdete v dokumentaci.
Attribute Reporting
Když jsem si pořizoval první ZigBee senzory, žil jsem v mylné představě, že frekvence posílání dat je “natvrdo” nastavená v každém senzoru. Dokonce jsem vybíral senzory podle toho, jak často a s jakou citlivostí měří a posílají data… Ve skutečnosti si frekvenci (resp. citlivost) posílání dat můžete sami nastavit v přes Tasmotu! To má obrovský význam u bateriových senzorů – sami si určujete, jak často se má zařízení probouzet, zapínat rádio a odesílat data podle toho, co je pro vás důležitější: výdrž baterie nebo četnost a citlivost (přesnost) odessílání dat?
Attribute reporting je vlastně doplňkem k bindings. Přes bindings si na úrovni celého clusteru nastavujete, kam se mají automaticky posílat data. Přes attribute reporting si na úrovni jednotlivých attributes nastavujete, jak často se mají data posílat.
Ve skutečnosti se jedná o generický command (0x06 “Configure Reporting”) se třemi parametry:
“MinInterval” je nejkratší možný interval mezi zprávami. I kdyby se hodnota atributu měnila častěji, nová zpráva se nepošle dříve, než po uplynutí této doby.
“MaxInterval” je nejdelší možný interval mezi zprávami, musí být vždy větší než MinInterval. Po uplynutí této doby pošle zařízení zprávu, i když se hodnota atributu od předchozí zprávy nezměnila. “MaxInterval” můžete využít při validaci v Loxonu: u virtuálního UDP vstupu si do políčka “Překročení časového limitu při příjmu” dejte hodnotu “MaxInterval” navýšenou o pár sekund. Pokud Loxone nedostane ani po uplynutí “MaxInterval” zprávu od daného senzoru, Loxone vyhodí chybovou hlášku a vy budete vědět, že senzor je nedostupný (pravděpodobně se vybila baterka).
“ReportableChange” nastavuje citlivost senzoru. Pokud je změna atributu větší než zde nastavená hodnota, zařízení pošle zprávu. Nula znamená “při jakékoliv změně” (hodí se u diskrétních proměnných jako je právě LockState). U spojitých proměnných (teplota, vlhkost) můžete použít i desetinnou tečku.
Dávejte si pozor u bateriových zařízení, která usínají (a vypínají rádio). Pokud nastavíte vysokou “ReportableChange”, zařízení usne na velmi dlouhou dobu (třeba i několik hodin), vypne si rádio a vy mu nebudete moci poslat žádný další příkaz (ani příkaz na snížení “ReportableChange”). Pak už pomůže jenom nové párování.
Při párování totiž Tasmota automaticky provádí nejenom auto-binding na clustery, ze kterých chce od senzoru dostávat data (viz výše), ale zároveň nastavuje “attribute reporting” na defaultní hodnoty. Pokud vás zajímá, u kterých atributů to dělá a jak vysoké jsou ony defaultní hodnoty, podívejte se do souboru /tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_8_parsers.ino a vyhledejte si const Z_autoAttributeReporting. Jednotlivé parametry (např. USE_ZIGBEE_MAXTIME_BATT) jsou konfigurovatelné při kompilaci Tasmoty, jejich defaultní hodnoty najdeme v /tasmota/my_user_config.h , kde zjistíme, že defaultní hodnota “MaxInterval” pro BatteryPercentage je 4*60*60 sekund. Tím se nám vysvětluje, proč žádné ZigBee zařízení (dokonce ani okenní kontakt, který se nehýbe) nemá “lastseen” větší než 4 hodiny – každé 4 hodiny se totiž probudí, zapne své rádio a pošle na Tasmotu zprávu o stavu baterky. A pokud ani tuto zprávu tu nepošle a lastseen stoupne nad ony 4 hodiny, znamená to, že zařízení se dostalo mimo dosah signálu nebo mu došla baterka.
Pokud byste někdy potřebovali spustit autobindovací rutinu (vč. nastavení reportingu na defaultní hodnoty) ručně, můžete použít příkaz ZbProbe:
ZbProbe ZB2.02_Digestor
OK a poslední věc. Pokud jste si na senzorech nastavili vlastní hodnoty attribute reporting, poznamenejte si ty hodnoty někam stranou (třeba do poznámky v Loxone Configu), protože:
Bohužel není způsob, jak se zařízení zpětně dotázat na aktuálně nastavené hodnoty.
Při příštím párování Tasmota automaticky přepíše vaše hodnoty reportingu na defaultní.
Tak a to je vše…..
ZigBee přes Tasmotu 3: Neznámé ZigBee zařízení (Danalock)
Přes Tasmotu můžeme číst a ovládat i ZigBee zařízení, které není na seznamu “oficiálně” podporovaných zařízení. Potřebujeme ale zjistit, co zařízení umí (“clusters”), jaká data z něj můžeme číst (“attributes”) a jaké přijímá příkazy (“commands”).
Například ZigBee zámek Danalock můžeme jednoduše ovládat pomocí virtuálního HTTP výstupu s těmito instrukcemi při zapnutí a vypnutí:
Na www.zigbee2mqtt.io/supported-devices/ najdete seznam ZigBee zařízení, která mají podporu v rámci Zigbee2MQTT. Není pochyb o tom, že co do množství podporovaných zařízení nemá Zigbee2MQTT konkurenci. My ale Zigbee2MQTT nepoužíváme, protože Loxone neumí MQTT protokol a nechceme MQTT složitě převádět pomocí nějakého dalšího serveru (viz první článek tutorialu). Databáze Zigbee2MQTT pro nás i tak může být užitečná, pokud sháníme nějaké zařízení a chceme si ověřit, co umí.
Na zigbee.blakadder.com/index.html najdete další databázi ZigBee zařízení, která je poněkud přívětivější na filtrování a vyhledávání zařízení. Neomezuje se na Zigbee2MQTT, ale můžete si zařízení filtrovat podle toho, zda mají “oficiální” podporu v různých alternativních firmwarech (Tasmota, Zigbee2MQTT, deConz…). Za druhé, můžete si snadno procházet ZigBee zařízení podle typu (senzory, zásuvky, světla, rolety, zámky…).
Seznam zařízení podporovaných v Tasmotě je úctyhodný, ale může se vám stát, že vaše zařízení mezi nimi není – Tasmota například nemá oficiální podporu ZigBee zámků. V databázi se pouze dočtete, že “If the device is following Zigbee standards it is possible it will work with other gateway solutions, it is just not confirmed as working yet!” OK, v tomto článku si ukážeme, jak na Tasmotu (tj. i na Loxone) připojit ZigBee zařízení, u kterého (zatím) není oficiálně potvrzena kompatibilita s Tasmotou. Konkrétně zkusíme zámek Danalock. Ale ještě než se do toho pustíme, dovolím si trochu osvěty a vysvětlování pojmů ze světa ZigBee.
ZigBee Cluster
Clustery jsou skupiny funkčně souvisejících příkazů (commands) a atributů (atributes), které definují, co zařízení může dělat. Každý cluster je identifikován 16-bitovým identifikátorem. Clustery jsou standardizovány (v ZigBee Cluster Library – ZCL), ale někteří výrobci (IKEA, Tuya) si přidávají vlastní specifické clustery (s vlastními attributes a commands). Seznam standardizovaných clusterů najdete tady (pozor, seznam je neúplný).
Koncová ZigBee zařízení si umí přímo mezi sebou posílat příkazy (o tom si víc povíme ve 4. tutorialu), takže ještě musíme rozlišovat, jestli zařízení umí příkazy daného clusteru přijímat nebo odesílat. InCluster znamená, že zařízení funguje jako server a umí přijímat příkazy definované v rámci daného clusteru (včetně příkazu “read” na čtení atributů). OutCluster znamená, že zařízení umí odesílat příkazy a fungovat jako klient v rámci daného clusteru.
OK, dost bylo teorie, jdeme to vyzkoušet. Jaké InClustery a OutClustery vaše zařízení umí zjistíte pomocí příkazu
Zjistili jsme, že Danalock umí přijímat příkazy definované v rámci 8 různých clusterů, ale odesílat příkazy pouze jediného. Ty nejdůležitější a nejzajímavější clustery jsou:
0x0000 Basic (základní info o zařízení)
0x0001 Power Configuration (napájení a baterka)
0x0101 Door Lock
Pro ilustraci pár dalších clusterů, se kterými se můžete potkat v běžných ZigBee zařízeních (senzory, tlačítka, zásuvky, žárovky):
0x0006 On/Off (vypínání a zapínání věcí)
0x0008 Level Control (např. stmívání světel)
0x0402 Temperature Measurement
0x0405 Relative Humidity Measurement
0x0500 IAS Zone (okenní kontakty, čidla pohybu)
ZigBee Attribute
Atribut je proměnná definovaná uvnitř konkrétního clusteru, identifikovaná 16-bitovým identifikátorem. Atributy mohou uchovávat informace o zařízení (např. Manufacturer – jméno výrobce zařízení), stav zařízení (např. LockState – aktuální stav zámku) nebo měřené veličiny (např. Temperature). ZigBee zařízení nám může na vyžádání poslat hodnotu attributu (pokud mu pošleme příkaz “read”) nebo je dokonce může posílat automaticky (o tom si povíme příště).
ZigBee atributy můžeme přirovnat k Modbus registrům, ale s jedním podstatným rozdílem: attributy v ZigBee jsou standardizované (v ZigBee Cluster Library). Takže pokud budeme číst atribut 0x0021 v clusteru 0x0001, vždycky se nám vrátí BatteryPercentage.
Pár zajímavých atributů
cluster
attribute
0x0000 Basic
0x0004 Manufacturer
0x0005 ModelId
0x0001 Power Configuration
0x0020 BatteryVoltage
0x0021 BatteryPercentage
0x0402 Temperature Measurement
0x0000 Temperature
0x0405 Relative Humidity Measurement
0x0000 Humidity
Standardizace je super. Průser je v tom, že oficiální dokumentace ZigBee Cluster Library je šílená (přes 1300 stránek!) a na netu se nikde nedá najít nějaká přehledná tabulka s clustery a atributy. Vlastně jedinou cestou, jak se dopátrat seznamu atributů, je podívat se do kódu Tasmoty. Jděte do /tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_converters.ino a hledejte const Z_AttributeConverter . V druhém sloupci máte ID clusteru, ve třetím ID atributu a ve čtvrtém máte human-readable název atributu. Dobrá zpráva, v clusteru 0x0101 Door Lock máme v Tasmotě nadefinovaných prvních pět atributů, včetně 0x0000 “LockState”.
0x0101 Door Lock
0x0000 LockState
0x0001 LockType
…
ZigBee Command
ZigBee commands jsou obdobou Modbus functions. Pomocí příkazů můžeme číst atributy, ovládat zařízení nebo dokonce nastavovat zařízení. Rozlišujeme dvě kategorie příkazů: 1) generic commands a 2) cluster-specific commands.
Generic Commands
Generické příkazy můžeme použít v jakémkoliv clusteru, v syntaxi Tasmoty je poznáte podle podtržítka _ . Je jich jenom pár (seznam zde) a ve skutečnosti nás zajímá jenom jediný z nich:
0x00 Read Attributes
Jdeme do konzole Tasmoty otestovat generický command “Read Attributes”. Na cluster 0x0101 (Door Lock) posíláme generický command 0x00, přičemž v payloadu příkazu dáváme ID atributu, který nás zajímá – tedy 0x0000 LockState (v little endian, prohozené bajty).
Paráda. LockState je 2, podle dokumentace to znamená “Unlocked”.
Cluster Specific Commands
Tyto příkazy jsou unikátní pro každý cluster, v syntaxi Tasmoty je poznáte podle vykřičníku ! . Prvním místem, kde hledám příkazy z clusteru 0x0101 na zamykání a odemykání je dokumentace Tasmoty. Jak vidíte, Tasmotou podporovaných příkazů je docela dost, najdeme dokonce i příkazy pro sousední cluster 0x102 (Window Covering cluster, tedy okenní rolety). Ale pro cluster 0x0101 nic. Zkouším ještě zdrojový kód Tasmoty. Pokud chcete vědět, jaké všechny cluster-specific příkazy Tasmota podporuje, jděte do /tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_6_commands.ino a hledejte const Z_CommandConverter . V prvním sloupci je human-readable název příkazu používaný Tasmotou, v druhém je ID clusteru a ve třetím je samotný příkaz. Příkazy pro cluster 0x0101 opravdu chybí.
Obecně řečeno, existují dvě možná vysvětlení: A) pro daný cluster žádné cluster-specific commands nejsou (i to se může stát, některé clustery postrádají commandy) nebo B) příkazy existují, ale Tasmota je nezná. V případě clusteru 0x0101: B je správně, protože se mi na netu podařilo vyhrabat neoficiální, leaknutou, starou (z let 2016/2017) dokumentaci Danalocku , kde příkazy z clusteru 0x0101 jsou. Nechápu, proč to Danalock nedává jako přílohu oficiální dokumentace? A nebo ještě líp, definice příkazů není nic, co by si vymyslel Danalock, je to standardizované v rámci ZCL. Tak proč slavná ZigBee Alliance nezvedne prdel a neudělá někde na webu přehlednou tabulku clusterů a commandů? No nic, máme dva commandy specifické pro cluster 0x0101 Door Lock:
0x00 Lock Door
0x01 Unlock Door
Na cluster 0x0101 (Door Lock) posíláme cluster-specific command 0x00. Podle dokumentace by v payloadu mohl být PIN uživatele, já ho vynechávám:
Samotná integrace do Loxonu je banální. Ten samý příkaz, který funguje v konzoli Tasmoty hodíte do virtuálního HTTP výstupu (instrukce při zapnutí a instrukce při vypnutí):
V Tasmotě si zapneme logování přes “syslog”. Syslog znamená, že Tasmota posílá veškeré logy přes UDP protokol, takže data ze ZigBee senzorů můžeme v Loxonu zachytávat přes UDP vstupy. Příklad rozeznání příkazu v UDP vstupu:
"Name":"ZB2.02_Digestor"\i"Humidity":\i\v
K ovládání ZigBee aktorů budeme v Loxonu používat HTTP výstupy. Příklad instrukce při zapnutí (nebo vypnutí) v HTTP výstupu:
Párování koncových ZigBee zařízení s Tasmotou je primitivní a zatím jsem se nesetkal s žádnými problémy. V Tasmotě povolíme párování nových zařízení buď stisknutím “ZigBee Permit Join” na hlavní obrazovce Tasmoty nebo tímto příkazem v konzoli:
ZbPermitJoin
Pak na samotném ZigBee zařízení spustíme párování (většinou stisknutím tlačítka). Spárované ZigBee zařízení je zatím identifikované 2 bytovým HEX kódem, takže jako první si jej přejmenujeme. Doporučuji stejný název, jaký budete používat v Loxone Configu:
ZbName 0xA291,ZB2.02_Digestor
Jestliže párování provádí koncové zařízení, tak i “odpárování” má na starosti koncové zařízení. Pokud chceme zařízení “odpárovat”, musíme mu poslat požadavek, aby opustilo naši síť:
ZbLeave ZB2.02_Digestor
A poté Tasmotě řekneme, aby si smazala zařízení ze své paměti. Pokud bychom neprovedli ZbLeave, smazané zařízení by dál vesele posílalo na Tasmotu data.
ZbForget ZB2.02_Digestor
Jakmile máme spárovaná všechna ZigBee zařízení, může výsledek vypadat třeba takto:
Vizualizace ZigBee v Tasmotě je jednoduchá, ale dostačující. Na hlavní stránce máte seznam senzorů, se stavem baterie a “lastseen” (kdy naposled senzor poslal nějaká data).
V ZigBee Map máte topografii sítě. Koncová zařízení (modrá) si sama vybírají, jestli se připojí přímo na koordinátora (červený) nebo na router (oranžový), podle toho, kdo je blíž (kdo má silnější signál). Číslo na těch spojovacích čárách znamená sílu signálu (čím vyšší, tím lepší).
Já jako router (“ZB3.01_Satna_repeater”) používám DC dimmer. Tasmota mi automaticky ukazuje stav dimmeru a nastavenou barvu, ale v reálu tam žádný RGB led pásek připojený nemám, jak jsem psal minule, dimmer mám jenom kvůli posílení ZigBee signálu 🙂
Čtení ZigBee senzorů v Loxone
Jako první skočte do konzole Tasmoty a ověřte si, že ze ZigBee senzoru chodí nějaká data. Třeba:
Jak vidíte, data chodí v human-readable JSONu. To samé, co vidíte v konzoli, bude dostávat i Loxone! Stačí, když v Tasmotě přejdete do:
Configuration > Configure Logging
A nastavíte si:
Syslog level: 2 Info
Syslog host: IP adresa Loxonu
Syslog port: libovolný port, na kterém bude Loxone poslouchat
Nastavení v Loxone Configu je primitivní. Přidáte nový virtuální UDP vstup, adresu odesílatele můžete nechat prázdnou, zadáte port, kde bude Loxone poslouchat (např. 514 pokud jste v Tasmotě ponechali defaultní Syslog port). A pak přidáte “virtuální UDP příkaz” pro každý ZigBee senzor. Při parsování v Loxonu doporučuju pracovat s “Name” (např. “ZB2.02_Digestor”), nikoliv “Device” (2-bajtový identifikátor, např. “0xA291”). Pokud totiž senzor s Tasmotou spárujete znovu, tak se “Device” změní, ale “Name” zůstává stejné. Konkrétně v UDP rozeznání příkazu mám:
"Name":"ZB2.02_Digestor"\i"Humidity":\i\v
Ovládání ZigBee aktorů v Loxone
Jako první krok doporučuju otestovat ZigBee aktor v konzoli Tasmoty. Seznam podporovaných ZigBee příkazů najdete tady, můžete zkusit třeba:
Pokud bych měl na svůj DC dimmer připojený nějaký LED pásek, tak by zrovna zhasnul. OK, funguje to, takže propojíme Tasmotu s Loxone. V Tasmotě přejdete do:
Configuration > Configure Other
A zaškrtněte “HTTP API enable”. Mimochodem, Tasmota taky umí MQTT, ale pro jistotu opakuji: vyserte se na MQTT!! “MQTT enable” můžete v klidu zrušit.
Z Loxonu budeme Tasmotu (a s ní spárované ZigBee aktory) ovládat přes Virtuální HTTP výstup. Jako adresu dáte IP Tasmoty. Potom nový “Virtuální výstup příkazu”. Používáme HTTP Get, jako instrukci při zapnutí (nebo vypnutí) dáme ten samý příkaz, který jsme testovali v konzoli Tasmoty, třeba:
No a to je vše! Pro úplnost připomínám, že podobným způsobem můžete přes UDP vstupy a HTTP výstupy číst a ovládat jakékoliv NE-ZigBee zařízení, na kterém běží Tasmota (třeba WiFi “chytrou” zásuvku). Pokud vám nějaký Tasmota příkaz (tady je jejich kompletní seznam) bude fungovat v Tasmota konzoli, bude vám fungovat i v HTTP výstupu Loxonu.
Pokud chcete připojit ZigBee zařízení (senzory nebo aktory) k Loxonu, kupte si ZigBee bránu postavenou na ESP32. Flashněte na něj Tasmotu. Nic víc nepotřebujete – nepotřebujete žádné další zařízení (RPi, Loxberry etc.), na kterém by vám běžel další software (Docker, MQTT broker, Node Red, MQTT Gateway pro Loxberry atd.)
Přehled možných řešení
Nejdřív stručný přehled možných řešení, jak do Loxonu přidat bezdrátové technologie
Air + Loxone
Air zařízení < --(proprietární protokol)-- > Loxone < -- > uživatel
Loxone nepodporuje ZigBee, místo toho má vlastní proprietární bezdrátovou technologii Air. Integrace Air do loxonu je velice snadná, ale Air zařízení jsou oproti ZigBee předražená. Nabídka Air je mnohem užší, protože se jedná o proprietární technologii dostupnou jenom v Loxone shopu.
ZigBee + Apple HomeKit
ZigBee zařízení < --- > ZigBee brána (HomeKit kompatibilní) < --- > Apple Cloud < --- > Apple "Domácnost" < --- > uživatel
Pro úplnost zmíním, že snadným způsobem, jak kombinovat ZigBee s Loxonem je přes Apple HomeKit. Schválně říkám “kombinovat s” a ne “integrovat do”, protože integrátorem (tj. místem, kde se sbíhají všechny senzory a aktory, kde je nadefinovaná automatizační logika a kde se připojuje koncový uživatel) není Loxone app, ale Apple “Domácnost”. Připojíte ZigBee bránu k HomeKit (skoro každá brána včetně těch na Aliexpressu to umí), stejně tak do HomeKit připojíte Loxone. Loxone o ZigBee neví, domácnost automatizujete a ovládáte přes aplikaci Apple “Domácnost”. Jste tedy uživatelem Applu a ne Loxonu. Sbohem a šáteček….
Dosavadní snahy o integraci ZigBee do Loxonu byly většinou postavené na ZigBee2MQTT. To zamená, že na ZigBee koordinátorovi běží firmware ZigBee2MQTT (https://www.zigbee2mqtt.io/) a jak název napovídá, z koordinátora leze MQTT. Výhodou je obrovská databáze podporovaných zařízení , takže převod na MQTT protokol je (většinou) rychlý a bez problémový.
Nevýhodou je skutečnost, že Loxone neumí číst MQTT a proto potřebujete nějakého “prostředníka”, tedy další stroj (RPi nebo nějakou virtuální mašinu), s vlastním OS (Debian, Raspbian, Loxberry) na které poběží MQTT broker (protože samotný MQTT protokol je centralizovaný a vyžaduje brokera) a potom další software, který musíte nakonfigurovat a který vám (pokud se vše podaří) přeloží MQTT protokol na něco, čemu Loxone rozumí (UDP, websockety).
Jaká řešení můžete na netu (a na vodnících) najít:
Řešení v tomto tutorialu používá jako alternativní firmware pro ZigBee koordinátora (ZigBee bránu) Tasmotu, místo ZigBee2MQTT. Tasmota posílá (a přijímá) data přes obyčejný HTTP nebo UDP, nikoliv přes MQTT. Hlavní výhoda je tedy v tom, že kromě samotné ZigBee brány (na které běží Tasmota) nepotřebujeme na propojení s Loxone žádný další HW ani software.
Nákupní seznam
ZigBee brána postavená na ESP32, doporučuju bránu s ethernet rozhraním “eWeLink ZB-GW03“, dá se koupit třeba tady. Pokud vám ale stačí wifi, můžete použít i Sonoff bránu, dá se sehnat i v Česku.
USB – Serial adaptér na flashování, třeba tento (ten červený) nebo tenhle doporučovaný Tasmotou.
doporučuju rovnou přikoupit nějaké další zařízení, které můžete použít jako ZigBee router a rozšířit si tak dosah sítě, třeba tenhle DC stmívač. Bude se vám k němu hodit DC konektor male 5.5mm x 2.1mm.
nějaké male-female dupont kabely na flashování
Tasmota
Tasmota je alternativní firmware pro komerční “chytrá” zařízení (zásuvky, reláta, vypínače, senzory, atd.) postavené na ESP32 či ESP8266. Původně byla vymyšlená pro WiFi zásuvky, ale dnes Tasmota zvládá obrovskou škálu senzorů, včetně ZigBee. Tenhle článek popisuje flashování Tasmoty na ZB-GW03 (vycházel jsem z tohoto tutorialu). Pokud jste se místo ZB-GW03 rozhodli použít Sonoff, postupujte podle tohoto tutorialu (až na pár drobností je to stejné).
Pokud si chcete zkompilovat čerstvou Tasmotu, nejjednodušší je využít k tomu GitPod (ke službě je nutné se přihlásit). V GitPodu stačí zeditovat dva soubory: k souboru platformio_override.ini PŘIPOJTE tento kód. Obsah souboru tasmota/user_config_override.h NAHRAĎTE tímto kódem. Pak už stačí v příkazovém řádku zadat příkaz platformio run -e tasmota32-EWELINK a po cca 2 minutách máte hotový firmware v adresáři build_output/firmware/tasmota32-EWELINK.bin
Pokud se vám nechce Tasmotu pro bránu ZB-GW03 kompilovat, můžete si stáhnout mnou zkompilovaný firmware (parametry a nastavení, se kterým jsem kompiloval máte v předchozím bodě): tasmota32-EWELINK-2022-09-25.bin
Rozebereme ZB-GW03 a připojíme k USB-Serial adaptéru. Nejnovější verze desky V1.3 má na důležitých místech díry, takže si můžete na desku snadno připájet piny (jako jsem to udělal já). Ale vzhledem k tomu, že fyzicky budete flashovat firmware jenom jednou (všechny další upgrady firmwaru budete dělat OTA přes webové rozhraní Tasmoty), tak pájet piny nemusíte, stačí do děr dočasně píchnout propojovací kabely.
Nezapomeňte na USB/Serial adaptéru nastavit jumperem napětí 3,3 V !!!!!!
Propojení:
ESP32 <–> USB/Serial adaptér
GND <–> GND
3.3V <–> 3.3V (nebo VCC, ale ověřte si, že tam opravdu máte napětí 3,3 V)
RX <–> TX (!!)
TX <–> RX (!!)
IO0 <–> GND (já jsem to vyřešil jumperem)
Flashnuté ZB-GW03 spustíme – pokud vše proběhlo v pořádku, bude trvale svítit červená dioda. Píchneme Tasotu přes ethernet kabel do sítě, ve které máme DHCP server, a Tasmota od něj dostane dynamickou IP adresu (později si můžete nastavit statickou). Přidělenou adresu zjistíme třeba pomocí Advanced Port Scanneru, který nám najde IP adresu Tasmoty a rovnou nám nabídne proklik na HTTP službu (webserver Tasmoty).
Přejdeme do webového rozhraní Tasmoty a zkontrolujeme nastavení. Pokud jste použili můj firmware (nebo moje konfigurační soubory), Tasmota je připravená k použití, zbývá už jenom aktualizovat firmware samotného ZigBee modulu. Z této stránky si stáhněte ncp-uart-sw-6.7.8_115200.ota. V Tasmotě přejděte na Firmware Updates > Upgrade by file upload a nahrajte firmware pro ZigBee rádio (Tasmota automaticky pozná, že se nejedná o firmware pro ESP32 ale pro ZigBee rádio).
Základní nastavení Tasmoty se dá naklikat, ale vedle toho má Tasmota obrovské množství příkazů, kterými můžete nastavovat samotnou Tasmotu a (jak si ukážeme později) i samotnou ZigBee síť a dokonce i koncová ZigBee zařízení. Příkazy (jejich kompletní seznam je tady) budeme zadávat přes konzoli (přejděte na Consoles > Console), ale ty samé příkazy můžete posílat přes HTTP API, čehož později využijeme na propojení s Loxone. Jako první zkusíme příkaz na nastavení statické IP adresy, třeba:
EthIpAddress 192.168.1.25
Pokud byste se někdy potřebovali vrátit na výchozí nastavení stačí zmáčknout Configuration > Reset Configuration.
Na závěr tohoto tutorialu pár poznámek ke dvěma pojmům, se kterými se v ZigBee světě potkáte: koordinátor a router.
ZigBee koordinátor
ZigBee Coordinator nastavuje fyzické parametry ZigBee sítě. Je to něco jako access point. Koordinátor se zároveň stará o fyzické přemostění mezi ZigBee a jiným rozhraním, které může bý:
ethernet
wifi
usb/serial
Už na začátku jsme zavrhli nejrůznější USB moduly, protože k nim bychom potřebovali další HW (s linuxem). WiFi není ideální, protože latence a potenciálně i interference (ZigBee běží na stejných frekfencích jako WiFi). Kromě toho je tu ještě jeden praktický důvod. Loxone mám z bezpečnostních důvodů v samostatné VLAN (s řadou síťových zařízení vč. Tasmoty Loxone komunikuje přes nezabezpečený HTTP nebo UDP). Tahle VLAN pro Loxone (a na něj napojené věci) je postavená na ethernetu a nechce se mi jenom kvůli ZigBee bráně do téhle VLAN přidávat nějaké dedikované wifi rozhraní…. Pokud ale trváte na tom, že chcete Loxone připojovat k ZigBee bráně přes WiFi (a ne ethernet), můžete si Tasmotu flashnout na Sonoff bránu.
Z mého pohledu je tedy nejlepším řešením lepší koordinátor s ethernet rozhraním, proto jsem bral ZB-GW03. Pořád ale musíme počítat s tím, že samotné ZigBee běží na stejných frekvencích jako Wifi, viz zde. Pokud chcete (orientačně) vědět, který ZigBee kanál je více nebo méně zahlcený, zkuste v Tasmotě příkaz:
ZbScan
Tasmota defaultně používá ZigBee kanál 11, pokud ho chcete změnit, udělejte to raději ještě před párováním samotných ZigBee zařízení:
ZbConfig {"Channel":11}
Sílu a dosah ZigBee rádia v bráně ZB-GW03 jsem neřešil, protože ZigBee je nadesignované tak, abyste dosah koordinátora řešit nemuseli…..
ZigBee router
ZigBee router je zařízení, které vlastně “rozšiřuje” dosah ZigBee sítě, protože umí přeposílat data mezi koncovým zařízením a koordinátorem.
Jakékoliv trvale napájené ZigBee zařízení (ZigBee zásuvka, žárovka, atd.) funguje jako ZigBee router. Já ale chci, aby mi ZigBee síť fungovala i při výpadku elektřiny (protože na ní mám důležité věci vč. Danalock zámku), takže jako router nepoužívám 230V AC zařízení (např. zásuvku), ale DC dimmer, který můžu napájet zálohovaným DC napětím v libovolné hladině 5V, 12V nebo 24V.
Router nijak nenastavuju, prostě ho zapojím na vhodné místo, kde mám dotažené DC napájení (do podhledu, za vypínač…) a víc se o něho nestarám.
To je co se týče HW vše. V dalším díle do ZigBee sítě přidáme nějaké senzory a napojíme je na Loxone.
This small article describes how to easily integrate Loxone with Apple iOS. There are two ways of achieving similar functionality.
1nd has been introduced on 16th December with latest Loxone app update and iOS 14.3.
2st is here since aegis and introduction of homebridge/Hoobs with loxoxe-ws.
1. iOS Shortcuts for Loxone
Update your iOS device, update the Loxone application. After update open the Loxone app and trigger any action you want. Updated version of iOS and app has now background service running to capture the Loxone activities (most probably via url which some of the others already using for QR generation).
1.1 Creation of the Shortcut
Go to Loxone App and trigger
1.2 Creation of the Shortcut
Go to shortcut and click +
Select Apps
Look for Loxone
Select the action you previously recorded/triggered in Loxone App
Thats it… you have a Shortcut for Loxone action!
1.3 Creation of NFC action
Install the RFID any where you want 🙂 125 kHz or 13Mhz Mifare (I believe both are supported). Both available on aliexpress for “nothing”
Go +
Create personal automation
Select NFC to scan the installed RFID chip
SCAN
Click Next
Select the previously created ShortCut to be executed when iPhone scans the RFID
Unselect the “Ask Before Running” if you want to execute the action without any re-confirmation
Just one small remark -> it is NOT needed to fully Unlock+Open the phone. In case of FaceID it is enough to have a look to phone so the lock symbol turns to “unlocked” and you can scan the RFID right away on “unlocked lock-screen”
2. iOS Home/HomeKit for Loxone
In case you have already Homebridge (loxone-ws, loxone-ws-adv, etccc in HOOBS or anywhere else) running, and everything tuned up with virtual switches reflected in Homekit/Homebridge you can run 1.3 but in stead of Loxone just select Home as application and select the accessory you want to trigger/change/ON/OFF with the NFC chip.
Firmware ESP Easy je vhodný na doplnenie rôznych periférii , senzorov a aktorov pripojených k Loxone cez Wifi. Konfigurácia ESP Easy je založená výlučne na webe, takže akonáhle máte nahraný firmvér, nepotrebujete okrem bežného webového prehliadača žiadny iný nástroj.
HARDWARE
Podporovaný HW nájdete tu https://www.letscontrolit.com/wiki/index.php?title=ESP_Hardware
Osobne používam WEMOS D1 mini za 2€, alebo NodeMCU ktorá je väčšia. Skúšal som dosku WROOM ta mi nefungovala.
Odporúčam kúpiť dosku, ktorá ma prevodník USB to serial , aby ste sa nemuseli trápiť s externým prevodníkom.
FLASCH FW
1. Stiahneme si FW z odkazu https://github.com/letscontrolit/ESPEasy
2. Pripojíme dosku pomocou USB, mal by sa nám nainštalovať ovládač. V správcovi zariadení nám pribudne COM port.
3. sú 2 možnosti SW, ktorým sa dá FW flaschnuť.
A) ESP easy Flascher
tu treba vybrať COM port na, ktorom je doska pripojená a verziu FW.
Do väčšiny dosiek môžete použiť verziu
ESP_Easy_mega_20200516_normal_ESP8266_4M1M.bin resp. novšie vydanie
Môžete požiť verziu TEST, v tej je viac možnosti senzorov, ktoré neboli zaradené do verzie normal.
Alebo ak použijete iný HW Sonoff, Shelly tak vyberiete príslušný FW.
Mne niekedy nevedel Flacher nájsť COM port na ktorom bola doska preto používam druhu možnosť.
B) FlashESP8266
Pred spustením si prekopírujte zo zložky BIN súbory, ktoré chcete nahrať do zložky kde je FlashESP8266, čiže o úroveň vyššie.
Po spustení FlashESP8266 vyberte COM port a FW, ktorý chcete nahrať.
4. Po nahratí FW treba odpojiť dosku od USB a znovu pripojiť.
5. ESP vytvori WIFI sieť z názvom ESPxxxx , ku ktorej sa treba pripojiť. Heslo je configesp
6. V web prehliadači zadáte IP 192.168.4.1 a otvori sa prostredie ESPEasy
7. Na záložke Config nastavíme UnitName, UnitNumber (ak budeme používať viac ESP).
Ďalej SSID, WPA Key vašej WIFI kde sa ma ESP pripájať. IP, GW, masku, DNS.
Teraz ESP odpojíme od napájania a znovu pripojíme.
Po chvíľke by sa malo pripojiť k vašej WIFI a do web prehliadača dáme IP, ktorú sme zadali pre zariadenie.
8. V záložke Controllers pridáme controler (použil som Generic UDP) , čo je náš loxone.
Vyplníme IP Loxone miniserveru a UDP port.
Ak chcete meniť formát správy, ktoré do Loxone dorazí môžete v Controller Publish.
Nezabudnite zaškrtnúť Enabled.
9. Výstupy
Asi najjednoduchšie je zapnúť výstup, nejakú LED alebo Relé.
Netreba zabudnúť, že vstupy/výstupy sú 3,3V, čiže na výstup pre relé použiť niečo na oddelenie, optotranzistor alebo tranzistor. Ja som pri prvom teste použil tranzistor a 3,3V relé.
Pre zapnutie výstupu stačí zaslať command
http://<espeasyip>/control?cmd=GPIO,12,1
alebo pre vypnutie
http://<espeasyip>/control?cmd=GPIO,12,0
Čiže IP adresa modulu , číslo výstupu a hodnota 0/1.
Toto si môžeme vyskúšať v prehliadači.
Ak chceme výstup ovládať z Loxone vytvoríme si Virtuálny HTTP výstup v ktorom vyplníme IP adresu ESP modulu.
A virtuálny výstup príkazu , kde vyplníme inštrukciu pre zapnutie a vypnutie
/control?cmd=GPIO,12,1
/control?cmd=GPIO,12,0
Napr. Da sa priamo pripojiť LED na výstup a stmievať ju cez PWM.
10. Vstupy senzory vytvoríme v záložke Devices
10.1.Najjednoduchšie je tlačidlo spínač.
Pridáme Add zariadenie, celkovo ich môžeme pridať 12.
Vyberieme Switch input – Switch.
Vyplníme
– Name,
– nezabudneme Enabled,
– ak potrebujeme zapneme Pullup,
– vyberieme GIPO kam pripájame spínač.
– Switch type na switch
– Switch button type na Normal switch
– De-bounce dáva kôli záchvevom tlačidla 10ms
– Zaškrtneme send to controler
– v prípade tlačidla Interval necháme 0 , aby command poslalo hneď.
Následne si v loxone vytvoríme Virtulány UDP vstup, kde vyplníme číslo potru, ktoré sme zadali na záložke Controller.
Dáme uložiť do miniserveru a spustíme si UDP monitor.
Tu by sme mali už vidieť pri stlačení tlačidla, že nám prišla správa niečo ako
ESP_SW_State=1
Teraz si vytvoríme Virtuálny UDP príkaz a vyplníme Rozoznanie príkazu.
Príkaz sa skladá podľa toho čo sme vyplnili v ESPEasy na záložke Controller pole Controller publisher. Napríklad ESP_SW=0 tuto 0 nahradíme /v
ESP_SW=\v
Teraz môžeme Vstup použiť ako bežný digitálny vstup.
zadáme Name, GIPO, Debounce, pre prietokomer Counter type – Delta , Modetype – Falling a Interval ako často má hodnotu posielať ( ja som použil 10s) odporúčaná je 5-15s.
Obmedzenie je, že counter vstup môže byť len na device 1-4.
Môj prietokomer ma prevod Q*6.6 toto treba dať do poľa Formula.
V loxone si vytvoríme ďalší virtuálny UDP príkaz kde nastavíme rozpoznanie príkazu.
V mojom prípade ESP2_voda_wc_Count=\v.
Čiže je to z druhého ESP , názov zariadenia voda_wc, hodnota Count
V UDP monitore môžeme vidieť
Tento vstup môžeme priamo pripojiť na blok meranie spotreby vstup P.
10.3. Environment – DS18b20
Pridáme v devices nové zariadenie, vyberieme GPIO, systém rovno vyhľadá ID čipu, ktoré si vyberieme. Na jeden pin môžu byt pripojené viaceré senzory.
Zaškrtneme send to controler, a Interval, úplne stačí 10s.
Názov hodnoty si môžeme dole vo Values premenovať.
HW zapojenie:
Napájanie 5V beriem priamo s pinov WEMOS D1.
TX priamo a RX tranzistor PNP (osobne som použil zo šaflíku BC307)
Moje upatlané zapojenie.
Vodiče som naspájkoval priamo na Display aby potom nezavadzali v krabičke.
Napájanie používam pri ladení Mikro USB nabíjačku.
V prevádzke potom používam DC/DC menič 24V /5V.
Príprava displeja:
Nebudem vypisovať podrobnosti, na Youtube je veľa náhodou, napríklad:
Spomeniem par veci, pre inspiráciu:
– ak mam viac stránok treba si prepäť vscope na global, aby sa po prepnutí stránky nenulovali
– pre prepnutie stránky treba zadať v Touch press event napr. page page1
– texty si v editore pre displej napĺňam XXXX aby som vedel, keď Loxone pošle dáta
– poslednú stranu si nechávam všeobecne par riadkov ,na tie si zobrazujem systémové veci , IP, Name, RSSI…
– pre zasielanie údajov o stlačení tlačidla (alebo komponenty) z displeja treba zaškrtnúť SendComponentID v Touch press event
Súbor do displeja nahrávam cez SD kartu, aby som nemusel odpájať ESP.
Vložím SD, pripojím napájanie ,po nahratí vyberiem SD a odpojím-pripojím napájanie.
Nastavenie EspEasy:
Nahráme FW podľa postupu hore. Mám aktuálne otestovane
ESP_Easy_mega_20201130_test_beta_ESP8266_4M1M
najnovšej verzii chyba checkbox SendControler.
Nastavíme záložku Controlers pre UDP, viz hore.
V Devices pridáme Nextion:
V Line 1 – 10 si môžete nastaviť čo ma EspEasy zasielať pravidelne na displej
Napr.
page2.t0.txt=”Name: %sysname%” meno zariadenia
page2.t1.txt=”Rssi: %rssi%” signál
page2.t2.txt=”IP: %ip%” IP
page2.t3.txt=”Time: %systm_hm%” čas
page2.t4.txt=”SSID: %ssid%” SSID
page2.t5.txt=”Mac: %bssid%” MAC
Po uložení môžete odskúšať zaslať dáta s prehliadača napr.
http://192.168.1.128/control?cmd=NEXT35,page0.t0.txt=”Lox”
Čiže na Displeji z názvom NEXT35, strane page0, objekte t0, sa zobrazí text “LOX”.
Loxone config smer LOXONE to NEXTION (http):
Pre zaslanie hodnôt vytvoríme Virtuálny výstup
a virtuálny príkaz , pre analógovú hodnotu (napríklad čas, teplota)
pre digitálny výstup (používam pre popisy)
Na to aby som zabezpečil pravidelne zasielanie popisov tak na ich vstup je privedený minútový impulz.
Pre zasielanie pravidelne analógovej hodnoty používam analógovú pamäť a zdroj impulzov.
Loxone config smer NEXTION to LOXONE (udp):
Vytvoríme Virtuálny UDP vstup s portom, ktorý sme nastavili v EspEasy Controlers
Po uložení do MS by malo byt vidieť po stlačení tlačidla v UDP monitore prichádzajúce správy
Na základe týchto si vytvoríme Virtuálny UDP príkaz
EspEasy neposiela texty, ktoré sa zadefinujú v Touch press event, zasiela len ID a hodnotu.
Stlačenie tlačidla rozlišujem len cez ID.
Jas je možné zmeniť
http://IP/control?cmd=NEXT35,dim=50
Osobne používam na 50%
Dúfam, že je to dobrá inspirácia a na fóre uvidíme fotky integrácii.
10.7 SENZOR CO2 S8 Senseair
HW pripojenie
Nastavenie EspEasy
V záložke Controlers nastaviť zasielanie UDP.
V devices nastaviť
V Loxone vytvoriť Virtuálny UDP vstup a virtuálny UDP príkaz
Senzor som kupoval z Ali za cca 23€ , vyzerá že ukazuje ok, porovnám ešte z meračom a dám info na fórum.
Postupne doplním, ktoré ďalšie budem mat odskúšane.
Systém světelných panelů Nanoleaf snad nemá ani moc smysl představovat, ale aspoň něco málo z historie jelikož začala na “mém” oblíbeném Kickstarteru ( mimochodem taky Nuki zámky z Rakouska jsem tam objednal jako kupující č. 52 🙂 … takže Nanoleaf je projekt z roku 2013 od třech studentů Gimmy Chu, Christian Yan a Tom Rodingera. Jó každý nějak začíná berte si z toho příklad, dnes jsou kluci “za vodou voděnkou” :
A pro takové magory jako já co jim světla učarovala je to něco neodolatelného. O to více mne prudilo že ten zázrak co jsem si instaloval jako poslední světlo v obyváko-kuchyni nemůžu ovládat před Loxone a tím konečně zaplnit poslední volné výstupy na bloku “Ovládání osvětlení” ( celkem mám 17 světel v jedné místnosti …:-) a “kobra na zdi” vypadá při náladě “Romantic” takto:
Z prvků co si nakoupíte, můžete vytvářet na zdi různé vylomeniny tím, že je prostě nalepíte ( jste omezeni zejména finančně já sehnal mých 15 trojúhelníků za necelých 5.000,- Kč a fakt nechápu co se na tom ženské nelíbilo )
Nicméně díky Node RED a neutuchajícímu zápalu pro “pokus/omyl” a hlavně díky knihovně node-red-contrib-nanoleaf-aurora je integrace velice jednoduchá, takže se nebudu moc rozepisovat vše je krásně a bez úskalí popsáno v dokumentaci. Jen pár poznámek spíše pro inspiraci:
Předtím, než můžete Nanoleaf z Node-RED ovládat si vygenerujte přes Node “new-access-token” klíč do ostatních Nodů, kolik Nanoleafů máte doma tolik tokenů samozřejmě. Vypadá to pak takto :
Port nechte podle nastavení jen si zjistěte IP adresu v lokální síti samozřejmě …
Na stránce github.com v sekci example-flow.json máte všechny “řeky” pro Node-RED jako příklady … jednoduché a účelné.
Mým cílem bylo, abych mohl v rámci jednotlivých scén v bloku “ovládání osvětlení”:
-zapínat Nanoleaf
-měnit jas
– aktivovat nálady
Prostě ty nejoblíbenější co mám v App Nanoleafu. Nemá žádný smysl z Loxone suplovat to, v čem je hlavní kouzlo Nanoleaf. To je ve fantastickém zpracování prolínaček mezi jednotlivými prvky designového světla a provázené přes hudební modul. Zároveň taky samozřejmě i možnost ovládat tři výše uvedené funkce z Loxone App. Stačí definovat výstupy z bloku “ovládání osvětlení ” jako :
Samozřejmě jsem si vytvořil v Loxplánu kategorii “Nanoleaf” no a pak už to ve výsledku vypadá třeba takto :
Samozřejmě veškeré prvky pro ovládání v Loxplánu musí mít zatrženou “viditelnost” ve vizualizaci abyste je dostali do Node-RED což může být s takovýmto výsledkem ( třeba ):
Například výstup z AQ17 vypadá pak takto jednoduše :
Nálady v Nanoleafu přepínám primitivně z výstupu AQs a po “přežvejkání” je jako string posílám do Nodu “efect”. Co dodat je to vskutku easy že ? Ve vizualizaci Appky Loxone pak mám k dispozici základní možnost ovládat Nanoleaf ručně:
No a to je vlastně všechno. Kdo chce, může si pohrát s řízením RGB přímo z kanálu bloku osvětlení, ale já dám přednost jednoduché funkční integritě a nastavení “barevné hudby” si řeším v App Nanoleaf:
Mimochodem “barevná hudba” je řešena modulem, který mám samozřejmě připojen ke svojí domácí “kobře na zdi” jak říká moje manželka. Zejména naše zvířátka ” pejsek and kočička ” milují když doma pustím “Canton” bedny naplno ( sotva 60% ) , doporučuji vyzkoušet na hudbu z filmu Fontána …
tak a to je vše jdu na další integraci Node RED buď “Nuki zámek” nebo “Google služka”
dalibor
Interiérové “zebra” rolety a integrace do Loxone přes Broadlink
Budiž jako inspirace, že i amatér v programování se dokáže prokousat přes neznámé pojmy zejména Node-RED, když je dostatečně motivovaný tj. líný chodit mačkat jakékoli ovladače, když už “máme toho Loxona” jak říká moje manželka.
Pokud se vám, zkušeným programátorům budou některé věty zdáti úsměvné tak “sorryjako” ! Moje poslední zkušenosti z doby, kdy mi bylo “-náct” a částečne “-cet” končily u TurboPascal 5, CPM, Clipper a trochu toho C…
Nicméně k roletám, které jsem potřeboval, kvůli lenosti samozřejmě, na motórek a taky proto, že při stavbě se mi nechtělo do portálových dveří ( 3 krát ) v hloubce zdi asi metr ( starý mlýn ) dávat pro rozměr stavebního otvoru 100×215 cm žaluzie. Že, to byla chyba nemá smysl dnes rozmazávat. Nicméně rolety neřešíme ani tak kvůli pronikání tepla zvenčí ( máme trojsklo a metr tloušťky zdi vytváří stín sám o sobě ikdyž je to takřka na jih) jako spíše odstínění od venkovních “načumitelů” a pocit že se byť z dálky ( skoro 40m ) někdo nedívá co v obyváku zrovna vyvádíme :-).
Po delším době padl výběr na Aličkový expres kde jsme narazili na tytoZebra rolety
Nedejte se odradit detailem. Po montáži vypadá výsledek takto: když je Polojasno / Roztaženo ( nejoblíbenější poloha … rolet samozřejmě !) a Zataženo.
Předností rolety Zebra mi přijde zejména to, že nejsou pouze dva stavy ON-OFF, ale i “poloprůhledno”, což je výborně použitelné pro denní zastínění interiéru. Dalším důvodem proč je, že číňan má celkem slušný výběr látek na zebru ( něco přes čtyřicet), takže i moje žena si vybrala a skutečně se nám provedení do interiéru hodí. To není ale vše. Roletu udělají přesně na váš rozměr, ( šířka x výška stavebního otvoru, napočítají si svoje “instalační” rozměry a pokud to objednáte tak přijde roleta přesně seřízená. Tím to ale nekončí, dodávka byla do tří týdnů u nás od objednání a samozřejmě zaplacení. Kupovali jsme tři kusy tak jsem dostal ještě -20% slevu. Navíc se dají na motoru nastavit nejen krajní polohy, ale taky zastávky mezi nimi a to až dalších 8 poloh, do kterých motor dojede pěkně se zpomalením, žádné cukance. Ve výsledku to stálo 672$, doprava ( FeDex )zdarma, ale clo a DPH a celní poplatek k tomu, takže bratru kolem 6.420,- Kč za jednu roletu což opravdu není málo, když to porovnám třeba s roletou Ikea. Ta je za polovic, ale užitná hodnota taky trochu jiná mi přijde.
Nicméně a samozřejmě ovládání je “milovanými” rádiovými dálkáči:
Následně uběhl nějaký čas při hledání, jak ovládat rolety z Loxone, zejména tehdy kdy se jedná o RF vysílač na 433,92 MHz, který je třeba “nějak” do “něčeho” načíst. Volba padla na Broadlink RM Pro.
Pro ovládání mobilem pak přes aplikaci e-Control nainstalujte “ihc for EU”! Nic jiného, protože u podobných App, které s tím sice taky spolupracují, mně nešly přidávat buď RF vysílače a nebo časovače aktivace scén, nebo obojí. Nemá smysl tady probírat jak připojíte nový RF ( respektive jeho tlačítko ) vysílač od toho je návod u Broadlinku.
Pak následovala doba oddalování instalace Node-RED jelikož jsem si při pročítání v blogu ( o “tom”) připadal poněkud neinteligentně, ale lenost zvítězila a taky zmínka na blogu ( děkuji za inspiraci ) o integraci Broadlink do NR, takže instalace na RPi 3 a následné “pokus-omyly”.
V node-red-contrib-broadlink-control je sice dostatečně popsáno co a jak, ale přece jen zmíním, že instalaci iExplorer není nutno platit stačí jen vyhledat data z mobilu ( postup viz návod k instalaci Nodu ) a ty překopírovat na místo, kde běží Node-RED.
Pokud se nechcete zdržovat pátráním po lokální IP a MAC adrese Broadlinku ve vaší síti jako já můžete použít Node, kterou máte doinstalovánu s názvem “Discover”. Pak už jen stačí v Node RM vlastnostech dopsat do posledního řádku umístění dat, která jste vydolovali z mobilu:
Zmáčknout kouzelné tlačítko “Deploy” a po “přežvejkání” …… ejhle se objeví výběr vašich načtených tlačítek RF nebo IR ovladačů ( je dobré si je popsat tak, aby jste se v tom vyznali.
No a pokud máte ve vašem Node-RED instalovánu poslední verzi Loxone node-red-contrib-loxone pak jen stačí použít Node “loxone-control-in” a v něm samozřejmě nadefinovat IP, port miniserveru a přihlašovací údaje.
Samozřejmě, že ale předtím musíte v loxplánu definovat pro danou místnost a kategorii blok nebo virtuální výstup ( tlačítko třeba ). Musí být viditelný v aplikaci jinak ho Node nenačte…
Pro jednoduchost a zejména jednotnou vizualzaci tam mám blok “automatické žaluzie”, připojeny dvě tlačítka co jsou na zdi s tím, že ovládají všechny tři rolety najednou a taky automatické sjetí a vytažení rolet při setmění a rozednění. Samozřejmě se s tím dá libovolně vyhrát ale v jednoduchosti je krása.
Node-RED je tak primitivní, že je mi skoro trapno jej uvádět ale pochopte tu radost že mi “to” napoprvé fungovalo …. :
Jen komentář, který souvisí spíše s vlastností motoru použitého v roletě. Ten se mimochodem dá na Ali objednat zvlášť, kdyby si někdo chtěl zbastlit rolety kompletně sám ( pokud by měl trubku s vnitřním prolisem pro motor, a spodní napínací lištu s rolovátkem pro zpětný chod zebry) tak proč ne bohužel stojí skoro 70$ s dopravou.
Takže komentář je: tento motor díky tomu, že má programovatelné polohy mezi koncovými dorazy ( ty jsou mimochodem taky volně programovatelné takže žádné mikrospínače apod . ) umožní nastavení právě tří nejzajímavějších poloh. Jak zmíněno ostatně na začátku. To mi dává možnost ignorovat tlačítko “stop” na ovladači a taky nemusím řešit v loxplánu, za jak dlouho od startu mám stopnout aby bylo “Polojasno” na zebře atd …
Děkuji všem co to dočetli až k tomuto řádku a vydávám se k dalšímu průzkumu Node-RED jednak s Nuki zámkem a Nanoleaf světly …