Hallo zusammen,
Ich habe folgende Situation:
Meine Steckdose_1 soll angeschaltet werden sobald der Türkontakt "Terrasse" auf "Open" steht und es soll geprüft werden ob der virtuelle Schalter "Arlamanlage" auf "On" steht.
Code:
define Alarmanlage dummy
attr Alarmanlage setList on off
define Terrasse_auf_Licht_an notify Terrasse { if ( Value("Terrasse") eq "open" && Value(,,Alarmanlage setList") eq ,,on") { fhem("set Funksteckdose_1 on") } }
Leider funktioniert es nicht und ich habe so ziemlich alle forum Beiträge zum Thema gelesen, leider ohne Erfolg.
Im Logfile bekomme ich folgende Meldung:
Terrasse_auf_Licht_an notify Return value: unrecognized character \xE2; marked by <-- here after && Value (<--
Vorab danke
Hallo, soviel Ahnung habe ich jetzt auch nicht. Aber ich denke es liegt an einem falschen Zeichen
du hast
define Terrasse_auf_Licht_an notify Terrasse { if ( Value("Terrasse") eq "open" && Value(,,Alarmanlage setList") eq ,,on") { fhem("set Funksteckdose_1 on") } }
und es sollte
define Terrasse_auf_Licht_an notify Terrasse { if ( Value("Terrasse") eq "open" && Value("Alarmanlage setList") eq ,,on") { fhem("set Funksteckdose_1 on") } }
so aussehen. Es betrifft das Zeichen von Alarmanlage.
wobei ich jetzt auch nicht weis ob das setlist sein muss bzw darf.
Hallo,
Das war leider nicht die Lösung.
Im Logfile steht jetzt folgendes:
Terrasse_auf_Licht_an ... \xE2; marked by <-- here aflter List") eq <-- Near column 272 at (eval 5685) line 1.
Oha... drei verschiedene Arten von Anführungszeichen in einem Befehl, das ist schon mal was. Am besten mal mit einem Editor arbeiten, der keine automatische Ersetzung von Anführungszeichen vornimmt... ;)
Oder aber die Eingabezeile im WebIF verwenden...
Hallo,
habe nochmal alle Anführungszeichen nach oben gesetzt:
define Terrasse_auf_Licht_an notify Terrasse { if ( Value("Terrasse") eq "open" && Value("Alarmanlage setList") eq "on") { fhem("set Funksteckdose_1 on") } }
Leider immer noch der gleiche Fehler wie vorhin beschrieben.
Hat es vielleicht etwas damit zu tun das er den Status des Arlamanlage Schalters nicht abfragt? Oder wartet die Funktion auf ein On von der Arlamanlage?
Danke
Value() erwartet als Parameter nur den Devicenamen. Siehe http://fhem.de/commandref.html#perl
Auch das habe ich angepasst.
Es geht trotzdem nicht :(
define Alarmanlage dummy
attr Alarmanlage setList on off
define Terrasse_auf_Licht_an notify Terrasse { if ( Value("Terrasse") eq "open" && Value("Alarmanlage") eq "on") { fhem("set Funksteckdose_1 on") } }
Es wäre schön wenn Du Code Tags verwenden würdest. Macht alles etwas übersichtlicher.
define Terrasse_auf_Licht_an notify Terrasse.Open { if Value("Alarmanlage") eq "on") { fhem("set Funksteckdose_1 on"); } }
Vorausgesetzt ist natürlich das Deine Terrassentür auch ein Event liefert. Also Eventmonitor beobachten.
Hallo,
Das event der Terrasse ist "Open" das nimmt er auch. Scheinbar checkt er aber nicht das die Dumme Alarmanlage auf On steht
Dann schreibe in die if Abfrage doch ein On. Also wirklich großes O
define Terrasse_auf_Licht_an notify Terrasse.Open { if Value("Alarmanlage") eq "On") { fhem("set Funksteckdose_1 on"); } }
Was sagt denn das Log dazu?
Geht immer noch nicht.
Log bringt folgenden Fehler:
Terrasse_auf_Licht_an notify Return value: unrecognized character \xC2; marked by <-- here after eq On (<-- hear near column 145 at (eval 7237) line 1
Sorry mein Fehler. Hinter if eine (
define Terrasse_auf_Licht_an notify Terrasse.Open {
if( Value("Alarmanlage") eq "on") {
fhem("set Funksteckdose_1 on");
}
}
Hätte ich schon anfangs berichtigt
Liegt es vielleicht am Schalter dummy selber ?
define Alarmanlage dummy
attr Alarmanlage setList on off
Also dann ja doch ein kleines on. Wie ist den der STATE vom Dummy aktuell?
STATE on
define Terrasse_auf_Licht_an notify Terrasse.Open {
if( Value("Alarmanlage") eq "on") {
fhem("set Funksteckdose_1 on");
}
}
Wie und wo gibst Du den Code ein? Mein Code ist für des DEF unterm Notify Detail.
Gebe alles direkt in der Web-oberfläche ein
Bilde mir ein das mein Code sauber ist. Kann aber gerade nicht testen. Muss ich später machen.
Übrigens beim Semikolon am Ende spinnt er rum. Ich hab das mal weggelassen
Geht es denn dann?
Kannst auch versuchen die zwei ( ) Klammern nach fhem weg zu lassen aber eigentlich muss das ; sein
Bringt auch nichts
Ich teste das mal heute oder morgen früh sollte sich nicht noch was finden.
Ach so, gib mal bitte ein list vom dummy Alarmanlage und vom Notify
Wie meinst das eine List ?
Du gibst in der Web cmd ein
list DEVICENAME
Internals:
NAME Alarmanlage
NR 146
STATE on
TYPE dummy
Readings:
2016-05-29 20:17:58 state on
Attributes:
room Technikraum
setList on off
-------------------------------
Internals:
CFGFN
DEF Terrasse.open { if ( Value("Arlamanlage") eq "on") { fhem("set Funksteckdose_1 on") } }
NAME Terrasse_auf_Licht_an
NR 4418
NTFY_ORDER 50-Terrasse_auf_Licht_an
REGEXP Terrasse.open
STATE active
TYPE notify
Readings:
2016-05-29 20:58:31 state active
Attributes:
room Technikraum
Lerne bitte die Ausgaben in Code Tags zu geben.
Sehe wieso du das ; nicht brauchst. Soweit sollte das schon passen. Ich teste das später mal.
Hätte noch einen kleinen Fehler entdeckt, allerdings hat das auch nicht geholfen.
Hör nochmal die neue Übersicht:
Internals:
CFGFN
DEF Terrasse.open { if ( Value("Alarmanlage") eq "on") { fhem("set Funksteckdose_1 on") } }
NAME Terrasse_auf_Licht_an
NR 4468
NTFY_ORDER 50-Terrasse_auf_Licht_an
REGEXP Terrasse.open
STATE 2016-05-29 21:03:03
TYPE notify
Readings:
2016-05-29 21:02:44 state active
Attributes:
room Technikraum
Und Fehlermeldung immer noch die selbe?
Ja leider immer noch das gleiche Problem
Terrasse_auf_Licht_an notify Return value: unrecognized character \xC2; marked by <-- here after eq On (<-- hear near column 145 at (eval 7237) line 1
Also der hier?
Ja genau, ist jetzt halt "eq on" mit kleinen o
Gibst du den Code von Hand ein in den DEF Editor? Wenn nicht, mach das mal bitte. Kein Copy Paste. Ein zu ein so eingeben wie mein Code ist bitte.
Terrasse.open {
if( Value("Alarmanlage") eq "on") {
fhem "set Funksteckdose_1 on";
}
}
Bitte wirklich 1 zu 1 abschreiben.
Also das Semikolon mag er garnicht
Hab jetzt alles per Hand im fhem web (ohne ;) eingegeben und er bringt immer immer noch den gleichen Fehler
Ich werd verrückt, jetzt geht es
DEF Terrasse.open { if( Value ("Alarmanlage") eq "on") { fhem "set Funksteckdose_1 on" }}
Du hattest irgendwo ein verstecktes Zeiches wo er Probleme mit hatte. Aber frage mich bitte nicht wie und wo. Eventuell ein ENTER oder so beim kopieren. Also Leerzeile die nicht zu sehen war oder irgendwas anderes.
Aber schön das es nun geht. Dann kann ich ja in ruhe zu Bett gehen ;D
Erstmal tausend Dank für deiner Mühe.
Eine kleine Sache habe ich noch. Es sollen zwei Steckdosen geschaltet werden allerdings schaltet er nur Funksteckdose_1
Terrasse.open { if( Value ("Alarmanlage") eq "on") { fhem "set Funksteckdose_1 on ;; sleep 3 ;; set Funksteckdose_4 on" }}
Terrasse.open { if( Value ("Alarmanlage") eq "on") { fhem "set Funksteckdose_1 on; sleep 3; set Funksteckdose_4 on" }}
Probier mal so, ohne doppelt Semikolon.
Funktioniert alles wunderbar
Tausend dank nochmal
Gern geschehen.
Grüße
Nur mal als Hinweis:
Es gibt nicht nur ein perl if (hier verwendet), sondern FHEM hat auch ein IF-Modul ....
Bei copy&paste können immer versteckte Zeichen mit kopiert werden. Auch die Zeichencodierung kann manchmal dazwischenfunken.