Hallo zusammen,
hab' in FHEM schon einige Rätsel gelöst, aber bei so was Einfachem scheitere ich syntaktisch:
Ich möchte einen Dimmer ansteuern, jedoch mit variablen Werten, welche tageszeitabhängig z.B. in einem Dummy abgelegt sind.
ab z.B. 23:00 Uhr soll bei Bewegungsmelderauslösung das Flurlicht nicht mehr als Blendgranate dienen, wenn nachts einer auf's Klo geht, sondern bei BWM-Auslösung gedimmt angehen:
define Dimmstufe at 23:00 set Dimmwert dim18%
define BWM_Flur_N notify BWM_Flur:.* set Flur_Licht {$value{Dimmwert}}
{$value{Dimmwert}} geht so nicht. Nach stundenlangem Probieren und rechechieren habe ich aufgegeben... .
Jetzt hab' ich die Twilight-Steuerung gepackt, BWM aktiv/inaktiv-Schaltung hingekriegt und an einer einfachen Zuweisung komme ich nicht weiter! HIIILLLFFEE!! (Falls einer mal ein GUI auch zur Konfiguration für FHEM hinkriegt, ich würde ihm die Füsse küssen...)
Zitat von: Fashionbye am 21 Februar 2015, 16:22:55
define Dimmstufe at 23:00 set Dimmwert dim18%
define BWM_Flur_N notify BWM_Flur:.* set Flur_Licht {$value{Dimmwert}}
Jetzt würde mich wirklich interessieren wie du darauf gekommen bist deine Anforderung so zu notieren :-) Im Einsteigerhandbuch auf Seite 37 steht die richtige Syntax für notify mit Perl-Code, auf der Folgeseite ist die Funktion Value() erklärt.
@neges: Danke, das ging ja schnell...
Ja das hatte ich gelesen und probiert, kam aber auch nicht weiter. Meinst Du:
define Schalter1Notify notify Schalter1 { if ( "$EVENT" eq "off") {fhem("set wz_Media
off")} }
Wenn also die Variable $EVENT den Wert off hat, wird in fhem der Befehl set wz_Media off
ausgeführt.
define Schalter1Notify notify Schalter1 { if ( Value("Schalter1") eq "off") {fhem("set
wz_Media off")} }
Habe ich - glaube ich - schon halbwegs verstanden. Hier wird $Event nach einem Ereignis gelesen, ich möchte aber eine Variable im Set-Teil setzen. Ist das dann auch $Event? Eher nicht? Der normale String "set..." ist mir auch klar, aber wie kann ich aus einem Teilstring und einem String aus einer Variablen
einen String generieren? Kenne mich in Peral absolut nicht aus.
Warum machst du es nicht mit einer if Anweisung
define LichtAn notify BM_Flur {if ($hour < 6 || $hour > 22) {fhem "set Flurlicht dim37%%; set Flurlicht on-old-for-timer 60"} elsif ($hour <= 11 || $hour > 14) {fhem "set Flurlicht dim81%%; set Flurlicht on-old-for-timer 120"}}
@Paul:
ja wenn es so einfach wäre...
es soll mehrere Uhrzeiten, also Schaltpunkte mit mehreren Dimmwerten geben, und diese Variablen sollen in vier Räumen und aussen eingesetzt und über zentral gesetzte Dummies (Uhrzeiten und Dimmwerte) änderbar sein. Eigentlich nicht Unnormales - oder?
Nur habe ich in Dutzenden FHEM Codeschnipseln rumgegoogelt und nichts gefunden, was irgendwie übertragbar wäre.
In den letzten 30 Jahren habe ich mir schon ein halbes Dutzend Programmierspachen autodidaktisch angegeignet, aber so fremd wie Perl war mir noch nichts... .
Zurück zum Problem:
Wie kann ich einem Gerät ein Schaltzustand per Variable übergeben?
Bei Twilight geht es ja auch, aber da kommt der Wert aus einer Datenbank aus Perl.
Ich würde gerne eine FHEM Variable übergeben.
Das muss doch gehen.
ZitatDas muss doch gehen.
Geht auch - gewöhn dir bitte an deine Beiträge zu bearbeiten und nicht dir selbst zu antworten.
Es gibt Menschen im Forum die einen Beitrag abonniert haben und bekommen dann immer eine Nachricht - auch wenn du dir selbst antwortest.
Beispiel aus dem StreamRadio-Thread-Wiki:
# Dummy für Volume- Slider
define Dum_Volume_D dummy
attr Dum_Volume_D alias Volume
attr Dum_Volume_D setList state:slider,0,1,100
attr Dum_Volume_D webCmd state
attr Dum_Volume_D room Radio
attr Dum_Volume_D group Volume
# Notify für Volume- Slider
define Func_Volume_N notify Dum_Volume_D {\
my $vol = Value("Dum_Volume_D");;\
fhem "set SRadio VOLUME $vol";;\
}
attr Func_Volume_N room Radio
Ein Dummy mit Slider wird erstellt und bei Betätigung wird der neue Lautstärkewert an das Device SRadio geschickt.
Hey Puschel74! - Ich umarme Dich - es funzt!
Hier noch mein Testcode:
ZitatInternals:
NAME DimWert
NR 742
STATE dim 6
TYPE dummy
Readings:
2015-02-21 19:40:10 state dim 6
Attributes:
alias DimWert
group Auto_Dimmersteuerung
room Aussen,Unsorted
setList dim:slider,0,6.25,100
webCmd state
Internals:
CFGFN
DEF DimWert:.* {my $dimw = Value("DimWert");;fhem "set Buero_Licht_Decke $dimw";;}
NAME myTwilight2
NOTIFYDEV DimWert
NR 998
NTFY_ORDER 50-myTwilight2
REGEXP DimWert:.*
STATE 2015-02-21 19:40:10
TYPE notify
Attributes:
room Aussen
Den Rest krieg' ich dann schon gebacken, super was für ein toller Tag!