NEWS
alte Fenstersensoren Smart machen
-
Eigene Datenpunkte erstellen für jeden switch per mqtt subscribe.
Power, Switch, Relay usw bleibt ja weiterhin aktiv.
Sonst verliert man die Übersicht bei so vielen Sensoren. -
ok, hast recht, bei dann vielleicht 10 Auswertungen ist das besser
Frage zum Script, das läuft 1x pro Sekunde durch ?
Auch wenn 5h nix passiert ?
Gibt es nicht sowas wie, führe aus, wenn es eine Änderung gibt ?
Nur so eine Idee, damit der nicht ständig arbeiten muss -
geht technisch per Interrupt,
einfach -> nein, viel Arbeit -
ok, dann muss er also der EPS32 arbeiten
-
bei 1 sec langweilt sich das IC
-
Die Temperatur DHT22 Sensoren aus China sind heute angekommen.
Da alles funktioniert, hab ich heute noch mal 3 ESP32 in China bestellt, 3er Pack, da kostete einer 4,50
Das kann man machenEPS32, weil ich einfach für die Fenster Reed Kontakte mehr Platz brauche.
1 DHT 22 kommt da auch noch dran, dann, muss mal schauen, ob man auch einen 2. anschließen kann. Vom Erdgeschoss in der Küche geht ein Leerrohr in den Keller, falls ich da später noch mal Sat oder Lan haben wollte, daher das Leerrohr, da könnte ich jetzt einen Klingeldraht durch schrieben, und den 2. Sensor anstöpseln Dann wäre die Küche auch gleich mit erfasst, und ich brauche dort keinen Wemos D1. -
Hab noch mal ne Spezial Frage an dich.
Um zu prüfen, ob der Keller entfeuchtet wird, will ich noch per Formel das Wasser in der Luft berechnen. Vorbereitet in Excel hab ich das vorher.
Ich wollte nun unterhalb der 3 Werte in der Weboberfläche über die Script Funktion noch eine 4. Zeile hinzufügen.
Wasser in g/m3aber egal was ich unter Scripting eingebe, in der Weboberfläche erscheint keine zusätzliche Zeile.
Ich will das Wasser auch in Influx mit loggen, um zu sehen, wie viel Wasser aus den Wänden per Diffusion in die Luft gelangtIn Schritt 2, will ich alle 3 Kellerräume mal überwachen, damit ich sehe, welcher der 3 Räume der ist, der die Luftfeuchte am meisten erhöht
Die Idee ist nun, das Wasser direkt in der Script Funktion zu berechnen, und wie bei deinem Offen zu Script oben, das ganze per MQTT zu übertragen. Dann muss ich das nicht über Blocky machen
-
ah ja, ok
Schritt 1,
Beispiel soll Webgui:
unter >D muss stehen SWT2=0
vorbesetzen der Variable SWT2 mit dem Wert 0
dies unter >W eingeben
Test{m} %0SWT2%
alles unter >W erscheint auf der Webgui
Test ist dann der Text
{m} füllt auf mit Leerzeichen zwischen Text und Variablenwert
%0SWT2% ist %xxx% ist eine Variable die unter >D angelegt wurde,
0 bei Zahlen ohne Kommawert, 2 wäre mit 2 Stellen hinter dem Komma
SWT2 ist der Variablenwert selbst -
es bleibt bei den 3 Zeilen oben wie im Bild.
Folgendes hab ich aktuell zum Testen inklusive Haken oben drin stehen
>D SWT2=0 >W Ausgabe %0SWT2% ist %xxx%
Liegt es an der Firmware ? hab eine Sensors mit Scripting genommen, oder braucht man dafür noch etwas zusätzlich ? Der gleiche Code unter Scripting beim Wemos Display klappt bestens. Das ist ja das was ich nicht verstehe
Edit, Google meint es fehlt
#define USE_SCRIPT_WEB_DISPLAY
-
@berndsolar13 sagte in alte Fenstersensoren Smart machen:
ohne ist %xxx%
habe mir eine Bastel.bin gebaut wo das meiste zum spielen drin ist.
#define USE_TIMERS #define USE_SCRIPT #define USE_SCRIPT_GLOBVARS #define USE_SCRIPT_STATUS #define USE_WEBSEND_RESPONSE #define USE_SCRIPT_STATUS #define USE_SCRIPT_FULL_JSON_PARSER #define USE_SCRIPT_JSON_EXPORT #define SUPPORT_MQTT_EVENT #define USE_SML_M #define USE_SCRIPT_WEB_DISPLAY #define USE_SCRIPT_SERIAL
du fragst ja eh danach
ESP8266Berechnung :
>D ZAL1=50 ZAL2=200 ERG=0 >S ;>S jede Sekunde ;Berechnung ERG=ZAL1*ZAL2/1000 ;Ausgabe in der Variable ERG Console mit print print Ergebnis %ERG& >W Ergebnis{m} %1ERG% Wert
du rufst mit %xxx% eine Variable auf die nicht in >D aufgeführt ist,
dann wird die Zeile in >W nicht ausgeführt -
hab mir vorhin eine compiliert, werde deiner aber trotzdem mal saugen
Die Zeile ist nun da, der Wassergehalt pro m³ wird berechnet.Folgende Formel muss ich noch einbauen
Sättigungsdruck=610,8*EXP(17,1*B16/(234,2+B16))
B16 ist die Zelle in Excel wo die Temperatur steht, in Tasmota Scripting wäre das die Variable "temp"
Jetzt muss ich das nur noch in das Tasmota reinbekommen. Sollte es nicht klappen melde ich mich -
wenn nicht geht am einfachsten das einzeln in Vars schreiben.
610,8EXP
17,1B16
234,2+B16viel Spass,
mein Wissen ist auch im Scripting begrenzt
Der einfache Weg geht immer. -
die Formel wenn ich EXP weg lasse klappt soweit in einer Zeile
ich brauche nur noch das Selbe was Excel mit EXP macht für Tasmoata, aber das bekomme ich auch noch raus -
was macht EXP ?
-
@ralla66 sagte in alte Fenstersensoren Smart machen:
was macht EXP ?
das müsste die Exponentialfunktion sein, die braucht man, um für die aktuelle Temperatur den Sattigungsdruck zu berechnen, um damit wiederum die Maximale Wasseraufnahme der Luft zu berechnen.
Ich hab dafür mal eine Excel Tabelle runter geladen, da gebe ich die Temperatur und Luftfeuchte ein, und das Ergebnis ist die Wasser Menge in der Luft pro m.³
-
Ich mache jetzt Trick 17
-5 400,9 -4 436,7 -3 475,3 -2 517 -1 561,9 0 610 1 657 2 706 3 758 4 813 5 872 6 935 7 1001 8 1072 9 1147 10 1227 11 1312 12 1402 13 1497 14 1598 15 1705 16 1817 17 1937 18 2063 19 2196 20 2337
Das sind die Werte des Drucks für alle Temperaturen, unter -5 wird es nie werden, und auch nie mehr als 20, dann berechne ich das nicht, sondern gebe die Werte vor
Vorn Temperatur, dahinter der Druck, damit sollte es gehen.
-
dazu meldet sich bestimmt User homoran, der macht das öfters
und vergiß die Alarmmeldung nicht.
Datenpunkt in Mqtt erstellen und beschreiben mal in Ruhe testen.
"" ist Text Variable, der Timer zählt hoch bis 5 und wird dann auf 0 gesetzt.
Wenn WRT ist > < 50 dann Nass oder Trocken>D Timer=0 WRT=48 NAS="Nass" TRO="Trocken" KEL="" >BS ;Datenpunkt Mqtt anlegen nach reboot +>subscribe EA, cmnd/Keller/Feuchte >S Timer+=1 if WRT>50 then KEL=NAS endif if WRT<50 then KEL=TRO endif if Timer>5 ;alle 5 Sekunden then ; Datenpunkt mit Wert beschreiben ; und an IO MQtt senden +>publish Keller/Feuchte %KEL% ;Timer auf 0 setzen Timer=0 endif >W Kellerfeuchte{m} %KEL% Feuchtewert{m} %WRT%
-
if temp>9 then sat=1147 endif if temp>10 then sat=1227 endif if temp>11 then sat=1312 endif
So dachte ich es
Aber wenn ich untenWasser in g/m³ %sat%
scheint die Variable leer zu sein ?
-
zeig mal alles ab D
hinter then nix schreiben, neue Zeile für sat= -
Halleluja
hier der Code falls es wen interessiert
>D temp=0 hum=0 sat=0 wasser=0 >T temp=AM2301#Temperature hum=AM2301#Humidity >S if temp>9 then sat=1147 endif if temp>10 then sat=1227 endif if temp>11 then sat=1312 endif wasser=sat*0.018/8.314/(273.15+temp)*1000 >W Wasser in g/m³ %wasser%
Jetzt muss ich es noch so pimpen das der Wert rechts steht, und ihn per MQTT pushen, dann bin ich fertig
Hinweis, im Code sind aktuell nur 3 Sättigungswerte für die 3 Temperaturen hinterlegt, der Rest kommt noch
Edit 2, die 8,78 sind natürlich der Wert für 100% muss den noch mit meiner % Zahl multiplizieren, um den tatsächlichen Wert zu erhalten