FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tantor am 26 Januar 2015, 19:07:34

Titel: einfach UND-Funktion erstellen?
Beitrag von: tantor am 26 Januar 2015, 19:07:34
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!
Titel: Antw:einfach UND-Funktion erstellen?
Beitrag von: nesges am 26 Januar 2015, 20:02:51
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.
Titel: Antw:einfach UND-Funktion erstellen?
Beitrag von: tantor am 26 Januar 2015, 20:32:43
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!
Titel: Antw:einfach UND-Funktion erstellen?
Beitrag von: nesges am 27 Januar 2015, 00:28:48
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.
Titel: Antw:einfach UND-Funktion erstellen?
Beitrag von: tantor am 01 Februar 2015, 15:17:37
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