FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Mellowback am 29 Mai 2016, 13:21:29

Titel: Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 13:21:29
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





Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: splat am 29 Mai 2016, 13:52:39
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.


Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 16:41:40
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.
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: budy am 29 Mai 2016, 17:33:27
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...
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 18:11:55
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
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: dev0 am 29 Mai 2016, 18:47:35
Value() erwartet als Parameter nur den Devicenamen. Siehe  http://fhem.de/commandref.html#perl
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 19:20:01
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") } }
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 19:32:31
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.
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 19:47:19
Hallo,

Das event der Terrasse ist "Open" das nimmt er auch. Scheinbar checkt er aber nicht das die Dumme Alarmanlage auf On steht
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 19:56:50
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?
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 20:07:07
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
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 20:15:32
Sorry mein Fehler. Hinter if eine (


define Terrasse_auf_Licht_an notify Terrasse.Open {
                              if( Value("Alarmanlage") eq "on") {
                                        fhem("set Funksteckdose_1 on");
                              }
}
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 20:16:24
Hätte ich schon anfangs berichtigt
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 20:19:27
Liegt es vielleicht am Schalter dummy selber ?

define Alarmanlage dummy
attr Alarmanlage  setList on off
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 20:22:00
Also dann ja doch ein kleines on. Wie ist den der STATE vom Dummy aktuell?
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 20:23:05
STATE on
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 20:25:58

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.
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 20:27:48
Gebe alles direkt in der Web-oberfläche ein
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 20:29:25
Bilde mir ein das mein Code sauber ist. Kann aber gerade nicht testen. Muss ich später machen.
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 20:33:58
Übrigens beim Semikolon am Ende spinnt er rum. Ich hab das mal weggelassen
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 20:35:21
Geht es denn dann?
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 20:36:30
Kannst auch versuchen die zwei ( ) Klammern nach fhem weg zu lassen aber eigentlich muss das ; sein
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 20:50:39
Bringt auch nichts
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 20:53:17
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
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 20:54:24
Wie meinst das eine List ?
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 20:56:32
Du gibst in der Web cmd ein

list DEVICENAME
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 21:00:01
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
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 21:03:30
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.
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 21:06:24
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
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 21:10:29
Und Fehlermeldung immer noch die selbe?
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 21:11:15
Ja leider immer noch das gleiche Problem
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 21:15:23

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?
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 21:16:56
Ja genau, ist jetzt halt "eq on" mit kleinen o
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 21:23:13
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.
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 21:54:18
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
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 22:01:50
Ich werd verrückt, jetzt geht es

DEF  Terrasse.open { if( Value ("Alarmanlage") eq "on") { fhem "set Funksteckdose_1 on" }}
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 22:17:03
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
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 22:22:46
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" }}
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 22:29:47

Terrasse.open { if( Value ("Alarmanlage") eq "on") { fhem "set Funksteckdose_1 on; sleep 3; set Funksteckdose_4 on" }}


Probier mal so, ohne doppelt Semikolon.
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Mellowback am 29 Mai 2016, 22:51:48
Funktioniert alles wunderbar

Tausend dank nochmal
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: CoolTux am 29 Mai 2016, 23:03:23
Gern geschehen.


Grüße
Titel: Antw:Notify mit zwei Bedingungen (if Funktion)
Beitrag von: Wernieman am 30 Mai 2016, 09:39:15
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.