Hauptmenü

checkall

Begonnen von PatrickR, 24 Dezember 2016, 15:52:52

Vorheriges Thema - Nächstes Thema

PatrickR

Mahlzeit!

Ich habe vor einiger Zeit mein DOIF für das automatische Starten meines Staubsaugerroboters mittels checkall etwas übersichtlicher gestaltet. Zuvor musste ich bei jedem Reinigungsvorgang, d. h. in jedem DOELSEIF-Zweig die Grundbedingungen (kein Anwohner anwesend usw.) mitprüfen. Das funktionierte zuverlässig. Nun habe ich auf checkall umgestellt:

Internals:
   CHANGED
   DEF        ([Presence_all] eq "present")
()
DOELSEIF ([OG.WO.VR100:R-State] ne "Ready" and [OG.WO.VR100:R-State] ne "Charging")
()
DOELSEIF([10:00|15])
(set OG.WO.VR100 cleanHouse)
DOELSEIF ([10:00|2346])
(set OG.WO.VR100 cleanSpot 250 250)
DOELSE
()

   NAME       D_OG.WO.VR100_clean
   NR         306
   NTFY_ORDER 50-D_OG.WO.VR100_clean
   STATE      not absent
   TYPE       DOIF
[...]
Attributes:
   DbLogExclude .*
   checkall   1
   cmdState   not absent|busy|cleanHouse|cleanSpot|ready
   do         always
   event-on-change-reading .*
   icon       icoUhr.png
   room       Auto

Die Idee ist, sämtliche Bedingungen, die ein Starten der Reinigung verhindern sollen, in (leeren) Extrazweigen abzufangen, um die Übersichtlichkeit zu erhöhen und außerdem mittels cmdState einen besserne Einblick zu haben.

Heute morgen - ich wurde von meiner Frau darauf hingewiesen (-> Höchste Alarmstufe) - fuhr der Roboter obwohl wir zu Hause waren ([Presence_all] war "present"). Ist es möglich, dass bei Zeittriggern trotz checkall nicht die anderen Bedingungen geprüft werden oder habe ich einen Denkfehler?

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Damian

Zitat von: PatrickR am 24 Dezember 2016, 15:52:52
Mahlzeit!

Ich habe vor einiger Zeit mein DOIF für das automatische Starten meines Staubsaugerroboters mittels checkall etwas übersichtlicher gestaltet. Zuvor musste ich bei jedem Reinigungsvorgang, d. h. in jedem DOELSEIF-Zweig die Grundbedingungen (kein Anwohner anwesend usw.) mitprüfen. Das funktionierte zuverlässig. Nun habe ich auf checkall umgestellt:

Internals:
   CHANGED
   DEF        ([Presence_all] eq "present")
()
DOELSEIF ([OG.WO.VR100:R-State] ne "Ready" and [OG.WO.VR100:R-State] ne "Charging")
()
DOELSEIF([10:00|15])
(set OG.WO.VR100 cleanHouse)
DOELSEIF ([10:00|2346])
(set OG.WO.VR100 cleanSpot 250 250)
DOELSE
()

   NAME       D_OG.WO.VR100_clean
   NR         306
   NTFY_ORDER 50-D_OG.WO.VR100_clean
   STATE      not absent
   TYPE       DOIF
[...]
Attributes:
   DbLogExclude .*
   checkall   1
   cmdState   not absent|busy|cleanHouse|cleanSpot|ready
   do         always
   event-on-change-reading .*
   icon       icoUhr.png
   room       Auto

Die Idee ist, sämtliche Bedingungen, die ein Starten der Reinigung verhindern sollen, in (leeren) Extrazweigen abzufangen, um die Übersichtlichkeit zu erhöhen und außerdem mittels cmdState einen besserne Einblick zu haben.

Heute morgen - ich wurde von meiner Frau darauf hingewiesen (-> Höchste Alarmstufe) - fuhr der Roboter obwohl wir zu Hause waren ([Presence_all] war "present"). Ist es möglich, dass bei Zeittriggern trotz checkall nicht die anderen Bedingungen geprüft werden oder habe ich einen Denkfehler?

Patrick

ja, z. Zt. funktioniert checkall nur bei Ereignissen. checkall für Timer steht auf der todo-Liste.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

upsalmo

Zitatja z. Zt. funktioniert checkall nur bei Ereignissen. checkall für Timer steht auf der todo-Liste.

In genau diese Falle bin ich auch gerade getappt. Ich hatte auch erwartet, dass checkall auf auf Timer Anwendung findet. Wäre echt spitze, wenn das schon bald implementiert würde. Ich möchte nämlich so viel lieber DOIF nutzen, als eine Kombination aus AT, IF und NOTIFY. Sagst Du hier im Forum Bescheid, wenn es soweit ist? Tausend Dank!

Damian

Zitat von: upsalmo am 24 Dezember 2016, 23:12:06
In genau diese Falle bin ich auch gerade getappt. Ich hatte auch erwartet, dass checkall auf auf Timer Anwendung findet. Wäre echt spitze, wenn das schon bald implementiert würde. Ich möchte nämlich so viel lieber DOIF nutzen, als eine Kombination aus AT, IF und NOTIFY. Sagst Du hier im Forum Bescheid, wenn es soweit ist? Tausend Dank!

siehe https://forum.fhem.de/index.php/topic,63375.0.html
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF