(ERLEDIGT) DOIF kommt nicht über CMD1 oder CMD3 hinaus...

Begonnen von misux, 02 Juni 2018, 22:10:44

Vorheriges Thema - Nächstes Thema

misux

aha... so langsam kommt licht ins Dunkel.... tue mir noch schwer mit mit dem Event oder Reading

Was macht denn mehr sinn? Auf Event oder auf das Reading Triggern?

misux

Oh mann... da setzt man "unbewusst" irgendwo ein event-on-change .*:300 attr und schon läuft alles schief...

Ich entschuldige mich für blöde Fragen aber ich wusste ehrlich gesagt nicht warum das eine oder andere nicht mehr funktioniert...

Ich habe das event-on-change attr beim LichtSensor gesetzt und all meine DOIFS umgebastelt sodass sie den Lichtsensor betrachten und nicht meinen TAG/Nacht Dummy... Durch das reading hat aber der Lichtsensor nicht richtig funktioniert und auch meine DOIFS nicht. Bis ich das erstmal herausgefunden habe... ::) War ein Tipp vom Foren User ;)

Naja, das Reading ist gelöscht, wieder viel gelernt durch euch, meine DOIFS etwas gepimpt und nun rennt es wieder!

Vielen Dank für eure Hilfsbereitschaft und vor allem Geduld!

Hier mein soweit funktionierender code... Hoffe er funktioniert nicht weil ich Glück habe sondern weil ich diesmal auch alles richtig gemacht habe...

([TVTime:state] eq "on" and [?08:00-22:15]) (set WZEZ_WZFLed off) (set WZBodenLed off)
DOELSEIF
([TVTime:state] eq "off" and [?08:00-22:15]) (set WZEZ_WZFLed on) (set WZBodenLed on)
DOELSEIF
([?TVTime:state] eq "off" and [LichtSensor:brightness] < 25.0 and [?08:00-22:15] and [?WZEZ_WZFLed] eq "off" and [?WZBodenLed] eq "off") (set WZBodenLed on) (set WZEZ_WZFLed on)
DOELSEIF
([TVTime:state] eq "off" and [22:15-08:00] and [?PartyTime:state] eq "off" and [?LichtSensor:brightness] < 20.0) (set WZEZ_WZFLed on-for-timer 600) (set WZBodenLed on-for-timer 900)
DOELSEIF
([TVTime:state] eq "off" and [PartyTime:state] eq "on" and [?LichtSensor:brightness] < 20.0) (set WZBodenLed on) (set WZEZ_WZFLed on)
DOELSEIF
([?TVTime:state] eq "off" and [PartyTime:state] eq "off" and ([?WZEZ_WZFLed] eq "on" or [?WZBodenLed] eq "on")) (set WZEZ_WZFLed off) (set WZBodenLed off)

Per

Zitat von: misux am 04 Juni 2018, 13:55:29Was macht denn mehr sinn? Auf Event oder auf das Reading Triggern?
Um mit den Worten eines Klassikers zu antworten
Zitat von: KlassikerEs kommt darauf an
Nämlich auf das, was du erreichen willst. Alle drei Varianten (Event, triggernder Status und nichttriggernder Status) haben ihre Berechtigung, sonst hätte Damian das auch nicht eingeführt.

In deinem Fall wären die drei Kombinationen
Umgebung + Zeit
["EVENT"] + [triggernder Status]
["EVENT"] + [?nichttriggernder Status]
[triggernder Status] + [?nichttriggernder Status]
richtig, wobei die erste mehr Prozessorzeit (ohne GGleistung!) beansprucht.

Zitat von: misux am 04 Juni 2018, 21:44:41Hoffe er funktioniert nicht weil ich Glück habe sondern weil ich diesmal auch alles richtig gemacht habe...
Den Zahn muss ich dir ziehen. Leider.

DOELSEIF
([TVTime:state] eq "off" and [?08:00-22:15]) (set WZEZ_WZFLed on) (set WZBodenLed on)
DOELSEIF
([?TVTime:state] eq "off" and [LichtSensor:brightness] < 25.0 and [?08:00-22:15] and [?WZEZ_WZFLed] eq "off" and [?WZBodenLed] eq "off") (set WZBodenLed on) (set WZEZ_WZFLed on)

