1. console eingeben mem1 0.8
damit werden die Prozente geladen
2. Weblog 4 in der Console eingeben und den gesamten Log hier posten wenn fertig
1. console eingeben mem1 0.8
damit werden die Prozente geladen
2. Weblog 4 in der Console eingeben und den gesamten Log hier posten wenn fertig
Ohne Logdaten keine Analyse möglich !
was wurde eingestellt und ausgegeben für
--------------------------------------
- dynamische Variablen
VAR3 = Leistung aktuell (tele-Messintervall)
VAR4 = Triggervergleich mit Momentanleistung
----------------------------------------
-feste Variablen
mem1 - Triggerleistunsende in % => was wurde eingestellt von dir ?
on VAR3#State<%VAR4% do Backlog Power1 0; RuleTimer0 0 endon => ist somit nicht erfolgreich gelaufen ?
Warum ?
Weblog 4 in der Console eingeben und den gesamten Log hier posten !
Wie die Originalseite und auch die kleinen >w -Seiten versorgt werden kann ich nicht sagen (Stichwort -Browser / Quelltext / Untersuchen kann ich dir nur mitgeben)
So habe ich die Möglichkeiten der Manipulation im WebUI die ich kenne erforscht und dargestellt. Damit sind Laschen o.ä. auf weiteren HTML-Seiten welche auf dem UFS liegen mit Java.Script möglich wie auch die selektive Darstellung der in Datei abgespeicherten Daten.
Viel mehr wird das ohnehin mächtige Tasmota nicht mehr umsetzen - denn jeder weitere Weg liegt im Berry-Scriptumfeld. den ich nicht mehr mitgehen werde.
..und was noch so mit solch einem Gerät geht !
Mit einem 1500 W Inverter von 12V auf 220 V ist eine 700 W Pumpe gerade so ansteuerbar, wenn die Leistung aus einer 110 Ah 12V Batterie gezogen wird.
110Ah Akku 13,6 V- bei Vollgeladen kann er bis 12 V ca. 60% seiner Leistung abgeben
somit 1300Wh * 0,6 = ca 790 Wh verfügbar und kann damit auch bewölkte Tage ausgleichen, da mit 250Wh täglich 20 Minuten realistisches Bewässern möglich ist.
Weil das Schalten dringend in Zyklen (ca 90 Sekunden) erfolgen muss um eine Batterie- und Inverterüberlastung im unbetreuten Betrieb zu vermeiden (10 V / 70 A im Grenzbetrieb) bietet sich die Schaltsteuerung mit einer NOUS AT1 Steckdose und Rule in Variante 1 an.
Drei Situationen sind wesentlich in der Rule-Umsetzung.
1. Kein WLAN vorhanden nur Hotspot vom Handy zur Kontrollzeit für eine Zeitsynchronisation
2. die Spannung am Inverter/Tasmoat-System bricht zusammen (PV/AKKU-Strom <10V /=0V ) Neustart Tasmota ist zu organisieren
3. die Spannung bleibt stabil über die Nacht sowie zur Bewässerungszeit und es wird die evtl. vorhandene WIFI-Synchronzeit fortgeschrieben für eine Bewässerung zur Vorgabezeit
Nachteil der Variante 1 Lösung ist der "hohe" Stromverbrauch durch den Inverter im Leerlauf (<10% Nennleistung - ca. 250Wh pro Tag), da die Schaltsteckdose an der 220V Seite des Inverters den durchgängigen Betrieb erfordert und nur so die Gartenpumpe zur Spritzzeit am Morgen oder Abend selbstständig zuschalten kann.
Variante 2
ist eine in das Invertergehäuse integrierte Tasmota-Schaltung die eine Zuschaltung des gesamten Inverters mit fester Anschaltung der Pumpe organisiert und damit 220 Wh Leerlaufleistung vom Inverter am Akku täglich frei werden.
Variante 2a ist dann eine Erweiterung auf Winterschaltung des Inverters mit Tasmota-Schalfmodus bei der nur zyklisch Überwachungen und Akku-/Inverterheizung organisiert werden.
Den letzte Sommer haben wir Variante 1 erfolgreich mit dem folgenden Code gefahren und bereiten für diesen Sommer Variante 2 vor.
Konsoleneingabe
teleperiod 60
Timezone 99
voltageset 230
PowerSet xx.x
Reset 99 - boot count zero
SetOption36 20 - 20 Boots zulassen bis RESET-Firmware in 10 s
#nach Neustart 3 Stunden warten (erster Systemstart erfolgt erst am Folgetag ! - aktueller Tag manuell bewässern )
[empfohlene Einstellungen der Variablen]
mem1 - Sekunden bis Zyklusneustart [ 900]
mem2 - Sekunden für eine Bewässerungszeit [90]
mem3 - volle Einschaltungen
mem4 - Summe Ausschaltungen
mem5 - Pause-Spannungsausfall [20000]
mem6 - Pause-Bewässerung(Morgen) [80000]
mem7 - Tageslaufzeitvorgabe Anzahl Einschaltungen pro Tag [15] = ca. 250 Wh
mem8 - Tageslaufzeit aktuell
mem9 - Spannungs-Trigger [215] aus wenn unterschritten um die nächste Nacht aktiv zu überstehen
mem12 - Pause einen Tag
VAR1 - Übergabe Aus-Zeit
VAR2 - Übergabezeit
VAR3 - aktueller Energieverbrauch
VAR4 - Zentraler Schalter AUS=0 Ein=2
VAR5 - erste Schaltzeit am Tag [600 = 10 Uhr]
VAR6 - Zusammenstellung websend Station, Spannung, Power
VAR7 - Tageslaufeincounter (Vergleich mit VAR1)
VAR8 - Spannungsvergleich
VAR9 - Info-Trigger
VAR10 - Startzeit
VAR11 - Endzeit
VAR12 - Pause nach neuem Tag
VAR13 - Neustartzeitübergabe
VAR15 - T1 Reflektion
VAR16 - eventTrigger
counter1 - Tagesanzahl
counter2 - Summe erfolgreie AUS
counter3 - Bootanzahl
Umsetzung:
template {"NAME":"Count1=EINday<p>Counter2=AUSsum<p>Counter3=Bootcount","GPIO":[32,353,352,354,2720,2656,0,0,2624,320,224,225,226,0],"FLAG":0,"BASE":49}
' Button1 am Gerät Zyklusstart ohne Wifi-Kopplung bis Unterspannung
' Power1 "Dose" Start ohne Timer
' Power2 "EIN-Zyklus" Zyklusstart
' Power3 "Count 0" Werte zurückstellen
1.)
'nach Neustart steht die Tasmotazeit auf 4:20 Uhr(260) im Jahr 2020!, wenn kein WLAN-Zeit (aus Hotspot)
'bei Spannungszusammenbruch Neustart nach VAR5 verminder um 300 Minuten
'VAR4 0 schaltet zentral AUS und setzt RuleTimer1 auf mem1
rule1
ON System#Init do backlog time 1587435620; Power1 0; Power3 0; VAR13 %mem1%; VAR7 %mem7%; VAR5 %mem5%; VAR1 0; VAR2 %mem4% endon
on Wifi#Connected do Backlog time 0; VAR5 %MEM5% endon
on time#Minute<300 do Backlog VAR14 %timestamp% endon
on VAR14#State$<2020- do Backlog ==>Notzeit; VAR5 %MEM5%; SUB5 300 endon
on Time#Minute=%VAR5% do Backlog Ruletimer1 5; VAR1 1 endon
on Rules#Timer=1 do Backlog VAR4 9 endon
on Rules#Timer=2 do Backlog VAR4 0; VAR13 %mem1% endon
2.)
Ein/Ausschalten
Rule2
on VAR4#State==0 do backlog Power1 0; RuleTimer2 0; RuleTimer1 %VAR13%; ADD2 1; mem3 %VAR1%; VAR4 5; Power2 0 endon
on VAR4#State==9 do backlog Power1 1; RuleTimer2 %mem2%; ADD1 1; mem4 %VAR2%; VAR4 5 endon
3.)
'Abschalten bei Unterspannung für 22 Stunden (bei
'Abschalten wenn Counter mem7 erreicht
rule3
on ENERGY#Voltage<%mem9% do Backlog VAR13 80600; SUB4 1 endon
on VAR1#State>%VAR7% do Backlog VAR13 80600; VAR4 0 endon
on VAR1#State do counter1 %mem3% endon
on VAR2#State do counter2 %mem4% endon
on INFO3#bootcount do counter3 %value% endon
on Button1#State=1 do Backlog RuleTimer1 5; Var1 0 endon
on Power2#State=1 do Backlog Ruletimer1 5; VAR1 0 endon
on Power3#State=1 do Backlog mem3 0; mem4 0; VAR1 0; VAR2 0; EnergyToday1 0; EnergyTotal1 0; Power3 0 endon
4.)
PROD-Umgebung einstellen:
backlog NtpServer1 172.20.10.1; NtpServer3 3.de.pool.ntp.org; NtpServer2 2.de.pool.ntp.org; Timezone 99;
mem1 900; mem2 90; mem9 215; mem3 0; mem4 0; VAR1 0; VAR2 0; mem7 0; VAR7 0; mem5 600; SetOption0 0;
SetOption21 1; SetOption36 20; Webbutton2 Start<p>Zyklus; Webbutton1 Dose; Webbutton3 Count 0; Rule1 1; Rule2 1; Rule3 1
Test-Umgebung:
backlog mem1 9; mem2 90; mem9 222; mem3 0; mem4 0; mem7 0; VAR7 0
PS1: die Basis ist eine Standard-Tasmota Applikation auf einer NOUS AT1 Steckdose.
Eine Nutzung einer Shelly Plug S Stackdose ist nur mit wesentlichen Veränderungen in der Unterspannungsabschaltung möglich (liegt bei Anfrage vor), da im Auszustand keine Spannung gemessen werden kann.
PS2: mit dem folgenden Geräteeinsatz kann eine Gartenpumpe mit begrenzter Leistung nach jedem Schaltvorgang eine neue der 6 Abgänge aktiv schalten (per Geräteumschalter auch Reduktion auf 2-5 Abgänge möglich) .
siehe Amazon: https://amzn.eu/d/gTz9puo
habe deine minimale Anforderung in Code umgesetzt.
Die letzte Zeile entspricht genau der Anforderung (Zeile davor dann weg), sollten aber wegen unterschiedlicher Ladezustände des Akku besser durch die dynamische Messung ersetzt bleiben.
Konsoleneingabe
teleperiod 60
Vorbelegunge per Console
mem1 - Triggerleistunsende "Aus" %-Satz 0.3 festlegen <<<<__________
--------------------------------------
- dynamische Variablen
VAR3 = Leistung aktuell (tele-Messintervall)
VAR4 = Triggervergleich mit Momentanleistung
----------------------------------------
-feste Variablen
mem1 - Triggerleistunsende in %
------------------------------------------
Timer:
RuleTimer1 300; - Leistungsmessung nach 5 Minuten zur Basisstrombestimmung
RuleTimer2 28800 - Abschaltung nach 8 Stunden generell
mem1 * Leistungsmessung zur RuleTime1-Zeit = Ausschalttriggerleistung
______________________________________________________
######## 1. Einrichtung ###########
Backlog NtpServer1 192.168.178.1; NtpServer2 2.de.pool.ntp.org; NtpServer3 3.de.pool.ntp.org; Wificonfig 4; Sleep 250;
Backlog Latitude 51.7800; Longitude 14.4100; timezone 99
Backlog WebButton1 Dose; Rule1 1; Rule2 1; Rule3 1; SetOption0 0
___________ Rule0____________
'############ hüte dich vor Kommentaren in der Rule !!###############
'prüfe ob die Daten übernommen wurden
Rule1
ON System#Init do Backlog WifiConfig 4; CalcRes 2 endon
on Button1#state do Power1 2 endon
ON Power1#state=1 do Backlog Power1 1; RuleTimer1 300; RuleTimer2 28800 endon
ON Power1#state=0 do Backlog Power1 0; RuleTimer0 0 endon
on Rules#Timer=1 do Backlog VAR4 %VAR3%; Mult4 %mem1% endon
on Rules#Timer=2 do Power1 0 endon
Rule2
on tele-Energy#Power do Backlog VAR3 %value% endon
Rule3
; Wenn der aktuelle Leistungswert kleiner ist als der errechnete 80% Wert dann aus !
on VAR3#State<%VAR4% do Backlog Power1 0; RuleTimer0 0 endon
;Nachfolgende Zeile - Vorgabe wenn der Leistungswert kleiner ist als 150 dann Ruletimer2 auf 20 Minuten setzen (siehe Commands - 06 Rules - CREATIONX - Smart Home Forum)
;(eigentlich 1200-teleperioden Zeit in der Anordnung )
;on VAR3#State<150 do Backlog RuleTimer2 1200; Rule3 5 endon
schon das probiert - oder unzufrieden ?
Idee - 80% an der Leistungsmessung nach 5 Minuten zur Basisstrombestimmung
- Abschaltung nach 8 Stunden generell
Ein einfacher Aufruf der systematisch abgespeicherten Tasmotadaten aus dem Script vom UFS-Filesystem des Tasmota kann so erfolgen im Tasmota WebUI so:
>W
<a href="https://forum.creationx.de/ufs/beispiel.txt" style="color:red">____Daten____</a>
im HTML aus einer eigenen Seite TextAnzeige.html welche auch auf dem UFS-Filesystem liegt im Tasmota-Scriptaufruf so:
>W
<a href="https://forum.creationx.de/ufsd?" style="color:red">____csv-Daten____</a>; über Managerkontakt
<a href="https://forum.creationx.de/ufs/TextAnzeige.html" style="color:green">____HTML-Daten____</a>
PS:ACHTUNG!
der Editor ändert den Code in der Anzeige (bitte https://localhost/ufsd ersetzen durch
im HTML-Standard so: viel
hier mal eine Darstellung einer Gosunddose mit eingebautem Temperatursensor zur Lüftersteuerung für den Frostschutz.
maximal kastriertes WebUI mit Rule-Programm für Usereinstellungen ohne mögliche Fehlhandlung - Standard-Buttonexit im Template:
{"NAME":"Temperatur 0-25 °C <style>form button{display:none}</style> ","GPIO":[321,416,320,1312,2656,2720,0,0,2624,32,225,224,226,0],"FLAG":0,"BASE":55}
eine praktikable Lösung für tägliche Skriptanpassungen zu etablieren ist selten, kann aber mit einer Datenspeicherung als Datei und initialer Ladung auch erfolgreich werden.
oder man geht den Weg den laufenden Tag im Jahr (mit Schaltjahr) abzubilden, um jeden Tag -1 auflösen zu können.
Datum :{m} %2.0day%.%2.0month%.%4.0year% -%2.0hours%:%2.0mins%:%2.0secs%
mit Software geht alles -
am Besten in diesem Fall schreibt man um 01:00 Uhr den Tag in eine Variable ( Vortag) und nutzt sie für weitere Aufgaben bis nächsten Tag 1:00 Uhr
lohnt das ? - nur für Massenproduktion von verschiedenen Coden.
Wifi - Parameter gleich mitgeben ist eigentlich das einzige Sinnvolle, da der Rest immer angepasst wird.
Gleiche Rule oder Skriptdaten auf viele Geräte ( Produktionslinie) am Besten mit Backup einspielen organisieren, da sind dann alle Einstellungen dabei 😃
Wenn es in der Konfiguration kein Relais gibt sind alle Buttons weg - ja aber auch der Power-Trigger und die Hardwareansteuerung für den Stromfluss.
Die Lösung kann für deinen Fall nur sein - "Negerboxen im Tunnel" schwarzer Button und schwarze Schrift auf schwarzen Grund !
etwas basteln an den richtigen Farben -
WebColor {"WebColor":["#eaeaea","#252525","#4f4f4f","#000000","#dddddd","#65c115","#1f1f1f","#ff5661","#008000","#faffff","#1fa3ec","#0e70a4","#d43535","#931f1f","#47c266","#5aaf6f","#faffff","#999999","#eaeaea"]
oder
Webbutton1 <style>form button{display:block}</style>
oder gleich alle Button abschalten (fast) mit
Webbutton1 <style>form button{display:none}</style>
oder noch eine extra Ausgabe für die VAR1 auf den WebUI zu organisieren mit
Webbutton1 <input value=%VAR1%>
usw. gibt es noch viele Varianten mit HTML etwas zu verbiegen
Ein Rule-Beispiel für eine Dose mit abgeschalteten Standardbuttons und z.B. voreingestellten Timers kann der User nur diese ein oder ausschalten im WebUI.
(Voraussetzung: 2. Relay auf ein GPIO bei Templates Parameter anmelden)
backlog Webbutton2 <a style="color:yellow">Timer<p>Zyklus</a>; Rule1 1; Webtime 0,16
Rule1
on Power2#State=1 do Timers 1 endon
on Power2#State=0 do Timers 0 endon
wenn ohne ein Passwort nur die Standard-Buttons abgeschaltet werden sollen um normalen Usern im WebUI eine Fehlhandlung zu nehmen, geht das in
Achtung: Rückweg beachten!
Script: mit einstellen der Zeile unter >W <style>form button{display:none}</style>
Rückweg - Console aufrufen mit IP/s10?: ; oder löschen der Zeile <style>form button{display:block}</style>
Rule: mit einstellen unter Console: Devicename <style>form button{display:none}</style>
Rückweg - Console aufrufen mit IP/cs?: Devicename <style>form button{display:block}</style>
1.) >470μF über GND und 3,3 V (nur zur Sicherheit und bis SetOption gesetzt)
2.) dingend 4MB Speicher löschen vor dem Install
3.) Sleep 250 und SetOption36 20 (20 Boots [Spannungsabsenkungen] in 10 s zulassen bis RESET-Firmware erfolgt
PS: Erweiterung zur einzige Vermutung
- die Belastung mit Tasmota ist aktuell zu hoch für das Netzteil
ZitatHabe alles wie im Tutorial verkabelt und sobald ich das Template einspiele resettet sich der D1 (so weit dass selbst die Wifi Config weg ist)
Schein auch ein Problem mit der Spannungsversorgung zu sein !
1. 1000μF über die GND und 3,3 V
2. SetOption36 20 (20 Boots [Spannungsabsenkungen] in 10 s zulassen bis RESET-Firmware erfolgt)
- na Compileroptionen ausprobieren für die jeweilige Hardware
#define SCRIPT_MAXSSIZE - Zeichenfolgen > 48
#define USE_FEXTRACT - flash
#define USE_SDCARD
#define SDCARD_CS_PIN X X = GPIO of card chip select
SD card uses standard hardware SPI GPIO: mosi,miso,sclk
SPI IO-Unterstützung #define USE_SCRIPT_SPI
I2C-Unterstützung #define USE_SCRIPT_I2C
Also es gibt Compileroptionen mit denen weitere Einstellungen möglich sind. Aber es liegt oft auch an der Hardware welche den Zugriff auf den Speicher verweigert.
nur mit den folgenden Compileroptionen :
(leider kann ich die LED und das Display noch nicht ansteuern )
[da hätte ich gerne Hinweise] - aber für diverse Skriptprojekte ist er gut.
#ifndef USE_SML_M
#define USE_SML_M
#endif
#ifndef USE_SCRIPT
#define USE_SCRIPT
#endif
#ifdef USE_RULES
#undef USE_RULES
#endif
#ifndef USE_SCRIPT_FATFS_EXT
#define USE_SCRIPT_FATFS_EXT
#endif
#ifndef USE_UFILESYS
#define USE_UFILESYS
#endif
#ifndef USE_WEBSERVER
#define USE_WEBSERVER
#endif
#ifndef USE_SCRIPT_WEB_DISPLAY
#define USE_SCRIPT_WEB_DISPLAY
#endif
#ifndef USE_WEBSEND_RESPONSE
#define USE_WEBSEND_RESPONSE
#endif