Hallo zusammen,
ich möchte bei einer Temperaturdifferenz innen/außen von > 10 Grad nach einiger Zeit ein akustisches Signal ertönen lassen.
([TempRegler1_Climate:measured-temp] – [TempSensor1:temperature] > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3, set HM_SignalGeber_2_Mp3 playTone 018)
Ich habe mir dies von
https://forum.fhem.de/index.php?topic=73288.0 (https://forum.fhem.de/index.php?topic=73288.0)
hergeleitet.
Leider kommt folgende Reading-Meldung
error
condition c01: Unrecognized character \xE2; marked by <-- HERE after ed-temp') <-- HERE near column 72, line 1.
DOIF ist so groß und umfangreich geworden. Ich finde leider keine Lösung zu meinem o.g. Problem.
Kann mir einer helfen?
Gruss
laxmann
Vermutlich hast du dir beim Kopieren ein unsichtbares Sonderzeichen mir reinkopiert - an der Stelle 72.
Hallo Damian,
ich habe
([TempRegler1_Climate:measured-temp] – [TempSensor1:temperature] > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3, set HM_SignalGeber_2_Mp3 playTone 018)
selbst geschrieben.
Ich habe mir nochmal die Zeichen und die Leerzeichen angeschaut. Hier ist mir aufgefallen, dass der von mir genutzte Link
https://forum.fhem.de/index.php?topic=73288.0 (https://forum.fhem.de/index.php?topic=73288.0)
das Minuszeichen zwischen den eckigen Klammern ohne Leerzeichen eingesetzt worden ist. Also so "]-[". Dies habe ich in meinem Code geändert
define FensterLangeAuf DOIF ([TempRegler1_Climate:measured-temp]–[TempSensor1:temperature] > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3, set HM_SignalGeber_2_Mp3 playTone 018)
Dann erscheint:
Zitaterror
condition c01: Unrecognized character \xE2; marked by <-- HERE after red-temp')<-- HERE near column 71, line 1.
Gruss
laxmann
Da bin ich nochmal.
Ich habe es nochmal mit Dummys versucht
TempAussen 2 dummy
TempInnen 20 dummy
([TempInnen] – [TempAussen] > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3, set HM_SignalGeber_2_Mp3 playTone 018)
Dann erscheint
Zitaterror
condition c01: Unrecognized character \xE2; marked by <-- HERE after ','STATE')<-- HERE near column 42, line 1.
Poste mal die Ausgabe von list FensterLangeAuf
Hier die list
CFGFN
DEF
([TempInnen] – [TempAussen] > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3, set HM_SignalGeber_2_Mp3 playTone 018)
MODEL
FHEM
NAME FensterLangeAuf
NR 12989
NTFY_ORDER 50-FensterLangeAuf
STATE initialized
TYPE DOIF
Probably associated with
DOIFtools
initialized
DOIFtools
HM_SignalGeber_2_Mp3
off
CUL_HM
TempAussen
2
dummy
TempInnen
20
dummy
Readings
cmd
0
error condition c01: Unrecognized character \xE2; marked by <-- HERE after ,'STATE') <-- HERE near column 43, line 1.
mode enabled
state initialized
Attributes
room Meldungen deleteattr
Probably associated with
DOIFtools initialized DOIFtools
HM_SignalGeber_2_Mp3 off CUL_HM
TempAussen 2 dummy
TempInnen 20 dummy
Das ist kein richtiger list-Output.
Wenn du in der Commandozeile list FensterLangeAuf
ausführst, kommen auch interne Informationen des DOIF-Moduls zum Vorschein.
Hallo Damian,
hier ist list:
Internals:
CFGFN
DEF ([TempInnen] – [TempAussen] > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3, set HM_SignalGeber_2_Mp3 playTone 018)
MODEL FHEM
NAME FensterLangeAuf
NR 12989
NTFY_ORDER 50-FensterLangeAuf
STATE initialized
TYPE DOIF
Helper:
DBLOG:
state:
logdb:
TIME 1540832733.09
VALUE disabled
READINGS:
2018-10-29 18:01:26 cmd 0
2018-10-29 18:01:35 error condition c01: Unrecognized character \xE2; marked by <-- HERE after ,'STATE') <-- HERE near column 43, line 1.
2018-10-29 18:05:43 mode enabled
2018-10-29 18:05:43 state initialized
Regex:
attr:
cmdState:
condition:
0 ::InternalDoIf($hash,'TempInnen','STATE') – ::InternalDoIf($hash,'TempAussen','STATE') > 10
devices:
0 TempInnen TempAussen
all TempInnen TempAussen
do:
0:
0 set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3, set HM_SignalGeber_2_Mp3 playTone 018
1:
helper:
globalinit 1
last_timer 0
sleeptimer -1
triggerDev
internals:
0 TempInnen:STATE TempAussen:STATE
all TempInnen:STATE TempAussen:STATE
itimer:
readings:
uiState:
uiTable:
Attributes:
room Meldungen
Perl sagt:
([TempInnen] – [TempAussen] > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3, set HM_SignalGeber_2_Mp3 playTone 018)
^ hier ist kein Leerzeichen
lösche das vermeintliche Leerzeichen vor dem Minuszeichen und gebe es über die Tastatur neu ein.
Abgesehen davon hast du zwei schwerwiegende Fehler drin:
(([TempInnen] – [TempAussen]) > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3; set HM_SignalGeber_2_Mp3 playTone 018)
Hallo Damian,
ich habe es ausprobiert.
(([TempInnen] – [TempAussen]) > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3; set HM_SignalGeber_2_Mp3 playTone 018)
Zitatsleep 3;
Komma oder Semikolon ist egal, cmd_1 lässt sich immer auslösen.
Sonst bleibt es bei einer error-Meldung
Internals:
DEF (([TempInnen] – [TempAussen]) > 10) (set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3; set HM_SignalGeber_2_Mp3 playTone 018)
MODEL FHEM
NAME FensterLangeAuf
NR 740
NTFY_ORDER 50-FensterLangeAuf
STATE cmd_1
TYPE DOIF
Helper:
DBLOG:
state:
logdb:
TIME 1541069869.58448
VALUE cmd_1
READINGS:
2018-11-01 11:57:49 cmd 1
2018-11-01 11:57:49 cmd_event set_cmd_1
2018-11-01 11:57:49 cmd_nr 1
2018-11-01 12:06:59 error condition c01: Unrecognized character \xE2; marked by <-- HERE after ,'STATE') <-- HERE near column 44, line 1.
2018-11-01 11:55:24 mode enabled
2018-11-01 11:57:49 state cmd_1
Regex:
attr:
cmdState:
condition:
0 (::InternalDoIf($hash,'TempInnen','STATE') – ::InternalDoIf($hash,'TempAussen','STATE')) > 10
devices:
0 TempInnen TempAussen
all TempInnen TempAussen
do:
0:
0 set HM_SignalGeber_2_Mp3 playTone 001 1 4, sleep 3; set HM_SignalGeber_2_Mp3 playTone 018
1:
helper:
globalinit 1
last_timer 0
sleeptimer -1
triggerDev
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: set_cmd_1
state: cmd_1
internals:
0 TempInnen:STATE TempAussen:STATE
all TempInnen:STATE TempAussen:STATE
itimer:
readings:
uiState:
uiTable:
Attributes:
room Meldungen
Gruss
laxmann
Du benutzt ein falsches Minuszeichen
Dann habe ich mit dem Leerzeichen eine Position davor erwischt :)
Das cmd_1 lässt sich zwar ausführen, aber mit sleep 3, ist dein System 3 Sekunden lang nicht ansprechbar ;)
Das war es.
Im DOIF-Editor habe ich den Bindestrich "-" auf das mathematische "-" geändert. Es funktioniert!
Im DOIF-Editor hat sich auch das "-" farblich verändert.
Danke
Gruß
laxmann