watchdog tigger und nicht setstate

Begonnen von heinzfo, 17 August 2016, 08:02:11

Vorheriges Thema - Nächstes Thema

heinzfo

Hallo

Ich verwende momentan setstate, da es kein offizielles feature ist möchte ich es durch trigger ersetzen.

Kann ich nun einfach setstate durch trigger im code ersetzen und es läuft?
Es kommt 3x im code vor, immer mit "setstate Waschmaschine... defined"

define WaschmaschineAction dummy
attr WaschmaschineAction alias WaschmaschineAction (>= 10W on) (10min <2W stb) (off)
attr WaschmaschineAction event-on-change-reading state
attr WaschmaschineAction icon scene_washing_machine
attr WaschmaschineAction room Waschmaschine

define WaschmaschineActionOn notify Verbrauchsmessung:power.* { fhem ("set WaschmaschineAction on;; setstate WaschmaschineAutoOff defined") if (ReadingsVal("Verbrauchsmessung","power","") >= 10 && Value("WaschmaschineAction") ne "on")}
attr WaschmaschineActionOn alias WaschmaschineActionOn (>=10W)
attr WaschmaschineActionOn icon scene_washing_machine
attr WaschmaschineActionOn room Waschmaschine

define WaschmaschineHighConsumption dummy
attr WaschmaschineHighConsumption alias WaschmaschineHighConsumption (> 2W on)  (< 2W off)
attr WaschmaschineHighConsumption event-on-change-reading state
attr WaschmaschineHighConsumption icon scene_washing_machine
attr WaschmaschineHighConsumption room Waschmaschine

define WaschmaschineWatt dummy
attr WaschmaschineWatt icon scene_washing_machine
attr WaschmaschineWatt room Waschmaschine

define WaschmaschineWattSet notify Verbrauchsmessung:power.* { my $power = ReadingsVal("Verbrauchsmessung","power","");; fhem ("set WaschmaschineWatt $power")}
attr WaschmaschineWattSet icon scene_washing_machine
attr WaschmaschineWattSet room Waschmaschine

define WaschmaschineHighConsumptionOn notify Verbrauchsmessung:power.* { fhem ("set WaschmaschineHighConsumption on;; setstate WaschmaschineAutoStandby defined") if (ReadingsVal("Verbrauchsmessung","power","") > 2 && Value("WaschmaschineAction") eq "on")}
attr WaschmaschineHighConsumptionOn icon scene_washing_machine
attr WaschmaschineHighConsumptionOn room Waschmaschine

define WaschmaschineHighConsumptionOff notify Verbrauchsmessung:power.* { fhem ("set WaschmaschineHighConsumption off;; setstate WaschmaschineAutoStandby defined") if (ReadingsVal("Verbrauchsmessung","power","") <= 2 && Value("WaschmaschineAction") eq "on")}
attr WaschmaschineHighConsumptionOff icon scene_washing_machine
attr WaschmaschineHighConsumptionOff room Waschmaschine

define WaschmaschineAutoStandby watchdog WaschmaschineHighConsumption:off 00:15 WaschmaschineHighConsumption:on set WaschmaschineAction standby
attr WaschmaschineAutoStandby icon scene_washing_machine
attr WaschmaschineAutoStandby regexp1WontReactivate 1
attr WaschmaschineAutoStandby room Waschmaschine

define WaschmaschineAutoOff watchdog WaschmaschineAction:standby 00:30 WaschmaschineAction:on set WaschmaschineAction off
attr WaschmaschineAutoOff icon scene_washing_machine
attr WaschmaschineAutoOff regexp1WontReactivate 1
attr WaschmaschineAutoOff room Waschmaschine

define WaschmaschineStartMessage notify WaschmaschineAction:on {fhem "set GabiMobil send Der Waschvorgang wurde gestartet! ### \xF0\x9F\x91\x95 \xF0\x9F\x92\xA6";;\
fhem "set HeinzMobil send Der Waschvorgang wurde gestartet! ### \xF0\x9F\x91\x95 \xF0\x9F\x92\xA6"}
attr WaschmaschineStartMessage alias WaschmaschineStartMessage
attr WaschmaschineStartMessage icon message_mail
attr WaschmaschineStartMessage room Waschmaschine

define WaschmaschineFinishedMessage notify WaschmaschineAction:standby {fhem "set GabiMobil send Der Waschvorgang ist beendet! ### \xF0\x9F\x91\x95 \xF0\x9F\x8D\x80";;#\
fhem "set HeinzMobil send Der Waschvorgang wurde beendet! ### \xF0\x9F\x91\x95 \xF0\x9F\x8D\x80"}
attr WaschmaschineFinishedMessage alias WaschmaschineStopMessage
attr WaschmaschineFinishedMessage icon message_mail
attr WaschmaschineFinishedMessage room Waschmaschine


Vielen Dank
Heinz

marvin78

Dafür gibt es mittlerweile das Attribut autoRestart.

rudolfkoenig

@heinzfo: "setstate XX defined" ist zwar nicht in allen Faellen identisch mit "trigger XX .", aber ich meine, dass es in diesem Fall die bessere Loesung ist. "setstate XX defined" ist kein offizielles Feature, ich habe es aber nicht vor, zu aendern.
Ich habe den leisen Verdacht, dass statt 11 Defines man auch leicht mit der Haelfte auskommen koennte. Vermutlich ist das historisch gewachsen, aber dadurch auch schwer verstaendlich, und deswegen bin ich mit meiner Aussage "bessere Loesung" etwas vorsichtig.

@marvin78: Falls ich mich nicht irre, fuehrt in diesem Fall autoRestart nicht zum gewuenschten Verhalten.


marvin78

Du hast Recht. Man müsste es um Grunde komplett anders aufbauen. Das gewünschte Verhalten kann man einfacher erreichen. Unter den gegebenen Voraussetzungen reicht allerdings ein autoRestart wirklich nicht.