Update: Die hier beschriebene Anleitung ist zwar noch gültig – aber es gäbe eine schnellere und einfachere Möglichkeit alle Cloudkomponenten on premise (dh. selbstgehostet) zu installieren – und zwar per Docker-Stack:
https://git.valki.com/valki/dockerized_openAger
Auch die Softwarekomponente direkt auf dem ESP Chip (hier in der Anleitung als Teil 2) geht ab Version 4 wesentlich einfacher per Binary Installation!
1 Serverkomponenten installieren
Wir benötigen irgendeinen MQTT Broker und ein node-red Frontend. Da es viele Varianten gibt wie das zu erreichen ist, gehen wir hier davon aus dass der Broker und Node-Red bereits installiert sind (zB. Thingbox Image für Raspberry) oder ein Provider verwendet wird.
Nachdem die Platine bereits aufgebaut ist – folgend die Einrichtung der Node-Red Oberfläche für den openAger.
Grundsätzlich werden einige Erweiterungen benötigt – die werden über das Menü „Manage Palette“ nachinstalliert. Folgende Erweiterungen werden aktuell benötigt (im Zweifel natürlich die aktuelleren Versionen verwenden):
- „dependencies“:
„json-db-node-red“: „~0.5.3“,
„node-red-contrib-actionflows“: „~2.0.0“,
„node-red-contrib-bigtimer“: „~1.8.0“,
„node-red-contrib-change-detect“: „~0.2.0“,
„node-red-contrib-light-scheduler“: „0.0.11“,
„node-red-contrib-looptimer“: „0.0.8“,
„node-red-contrib-moment“: „~2.0.7“,
„node-red-contrib-node-webcam“: „0.0.3“,
„node-red-contrib-offline“: „~0.1.2“,
„node-red-contrib-persist“: „~1.0.3“,
„node-red-contrib-simple-weekly-scheduler“: „0.0.14“,
„node-red-contrib-timerswitch“: „~1.2.2“,
„node-red-contrib-webcam“: „0.0.1“,
„node-red-dashboard“: „~2.8.1“,
„node-red-node-mysql“: „0.0.16“,
„node-red-node-random“: „~0.1.0“,
„node-red-contrib-throttle“ : „~0.1.6“
„node-red-contrib-telegrambot“ : „~5.5.2“
„node-red-contrib-telegrambot-home“ : “~0.5.2”
“node-red-contrib-msg-speed” : “~0.0.5”
Jede Änderung am Flow muss in Nodered mittels Klick auf „Deploy“ aktiviert werden. Sofort kommt eine Meldung, dass einige Nodes nicht konfiguriert sind – logisch, denn sämtliche Zugangsdaten müssen noch eingestellt werden. Ein Blick in das debug Log hilft hier – einfach alles abarbeiten und ergänzen was benötigt wird.
Wir erstellen ein paar leere Files im node-red Verzeichnis: scale1.dump, scale2.dump, scale3.dump, scale4.dump sowie starter.dump. Die Files so berechtigen, dass Nodered sie beschreiben kann.
Will jemand keine MysqlDB verwenden, dann kann man diese durch eine beliebige andere DB ersetzen. Wer gar keine Persistenz verwenden will, kann dies auch weglassen und den dynamischen „Report“ einfach aus Nodered rauswerfen.
Sind Dumps, MQTT Broker und Mysql Datenbank konfiguriert, dann kann man das Frontend mal aufrufen indem man ein /ui an die Nodered URL anhängt. Voila!
2Arduino Teil
Zuerst die Arduino IDE installieren und dann gemäß dieser Anleitung auf dem ESP32 Core dazu installieren. (Entwickelt und getestet habe ich zb. mit dem esp32 Core master 1.0.1 und 1.0.2, nach Ausführen von get.exe wurde das esptool 2.6.1 bereitgestellt.)
Anschließend die openAger Projektdateien runterladen und konfigurieren – speziell das File config.h (selbst erstellen aus der Vorlage!) und der obere Teil der Hauptdatei.
Hinweis: mit Version V4.0 muss nicht mehr selbst im File konfiguriert oder kompiliert werden! Hier erfolgt die Konfiguration über den Accesspoint!
Wichtig: Auch der Arduino Teil benötigt einige Libraries… diese über „Sketch“ – „Bibliothek einbinden“ – „Bibliothek verwalten“ nachinstallieren. Das ist besser als die Libraries aus dem Repo, da hier die aktuellen Versionen verwendet werden und vor allem auch die Abhängigkeiten der Libraries selbst aufgelöst werden: So verwendet Autoconnect beispielsweise selbst auch eine Library „Pagebuilder“ natürlich auch eingebunden werden muss.
Ausnahmen:
- ArduinoJson by Benoit Blanchon
eine 5er Version zb. 5.13.5 (nicht die Neuste installieren)Achtung: Ab OpenAger 3.3 bitte ArduinoJson > 6.0 verwenden! - aus dem Repo verwenden:
- SHT3x
- „ACS712.h“ (da hier Änderungen gemacht wurden)
Wichtig vor allem die Zugangsdaten zum MQTT Broker und die Hardwareausstattung wie Anzahl der Waagen, Display ja oder nein etc. Hightrigger steuert ob das Relais bei HIGH geschlossen oder offen ist.
Danach auf den ESP flashen. Nachdem dieser neu gestartet hat, sollte ein Accesspoint „openAger“ auftauchen, zu dem man eine Verbindung aufbaut. Das Kennwort wurde in der config.h eingestellt und ist standardmässig 12345678. Nachdem die Verbindung zum Accesspoint hergestellt ist, kann man das eigentliche Wlan einrichten.
voila der openAger ist eingerichtet und die erhaltene IP scheint auf. Sind die MQTT Zugangsdaten in der Config richtig eingestellt, dann müsste nun auch eine Verbindung hergestellt werden, was man im Nodered Frontend erkennen kann.
Anhang: die Struktur der Mysql Datenbank
CREATE TABLE `sensor_aggr` ( `epoch` bigint(20) NOT NULL, `device` varchar(255) NOT NULL, `sensor` varchar(255) NOT NULL, `value` double NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `sensor_data` ( `id` bigint(20) NOT NULL, `device` text NOT NULL, `sensor` text NOT NULL, `value` double NOT NULL, `epoch` bigint(20) NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- Indizes für die Tabelle `sensor_aggr` ALTER TABLE `sensor_aggr` ADD PRIMARY KEY (`epoch`,`device`,`sensor`); -- Indizes für die Tabelle `sensor_data` ALTER TABLE `sensor_data` ADD PRIMARY KEY (`id`); -- AUTO_INCREMENT für Tabelle `sensor_data` ALTER TABLE `sensor_data` MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT; COMMIT; CREATE INDEX sensor_data_idx1 ON sensor_data (timestamp); CREATE INDEX sensor_data_idx2 ON sensor_data (epoch);
Schreibe einen Kommentar