Tutorial: openAger Software einrichten

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”
Wir starten mit einer leeren Node-Red Instanz
Über das Menü oben rechts auf “Import” -> “Clipboard” und das Coding aus dem Download von openAger hineinkopieren.

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.

Beispielsweise zeigt der mysql Node an, dass er nicht verbinden kann. Doppelklick -> dann die Datenbankverbindung einrichten (host, username, passwort). Die Struktur für Mysql siehe unten im Anhang! Deployen und die nächste fehlende Config einfügen bis keine Fehler mehr auftauchen.

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.

Die ganzen read/write Dumps müssen auch konfiguriert werden… hier die absoluten Pfade zu den vorhin erstellten leeren Files eingeben.

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!

Node Red Dashboard

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)
Exemplarisch für die Library “Autoconnect”

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.

mit SSID openAger verbinden. Passwort 12345678
dann 192.168.222.1 aufrufen (nach Version 3.3 lautet die IP http://172.217.28.1/)
auf “go network config” klicken und 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); 

Software eingerichtet und Fragen zur Bedienung? Hier klicken!

3 comments on “Tutorial: openAger Software einrichten”

  1. Pingback: Tutorial: openAger Platine aufbauen | valki.com

  2. Pingback: Tutorial: Schrank ohne Node-Red steuern | valki.com

  3. Pingback: Tutorial: Dry Aging | valki.com

Leave A Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.