FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Larsihasi am 11 Juni 2014, 18:30:06

Titel: on-for-timer und off auf selbem Taster
Beitrag von: Larsihasi am 11 Juni 2014, 18:30:06
Hallo zusammen,

ich bin Anfänger und habe folgendes Problemchen:

Meine Gartenbewässerung schaltet momentan auf BWSchalter1 an für 10 Minuten und soll aber bei nochmaligem drücken von BWSchalter1 wieder ausgeschaltet werden (ich bin Schwabe und möchte gerne Taster sparen).

Folgender Code führt leider nicht zum Erfolg:

define BWGartenSchalter1notify notify BWGartenSchalter1 { if ("Rasensprenger" eq "on") { fhem("set Rasenssprenger on-for-timer 0") } else { fhem("set Rasensprenger on-for-timer 600") } }

Beim nochmaligen Drücken des Tasters wird der Timer erneut auf 10 Minuten gesetzt.

Was habe ich falsch gedacht?

Grüße,
Lars

Edit:
Und hier die Lösung:

define BWGartenSchalter1notify notify BWGartenSchalter1:Short.* { if (Value("Rasensprenger") eq "on") { fhem("set Rasensprenger off") } else { fhem("set Rasensprenger on-for-timer 600") } }

Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Puschel74 am 11 Juni 2014, 18:39:21
Hallo,

1. solltest du deinen Rasensprenger mit Value auslesen
2. Warum on-for-timer 0 und nicht off
3. Schau mal in dein fhem-Logfile - dort sollten diverse Fehlermeldungen zu deinem "Code" stehen.
4. Einsteiger.pdf und die angepinnten Beiträge mal überfliegen.
5. Danke

Grüße  ;)
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Paul am 11 Juni 2014, 19:03:39
define BWGartenSchalter1notify notify BWGartenSchalter1 { if ("Rasensprenger" eq "on") { fhem("set Rasenssprenger on-for-timer 0") } else { fhem("set Rasensprenger on-for-timer 600") } }

Macht genau das, was es soll.

Es schaltet den Rasensprenger für 10 Minuten an wenn er nicht on ist.

Dein Rasensprenger ist on-for-timer 600
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Wuppi68 am 11 Juni 2014, 19:10:50
das macht mein Bewegungsmelder,
ich frage einfach ab, ob ein Timer läuft und triggere nach

IF ([hm.sw.6:state] eq "off" or [hm.sw.6:timedOn] eq "running")
    (
        set hm.sw.6 on-for-timer 120,
        {Log 1, "Motion passed"}
    )
ELSE
    (
        {Log 1, "Motion failed"}
    )
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Puschel74 am 11 Juni 2014, 19:12:05
Hallo,

ZitatMacht genau das, was es soll.
Es schaltet den Rasensprenger für 10 Minuten an wenn er nicht on ist.
Sorry aber das ist Blödsinn.

Das notify würde den Rasensprenger auch für 10 Minuten einschalten wenn er on wäre da die if-Abfrage immer false ist weil nicht richtig.
"Rasensprenger" eq "on" wird nie zutreffen!
Auch ein
"Rasensprenger" eq "on-for-timer" wird daran nichts ändern!

Wenn dann müsste die Abfrage anstatt so
if ("Rasensprenger" eq "on")
so
if (Value("Rasensprenger") eq "on-for-timer"))
lauten.
Hier wird der Zustand des Gerätes Rasensprenger geprüft ob er on-for-timer ist und wenn ja - wird abgeschaltet, wenn nein wird der Rasensprenger für 10 Minuten eingeschaltet.

Und ich dachte mir schon das ich Anfänger gerne mal in die Irre führe  ::)

Grüße

Edith: Bitte nicht noch IF mit einem ganz anderen Code einstreuen. Einen Neuling kann das ganz schnell komplett durcheinander bringen.
Erstmal seinen Code zum laufen bringen und dann! auf andere Möglichkeiten hinweisen.
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Bennemannc am 11 Juni 2014, 21:16:49
Hallo,

also ich habe das mit eventMap gemacht. Ich schalte über eine Fernbedienung (toggle Mode) mit einem Knopf ein. Nach 5 Minuten wird automatisch aus geschaltet oder wenn ich den Taster noch einmal drücke. Wenn das mit eventMap gemacht wird, geht mit dem Taster kein "Dauerein" mehr, weil ich ja das on mappe.
eventMap /on-for-timer 300:on/ ( mit den Schrägstrichen eingeben).