Der (hier) zweite Fall wird nie eintreten, weil egal wie LichtSensor:brightness ist, es schon vorher abgefangen wird. Da muss du die Reihenfolge umdrehen.

Nochwas: wenn du es nicht für irgendwelche Attribute brauchst, kannst du aus
(set WZEZ_WZFLed on) (set WZBodenLed on)
(set WZEZ_WZFLed on,set WZBodenLed on)
oder gar
(set WZEZ_WZFLed,WZBodenLed on)
schreiben, senkt die Prozessorlast nochmal (wenn auch wenig, aber auch Kleinvieh...

misux

#18
HI!

Habe es jetzt umgestellt und so erfolgreich getestet!  ;D


([TVTime:state] eq "on" and [?08:00-22:15]) (set WZEZ_WZFLed off,set WZBodenLed off)
DOELSEIF
([TVTime:state] eq "off" and [?08:00-22:15] and [?LichtSensor:brightness] < 25.0) (set WZEZ_WZFLed on,set WZBodenLed on)
DOELSEIF
([LichtSensor:brightness] < 25.0 and [?TVTime:state] eq "off" and [?08:00-22:15]) (set WZBodenLed on,set WZEZ_WZFLed on)
DOELSEIF
([LichtSensor:brightness] > 25.0 and [?TVTime:state] eq "off" and [?08:00-22:15]) (set WZBodenLed off) (set WZEZ_WZFLed off)
DOELSEIF
([TVTime:state] eq "off" and [22:15-08:00] and [?PartyTime:state] eq "off" and [?LichtSensor:brightness] < 25.0) (set WZEZ_WZFLed on-for-timer 600) (set WZBodenLed on-for-timer 900)
DOELSEIF
([TVTime:state] eq "off" and [PartyTime:state] eq "on" and [?LichtSensor:brightness] < 25.0) (set WZBodenLed on,set WZEZ_WZFLed on)
DOELSEIF
([?TVTime:state] eq "off" and [PartyTime:state] eq "off" and ([?WZEZ_WZFLed] eq "on" or [?WZBodenLed] eq "on")) (set WZEZ_WZFLed off) (set WZBodenLed off)


Aber ich muss es mindestens so: (set WZBodenLed on,set WZEZ_WZFLed on) schreiben... bei (set WZBodenLed,WZEZ_WZFLed on) schmeißt er mir einen Error raus:

Zitat
2018.06.05 18:50:58.533 2: DOIFWzEzBeleuchtung: set WZEZ_WZFLed: no set argument specified
2018.06.05 18:50:58.538 2: DOIFWzEzBeleuchtung: WZBodenLed off: Unknown command WZBodenLed, try help.

Allerdings habe ich nun mal wieder ein anderes "Problem"

Ich bekomme ständig einen LOGEintrag, ca alle 30 sek.
Dieseer kommt von den Zeilen,

([LichtSensor:brightness] < 25.0 and [?TVTime:state] eq "off" and [?08:00-22:15]) (set WZBodenLed on,set WZEZ_WZFLed on)
DOELSEIF
([LichtSensor:brightness] > 25.0 and [?TVTime:state] eq "off" and [?08:00-22:15]) (set WZBodenLed off) (set WZEZ_WZFLed off)

weil sich ja der Lichtwert ständig ändert... (doalways ist nicht gesetzt)

mit:


([LichtSensor:brightness] < 25.0 and [?TVTime:state] eq "off" and [?08:00-22:15] and [WZBodenLed:status] eq "off" and [WZEZ_WZFLed:status] eq "off") (set WZBodenLed on,set WZEZ_WZFLed on)
DOELSEIF
([LichtSensor:brightness] > 25.0 and [?TVTime:state] eq "off" and [?08:00-22:15]  and [WZBodenLed:status] eq "on" and [WZEZ_WZFLed:status] eq "on") (set WZBodenLed off) (set WZEZ_WZFLed off)


Habe ich es schon versucht, aber ich habe noch teils laufende verzögerungs Timer die auf die beiden (WZBodenLed) (WZEZ_WZFLed) gesetzt werden und dann kann es passieren das einer der beiden doch noch "on" ist und schon funktioniert es nicht.

Wie könnte ich diese Log Einträge noch verhindern?