Dimwerte tageszeitabhängig als Variablen einsetzen. Syntax Zuweisung...

Begonnen von Fashionbye, 21 Februar 2015, 16:22:55

Vorheriges Thema - Nächstes Thema

Fashionbye

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

FHEM 5.6 auf Raspberry Pi 2 Model B (2015), davor FritzBox 7390 (2012-2014), dann Beaglebone Black (Anf. 2015). CUL mit 2 GP-Ant.. Einige Dutzend FS20 Geräte, Bel. 100% LED 1-10V Dim., Multiroom Audio. 3 PV-Anlagen. Nächste Projekte: Zählerdatenerfassung, Heizungstemp./Solar, Jal.-St.

nesges

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.

Fashionbye

@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.
FHEM 5.6 auf Raspberry Pi 2 Model B (2015), davor FritzBox 7390 (2012-2014), dann Beaglebone Black (Anf. 2015). CUL mit 2 GP-Ant.. Einige Dutzend FS20 Geräte, Bel. 100% LED 1-10V Dim., Multiroom Audio. 3 PV-Anlagen. Nächste Projekte: Zählerdatenerfassung, Heizungstemp./Solar, Jal.-St.

Paul

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

Fashionbye

@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... .
FHEM 5.6 auf Raspberry Pi 2 Model B (2015), davor FritzBox 7390 (2012-2014), dann Beaglebone Black (Anf. 2015). CUL mit 2 GP-Ant.. Einige Dutzend FS20 Geräte, Bel. 100% LED 1-10V Dim., Multiroom Audio. 3 PV-Anlagen. Nächste Projekte: Zählerdatenerfassung, Heizungstemp./Solar, Jal.-St.

Fashionbye

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.
FHEM 5.6 auf Raspberry Pi 2 Model B (2015), davor FritzBox 7390 (2012-2014), dann Beaglebone Black (Anf. 2015). CUL mit 2 GP-Ant.. Einige Dutzend FS20 Geräte, Bel. 100% LED 1-10V Dim., Multiroom Audio. 3 PV-Anlagen. Nächste Projekte: Zählerdatenerfassung, Heizungstemp./Solar, Jal.-St.

Puschel74

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

Fashionbye

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!
FHEM 5.6 auf Raspberry Pi 2 Model B (2015), davor FritzBox 7390 (2012-2014), dann Beaglebone Black (Anf. 2015). CUL mit 2 GP-Ant.. Einige Dutzend FS20 Geräte, Bel. 100% LED 1-10V Dim., Multiroom Audio. 3 PV-Anlagen. Nächste Projekte: Zählerdatenerfassung, Heizungstemp./Solar, Jal.-St.