Hauptmenü

notify programierfehler?

Begonnen von leachim200, 23 März 2019, 09:40:24

Vorheriges Thema - Nächstes Thema

leachim200

Hallo
ich suche und suche und finde absolut nicht die Lösung

Folgender code bereitet mir Kopfzerbrechen
WintergartenLicht:on {if ((ReadingsVal("WetterLicht","light","") > 3) && (($hour >=22 || $hour <=17))) { fhem("set WintergartenLicht off")}}

Ich möchte das das WintergartenLicht dann ausgeschaltet wird wenn der Lichtwert größer 3 ist und die Uhrzeit zwischen 22 und 17 Uhr liegt.
Allerdings schaltet er egal was ich hinten eingebe immer dann wenn der Lichtwert zutreffend ist egal was dahinter steht.

DeeSPe

#1
Problem ist das OR!

{fhem("set WintergartenLicht off") if (ReadingsNum("WetterLicht","light","") > 3 && ($hour >=22 || $hour <=17))}

Gruß
Dan

EDIT: Sorry Du wolltest ja zwischen 22 und 17 Uhr und nicht 17 bis 22 Uhr.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

CoolTux

Meinst du wirklich zwischen 22 und 17 Uhr oder zwischen 17 und 22 Uhr?
Davon Mal ab kannst das mit der Zeit auch raus nehmen und setzt das Attribut disableForInterval.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

#3
Moin,

das notify reagiert auf WintergartenLicht:on und der Ausführungsteil ist dann final set WintergartenLicht off ....
Das macht doch keinen Sinn? Oder kommt der Event WintergartenLicht:on als Dauerfeuer?

Ich würde die Aufgabe mit DOIF lösen. (Ich möchte das das WintergartenLicht dann ausgeschaltet wird wenn der Lichtwert größer 3 ist und die Uhrzeit zwischen 22 und 17 Uhr liegt.)
Edit: korrigiert
define di_WGaus DOIF ([22:00 - 17:00] and [WetterLicht:light] > 3)(set WintergartenLicht off)

Oder bei einem notify dem Vorschlag von Cooltux folgen und Wetterlicht als Trigger verwenden. Dazu am einfachsten den Trigger mit dem Eventmonitor auswählen und das notify gleich erzeugen lassen. Dann könnte man auch gleich mit $EVENT oder $EVTPARTx weiter arbeiten.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

amenomade

@Otto: in deinem define fehlt vielleicht noch das Wort "DOIF" ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

Der Ausführungsteil für ein notify ist auch nicht komplizierter.


{ fhem("set WintergartenLicht off") unless (ReadingsNum("WetterLicht","light",99) <= 3 || $hour ~~ [17..22]) }


Wenn man mit ReadingsNum() arbeitet, weil man einen numerischen Wert haben möchte, sollte man nicht unbedingt einen alphanumerischen defaultwert in der Funktion angeben. Aber das nur so nebenbei.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

leachim200

Hallo
Vielen dank für eure Antworten.

Vorweg ich habe es dann wie Otto gesagt hat mit einem DOIF gelöst.
Ja ich möchte das zwischen 22 - 17 uhr das licht ausgeschaltet wird. Grund ist Wintergartenlicht war nur ein test Verwendet wird das ganze in einem Reitstall wo die Pferde permanent am Lichtschalter herumspielen und den 600Watt strahler einschalten....