einfach UND-Funktion erstellen?

Begonnen von tantor, 26 Januar 2015, 19:07:34

Vorheriges Thema - Nächstes Thema

tantor

Hallo zusammen,
ich möchte meine zeit-dämmerungsgesteuerte Rolladensteuerung duech einen Dummy-Schalter ausser Kraft setzen (überbrücken). Jedoch bekomme ich keine erfolgreiche Konfiguration zusammen. Habe mit folgenden Befehl versucht meine Zeitanweisung mit dem Dummy zu ereinen:

define AZ_EG_HM_LC_Bl1PBU_FM_hoch at *06:45
define AZ_EG_HM_LC_Bl1PBU_FM_auf notify rollbridge { if ( Value("rollbridge") eq "AUS" && AZ_EG_HM_LC_Bl1PBU_FM_hoch) {fhem("set AZ_EG_HM_LC_Bl1PBU_FM on")} }
attr AZ_EG_HM_LC_Bl1PBU_FM_hoch room Büro
attr AZ_EG_HM_LC_Bl1PBU_FM_auf room Büro

jedoch erfolglos!

geht vielleicht folgende Anweisung?
define AZ_EG_HM_LC_Bl1PBU_FM_hoch at *06:45 && rollbridge:off set AZ_EG_HM_LC_Bl1PBU_FM on
attr AZ_EG_HM_LC_Bl1PBU_FM_hoch room Büro

Kann mir vielleicht jemand weiterhelfen?

Danke!
FHEM mit CUL V3.4 an Raspberry Pi 3
CUL V 1.67 CUL868; nanoCUL V1.66 433MHz; 1Wire USB-Adapter 2480B
8x HM-CC-RT-DN Fw 1.3; 9x HM-LC-Bl1PBU-FM Fw2.3
11x DS1820 2xDS2408

nesges

Was genau ist das device "rollbridge"? Dein Dummy? Was genau soll das notify tun? Eigentlich willst du nur dein at an eine Bedingung knüpfen, oder?

Sieh dir zunächst mal das Einsteigerhandbuch ab Seite 37ff an. Da müsste alles für dein Vorhaben zu finden sein.

tantor

rollbridge ist mein Dummy mit AN und AUS als state. Mit dem Schaltzustand AUS soll die Rollade um 6:45 Uhr hochfahren und bei Stellung AN die Ausführung verhindern.

meine erste Lösung hatte ich von Seite 39 aus dem Einsteigerhandbuch. Aktuelle habe ich die Konfiguration auf meine zweite Anweisung programmiert. Jedoch sehe ich erst morgen, ob es funktioniert.

Wäre nett, wenn ich vorher einen hilfreichen Tipp für mein Problem bekomme.

Danke!
FHEM mit CUL V3.4 an Raspberry Pi 3
CUL V 1.67 CUL868; nanoCUL V1.66 433MHz; 1Wire USB-Adapter 2480B
8x HM-CC-RT-DN Fw 1.3; 9x HM-LC-Bl1PBU-FM Fw2.3
11x DS1820 2xDS2408

nesges

Um nicht so lange warten zu müssen, würde ich das at temporär auf einen anderen Wert setzen, bis es funktioniert wie du's haben willst.

Eine Kombination aus deinen beiden Ansätzen ist schon der richtige Weg. Im ersten Versuch wundert mich nur das notify. Aus deiner Beschreibung sehe ich keine Notwendigkeit dafür. Wenn ich dich richtig verstanden habe willst du (ungetestet, kann Tippfehler enthalten):

define AZ_EG_HM_LC_Bl1PBU_FM_hoch at *06:45 { if ( Value("rollbridge") eq "AUS" ) { fhem("set AZ_EG_HM_LC_Bl1PBU_FM on") } }

oder alternativ:

define AZ_EG_HM_LC_Bl1PBU_FM_hoch at *06:45 IF ( [rollbridge] eq "AUS" ) ( set AZ_EG_HM_LC_Bl1PBU_FM on )

Das erste ist ein Perl-Einzeiler,  der deine beiden Ansätze kombiniert. Das zweite nutzt das Fhem-Command "IF" (http://fhem.de/commandref.html#IF), welches eine sehr ähnliche Syntax abbildet wie ein Perl-if.

tantor

Warum bekomme ich diese Funktion nicht Simuliert in Betrieb genommen. 1x Dummy-Schalter ; 1x Dummy-Pumpe und eine 1Wire-Temperatur als Komponenten.
Wäre schön, wenn mir jemand meinen Fehler aufzeigt. Notepad++ findet kein Programmierfehler.

define Teichpumpe dummy
attr Teichpumpe room Gartenhaus
attr Teichpumpe setList state:on,off
attr Teichpumpe webCmd state

# Simulation Teichpumpe
define Pumpe dummy
attr Pumpe devStateIcon on:rc_GREEN:off:rc_RED:
attr Pumpe room Gartenhaus
define Pumpe_AN at *{sunrise()} { if ( Value("Teichpumpe") eq "on" && ReadingsVal("SWT_Wassertemperatur","temperature",99) > 5)) { fhem("set Pumpe on") } else { fhem("set Pumpe off") } }
attr Pumpe_AN room Gartenhaus
FHEM mit CUL V3.4 an Raspberry Pi 3
CUL V 1.67 CUL868; nanoCUL V1.66 433MHz; 1Wire USB-Adapter 2480B
8x HM-CC-RT-DN Fw 1.3; 9x HM-LC-Bl1PBU-FM Fw2.3
11x DS1820 2xDS2408