vielen Dank dafür.
kleinen Fehler habe ich entdeckt
User Parameter für den Online Compiler:
fehlt in der ersten zeile eine #.
ifdef USE_I2C
durch
#ifdef USE_I2C
ersetzen.
grüße
vielen Dank dafür.
kleinen Fehler habe ich entdeckt
User Parameter für den Online Compiler:
fehlt in der ersten zeile eine #.
ifdef USE_I2C
durch
#ifdef USE_I2C
ersetzen.
grüße
Ja stimmt! Copy & Paste Fehler. Ist korrigiert, danke für den Hinweis.
Vielen lieben Dank für´s Teilen deiner CO2-Ampel.
Das hat mir als blutige Anfängerin sehr geholfen!
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:
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: ...
in Zeile 4:...
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.
Hi,
vielen Dank für die ausführliche Erklärung.
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.
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.
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 ...
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
...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.
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:
#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:
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
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
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
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 !!
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
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