Hallo zusammen,
ich möchte in einem DOIF zwei Temperaturwerte vergleichen und zwar den zuvor ermittelten Wert und den aktuellen Wert, falls er sich geändert hat.
Aus diversen Beiträgen konnte ich mir folgendes zusammenreimen:
userReadings
temperatur_alt { OldReadingsVal("Wetterstation","ACTUAL_TEMPERATURE",ReadingsVal("Wetterstation","ACTUAL_TEMPERATURE",0)) }
Das ReadingsVal am Ende soll dafür sorgen, dass der Wert nie 0 sein kann, bzw. "unset". Das würde einen false positive geben.
Jedoch funktioniert der Aufbau so nicht. Mein userReading bleibt auf den Wert 0, auch, wenn sich der von der HMIP-SWO-PL Wetterstation gelieferte Temperaturwert verändert.
Wo ist mein Fehler?
Hast du oldreadings aktiviert?
attr [Device] oldreadings [Reading]
und die Definition sieht komisch aus...
Poste Mal ein list vom Device
Hallo, klar
Internals:
DEF 00181BE9A42840:1
FUUID 6257fa90-f33f-823f-7df4-dc12ff07b072b1be
IODev rpim
NAME Wetterstation
NR 17
STATE 22.1
TYPE HMCCUCHN
ccuaddr 00181BE9A42840:1
ccudevstate active
ccuif HmIP-RF
ccuname HmIP-SWO-PL 00181BE9A42840:1
ccurolestate WEATHER_TRANSMIT
ccusubtype SWO-PL
ccutype HmIP-SWO-PL
eventCount 831
firmware 1.0.18
readonly no
READINGS:
2022-06-14 21:16:41 ACTUAL_TEMPERATURE 22.1
2022-06-14 21:16:41 ACTUAL_TEMPERATURE_STATUS NORMAL
2022-06-14 21:16:41 HUMIDITY 31
2022-06-14 21:16:41 HUMIDITY_STATUS NORMAL
2022-06-14 21:16:41 ILLUMINATION 425.1
2022-06-14 21:16:41 ILLUMINATION_STATUS NORMAL
2022-06-14 08:03:56 IODev rpim
2022-06-14 21:16:41 RAINING false
2022-06-14 21:16:41 RAIN_COUNTER 67.3
2022-06-14 21:16:41 RAIN_COUNTER_OVERFLOW false
2022-06-14 21:16:41 RAIN_COUNTER_STATUS NORMAL
2022-06-14 21:16:41 SUNSHINEDURATION 7245
2022-06-14 21:16:41 SUNSHINEDURATION_OVERFLOW true
2022-06-14 21:16:41 SUNSHINE_THRESHOLD_OVERRUN false
2022-06-14 21:16:41 WIND_SPEED 0.0
2022-06-14 21:16:41 WIND_SPEED_STATUS NORMAL
2022-06-14 21:16:41 WIND_THRESHOLD_OVERRUN false
2022-06-14 21:16:41 activity alive
2022-06-14 21:16:41 battery ok
2022-06-14 21:16:41 devstate ok
2022-06-14 21:16:41 hmstate 22.1
2022-06-14 21:16:41 humidity 31
2022-06-14 21:16:41 rssidevice -58
2022-06-14 08:04:20 rssipeer N/A
2022-06-14 21:16:41 state 22.1
2022-06-14 21:15:56 svHmIPRainCounterToday_2205 0.0
2022-06-14 21:15:56 svHmIPRainCounterYesterday_2205 0.0
2022-06-14 21:15:56 svHmIPSunshineCounterToday_2205 725.0
2022-06-14 21:15:56 svHmIPSunshineCounterYesterday_2205 725.0
2022-06-14 21:16:41 temperatur_alt 0
hmccu:
channels 1
detect 1
devspec 00181BE9A42840:1
nodefaults 1
role 1:WEATHER_TRANSMIT
setDefaults 0
cmdlist:
get
set
control:
dp:
0.CONFIG_PENDING:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
0.DUTY_CYCLE:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
0.ERROR_CODE:
VALUES:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
0.ERROR_WIND_COMMUNICATION:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
0.ERROR_WIND_NORTH:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
0.INSTALL_TEST:
VALUES:
NVAL true
ONVAL true
OSVAL true
OVAL true
SVAL true
VAL true
0.LOW_BAT:
VALUES:
NVAL 0
ONVAL 0
OSVAL ok
OVAL 0
SVAL ok
VAL 0
0.RSSI_DEVICE:
VALUES:
NVAL -58
ONVAL -58
OSVAL -58
OVAL -58
SVAL -58
VAL -58
0.RSSI_PEER:
VALUES:
NVAL N/A
ONVAL N/A
OSVAL N/A
OVAL 0
SVAL N/A
VAL 0
0.TEMPERATURE_OUT_OF_RANGE:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
0.UNREACH:
VALUES:
NVAL 0
ONVAL 0
OSVAL alive
OVAL 0
SVAL alive
VAL 0
0.UPDATE_PENDING:
VALUES:
NVAL false
ONVAL false
OSVAL false
OVAL false
SVAL false
VAL false
1.ACTUAL_TEMPERATURE:
VALUES:
NVAL 22.1
ONVAL 22.2
OSVAL 22.2
OVAL 22.2
SVAL 22.1
VAL 22.1
1.ACTUAL_TEMPERATURE_STATUS:
VALUES:
NVAL 0
ONVAL 0
OSVAL NORMAL
OVAL 0
SVAL NORMAL
VAL 0
1.HUMIDITY:
VALUES:
NVAL 31
ONVAL 30
OSVAL 30
OVAL 30
SVAL 31
VAL 31
1.HUMIDITY_STATUS:
VALUES:
NVAL 0
ONVAL 0
OSVAL NORMAL
OVAL 0
SVAL NORMAL
VAL 0
1.ILLUMINATION:
VALUES:
NVAL 425.1
ONVAL 469.9
OSVAL 469.9
OVAL 469.9
SVAL 425.1
VAL 425.1
1.ILLUMINATION_STATUS:
VALUES:
NVAL 0
ONVAL 0
OSVAL NORMAL
OVAL 0
SVAL NORMAL
VAL 0
1.RAINING:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
1.RAIN_COUNTER:
VALUES:
NVAL 67.3
ONVAL 67.3
OSVAL 67.3
OVAL 67.3
SVAL 67.3
VAL 67.3
1.RAIN_COUNTER_OVERFLOW:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
1.RAIN_COUNTER_STATUS:
VALUES:
NVAL 0
ONVAL 0
OSVAL NORMAL
OVAL 0
SVAL NORMAL
VAL 0
1.SUNSHINEDURATION:
VALUES:
NVAL 7245
ONVAL 7245
OSVAL 7245
OVAL 7245
SVAL 7245
VAL 7245
1.SUNSHINEDURATION_OVERFLOW:
VALUES:
NVAL 1
ONVAL 1
OSVAL true
OVAL 1
SVAL true
VAL 1
1.SUNSHINE_THRESHOLD_OVERRUN:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
1.WIND_SPEED:
VALUES:
NVAL 0.0
ONVAL 0.0
OSVAL 0.0
OVAL 0.0
SVAL 0.0
VAL 0.0
1.WIND_SPEED_STATUS:
VALUES:
NVAL 0
ONVAL 0
OSVAL NORMAL
OVAL 0
SVAL NORMAL
VAL 0
1.WIND_THRESHOLD_OVERRUN:
VALUES:
NVAL 0
ONVAL 0
OSVAL false
OVAL 0
SVAL false
VAL 0
1.svHmIPRainCounterToday_2205:
VALUES:
NVAL 0.000000
ONVAL 0.000000
OSVAL 0.0
OVAL 0.000000
SVAL 0.0
VAL 0.000000
1.svHmIPRainCounterYesterday_2205:
VALUES:
NVAL 0.000000
ONVAL 0.000000
OSVAL 0.0
OVAL 0.000000
SVAL 0.0
VAL 0.000000
1.svHmIPSunshineCounterToday_2205:
VALUES:
NVAL 725.000000
ONVAL 725.000000
OSVAL 725.0
OVAL 725.000000
SVAL 725.0
VAL 725.000000
1.svHmIPSunshineCounterYesterday_2205:
VALUES:
NVAL 725.000000
ONVAL 725.000000
OSVAL 725.0
OVAL 725.000000
SVAL 725.0
VAL 725.000000
roleCmds:
get:
set:
state:
chn 1
dpt ACTUAL_TEMPERATURE
Attributes:
userReadings temperatur_alt { OldReadingsNum("Wetterstation","ACTUAL_TEMPERATURE",0) }
Welches Reading muss in attr Wettertation oldreadings [Reading]
?
Immer das, wovon du das oldreading möchtest.
attr Wettertation oldreadings ACTUAL_TEMPERATURE
Begrenzte noch das Userreading, damit es nicht auf alles reagiert ( systemlast)
userReadings temperatur_alt:ACTUAL_TEMPERATURE.* { OldReadingsNum("Wetterstation","ACTUAL_TEMPERATURE",0)}
Ob das Ersetzen des Defaultwertes durch ReadingsVal funktioniert, kann ich dir nicht sagen. Das musst du probieren.
Zitat von: frober am 14 Juni 2022, 21:37:37
Immer das, wovon du das oldreading möchtest.
attr Wettertation oldreadings ACTUAL_TEMPERATURE
Genau dieser Baustein hat mir gefehlt. Es funktioniert jetzt. Vielen Dank!
Das Reading sieht nun so aus:
userReadings temperatur_alt:ACTUAL_TEMPERATURE.* { OldReadingsNum("Wetterstation","ACTUAL_TEMPERATURE",ReadingsVal(("Wetterstation","ACTUAL_TEMPERATURE",0)) }
Dann setze den Thread im ersten Post bitte auf gelöst.