Gruß Christoph
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Puschel74 am 11 Juni 2014, 21:44:41
Hallo,

Zitatalso ich habe das mit eventMap gemacht.
ZitatWenn das mit eventMap gemacht wird, geht mit dem Taster kein "Dauerein" mehr, weil ich ja das on mappe.
Du hast die Frage aber gelesen?

Lars möchte das Gerät ausschalten wenn es bereits läuft.
Zitatan für 10 Minuten und soll aber bei nochmaligem drücken von BWSchalter1 wieder ausgeschaltet werden
Da hilft eventMap leider absolut nicht.

Aber um dem ganzen Rätselraten ein Ende zu bereiten:
@Lars - versuch mal folgendes:
define BWGartenSchalter1notify notify BWGartenSchalter1 { if (Value("Rasensprenger") eq "on-for-timer") { fhem("set Rasenssprenger off") } else { fhem("set Rasensprenger on-for-timer 600") } }
Solange du kein eventMap definiert hast sollte das klappen.
Sonst wären wir bei meiner ersten Antwort Punkt 4 - die angepinnten Beiträge lesen  ;)
Den dann wären die Defines ALLER involvierten Geräte (und notify) erforderlich (inkl. deren Attribute).
Was auch diesen Beitrag vermutlich auf die Hälfte einkürzen hätte können  ::)

Grüße
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Bennemannc am 11 Juni 2014, 22:04:36
Hallo Puschel74,

klar habe ich die Frage gelesen.
ZitatMeine Gartenbewässerung schaltet momentan auf BWSchalter1 an für 10 Minuten und soll aber bei nochmaligem drücken von BWSchalter1 wieder ausgeschaltet werden (ich bin Schwabe und möchte gerne Taster sparen).
Genau das passiert, wenn ich den BWSchalter1 das on auf on-for-timer mappe. Ich weiß nicht wie jetzt geschaltet wird,,das kann aber dann raus. Wie schon erwähnt schalte ich so ein Licht für 5 Minuten eine. Wenn ich vor Ablauf der 5 Minuten noch einmal schalte ist das der off Befehl, und der ist nicht gemappt. Das peering ist "single set".

Gruß Christoph
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Puschel74 am 12 Juni 2014, 05:11:48
Moin,

wenn ich einen! Taster habe sendet der IMMER das gleiche Event.
Da kann ich mit eventMap mappen was ich möchte.

Der Taster sendet IMMER ein on (oder was auch immer) - eventMap macht mir ein on-for-timer draus und wie soll ich den Aktor nun wieder auschalten können?
Der Taster sendet wieder ein on - eventMap macht mir ein (?? genau on-for-timer) draus und der Aktor läuft weiter.
Irgendwann muss ich dem Aktor schon auch mitteilen das er nun wieder ausschalten soll.
Ja, das macht das on-for-timer aber nicht der Tastendruck nur weil ich ein eventMap verwende.

ZitatWenn ich vor Ablauf der 5 Minuten noch einmal schalte ist das der off Befehl,
Wo kommt der her?

Poste bitte deinen gesamten Code das man das evtl. nachvollziehen kann (oder auch nicht).

Ich bin nach wie vor der Meinung das das mit einem einfachen eventMap nicht geht.

Grüße
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Larsihasi am 12 Juni 2014, 06:41:41
Hallo,

bisher leider kein Erfolg mit:


define BWGartenSchalter1notify notify BWGartenSchalter1 { if (Value("Rasensprenger") eq "on-for-timer") { fhem("set Rasenssprenger off") } else { fhem("set Rasensprenger on-for-timer 600") } }


Im Webfrontend sieht man recht gut, daß ein nochmaliges drücken des Tasters BWGartenSchalter1 den "else" Teil der if-Bedingung abarbeitet und "on-for-timer 600" kurz angezeigt wird. Bei den Readings zum Rasensprenger sieht man unter "state" den Wert "on". Ich vermute mal, da liegt auch das Problem: Man müßte an den Value "State" von Rasensprenger ran, oder?
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Bennemannc am 12 Juni 2014, 07:07:14
Hallo Puschel74,

