Wemos D1 Mini -Tasmota - MH-Z19 Co2 Ampel

  • bishop

    Ja stimmt! Copy & Paste Fehler. Ist korrigiert, danke für den Hinweis. :)

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Hab mal mein CO2 Messaperatgerät fertig gestellt. Schön klein und schnuckelig. Mit dem Bewegungsmelder bekomme ich das noch nicht ganz so hin aber soweit läuft er. Die Werte gehören noch angepasst.
    Geht etwas zu spät auf Orange und Rot.

  • HoerMirAuf

    Vielen lieben Dank für´s Teilen deiner CO2-Ampel.

    Das hat mir als blutige Anfängerin sehr geholfen! :thumbup:

    Ein kleines Problem habe ich noch bei der Display-Variante.

    Ich habe ein 0,96" OLED SSD1306 und möchte nur die PPM Anzeige, so groß wie möglich und zenztriert, ausgeben lassen.

    Leider weiß ich nicht, wie ich das für mich dann bei den Rules anpassen muss...

    Kann mir da eventuell jemand weiterhelfen?

    Telweise verstehe ich auch die Rules nicht.

    Beispiel:

    Code
    Rule3
    ON MHZ19B#Temperature!=%var2% DO backlog DisplayText [x7y1]; DisplayText %value%; var2 %value% ENDON
    ON MHZ19B#CarbonDioxide>1990 DO backlog power2 1; color2 #FF0400; DisplayText [x7y0]; DisplayText %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<600 DO backlog power2 1; color2 #0019FF; DisplayText [x7y0] %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1000 DO backlog power2 1; color2 #48FF00; DisplayText [x7y0] %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1250 DO backlog power2 1; color2 #B7FF5E; DisplayText [x7y0]; DisplayText %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1500 DO backlog power2 1; color2 #FFF600; DisplayText [x7y0]; DisplayText %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1990 DO backlog power2 1; color2 #FF9D00; DisplayText [x7y0]; DisplayText %value%; ruletimer1 %var1%; rule3 0 ENDON

    In Zeile 3 steht: ...

    Code
    DisplayText [x7y0]; DisplayText %value%; 

    in Zeile 4:...

    Code
    DisplayText [x7y0] %value%; 

    Warum ist in Zeile 3 noch ein Trenner (Semikolon) und "DisplayText" wird wiederholt aber in Zeile 4 nicht? :/

    Wie gesagt, bin Anfängerin und würde es sehr gerne verstehen.

  • Hi

    Warum ist in Zeile 3 noch ein Trenner (Semikolon) und "DisplayText" wird wiederholt aber in Zeile 4 nicht? :/

    Mal sehen ob ich das aus dem Kopf noch zusammenbekomme.

    Das hat mit dem Position zu tun zu tun an der die Zeichen gesetzt werden. mit Dispalytext[xy] wird die Zeile und Zeichenposition gesetzt und mit Displaytext %value% der Ausgabewert übermittelt wobei immer die zuletzt gesetzte Position verwendet wird.

    Was etwas blöd ist (da musste ich auch erst mal dahinter kommen) sendet man eine Position DISPLAYTEXT[xy], dann wird das nächste Zeichen mit einem Leerzeichen überschrieben und erst dann der Value (ich habs nicht versucht, liegt vielleicht auch daran das ich zwischen dem Dispalytext und dem value ein Leerzeichen in der Rule habe und das mit übertragen wird?)

    - Meine Wertausrichtung ist rechtsbündig damit immer ein Leerzeichen zwischen dem Wert und der Einheit dargestellt wird.

    - es gibt für den CO2 Wert 4 stellige und 3 stellige Zahlen.

    - die Zeile 3 ist der einzige 3 stellige Bereich und da muss ja immer die 1 stelle gelöscht werden falls vorhanden, deswegen kein extra Displaytext damit die 1 stelle gelöscht wird.

    Evtl ginge das aber auch mit:

    Zeile3 Displaytext[x7y0] %value% (Leerzeichen zwischen Displaytext[yx] und %value%)

    anderen Zeilen:Displaytext[x7y0]%value% (kein Leerzeichen und kein weiteres Displaytext)

    Ich kann mir vorstellen das das auch geht. War damals meine erste Displayspielerei und ich bin nicht auf den Gedanken mit dem Leerzeichen gekommen. Oder hab ich's versucht und das ging nicht? k.A mehr ^^ War aber auf jeden Fall wegen rechtsbündig und 3 oder 4 stelligen Zahlen.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    2 Mal editiert, zuletzt von HoerMirAuf (24. Januar 2022 um 11:57)

  • HoerMirAuf

    Hi,

    vielen Dank für die ausführliche Erklärung. :thumbup:

    Jetzt muss ich das Ganze nur noch mit meinem SSD1306 Display hingebastelt bekommen…

    Ohne Display hab ich schon, dank deiner Anleitung, erfolgreich 2 CO2 Ampeln gebaut und konnte auch die Farben und Schwellenwerte für mich anpassen.

    Die 3te (fürn Wohnwagen) soll nen Display bekommen.

    Einmal editiert, zuletzt von .Pupsimupsi. (25. Januar 2022 um 09:49)

  • .Pupsimupsi.

    GuMo.

    Freut mich, wenn die Anleitung jemanden hilft. Das SSD1306 kenn ich leider nicht. Aber hab mir mal eines beim freundlichen Chinesen zum spielen bestellt. Displays kann man ja immer gebrauchen, dann schau ich mir das mit der Anzeige mal an.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • .Pupsimupsi.

    GuMo.

    Freut mich, wenn die Anleitung jemanden hilft. Das SSD1306 kenn ich leider nicht. Aber hab mir mal eines beim freundlichen Chinesen zum spielen bestellt. Displays kann man ja immer gebrauchen, dann schau ich mir das mit der Anzeige mal an.

    Echt? Klasse!

    Wenn ich es bis dahin noch nicht hingebastelt bekommen habe, würde ich mich freuen wenn du deine Erfahrungen teilst.

  • Servus zusammen!

    ich lese hier schon seit einiger Zeit mit grossem Interesse mit und lerne dank Eurer Ausführungen langsam die Rule Syntax in Tasmota kennen.

    Darf ich kurz nachfragen ob ihr bereits ein Regelwerk für die Verwendung des SSD1306 Displays lauffähig im Einsatz habt?

    Beste Grüße uss Kölle!

  • Hi.

    Nö, noch nicht. Mein SSD1306 zum testen ist noch unterwegs. Ohne macht keinen Sinn ...

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • ...in meinem Fall würde ich gerne noch ein DFPlayer mini zusätzlich ansteuern: bei Erreichen eines definierten ppm-Schwellwertes soll zusätzlich zur Neopixel Farbänderung und der Display Anzeige ein MP3 Audio EINMALIG als akkusitische Warnung abgespielt werden; das klappt auch bereits, jedoch leider als Endlosschleife solang der Wert in dem definierten Bereich bleibt...

  • Mann kann das Display auch super mit dem iobroker ansteuern, das geht vielleicht einfacher als mit Rules. Soweit ich das sehe sind das auch die selben Befehle.

    So steuere ich zumindest mein Display an :)


    Gruß Timo

    Das stimmt. Da gibts etliche Wege.

    Die Rules machen die CO2 Ampel aber WLAN unabhängig und somit portable. Und das war mein Ziel. Du packst sie ein und stellst sie da auf wo die haben möchtest auch ganz ohne WLAN etc.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Hi.

    Inzwischen ist das SSD1306 eingetroffen und ich hab mal ein wenig damit gespielt um eine möglichst große Anzeige zu erhalten.

    Der Treiber muss natürlich mit einkompiliert werden:

    Dazu die Paramter um USE_DISPLAY_SSD1306 erweitern:

    Spoiler anzeigen

    #ifdef USE_I2C

    #undef USE_I2C

    #endif

    #define USE_I2C

    #ifdef USE_MHZ19

    #undef USE_MHZ19

    #endif

    #define USE_MHZ19

    #ifdef USE_WS2812

    #undef USE_WS2812

    #endif

    #define USE_WS2812

    #ifdef USE_DISPLAY

    #undef USE_DISPLAY

    #endif

    #define USE_DISPLAY

    #ifdef USE_DISPLAY_LCD

    #undef USE_DISPLAY_LCD

    #endif

    #define USE_DISPLAY_LCD

    #define USE_DISPLAY

    #ifdef USE_DISPLAY_SSD1306

    #undef USE_DISPLAY_SSD1306

    #endif

    #define USE_DISPLAY_SSD1306

    #ifdef USE_DISPLAY_MODES1TO5

    #undef USE_DISPLAY_MODES1TO5

    #endif

    #define USE_DISPLAY_MODES1TO5

    Die LCD Treiber hab ich drin gelassen. Dann kann man wahlweise anschließen.

    Bei den Rules muss nur die Rule1 und Rule3 aus #20 geändert werden:

    Code
    Rule1
    ON System#Init DO Backlog WifiConfig 4; Time 1625436000; var1 15; SetOption20 1; Dimmer 35; Fade 1; Speed 20; Power1 1; Power2 1; Rule2 1; Rule3 1 ENDON
    ON Power1#State=1 DO Backlog rule2 1; RuleTimer1 1 ENDON
    ON Power1#State=0 DO Rule2 0 ENDON
    ON Wifi#Connected DO Time 0 ENDON
    Code
    Rule2
    ON Rules#Timer=1 DO Rule3 1 ENDON
    Code
    Rule3
    ON MHZ19B#CarbonDioxide=0 DO DO backlog power2 1; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide>1990 DO backlog power2 1; color2 #FF0400; DisplayText[zc1l1f1s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<600 DO backlog power2 1; color2 #0019FF; DisplayText[zc1l1f1s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1000 DO backlog power2 1; color2 #48FF00; DisplayText[zc1l1f1s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1250 DO backlog power2 1; color2 #B7FF5E; DisplayText[zc1l1f1s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1500 DO backlog power2 1; color2 #FFF600; DisplayText[zc1l1f1s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1990 DO backlog power2 1; color2 #FF9D00; DisplayText[zc1l1f1s4]%value%; ruletimer1 %var1%; rule3 0 ENDON

    Für die, die mit dem SSD1306 ein wenig spielen wollen:

    Displaytext[zc1l1f1s4]

    z = Display löschen

    c1 = Reihe1 (von links nach rechts)

    l1 = Linie1

    f1 = Font1 (gibt noch 0 und 2)

    s4 = Skalierung 4 fach

    Man kann auch einen größeren Font verwenden und kleiner skalieren ... damit läßt sich nach belieben spielen.

    EDIT:

    oder mit Rule3

    Code
    Rule3
    ON MHZ19B#CarbonDioxide=0 DO DO backlog power2 1; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide>1990 DO backlog power2 1; color2 #FF0400; DisplayText[zc1l1f0s2]CO2 in PPM; DisplayText[c2l2f0s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<600 DO backlog power2 1; color2 #0019FF; DisplayText[zc1l1f0s2]CO2 in PPM; DisplayText[c2l2f0s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1000 DO backlog power2 1; color2 #48FF00; DisplayText[zc1l1f0s2]CO2 in PPM; DisplayText[c2l2f0s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1250 DO backlog power2 1; color2 #B7FF5E; DisplayText[zc1l1f0s2]CO2 in PPM; DisplayText[c2l2f0s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1500 DO backlog power2 1; color2 #FFF600; DisplayText[zc1l1f0s2]CO2 in PPM; DisplayText[c2l2f0s4]%value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1990 DO backlog power2 1; color2 #FF9D00; DisplayText[zc1l1f0s2]CO2 in PPM; DisplayText[c2l2f0s4]%value%; ruletimer1 %var1%; rule3 0 ENDON

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    2 Mal editiert, zuletzt von HoerMirAuf (25. Februar 2022 um 12:07)

  • Das stimmt. Da gibts etliche Wege.

    Die Rules machen die CO2 Ampel aber WLAN unabhängig und somit portable. Und das war mein Ziel. Du packst sie ein und stellst sie da auf wo die haben möchtest auch ganz ohne WLAN etc.

    Da hast du natürlich Recht, sieht schon sehr cool aus, tolle Arbeit!

    Gruß Timo

  • Hi.

    ...in meinem Fall würde ich gerne noch ein DFPlayer mini zusätzlich ansteuern: bei Erreichen eines definierten ppm-Schwellwertes soll zusätzlich zur Neopixel Farbänderung und der Display Anzeige ein MP3 Audio EINMALIG als akkusitische Warnung abgespielt werden; das klappt auch bereits, jedoch leider als Endlosschleife solang der Wert in dem definierten Bereich bleibt...

    Könnte man mit 2 weiteren Variablen lösen. Var3 die die mp3 Track Nummer enthält und var4 als Merker, wenn schon mal gespielt wurde.

    Ich beziehe mich mit den Rules auf Post #20, es werden im Ruleset Rule1 um die letzte Rule erweitert und in Rule3 wird jeweils in var3 die aktuelle Tracknummer gesetzt (Track 1 ... 6)

    ACHTUNG !! Ich hab's nicht getestet !!

    Code
    Rule1
    ON System#Init DO Backlog WifiConfig 4; Time 1625436000; var1 15; var3 0; SetOption20 1; Dimmer 35; Fade 1; Speed 20; Power1 1; Power2 1; Rule2 1; Rule3 1; DispayText [z]; Displaytext CO2:         PPM; Displaytext [x0y1]; Displaytext TMP:        ~dfC ENDON
    ON Power1#State=1 DO Backlog rule2 1; RuleTimer1 1 ENDON
    ON Power1#State=0 DO Rule2 0 ENDON
    ON Wifi#Connected DO Time 0 ENDON
    ON var3#state!=%var4% DO backlog var4 %value%; mp3track %value% ENDON
    Code
    Rule2
    ON Rules#Timer=1 DO Rule3 1 ENDON
    Code
    Rule3
    ON MHZ19B#Temperature!=%var2% DO backlog DisplayText [x7y1]; DisplayText %value%; var2 %value% ENDON
    ON MHZ19B#CarbonDioxide>1990 DO backlog var3 1; power2 1; color2 #FF0400; DisplayText [x7y0]; DisplayText %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<600 DO backlog var3 2; power2 1; color2 #0019FF; DisplayText [x7y0] %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1000 DO backlog var3 3; power2 1; color2 #48FF00; DisplayText [x7y0] %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1250 DO backlog var3 4; power2 1; color2 #B7FF5E; DisplayText [x7y0]; DisplayText %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1500 DO backlog var3 5; power2 1; color2 #FFF600; DisplayText [x7y0]; DisplayText %value%; ruletimer1 %var1%; rule3 0 BREAK
    ON MHZ19B#CarbonDioxide<1990 DO backlog var3 6; power2 1; color2 #FF9D00; DisplayText [x7y0]; DisplayText %value%; ruletimer1 %var1%; rule3 0 ENDON

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    3 Mal editiert, zuletzt von HoerMirAuf (28. Februar 2022 um 14:41)