EI-OT Tasmota 8 Kanal PRO Relais SPI SD Kartenleser bestücken |
Tasmota SD Kartenleser Konfiguration
Dieses Beispiel basiert auf dem EI-OT 8 Kanal PRO Relais Modul, im Detail auf die Modulerweiterung mittels einem herkömmlichen Micro SD Kartenleser Modul. Das EI-OT 8 Kanal Relais Modul verfügt über ein für den SPI Kartenleser passendes Pinout, sodass dieser direkt mit der Controller Platine verbunden werden kann. Generell kann dieses Beispiel für jedwedes ESP8266 Modul verwendet werden, jedoch gilt es dabei die SPI GPIO Konfiguration entsprechend zu berücksichtigen. Basierend auf dem EI-OT 8 Kanal Relais erfolgt die Konfiguration wie folgt
Details zur kompletten Integration eines SD Kartenleser haben wir hier. Als “Quelle” notwendiger Sensordaten wird ein AM2301 Temperatur und Luftfeuchte Sensor verwendet. Der AM2301 wurde mittels eines PullUp Widerstands auf
gesetzt, hier einfaches Anschlussschema. |
Tasmota Script für einen Sensor Datenlogger
Gleich vorab, Tasmota Script ist sehr umfassend und hier sehr kompakt dokumentiert. Selbstredend bedarf es einer entsprechenden Tasmota Firmware mit Tasmota Script (ist nicht in üblichen Binaries enthalten). Zunächst das Vorhaben in wenigen Worten zusammengefasst: Tasmota erfasst die AM2301 Messwerte, im Detail zum konfigurierten Intervall (siehe Einstellungen > Logging-Einstellungen Eintrag Telemetrieperiode) üblicherweise 300 Sekunden. Mittels Tasmota Script sollen die Sensorwerte des AM2301 1 mal pro Sekunde abgefragt werden ein Mittelwert für 60 Sekunden erstellt werden jede Minute sollen, WENN* die Messwerte zum vorherigen Wert abweichen es werden die auf der SD Karte vorhandenen Daten mittels Schleife abgefragt * Ergänzend bleibt zu erwähnen, es ist etwas “sinnfrei” eine if Anweisung – nur bei abweichenden Werten – bei einem AM2301, da 3 Messwerte und insbesondere die Luftfeuchte stetig variieren… aber hier geht es um ein Tasmota Script Beispiel, im Bezug von beispielsweise Temperaturwerten kann hier einiges an Daten gespart werden. |
Tasmota Script für Sensordaten auf einer SD Karte speichern
Die Zeilen mit vorangestelltem Semikolon dienen lediglich der Dokumentation und können gelöscht werden. Selbstredend werden die Daten, wenn keine SD Karte verwendet wir im Flashspeicher des ESP8266 abgelegt.
>D 48 ; Variablen für aktuelle Sensorwerte temp=0 otemp=0 hum=0 ; Variablen für alte Sensorwerte ohum=0 dew=0 odew=0 fr=0 res=0 cnt=0 ; Durchschnittswerte für 60 Sekunden M:mtemp=0 60 M:mhum=0 60 M:mdew=0 60 str="" >B ; Konsolen Kommandos deaktiviert ; download Verweis ;fl1("AM2301-log.txt") ; aktuelle Log-Datei löschen ;fd("AM2301-log.txt") ; mittels einer Schleife im Dateisystem die vorhanden Dateien abfragen (Limit 20) fr=fo("/" 0) for cnt 1 20 1 res=fr(str fr) if res>0 then print %cnt% : %str% else break endif next fc(fr) >T ; beim Sensorevent die Werte erfassen temp=AM2301#Temperature hum=AM2301#Humidity dew=AM2301#DewPoint >S ; Durchschnittswerte für 60 Sekunden erzeugen mtemp=temp mhum=hum mdew=dew ; Durchschnittswerte alle 60 Sekunden in AM2301-log.txt ablegen if ((upsecs%60==0 and ((mtemp!=otemp) or (mhum!=ohum) or (mdew!=odew)) then ; Durchschnittswerte der AM2301-log.txt anhängen, diesbezüglich 2 fr=fo("AM2301-log.txt" 2) ; String mit Tabulator erzeugen str=tstamp+"\t"+s(mtemp)+"\t"+s(mhum)+"\t"+s(mdew)+"\n" ; die zuletzt gespeicherten Sensorwerte in Variable der alten Sensorwerte ablegen otemp=mtemp ohum=mhum odew=mdew ; str in die AM2301-log.txt schreiben res=fw(str fr) ; AM2301-log.txt schliessen fc(fr) endif >R