ich habe meinen Code gerade nicht zur Hand - aber dafür den Thread wo ich ihn her habe. Das Thema ist Treppenhausautomat - also zeitgesteuertes wieder aus schalten. Zudem ist der Taster im toggle Modus gepeert. Wenn jetzt ein Signal vom Taster kommt wird entsprechend geschaltet. Der Taster kennt kein Ein oder Aus - das kann er nicht wissen, da er nicht weiß, was der Actor gerade für einen Zustand hat. Es können ja noch andere Einflüße den Actor schalten, das würde der Taster ja nicht mitbekommen.
Der Actor weiß also Impuls vom Taster = wechsel ON/OFF - wenn ich ON jetzt ersetze durch on-for-Timer, dann macht der genau das ON(-for-timer)/OFF.
Ach so .. der Link
http://forum.fhem.de/index.php/topic,23707.msg169615.html#msg169615

Gruß Christoph

Edit: Das hier könnte auch gehen http://forum.fhem.de/index.php/topic,24486.msg176036/topicseen.html#msg176036 - direkt am Actor die Zeit eintragen.
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Deudi am 12 Juni 2014, 07:10:28
@Lars
Es gibt keinen State "on-for-timer". Ersetze das erste Vorkommen mit "on", dann sollte es gehen.
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Puschel74 am 12 Juni 2014, 16:14:03
Hallo,

@Lars

Poste mal bitte die Defines (Taster und Rasensprenger).
Mit allen zugehörigen Attributen so wie sie jetzt bei dir in FHEM drinnen stehen.
Darum wird in den angepinnten Beiträgen schon gebeten.
Sonst haben wir auch hier weiteres munteres Rätsel raten.
Danke.

Grüße

Edith: Und einen Screenshot des EventMonitor wenn du am Taster die Taste betätigst.
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Larsihasi am 12 Juni 2014, 17:53:39
Ich glaube mit


define BWGartenSchalter1notify notify BWGartenSchalter1 { if (Value("Rasensprenger") eq "on") { fhem("set Rasensprenger off") } else { fhem("set Rasensprenger on-for-timer 600") } }


bin ich kurz davor. Aber leider schaltet irgendetwas den Rasensprenger sofort wieder an, nachdem er kurz aus ging (man hört das Relais knacken und sieht es im Event Monitor). Scheinbar greifen jetzt beide if Bedingungen???

Hier die Defines und Readings zu Rasensprenger und BewaesserungGartenSwitch:


define HMLAN1 HMLAN 192.168.188.48:1000
attr HMLAN1 hmId 1EA060
attr HMLAN1 hmLanQlen 1_min
attr HMLAN1 wdTimer 25
#...
define BewaesserungGartenSwitch CUL_HM 23BB90
attr BewaesserungGartenSwitch IODev HMLAN1
attr BewaesserungGartenSwitch autoReadReg 4_reqStatus
attr BewaesserungGartenSwitch expert 2_full
attr BewaesserungGartenSwitch firmware 1.12
attr BewaesserungGartenSwitch model HM-LC-SW4-SM
attr BewaesserungGartenSwitch room CUL_HM
attr BewaesserungGartenSwitch serialNr KEQ0768061
attr BewaesserungGartenSwitch subType switch
attr BewaesserungGartenSwitch webCmd getConfig:clear msgEvents
define FileLog_BewaesserungGartenSwitch FileLog ./log/BewaesserungGartenSwitch-%Y.log BewaesserungGartenSwitch
attr FileLog_BewaesserungGartenSwitch logtype text
attr FileLog_BewaesserungGartenSwitch room CUL_HM
define Rasensprenger CUL_HM 23BB9001
attr Rasensprenger model HM-LC-SW4-SM
attr Rasensprenger peerIDs 00000000,
attr Rasensprenger room Garten
attr Rasensprenger webCmd statusRequest:toggle:on:off




Hier die Event Monitor Ausgaben:


