Hauptmenü

[Bug] Rename und $SELF

Begonnen von Christoph Morrison, 08 August 2020, 12:28:03

Vorheriges Thema - Nächstes Thema

Christoph Morrison

Mir ist aufgefallen, dass, wenn man ein Device umbenennt, $SELF den alten Gerätenamen referenziert. Folgendes DOIF hieß erst general.weather.station.sensor_3.temperature, ich habe es dann zu general.weather.station.sensor_3.temperature.not_functioning (und zwischenzeitlich wieder zurück) benannt. $SELF wollte, während das Device general.weather.station.sensor_3.temperature.not_functioning hieß, noch auf general.weather.station.sensor_3.temperature schreiben (siehe error).


Internals:
   .FhemMetaInternals 1
   CFGFN      ./cfg.d/general/weather/station/sensor_3.cfg
   DEF       
    (
        [general.weather.station.sensor_3:temperature]
    )
    (
        setreading $SELF temperature [general.weather.station.sensor_3:temperature]
    )
   FUUID      5ed933f3-f33f-bc49-517c-9de051ba9bfb8998
   FVERSION   98_DOIF.pm:0.224280/2020-07-18
   MODEL      FHEM
   NAME       general.weather.station.sensor_3.temperature
   NOTIFYDEV  global,general.weather.station.sensor_3
   NR         4513
   NTFY_ORDER 50-general.weather.station.sensor_3.temperature
   STATE      18.90 �C am 07.08.2020 um 19:52
   TYPE       DOIF
   VERSION    22428 2020-07-18 20:32:08
   .attraggr:
   .attrminint:
   Helper:
     DBLOG:
       cmd:
         general.system.log.db:
           TIME       1596881180.65875
           VALUE      1
       cmd_event:
         general.system.log.db:
           TIME       1596881180.65875
           VALUE      general.weather.station.sensor_3
       cmd_nr:
         general.system.log.db:
           TIME       1596881180.65875
           VALUE      1
       error:
         general.system.log.db:
           TIME       1596881180.65875
           VALUE                setreading general.weather.station.sensor_3.temperature temperature 27.2     
       state:
         general.system.log.db:
           TIME       1596881180.65875
           VALUE      cmd_1
       temperature:
         general.system.log.db:
           TIME       1596822764.48706
           VALUE      18.9
   READINGS:
     2020-08-08 12:06:20   Device          general.weather.station.sensor_3
     2020-08-08 12:06:20   cmd             1
     2020-08-08 12:06:20   cmd_event       general.weather.station.sensor_3
     2020-08-08 12:06:20   cmd_nr          1
     2020-08-08 12:06:20   e_general.weather.station.sensor_3_temperature 27.2
     2020-08-08 12:06:20   error                     setreading general.weather.station.sensor_3.temperature temperature 27.2      : Please define general.weather.station.sensor_3.temperature first
     2020-08-08 12:06:20   state           cmd_1
     2020-08-07 19:52:44   temperature     18.9
   Regex:
     accu:
     cond:
       general.weather.station.sensor_3:
         0:
           temperature ^general.weather.station.sensor_3$:^temperature:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0                    ::ReadingValDoIf($hash,'general.weather.station.sensor_3','temperature')     
   do:
     0:
       0                    setreading general.weather.station.sensor_3.temperature temperature [general.weather.station.sensor_3:temperature]     
     1:
   helper:
     DEVFILTER  ^global$|^general.weather.station.sensor_3$
     NOTIFYDEV  global|general.weather.station.sensor_3
     event      battery: ok,humidity: 49,T: 27.2 H: 49,temperature: 27.2,absoluteHumidity: 12.7,vapourPressure: 17.6,dewpoint: 15.6
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   general.weather.station.sensor_3
     timerevent battery: ok,humidity: 49,T: 27.2 H: 49,temperature: 27.2,absoluteHumidity: 12.7,vapourPressure: 17.6,dewpoint: 15.6
     triggerDev general.weather.station.sensor_3
     timerevents:
       battery: ok
       humidity: 49
       T: 27.2 H: 49
       temperature: 27.2
       absoluteHumidity: 12.7
       vapourPressure: 17.6
       dewpoint: 15.6
     timereventsState:
       battery: ok
       humidity: 49
       state: T: 27.2 H: 49
       temperature: 27.2
       absoluteHumidity: 12.7
       vapourPressure: 17.6
       dewpoint: 15.6
     triggerEvents:
       battery: ok
       humidity: 49
       T: 27.2 H: 49
       temperature: 27.2
       absoluteHumidity: 12.7
       vapourPressure: 17.6
       dewpoint: 15.6
     triggerEventsState:
       battery: ok
       humidity: 49
       state: T: 27.2 H: 49
       temperature: 27.2
       absoluteHumidity: 12.7
       vapourPressure: 17.6
       dewpoint: 15.6
   internals:
   perlblock:
   readings:
     all         general.weather.station.sensor_3:temperature
   trigger:
   uiState:
   uiTable:
Attributes:
   alias      Temperatursensor Nelkenweg Zaun an xxx
   do         always
   group      Wetterstation
   icon       temp_outside@black
   room       Allgemein->Umwelt
   sortby     400
   stateFormat {FHEM::MyUtils::State::temperature_with_datetime($name)}

Damian

Nach dem Umbenennen muss man auf DEF-Klicken und neu speichern (entspricht defmod), damit $SELF angepasst wird. $SELF wird während der Definition ersetzt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Christoph Morrison

Zitat von: Damian am 08 August 2020, 13:07:22
Nach dem Umbenennen muss man auf DEF-Klicken und neu speichern (entspricht defmod), damit $SELF angepasst wird. $SELF wird während der Definition ersetzt.

Magst du vielleicht X_Rename implementieren?

Damian

Zitat von: Christoph Morrison am 08 August 2020, 13:35:18
Magst du vielleicht X_Rename implementieren?

ja, mal schauen, wenn ich Zeit finde.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF