Hauptmenü

rename und $SELF Problem

Begonnen von Amenophis86, 28 August 2017, 21:19:25

Vorheriges Thema - Nächstes Thema

Amenophis86

Habe heute ein DOIF umbenannt in welchem $SELF benutzt wurde. Scheinbar bekommt $SELF den neune Namen nicht mit. Germerkt habe ich es, weil nicht getriggert wurde und beim manuellen auslösen kam der Fehler:

setreading DI.Waschmaschine Waschmaschine fertig: Please define DI.Waschmaschine first

geändert wurde der Name von DI.Waschmaschine in DI.Waschmaschine.Status Hier noch ein List des device:
Internals:
   CFGFN
   DEF        ([SO_Waschmaschine:POWER] eq "OFF")
(setreading $SELF Waschmaschine off)
DOELSEIF ([?SO_Waschmaschine:Power] < 5 and [SO_Waschmaschine:POWER] eq "ON" and [?$SELF:Waschmaschine] eq "off")
(setreading $SELF Waschmaschine on)
DOELSEIF ([SO_Waschmaschine:Power] > 5 and [?SO_Waschmaschine:POWER] eq "ON" and ([?$SELF:Waschmaschine] eq "on" or [?$SELF:Waschmaschine] eq "laeuft"))
(setreading $SELF Waschmaschine laeuft)
DOELSEIF ([SO_Waschmaschine:Power] < 5 and [?SO_Waschmaschine:POWER] eq "ON" and [?$SELF:Waschmaschine] eq "laeuft")
(setreading $SELF Waschmaschine fertig)
   NAME       DI.Waschmaschine.Status
   NR         378
   NTFY_ORDER 50-DI.Waschmaschine
   STATE      cmd_4
   TYPE       DOIF
   READINGS:
     2017-08-28 21:17:16   Device          SO_Waschmaschine
     2017-08-28 17:43:55   Waschmaschine   laeuft
     2017-08-28 21:14:37   cmd             4
     2017-08-28 21:14:37   cmd_event       set_cmd_4
     2017-08-28 21:14:37   cmd_nr          4
     2017-08-28 21:17:16   e_SO_Waschmaschine_POWER ON
     2017-08-28 21:17:16   e_SO_Waschmaschine_Power 0
     2017-08-28 21:14:37   error           setreading DI.Waschmaschine Waschmaschine fertig: Please define DI.Waschmaschine first
     2017-08-28 21:14:37   state           cmd_4
   condition:
     0          ReadingValDoIf($hash,'SO_Waschmaschine','POWER') eq "OFF"
     1          ReadingValDoIf($hash,'SO_Waschmaschine','Power') < 5 and ReadingValDoIf($hash,'SO_Waschmaschine','POWER') eq "ON" and ReadingValDoIf($hash,'DI.Waschmaschine','Waschmaschine') eq "off"
     2          ReadingValDoIf($hash,'SO_Waschmaschine','Power') > 5 and ReadingValDoIf($hash,'SO_Waschmaschine','POWER') eq "ON" and (ReadingValDoIf($hash,'DI.Waschmaschine','Waschmaschine') eq "on" or ReadingValDoIf($hash,'DI.Waschmaschine','Waschmaschine') eq "laeuft")
     3          ReadingValDoIf($hash,'SO_Waschmaschine','Power') < 5 and ReadingValDoIf($hash,'SO_Waschmaschine','POWER') eq "ON" and ReadingValDoIf($hash,'DI.Waschmaschine','Waschmaschine') eq "laeuft"
   devices:
     0           SO_Waschmaschine
     1           SO_Waschmaschine
     2           SO_Waschmaschine
     3           SO_Waschmaschine
     all         SO_Waschmaschine
   do:
     0:
       0          setreading DI.Waschmaschine Waschmaschine off
     1:
       0          setreading DI.Waschmaschine Waschmaschine on
     2:
       0          setreading DI.Waschmaschine Waschmaschine laeuft
     3:
       0          setreading DI.Waschmaschine Waschmaschine fertig
     4:
   helper:
     event      Power: 0,Voltage: 230,Total: 9.817
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev SO_Waschmaschine
     triggerEvents:
       Power: 0
       Voltage: 230
       Total: 9.817
     triggerEventsState:
       Power: 0
       Voltage: 230
       Total: 9.817
   internals:
   itimer:
   readings:
     0           SO_Waschmaschine:POWER
     1           SO_Waschmaschine:POWER
     2           SO_Waschmaschine:Power
     3           SO_Waschmaschine:Power
     all         SO_Waschmaschine:POWER SO_Waschmaschine:Power
   regexp:
     0:
     1:
     2:
     3:
     all:
   state:
     STATE:
   trigger:
Attributes:
   disable    0
   group      Pushnachricht,Unterstützung
   room       Z_DOIF,Z_Keller
   wait       0:0:300:900,0
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Damian

Nach dem Umbenennen musst du in dein DOIF, auf DEF klicken und bestätigen. $SELF wird bei der Definition in den Namen des eigenen Moduls übersetzt, siehe list <dein_DOIF>
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Amenophis86

Hatte es gelöscht und über raw wieder neu Importiert. Über DEF wäre es natürlich cleverer gewesen ;) Somit gehe ich davon aus, dass die bekannt ist, dass es bei einem rename zu einem Problem kommt. Darum ging es mir.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...