Mit Twilight Lampe lichtabhängig steuern

Begonnen von vestaxb, 13 April 2014, 15:13:46

Vorheriges Thema - Nächstes Thema

vestaxb

Hallo zusammen,

ich möchte in Abhängigkeit des Tageslichtes eine Lampe schalten. Hier nutze ich das Modul Twilight. Leider bekomme ich es nicht so recht zum Laufen.

Twilight habe ich so definiert (die Werte habe ich mir für diesen Beitrag ausgedacht):

#Twilight
define T Twilight 55.7289353 8.9078766 1 654456
attr T comment Location: Musterhausen
attr T group Umwelt
attr T room 9.02_Steuerung


Dann habe ich meine zu schaltende Lampe definiert:

define myN notify T:light.* {if($value{T}<6){fhem ("set KE.Fensterbanklampe on")}}


Aber das klappt einfach nicht. Selbst, wenn ich in der Abfrage den Licht-Wert auf den aktuell gesetzten lege, schaltet die Lampe nicht.

Was mache ich falsch?

Danke und Viele Grüße!

kaihs

Zitat von: vestaxb am 13 April 2014, 15:13:46

define myN notify T:light.* {if($value{T}<6){fhem ("set KE.Fensterbanklampe on")}}




Sollte das nicht
define myN notify T:light.* {if($value{"T"}<6){fhem ("set KE.Fensterbanklampe on")}}

heißen? Beachte die Anführungszeichen bei $value("T").
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

Dietmar63

#2
Das $ vor value darf auch nicht sein. Und Value wird gross geschrieben - gross Kleinschreibung ist wichtig in Perl. Und der Parameter von Value darf nicht in {} sondern muss in () angegeben werden.

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

vestaxb

Danke euch für die Hinweise. Ich habe den Code angepasst. Morgen folgt dann ein ausgiebiger Test.

Ich melde mich mit Ergebnissen! :)

vestaxb

#4
Hat nun soweit funktioniert! Danke für eure Tipps!

Nun ist es so, dass bei jedem neuen Status die Lampe geschaltet wird.

Meine Idee war, dass das Licht angeht, sobald eine Gewitterwolke vorbeikommt und sobald sie sich verzogen hat, soll das Licht wieder ausgehen. Ich nahm an, das geht über "light". Oder gibt es hier noch eine andere Möglichkeit?

Ich habe mal testweise das so eingebaut:

define myN notify T:twilight_weather.* {if(Value("T")==100){fhem ("set KE.Fensterbanklampe on")}}

Aber das klappt leider nicht.

Danke und Gruß!

Dietmar63

die Abfrage kann deshalb nicht funktionieren, weil das Reading nicht exakt zum Wert 100 feuert.
Nimm die Abfrage auf 100 heraus und logge einfach nur die Werte, dann siehst du was ich meine:

define myN notify T:twilight_weather.* {Log 3, "@ %"}

twilight_weather wird alle 5 Minuten aktualisiert.
Eventuell erweiere ich das Modul, so dass immer zum vollen Zehnerwert gefeuert wird. Dies ist aber noch im frühen Planungsstatus.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

vestaxb

OK, danke für die Info. Ich habe jetzt folgende Logeinträge:

2014.04.18 06:39:25 3: T twilight_weather: 51.5
2014.04.18 06:44:25 3: T twilight_weather: 55.4
2014.04.18 06:49:26 3: T twilight_weather: 59.4


Nun habe ich testweise mal folgendes definiert:


define myN notify T:twilight_weather.* {if(Value("T")>50){fhem ("set KE.Fensterbanklampe on")}}


Nun hätte ich gedacht, dass die Lampe schaltet. Der Wert twilight_weather ist ja nun größer 50. Aber irgendwie klappt das nicht.

Wo liegt der Fehler?

Danke und Gruß

Dietmar63

#7
Mit Value() bekommst du denWert von state. Du musst mit ReadingsVal() twiligh_weather abfragen, und eventuell nur dann schalten wenn das Gerät off ist.

Beachte auch, dass perl zwei Vergleichsoperatoren kennt: gt bzw. >. In deinem Fall sollte > aber richtig sein.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

vestaxb

Danke! Das war genau der richtige Hinweis!

So funktioniert es nun:

define myN notify T:.* {if(ReadingsVal("T","twilight_weather",0)>50){fhem ("set KE.Fensterbanklampe on")}}

mi.ke

Zitat von: vestaxb am 18 April 2014, 15:33:02
Danke! Das war genau der richtige Hinweis!

So funktioniert es nun:

define myN notify T:.* {if(ReadingsVal("T","twilight_weather",0)>50){fhem ("set KE.Fensterbanklampe on")}}


Glaub ich nicht so ganz.....
Deine Lampe geht nur an wenn's hell ist !
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

mi.ke

mag sein  8)

ZitatMeine Idee war, dass das Licht angeht, sobald eine Gewitterwolke vorbeikommt und sobald sie sich verzogen hat, soll das Licht wieder ausgehen.
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Dietmar63

#12
ZitatGewitterwolken ...

So genau kann der Twilightwert nicht auflösen.
Wenn du aufmerksam die doku liest, wirst du feststellen, dass Twilight nur rechnisch den Sonnenstand in einen Helligkeitswert verwandelt. Am Abend wird zwar noch das Wetter teilweise eingerechnet.
Gewitterwolken werden von Google aber nicht geliefert.
Dafür wirst du dir einen Sensor kaufen müssen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

vestaxb

ZitatGlaub ich nicht so ganz.....
Deine Lampe geht nur an wenn's hell ist !

Stimmt natürlich! Das war ja mein Testschnipsel. Ich habe das jetzt so gemacht:

define KE.Fensterbanklampe_WetterAn notify T:.* {if ((ReadingsVal("T","twilight_weather",0)<50) && ($hour >=6 || $hour<18) && (Value("KE.Fensterbanklampe") ne "on")){fhem ("set KE.Fensterbanklampe on")}}

Leider klappt das noch nicht so ganz mit der Zeitsteuerung. Wo liegt da mein Fehler?

ZitatSo genau kann der Twilightwert nicht auflösen....

OK! Dann hatte ich das falsch verstanden. Ich hatte mich auch gewundert, dass gestern den Tag über der Wert die ganze Zeit auf 100 war, obwohl teilweise echt dunkel durch Regen und Hagel war.