Logování dat z Acond TČ do Domoticz

Moderní technologie se již běžně dostávají do našich domovů ať už jako propracovaný systém nebo jednotlivě bez větší návaznosti. Domácí automatizaci nebo chytrý dům spojuje centrální systém. Do takového systému jsem se pokusil začlenit tepelné čerpadlo Acond.

1. Úvod

K systému Domoticz mě přivedl kamarád, který zveřejnil jednoduchý návod, jak připojit snímač teploty do domácí automatizace. Dříve jsem měl server napsaný v Javě, který přijímal data z Arduina a ukládal je do SQL databáze. Bohužel jsem se nikdy nedostal k tomu, abych udělal nějaké UI pro prohlížení dat. Takže jsem zůstal pouze u SQL dotazů.

Domoticz poskytoval to co jsem si představoval, plus mnohem mnohem více. Proto jsem přepsal posílaní dat z Arduina pro Domoticz, ale data z tepelného čerpadla bylo nutné řešit jiným způsobem.

2. Návrh řešení

Domoticz mi běží na OrangePiOne, který neoplývá pamětí ani výkonem, takže vývoj a testovaní běžného C++ pluginu by bylo nad moje časové možnosti. Naštěstí jsem narazil na probíhající vývoj vrstvy, která umožní spouštět pluginy v Pythonu3. Systém má zatím mouchy, takže jsem ho nepoužil. Ale napsat požadovanou funkci v pythonu se mi líbilo, ač jeho spouštění budu řešit jinak.

Výhody:

  • přenositelnost mezi systémy na kterých běží Domoticz server
  • knihovny poskytující práci s Json, Xml, Html
  • možnost úpravy do pluginu pro Domoticz

Nevýhody:

  • skriptovací jazyk
  • moc v něm nejsem kovaný

Princip je jednoduchý. Pythonský skript se připojí k lokálnímu Acond web serveru, který běží v tepelném čerpadle a načte z něj požadované informace, které pak odešle do Domoticz. Seznam zaznamenávaných údajů bude uložen v Json souboru, společně s mapováním pro web server tepelného čerpadla.

3. Implementace

Implementace skriptu spočívá v replikaci údajů, které si vyměnuje prohlížeč s webovým serverem. Pro sledování síťové komunikace existuje skvělý nástroj Charles, který až do nedávna byl doménou pouze Macu. Alternativou je Fiddler, který se neskutečně zlepšil a v některých funkcích Charlese překonává. Pro sebemrskače z linuxu ještě existuje WireShark.

Komunikace se skládá ze tří kroků:

  • vytvoření spojení
  • autentizace
  • stažení dat

Skript jsem psal v PyCharm a má necelých 200 řádků.

PyCharm

4. Definice záznamů

Tahle část projektu je velký opruz. Je potřeba najít data a k nim připojit, co data reprezentují. Použil jsem Chrome a nástroj pro vývojáře, kde jsem ve webové stránce našel data, která mě zajímají a k nim jsem vyhledal zdrojová data v xml přicházející z tepelného čerpadla.

Vytváření mapovacího souboru záznamů.

Vše je uloženo v Json formátu pro jednoduchou editaci a zpracování.

{
 "key": "__Y6.2_BOOL_i",
 "name": "Kompresor",
 "type": "status",
 "logLevel": 1,
 "idx": 27 
}

5. Spouštění a výsledek

Skript se spouští z Cron tabulky každou minutu, přečte data a pošle je k zalogování.

test scriptu:
 python3 ~/domoticz/myScripts/AcondCollector.py ~/domoticz/myScripts/acond_logged_keys.json

editace cron tabulky:
crontab -e

záznam v cron tabulce:
* * * * * python3 ~/domoticz/myScripts/AcondCollector.py ~/domoticz/myScripts/acond_logged_keys.json

kontrola spouštění procesu:
sudo \grep CRON /var/log/syslog

 

Definice skiptu v Cron tabulce.

Následně se objeví v systému Domoticz, kde si je prohlédneme přes prohlížeč.

Přehled stavů čerpadla v Domoticz.
Teploty zobrazené v Domoticz dashboardu.
Grafické zobrazení teploty.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