Hallo.
Wollte gestern meinem Torcontact einen 2. actor zuweisen.
erster versuch:
define opencontact notify (Tor|Dunkelheit):(Open|on) { if (Value("Tor") eq "Open") { if (Value("Dunkelheit") eq "on") {fhem("set Licht_Carport on"} {fhem("set Antikleuchte on-for-timer 320") } } } }
ergebnis das nur Licht_Carport geschaltet wurde.
2. versuch:
define opencontact notify (Tor|Dunkelheit):(Open|on) { if (Value("Tor") eq "Open") { if (Value("Dunkelheit") eq "on") {fhem("set Licht_Carport,Antikleuchte on-for-timer 320") } } }
ergebnis beide lampen werden geschalten, aber auch Carport mit timer.
wie lege ich es ohne zusätzliches notify an das carport manuell und andere mit timer geschalten wird?
gruss
Hallo,
manuell kann Carport nicht geschaltet werden durch ein notify ;)
Manuell kannst nur du schalten :P
Dein erster Versuch macht doch genau das was du willst - oder nicht?
Wenn du einfach nur mit "weniger" {fhem ... auskommen willst dann versuch doch mal:
define opencontact notify (Tor|Dunkelheit):(Open|on) { if (Value("Tor") eq "Open") { if (Value("Dunkelheit") eq "on") {fhem("set Licht_Carport on;set Antikleuchte on-for-timer 320") } } }
Das auch Carport den timer bekommt ist bei deinem zweiten Versuch hoffentlich klar - sonst würde es einen Fehler bringen weil an Carport nichts übergeben wird.
Ich weiß aber nicht ob meine Idee klappt - einfach mal ausprobieren.
Grüße
Zitat von: Puschel74 am 21 Juni 2014, 11:43:37
Hallo,
manuell kann Carport nicht geschaltet werden durch ein notify ;)
Manuell kannst nur du schalten :P
Dein erster Versuch macht doch genau das was du willst - oder nicht?
Grüße
nein, eben nicht. nur Carport wird geschalten, rest ignoriert.
2014.06.20 17:42:36.472 5: Cmd: >{ if (Value("Tor") eq "Open") { if (Value("Dunkelheit") eq "on") {fhem("set Licht_Carport on") {fhem("set Antikleuchte on-for-timer 320") } } } }<
2014.06.20 17:42:36.480 3: opencontact return value: syntax error at (eval 58939) line 1, near ") {"
syntax error at (eval 58939) line 1, near "} }"
Hallo,
logisch gibt es den Fehler.
Da hab ich vorhin zu schnell drüber gelesen.
http://www.fhemwiki.de/wiki/Funktionsbeschreibung_zu_notify (http://www.fhemwiki.de/wiki/Funktionsbeschreibung_zu_notify)
Du könntest aber auch selbst mal versuchen im Wiki zu schauen ;)
Grüße
Edith: Codevorschlag oben angepasst.
danke, kapiert. werds testen.
WIKI schon durchgelesen ;-)
wo finde ich die ganze WIKI einträge?
über die hauptseite komm ich dort nie mehr hin.
gruss
Hallo,
versuch mal auf der Wiki-Hauptseite rechts oben die Suchfunktion ;)
Stichworte genügen meistens - zumindest bei mir klappt das einwandfrei.
Grüße
Hallo,
so. Nun hatte ich mal 5 Minuten und hab mir deinen Code etwas genauer angeschaut und ich muss sagen :o
Wozu machst du das ganze if-Gedönse?
Das notify löst doch sowieso nur aus wenn das regexp erfüllt ist.
So
define opencontact notify (Tor|Dunkelheit):(Open|on) set Licht_Carport on;set Antikleuchte on-for-timer 320
sollte das doch auch klappen.
Ja ok - so kann auch Tor ODER Dunkelheit ein Open ODER ein on senden.
Wenn aber Tor nur Open ODER Closed sendet und Dunkelheit nur on ODER off kannst du dir das ganze if schenken da das regexp das ja schon übernimmt.
Das ist aber jetzt nur mal eine Vermutung da ich das noch nicht versucht habe.
Grüße
Hallo,
vergiss meinen vorherigen Beitrag.
Der ist natürlich Blödsinn da das Licht ja auch eingeschaltet wird wenn einer der beiden NICHT zutrifft.
Um eine Abfrage in einem if kommst du nicht herum.
Du kannst die beiden Abfragen aber mit && verknüpfen.
define opencontact notify (Tor|Dunkelheit):(Open|on) { if ((Value("Tor") eq "Open") && (Value("Dunkelheit") eq "on")) {fhem("set Licht_Carport on;set Antikleuchte on-for-timer 320") } } }
Grüße
hallo.
danke für deine tipps. sieht ja interessant aus, aber wenn mein jetziger eintrag klappt lass ich es wie es ist.
(Tor|Dunkelheit):(Open|on) { if (Value("Tor") eq "Open") { if (Value("Dunkelheit") eq "on") {fhem("set Licht_Carport on;set Antikleuchte:FILTER=STATE!=on on-for-timer 320") } } }
Den filter habe ich jetzt zusätzlich, da sonst der timer das licht vor 23:00 löscht. die lampe brennt wird per twilight bis 23:00 auf on gesetzt.
gruss.