Würde meine mehrfachabfrage erklären,warum rule3 nur halb oder garnicht abgearbeitet wird?
Ich kann ja mal versuchen zu beschreiben,wie die genaue Funktion sein soll.Kommt dann aber erst morgen...
Würde meine mehrfachabfrage erklären,warum rule3 nur halb oder garnicht abgearbeitet wird?
Ich kann ja mal versuchen zu beschreiben,wie die genaue Funktion sein soll.Kommt dann aber erst morgen...
Die praktische Anwendung habe ich ja bereits im ersten post beschrieben...
hier mal eine Ablaufbeschreibung wie ich mir das vorstelle:
Der Gerätetaster soll das Relais tastend ein und ausschalten können (Grundfunktion,geht sowieso schon).
Mit einem longpress (2sek,geht auch schon) (switch1#state=3) des Gerätetasters soll zwischen zwei Funktionen hin und her geschaltet werden.Also aktiv
ist entweder Funktion1 ODER Funktion2.Auch der über Relay2 (power2) hinzugefügte Schalter in der web-ui soll die Funktionen
hin und her schalten.Schalterzustand ON wäre dann Funktion1 aktiv.
Funktion1:
- blaue LED (ledpower1 ?) aus sobald Funktion1 aktiv
- wenn die Leistung 60sek lang größer/gleich 180 Watt ist--Relais (power1) aus.
Funktion2:
- blaue LED (ledpower1 ?) an sobald Funktion2 aktiv
- wenn die Leistung 60sek lang kleiner 2 Watt ist--Relais (power1) aus
Das hin und her schalten der Funktionen 1 und 2 soll sowohl bei ein-als auch bei ausgeschaltetem Relais (power1)
möglich sein.
Moin.
Die energy#power>2 ist ja die Standartfunktion die IMMER aktiv ist und bei Volladung eintritt.
Bei 80% vermutlich die >180W die nur zugeschaltet werden.
Rule1 zum toggeln des Power2, der dann die Rule toggelt und fürs blinken wenn Rule3 aktiv:
rule1
on switch1#state=3 do power2 2 endon
on power2#state do backlog rule3 %value%; rule3 endon
on rules#timer=1 do power1 0 endon
on rule3#state=OFF do backlog ledpower 1; ruletimer2 1 endon
on rule3#state=ON do backlog ruletimer2 0; ledpower 0 endon
on rules#timer=2 do backlog ledpower 2; ruletimer2 1 endon
Rule2 für 60sek<2W die Standartfunktion wenn volladung (denk ich mal)
(könnte man auch im Ruleset1 {Rule1} unterbringen würde aber dauernd feuern bei Power>2W
also auslagern in Ruleset2 und dieses auf Once stellen {Rule2 5})
Rule3 für 60sek>180W (vermutlich die Teilladung?)
diese Ruleset wird vom Power2 zugeschaltet und wird ebenfalls auf ONCE gesetzt um bei >180W nicht permanent zu feuern
Aktivieren der Rule und Rule2 u. Rule3 auf ONCE
backlog rule1 1; rule2 1; rule1 4; rule2 5; rule3 5
muss hinter power2#state keine Zahl stehen? und im Feld %value% ?
In diesem Fall nicht.
Wenn kein Wert dahinter steht, wird bei jeder Änderung die Rule ausgelöst und im %value% der jeweige Wert des triggers, in dem Fall der power2 status ausgegeben.
Wenn also eingeschaltet ist steht im %value% des Power#state eine "1" bei ausgeschaltet eine "0"
Die Rule3 wird also bei power2 1 auch 1 (aktiv) und bei power2 0 ebenfalls 0 also inaktiv.
werden die timer in rule2 und rule3 eigentlich jetzt noch zurück gesetzt wenn die Bedingung innerhalb der 60sek nur einmal kurz
erfüllt ist?
Beispiel:
Beim einschalten des Ladegerätes wird kurzzeitig eine hohe Einschaltleistung weit über den 180 Watt gezogen,dann gehts erst wieder unter 180 Watt.
Das würde den Timer ja schon ungewollt setzen oder?
selbiges im Fall bei < 2 Watt.
Beim einschalten des Ladegerätes wird kurzzeitig eine hohe Einschaltleistung weit über den 180 Watt gezogen,dann gehts erst wieder unter 180 Watt.
Das würde den Timer ja schon ungewollt setzen oder?
selbiges im Fall bei < 2 Watt.
Nö, war nicht berücksichtigt.
Zu Beachten wäre:
Du kannst nicht gleichzeitig nach >180 UND nach >2 auswerten, Bei >180 ist ja schon lange die Bedingung >2 erfüllt und setzt den ruletimer immer zurück.
Das heißt bei der Teilladung können wir nicht nach >2 Auswerten sondern NUR nach >180
rule1
on switch1#state=3 do power2 2 endon
on power2#state=1 do backlog rule2 0; rule3 1; rule3 endon
on power2#state=0 do backlog rule3 0; rule2 1; rule3 endon
on rules#timer=1 do power1 0 endon
on rule3#state=OFF do backlog ledpower 1; ruletimer2 1 endon
on rule3#state=ON do backlog ruletimer2 0; ledpower 0 endon
on rules#timer=2 do backlog ledpower 2; ruletimer2 1 endon
Zu Beachten wäre:
Du kannst nicht gleichzeitig nach >180 UND nach >2 auswerten, Bei >180 ist ja schon lange die Bedingung >2 erfüllt und setzt den ruletimer immer zurück.
Das heißt bei der Teilladung können wir nicht nach >2 Auswerten sondern NUR nach >180
hm ich dachte wenn eine rule off ist,wird sie in der weiteren Verarbeitung auch nicht beachtet
hm ich dachte wenn eine rule off ist,wird sie in der weiteren Verarbeitung auch nicht beachtet
Hab ich ja jetzt. In Rule2 wird gegen <>2 geprüft, in der Rule3 <>180. EIne ist immer nur aktiv
ABER, sollte es aus irgend einem Grund mal nicht abschalten bei >180 würde der Akku ja volladen.
Die Automatische Abschalteng bei <>2 für Volladung greift dann aber nicht weil die ja in Rule2 deaktiviert ist
Moin.
müsste da nicht rule2 anstatt rule3 stehen?
hab das mal probiert,aber keinen Unterschied festgestellt.
Das steht nur da damit die Rule3 Abfrage für rule3#state auch sicher ausgeführt wird, da dies beim test ja nicht immer erfogte.
Also passt das schon wenn da nur rule3 steht.
Wenn Du keinen Unterschied merkst, dann weil es ja kein rule2#state gibt und weil die rule3#state abfrage auch ohne das rule3 zu funktionieren scheint.
Ok wieder was gelernt...
Ansonsten funktioniert alles bis auf eine Auffälligkeit:
Ausgangssituation:
Relais power1 ist aus,rule2 ist on rule3 ist off,Ladegerät steckt nicht in der Steckdose(also energypower ist 0)
Wenn das Relais power1 nun eingeschaltet wird,hätte ich erwartet,das es nach 60sek wieder ausgeht da ja energypower 0 ist.
Das liegt sicher an der ONCE Funktion der Rule2 (rule2 4)
ONCE bewirkt, das die Rule nur einmal auslöst wenn die bedingung erfült wurde.
Wenn also schon mal für <2 ausgelöst wurde, wird bei einem erneuten <2 nicht wieder ausgelöst.
Es muss erst >2 geworden sein damit die Bedingung erneut greift.
Du kannst das ONCE auch mal ausschalten rule2 4 und schau dann mal in die Konsole.
Der Trigger <2 wird dauernd ausgelöst und damit der Ruletimer ständig zurückgesetzt und würde nie auslösen.
Wenn du Lust aufs testen hast, könnte man die Rule2 erweitern mit Bedingungen:
rule2
on energy#power>2 do ruletimer1 0 endon
on energy#power=0 do ruletimer1 60 break
on energy#power<2 do ruletimer1 60 endon
Wie zuvor wird bei <2 ausgeschaltet.
Ich weiß nicht wie sich BREAK/ENDON im ONCE verhält aber wenn die Bedingung <2 nicht greift könnte dann <1 triggern.
Wenn das geht sollte, weil andere Bedingung als nächstes >2 wieder greifen.
ONCE aktivierts du übrigens wieder mit:
rule2 5
EDIT:
Hab das eben mal mir variablen getestet. Das funktionier zwar nicht perfekt und es wird in so einem Fall eventuell einmal der Ruletimer nachgetriggert aber im großen und ganzen geht das so.
Ja ich probiere nochmal ein wenig rum.
Vielen Dank für deine tolle Unterstützung bis hierhin.