FHEM Forum

FHEM => Automatisierung => Thema gestartet von: laxmann am 28 Oktober 2018, 18:20:55

Titel: Gelöst! DOIF Temperaturdifferenz
Beitrag von: laxmann am 28 Oktober 2018, 18:20:55
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
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: Damian am 28 Oktober 2018, 19:18:59
Vermutlich hast du dir beim Kopieren ein unsichtbares Sonderzeichen mir reinkopiert - an der Stelle 72.
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: laxmann am 29 Oktober 2018, 17:40:49
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
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: laxmann am 29 Oktober 2018, 18:02:40
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.
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: Damian am 29 Oktober 2018, 18:40:54
Poste mal die Ausgabe von list FensterLangeAuf
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: laxmann am 29 Oktober 2018, 19:31:53
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
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: Damian am 29 Oktober 2018, 21:16:38
Das ist kein richtiger list-Output.

Wenn du in der Commandozeile list FensterLangeAuf ausführst, kommen auch interne Informationen des DOIF-Moduls zum Vorschein.
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: laxmann am 30 Oktober 2018, 05:28:03
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
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: Damian am 31 Oktober 2018, 23:43:36
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)
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: laxmann am 01 November 2018, 12:12:12
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
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: Ellert am 01 November 2018, 14:55:25
Du benutzt ein falsches Minuszeichen
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: Damian am 01 November 2018, 14:59:25
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 ;)
Titel: Antw:DOIF Temperaturdifferenz
Beitrag von: laxmann am 02 November 2018, 06:56:27
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