====== **__Die Webseite ist umgezogen__** ====== * //**[[https://www.myworkroom.de/p-lsd:frostwaechter:tasmota|Frostwächter: Sonoff TH16 mit Si7021 (neues Wiki)]]**// ====== Frostwächter: Sonoff TH16 mit Si7021 ====== hier wurde gespickelt> [[https://forum.creationx.de/lexicon/index.php?entry/24-rules/]]\\ [[https://tasmota.github.io/docs/Rules/#long-press-on-a-switch]] Für den Frostschutz einer Pumpe im Außenbereich wurde ein Frostwächter benötigt. Als Heizung wird ein [[https://smile.amazon.de/dp/B07SZMY8Z2|PTC-Heizelement]] eingesetzt. Aus Sicherheitsgründen wurde noch ein klassischer [[https://smile.amazon.de/dp/B005ZEGLPY|Thermostat]] eingebaut, damit der Pumpenraum nicht unnötig aufgeheizt wird. Die eigentliche Regelung übernimmt ein [[https://smile.amazon.de/dp/B075MDN67Z|SonOff TH16 mit SI7021]] Die Regelung kann per Variablen angepasst werden. Ist damit auch für andere Heizungsaufgaben geeignet ====== V1 Heizung (08/15) Sekundentakt ====== * EIN bei Temp <3 Grad * AUS bei Temp >5 Grad Rule1 ON SI7021#Temperature<3 DO power1 1 ENDON ON SI7021#Temperature>5 DO power1 0 ENDON ====== V2 Heizung Regelung ====== (Vorlage: [[https://forum.creationx.de/lexicon/index.php?entry/24-rules/#1.7-Beispiele|9. Einfaches Thermostat Beispiel)]] * EIN bei Temp <3 Grad * AUS bei Temp >4 Grad * Automatik und Hand Betrieb ===== TH16 mit eigenem Profi ausstatten (nur damit funktioniert die RULE1) ===== * Der Taster muss als Switch konfiguriert werden (Switch1 (9)) * Die Blaue LES als Relay2 (dadurch zwei Schalter im WEB) (Relay 2i (30)) * Sensor fest eingebunden. (SI7021 (3)) {{ :tasmota:tasmota_vorlage.png?600 |Copy & Paste}} {"NAME":"TH16Frostwaechter","GPIO":[9,255,255,255,255,0,0,0,21,30,3,0,0],"FLAG":0,"BASE":4} Blaue LED wird über GPIO13 gesteuert (Default: LED1i (56) Status Relais => geändert nach Relais 2i (30))\\ Blaue LED wird als Relais eingerichtet, damit der Automatikmodus angezeigt werden kann\\ Rote LED zeigt den Zustand vom Relais an (GPIO12) ===== Heizungssteuerung ===== ==== Vorbereitung ==== auf der Konsole sind einige Werte zu Konfigurieren. * Alle Werte können an der Konsole gesetzt werden (z.B. Mem3 5) * oder per MQTT (z.B. cmnd/mqttTopic/mem3) Die nächste Zeile **//muss//** einmalig an der Konsole ausgeführt werden! (Copy & Paste) Backlog SwitchMode1 5; Rule 1; Rule 4; TelePeriod 30; SetOption26 1; SetOption0 0; SetOption32 40; poweronstate 0; mem1 0; mem2 0; mem3 4; mem4 2; var1 0 {{:tasmota:tasmota_basis.png?1000 |}} * mem3 5 <= maximale Temperatur Power OFF (>5 Grad) * mem4 3 <= minimale Temperatur Power ON (<3 Grad) * mem1 0/1 Aus/Ein der Regelung * mem2 0/1 Relais Manuell Aus/Ein * var1 <-- aktueller Status vom Regelung 1-OK 0-NOT READY - View by MQTT cmnd/mqttTopic/var1 switchmode1 5 <= damit wird kurzer Tastendruck als TOGGEL und langer Tastendruck als HOLD aktiviert\\ Abfrage in der RULE:\\ * Switch1#State <= kurzer Tastendruck * Switch1#State=3 <= langer Tastendruck !!__Langer Tastendruck löst auch kurzen Tastendruck aus__!! Die Funktion TelePeriod 30 stellt einen 30 Sekunden Timer.\\ Alle 30 Sekunden werden die Werte die mit einem tele-xxxx beginnen abgefragt.\\ tele-SI7021#temperature <= die Temperatur alle 30 Sekunden einlesen.\\ TelePeriod 0 <- damit wird tele-xxxx ausgeschaltet. event temp_demand=%value% <= in der Variable "temp_demand" wird der Wert %value% gespeichert.\\ %value% wird von tele-SI7021#temperature befüllt.\\ Falls man mehrere Werte abfragen möchte, müssen die sofort im Anschluss in einer Variable gespeichert werden\\ * SetOption26 1 => Status Relais wird um den Index erweitert "power1" und "power2" anstatt nur "power") * SetOption0 0 => Status Relais nicht im EPROM abspeichern (schont das EPROM) * SetOption32 40 => langer Tastendruck auf 4 Sekunden (Automatik ein/aus) Regeln> RULE == RULE1 <= kompatibilitäts- Modus zu älteren Softwarestände als es nur eine RULE gab Steuern/Beeinflussen der Regeln (RULE1) z.B an der ersten RULE: * Rule1 0 = Regel ausschalten (Off) * Rule1 1 = Regel einschalten (On) * Rule1 2 = Umschalten (Toggle) Regel off <=> on * Rule1 4 = Befehl solange ausführen wie der Trigger stimmt (Once OFF) * Rule1 5 = Perform commands once until trigger is not met (Once ON) * Rule1 6 = Toggle Once state ==== Regel ==== Die Regel kann mit Copy & Paste einfach in die __Konsole__ kopiert werden. Der Mehrzeiler wird automatisch zum Einzeiler ;-) Rule1 ON system#boot DO RuleTimer1 70 ENDON ON Switch1#State DO event toggling2=%mem2% ENDON ON event#toggling2=0 DO Backlog mem2 1; Power1 1 ENDON ON event#toggling2=1 DO Backlog mem2 0; Power1 0 ENDON ON Switch1#State=3 DO event toggling1=%mem1% ENDON ON event#toggling1=0 DO Backlog mem1 1;TelePeriod 30; Power2 1 ENDON ON event#toggling1=1 DO Backlog mem1 0;TelePeriod 0; Power2 0 ENDON ON tele-SI7021#temperature DO Backlog var1 1; RuleTimer1 10; event ctrl_ready=1; event temp_demand=%value% ENDON ON event#ctrl_ready>%mem1% DO Backlog Power2 0; var1 0 ENDON ON event#ctrl_ready=%mem1% DO Power2 1 ENDON ON event#temp_demand>%mem4% DO Backlog Power1 0; mem2 0 ENDON ON event#temp_demand<%mem3% DO Backlog Power1 %var1%; mem2 %var1% ENDON ====== TH16 mit Tasmota Flashen ====== Die Vorbereitung der Hardware wurde von [[https://www.bastelgarage.ch/index.php?route=extension/d_blog_module/post&post_id=11|bastelgarage,ch]] übernommen. Der Flash Vorgang wird unter Linux (Windos geht auch) durchgeführt. Dazu kommt die Software [[https://github.com/espressif/esptool|esptool.ph]] zum Einsatz. In der Praxis hat sich das löschen der alten Software bewährt ===== Download vom Tasmota Version 8.5.0 DE ===== cd /tmp wget https://github.com/arendst/Tasmota/releases/download/v8.5.1/tasmota-DE.bin ===== löschen des Flashspeicher auf dem TH16 ===== # ./esptool.py --port /dev/ttyUSB0 erase_flash ===== schreiben von Tasmota in den Flashspeicher ===== ./esptool.py -p /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x0 /tmp/tasmota-DE.bin ====== Tasmota: der Trick mit dem umschalten ====== Damit der Zustand des Relay (der Funktion) mit dem Taster umgeschaltet werden kann, kommt das toggelingX und die Variable memX zum einsatz. - ON Switch1#State DO event toggling2=%mem2% ENDON <= Tastendruck erkennen und den Wert von mem2 in taggeling2 speichern - ON event#toggling2=0 DO Backlog mem2 1; Power1 1 ENDON <= wenn sich der Wert von toggeling ändert, wird ein event ausglöst. in diesem Beispiel wird geprüft, ob der Wert 0 in taggeling2 steht. Wenn _ja_ dann wird mem2 den Wert 1 zugewiesen und Power1 auf ON geschaltet. - ON event#toggling2=1 DO Backlog mem2 0; Power1 0 ENDON <= enthält toggeling2 den Wert 1, wird mem2 auf 0 und Power1 auf OFF geschallten. * TRICK: wenn bei toggelingX=0 erkannt wird, wird memX auf 1 gesetzt Backlog hilft, das mehrere Befehle nacheinander ausgeführt werden können (wird Quasi in den Tastaturpuffer geschrieben) ====== Tasmota: Sprechende Namen der Relais ====== Per Default habe die Relais einheitliche Namen. Dabei verliert man z.B. TasmoAdmin oder MQTT schnell die Übersicht. Daher kann man "Freundliche" Name für jedes Relai vergeben. * Name1 => HeizungPumpe * Name2 => Automatik {{ :tasmota:freundlichenamen.png?400 |Namen}} Ansicht im TasmoAdmin: {{ :tasmota:tasmoadmin.png?600 |Ansicht im TasmoAdmin}}