Mein Frage lautet, wie ich eine Impulssteuerung programmieren kann.
Ich habe einen enOcean Schalter (für eine Bewässerung) den ich über einen Taster so anschalten will,
dass er wiederholend jeweils 30 Sekunden AN ist und danach 2 Minuten wieder aus geht.
Sobald ich den Taster wieder betätige, soll das Werk stoppen.
Ich bekomme die beiden Timer hin:
define logic_patio_mist_off_timer notify patio_mist:A0.* { \
{ fhem "delete patio_mist_off ;; define patio_mist_off at +00:00:30 set patio_mist released";; Log 1, "patio_mist timer set";; } \
}
define logic_patio_mist_on_timer notify patio_mist:released.* { \
{ fhem "delete patio_mist_on ;; define patio_mist_on at +00:02:00 set patio_mist A0";; Log 1, "patio_mist timer set";; } \
}
... und so wollte ich die Timer mit einem Dummy-Schalter löschen:
define logicswitch_patio_mist dummy
attr logicswitch_patio_mist webCmd on:off
define logicswitch_patio_mist_logic_on notify logicswitch_patio_mist:on.* { \
{ fhem "set switch_patio_mist A0 ;; } \
}
define logicswitch_patio_mist_logic_off notify logicswitch_patio_mist:off.* { \
{ fhem "delete patio_mist_on ;; delete patio_mist_off ;; } \
}
... aber die timer bleiben aber aktiv >:(
- Was mache ich falsch
- Gibt es elegantere Lösungen ?
[/b]
wenn du die at's ohne wiederholung erstellst, so wie du es im code machts, sind sie nach dem ausführen von allein weg. deine delete aktionen sind also nicht notwendig. sieht man auch daran dass nach einem define at at +00:00:30 das rote ? nicht auftaucht weil man das at nicht gespeichert werden muss
ein bissl syntax-problem gibts auch:
{fhem("
statt {fhem "
und doppelte { müssen auch nicht sein
{ \
{
zum anderen könntenn die auch nciht verschwinden wenn sie wiederholend (*+ statt +) wären da du erst ein
delete patio_mist_off ;
machst und danach wieder neu erstelltst define patio_mist_off
also wird patio_mist_off immer neu erstellt
also es reicht:
define logic_patio_mist_off_timer notify patio_mist:A0.* {
fhem("define patio_mist_off at +00:00:30 set patio_mist released");
Log 1, "patio_mist timer set";
}
define logic_patio_mist_on_timer notify patio_mist:released.* {
fhem("define patio_mist_on at +00:02:00 set patio_mist A0");
Log 1, "patio_mist timer set";
}
dein notify richtig (da hier kein perlcode notwendig ist reciht auch die form ohne { )
das 2. würd eich weg lassen weil die notifys sich eh nach dem ausführen löschen und eine löschaktion eines nicht vorhandenen at nicht notwendig ist
define logicswitch_patio_mist_logic_on notify logicswitch_patio_mist:on.* set switch_patio_mist A0
define logicswitch_patio_mist_logic_off notify logicswitch_patio_mist:off.* delete patio_mist_on,patio_mist_off
und schreib bitte nicht in der cfg ;)
Danke auch,
jedoch lässt sich Dein code in der config nicht speichern
Unknown command fhem("define, try help. Unknown command Log, try help. Unknown command }, try help. Unknown command fhem("define, try help. Unknown command Log, try help. Unknown command }, try help
Wo soll ich das denn sonst reinschreiben wenn nicht in die Config ?
Zitat von: tutenchamun am 11 August 2015, 13:43:34
Wo soll ich das denn sonst reinschreiben wenn nicht in die Config ?
Immer in die Befehlszeile, den Rest macht FHEM und schreibt es nach Prüfung "in die fhem.cfg" Du schreibst es dann durch "save config" in die fhem.cfg.
Gruß Otto
Zitat von: Otto123 am 11 August 2015, 16:09:40
Immer in die Befehlszeile, den Rest macht FHEM und schreibt es nach Prüfung "in die fhem.cfg" Du schreibst es dann durch "save config" in die fhem.cfg.
oder klickst einfach auf save config klicken. die fhem cfg ist in einer standard-installation nicht ohne grund readonly.
@Chris War vielleicht missverständlich, aber genau das meinte ich. Genau genommen speichert man ja selbst durch Druck auf "Save config"
Das mit dem readonly stimmt ja nicht ganz, nur dem Editor fehlt der Save Button 8)
Gruß Otto
;)
@Chris: Ein Bild sagt mehr als tausend Worte! Deswegen will ich mit Worten nochmal auf Deinen Anhang hinweisen 8)
Müsste eigentlich jeder verstehen.