Hallo
ich hab FHEM schon ein bisschen im Einsatz und hatte mich hier auch mal im Forum registriert - wohl zu lange her. Meinen Account gab's nicht mehr
Jetzt mal zu meinem Automatisierung-Versuch. Ich komme aber nicht weiter. Ich schätze mal, der Fehler ist simpel; aber ich finde ihn einfach nicht.
Zunächst mal zum meinem Versuch. Eingesetztes Equipment Homematic. Startpunkt ist mein Bad. Dort hab ich einen HM-SEC-RHS threeStateSensor am Fenster und einen HM-LC-SW1-PL2 switch, der mir einen Dehumidifier (Entfeuchter) steuern soll. Soweit, so gut. Zeitsteuerung über AT usw. funktioniert bereits gut...
Nun wollte ich eine Schaltung erstellen, die beim Öffnen des Fensters den Dehumidifier abschaltet. Macht ja keinen Sinn, dass der dann läuft. Ich hatte mir das so vorgestellt:
#Dummy, um zu erkennen, ob Fenster geöffnet wurde
define Fenster.offen dummy
#Dummy speichert vorher-Status vom Entfeuchter
define DeHumi.Status dummy
#Bei Öffnen wird aktueller Status-Wert gespeichert in Dummy
define DeHumi.aus notify Lueften.HM.Bad.RHS.Fenster:open {my $CurrentStatus=ReadingsVal ("Schalten.HM.Bad.SW.Dehumidifier","state",0) {fhem ("set Schalten.HM.Bad.SW.Dehumidifier off;; set Fenster.offen on;; set DeHumi.Status $CurrentStatus")} }
#Bei Schließen wird alter Wert wieder gesetzt, Zustands-Dummy wieder aus, nur wenn Zustand bisher offen
define DeHumi.wie.vorher notify Lueften.HM.Bad.RHS.Fenster:closed {my $FormerStatus=Value("DeHumi.Status") if (Value("Fenster.offen") eq "on") {fhem ("set Schalten.HM.Bad.SW.Dehumidifier $FormerStatus;; set Fenster.offen off")} }
Aber ich bekomme nur eine Fehlermeldung:
2016.02.17 06:45:59 3: DeHumi.aus return value: syntax error at (eval 1156) line 1, near ") {"
syntax error at (eval 1156) line 1, near "} }"
2016.02.17 06:45:59 3: DeHumi.aus return value: syntax error at (eval 1157) line 1, near ") {"
syntax error at (eval 1157) line 1, near "} }"
Ich bin alles mehrfach durchgegangen. Auch die Klammern-Syntax mit dem Wiki. Ich hab's auseinandergenommen und einzeln funktioniert's auch.
ICH FINDE einfach DEN FEHLER nicht! ggf. ist's für einen Profi ein Klax, aber ich bin verzweifelt.
Danke für jeglich Unterstützung.
Gruß, Charlieman
Hallo, poste den Code Abschnitt bitte mal in Code Tag´s, so ist das ziemlich unübersichtlich.
denke es liegt am fehlenden Leerzeichen:
{my $CurrentStatus=ReadingsVal...
mach daraus mal
{ my $CurrentStatus=ReadingsVal...
oder du ziehst die 2. schließende Klammer ran.
VG
Frank
gib mal bitte ein list von DeHumi.aus ich Antworte nicht auf Code aus der cfg. Ausserdem wäre es schön wenn Code Tags verwendet würden.
Grüße
Sorry, ich scheitere bereits daran Code und Text zu trennen.
Tags würden alles leserlicher machen - siehe mein angepinnter Beitrag hier im Anfängerbereich.
Ein kleines bischen Unterstützung darf man sich durch den Hilfesuchenden doch erwarten 8)
define DeHumi.aus notify Lueften.HM.Bad.RHS.Fenster:open {my $CurrentStatus=ReadingsVal("Schalten.HM.Bad.SW.Dehumidifier","state",0);;fhem("set Schalten.HM.Bad.SW.Dehumidifier off;; set Fenster.offen on;; set DeHumi.Status $CurrentStatus")}
Gruß
Hans
DANKE Hans!!!
Das funzt! Also der DeHumi wird ausgeschaltet.
Eine Kleinigkeit. Deine Zeile meldet den DeHumi.Status als OFF. Das verstehe ich jetzt nicht, weil es ja eigentlich der $CurrentStatus sein sollte.
Also der vorherige Status des Entfeuchters und der war ON. Wie kann ich prüfen, weshalb das so ist?
Gruß, Charlieman
Kleiner tip. Google mal nach dem internen editor für fhem.
Ich hatte selber auch immer schwierigkeiten. Oft ist es nur ein fehlender zeilenumbruch am ende...
Bin auch kein Programmierer, und da hilft der editor doch sehr.
Gesendet von meinem GT-I9505 mit Tapatalk
Oder noch viel besser. Bearbeite einfach sämtliche Devices nicht in der fhem.cfg sondern über die entsprechende DEF. Detailansicht für das Gerät und dann da auf DEF klicken
Grüße