2014-06-12 17:41:21 CUL_HM BewaesserungGartenSwitch CMDs_pending
2014-06-12 17:41:21 CUL_HM Rasensprenger set_off
2014-06-12 17:41:21 CUL_HM Rasensprenger set_on-for-timer 600
2014-06-12 17:41:21 CUL_HM BWGartenSchalter1 Short (to broadcast)
2014-06-12 17:41:21 CUL_HM BWGartenSchalter1 trigger: Short_121
2014-06-12 17:41:21 CUL_HM CUL_HM_HM_PB_2_WM55_1EE235 battery: ok
2014-06-12 17:41:21 CUL_HM CUL_HM_HM_PB_2_WM55_1EE235 BWGartenSchalter1 Short (to broadcast)
2014-06-12 17:41:21 CUL_HM Rasensprenger level: 0
2014-06-12 17:41:21 CUL_HM Rasensprenger pct: 0
2014-06-12 17:41:21 CUL_HM Rasensprenger deviceMsg: off (to HMLAN1)
2014-06-12 17:41:21 CUL_HM Rasensprenger off
2014-06-12 17:41:21 CUL_HM Rasensprenger timedOn: off
2014-06-12 17:41:21 CUL_HM BewaesserungGartenSwitch CMDs_done
2014-06-12 17:41:21 CUL_HM Rasensprenger level: 100
2014-06-12 17:41:21 CUL_HM Rasensprenger pct: 100
2014-06-12 17:41:21 CUL_HM Rasensprenger deviceMsg: on (to HMLAN1)
2014-06-12 17:41:21 CUL_HM Rasensprenger on
2014-06-12 17:41:21 CUL_HM Rasensprenger timedOn: running


Im übrigen: Ich bin echt begeistert mit welcher Freuenz und welcher Hilfbereitschaft in diesem Forum agiert wird. Das bin ich aus anderen Foren so nicht gewohnt...
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Puschel74 am 12 Juni 2014, 18:01:40
Hallo,

klar, das mir das nicht früher aufgefallen ist.
Das notify triggert ja auf alles was vom Taster kommt  ::)

define BWGartenSchalter1notify notify BWGartenSchalter1:Short.* { if (Value("Rasensprenger") eq "on") { fhem("set Rasensprenger off") } else { fhem("set Rasensprenger on-for-timer 600") } }
Leider fehlt das Event des Tasters im Event Monitor beim betätigen des selben  >:(

Ich kann das leider selbst nicht testen da ich keinen HM-Taster habe sondern meine HM-Geräte mit FS20 schalte.

Grüße

Edith: Ich nehm alles zurück - Short müsste das Event sein.
Edith2: FS20 sendet nur toggle oder on/off - ja nach Programmierung der Taster.
HM sendet noch einiges mehr mit.
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Larsihasi am 12 Juni 2014, 18:57:56
Vielen Dank Puschel74 für die schnelle Lösungsfindung!

Jetzt funktioniert es wie gewünscht!

Viele Grüße,
Lars
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Puschel74 am 12 Juni 2014, 19:02:13
Hallo,

gern geschehen.

Und nun noch bitte, wie in meinem angepinnten Beitrag beschrieben, deinen Beitrag mit einem (Gelöst) kennzeichnen und die Lösung gleich im ersten Beitrag unterbringen.
Danke.

Und das nächste mal gleich im ersten Post alle relevanten Infos liefern dann hätte das hier nicht auf 2 Seiten ausarten müssen  ;)

Grüße
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Pfriemler am 12 Juni 2014, 19:04:53
Ja klar, Puschel hatte recht, die Batteriestatusmeldung des Tasters hat das Notify ein zweites Mal gefeuert.
Falls Du wirklich einen HM-Taster hast und mit einer festen Zeitdauer ausreichst: schon mal über ein peering und eine direkte Registerprogrammierung nachgedacht und alles liefe ohne FHEM und notify ... ?
Titel: Antw:on-for-timer und off auf selbem Taster
Beitrag von: Puschel74 am 12 Juni 2014, 19:11:47
Hallo,

ein direkts peering wäre durchaus eine gute Idee wenn Lars, wie von dir geschrieben, eine feste Zeitdauer genügt.

In einem notify liese sich aber noch ein Temperatursensor oder die Wettervorhersage oder ... einbauen und damit die Beregnungsdauer flexibel gestalten.

Aber grundsätzlich hast du erstmal recht.
Das wäre dann aber
a) etwas das sich bereits finden lassen würde im Forum (und evtl. auch schon im Wiki) und
b) keines neuen Beitrags bedarf (und auch hier nicht erörtern werden müsste) da - siehe a bereits schon einige Male behandelt und erklärt wurde  8)

Grüße