on-for-timer und off auf selbem Taster

Begonnen von Larsihasi, 11 Juni 2014, 18:30:06

Vorheriges Thema - Nächstes Thema

Larsihasi

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") } }


Puschel74

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  ;)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Paul

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
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Wuppi68

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"}
    )
FHEM unter Proxmox als VM

Puschel74

#4
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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Bennemannc

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
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Bennemannc

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
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Larsihasi

#9
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?

Bennemannc

#10
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.
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Deudi

@Lars
Es gibt keinen State "on-for-timer". Ersetze das erste Vorkommen mit "on", dann sollte es gehen.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Puschel74

#12
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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Larsihasi

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...

Puschel74

#14
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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.