Informační update pro nadšence:
Sketch
viator_light_01.ino samozřejmě nejde přímo použít pro InifiniSolar, jelikož ten už mluví novým, výše popsanýn protokolem. Nicméně jsem z něj pochopil několik funkčních principů, takže ještě jednou díky Honzovi za pomoc!
InfiniSolar chci připojit přes Z-Wave protokol, abych data dostal s co nejmenším počtem převodníků až do Z-Wave gatewaye, kde je budu finálně zpracovávat. (Už dnes tím zapínám a sleduji všechny termostaty, čerpadla, zavlažování, čističku, bojler, pračku, garáž...no prostě skoro všecko. Až se to jednou podělá, tak budu mít doma jen tmu, zimu a potopu.)
Nejdu tedy programátorsky pohodlnější cestou SNMP-LAN-Linux-LAN-Gateway, ale kratší, trnitější, RS232-Arduino-Gateway. Místo klasického Arduina používám Z-UNO, což je miniaturní destička s čipem SigmaDesigns ZM5101, který umí rovnou bezdrátový protokol Z-WAVE. Bohužel není to programátorsky úplně nejpříjemnější, jelikož k němu například není knihovna SoftwareSerial.h a kvůli nekompatibilitě AVR vs 8051 ani spousta dalších knihoven. Nezná to proměnné typu String, ale jenom Long, Int, Byte, Word a Char. A zrovna při práci s RS232 tedy absence Stringů a souvisejících funkcí docela naštve
Místo SoftwareSerial.h jsem tedy použil vestavěný HW UART, místo Stringů kopec Charů a i ten problém s malým bufferem na UART (64 Byte) se nakonec dal vyřešit
Do měniče posílám příkaz
^P003GS<CR> a čekám na odpověď, která pro tento příkaz vždy začíná 5-ti znaky
^D086 a končí <CR>. Díky tomu poznám, že řetězec skutečně obsahuje ty informace, na které jsem se měniče ptal a nikoliv odpověď na jiný příkaz nebo garbage.
Jakmile z řetězce vyčtu hodnoty MPPT, výkonu a zatížení, nacpu je do proměnných a posílám příkaz
^P003PS<CR>. Tím požádám o druhou sadu hodnot, kde jsou údaje o nabíjení AKU. Druhou odpověď poznám podle response
^D061.
Oba příkazy znovu opakuji pouze tehdy, pokud si Z-Wave gateway řekne o aktualizaci údajů. Intervaly komunikace přes Z-Wave i RS232 jsou tedy sladěné a lze je díky tomu měnit on-the-fly, přímo ve webovém rozhraní gatewaye. Mohl bych se měniče ptát každou sekundu, ale to patří mezi dvě věci, které nemám rád:
1) moc převodníků mezi systémy
2) zbytečně častý polling
Challenge:
^P003GS
Response:
^D0865500,1500,0000,0000,0000,000,+00000,2318,,,4995,0000,,,2316,,,4995,,,,028,028,000,0
Challenge:
^P003PS
Response:
^D06100000,00000,,,,,,0392,,,00392,0415,,,00415,008,1,0,0,0,0,1
Další krok bude prověřit detailní význam všech údajů v obou typech response. To nejdůležitější info už jsem asi rozklíčoval, ale pořád tam zbývají nějaké údaje k prozkoumání.
Youda