Gelöst! DOIF Temperaturdifferenz

Begonnen von laxmann, 28 Oktober 2018, 18:20:55

Vorheriges Thema - Nächstes Thema

laxmann

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
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

Damian

Vermutlich hast du dir beim Kopieren ein unsichtbares Sonderzeichen mir reinkopiert - an der Stelle 72.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

laxmann

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
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

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.

Damian

Poste mal die Ausgabe von list FensterLangeAuf
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

laxmann

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

Damian

Das ist kein richtiger list-Output.

Wenn du in der Commandozeile list FensterLangeAuf ausführst, kommen auch interne Informationen des DOIF-Moduls zum Vorschein.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

laxmann

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

Damian

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)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

laxmann

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

Ellert

Du benutzt ein falsches Minuszeichen

Damian

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 ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

laxmann

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