FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: privat58 am 28 November 2024, 18:00:18

Titel: falsches Zeitformat
Beitrag von: privat58 am 28 November 2024, 18:00:18
Hallo, ich nutze einen AMS-reader um meinen Stromzähler auszulesen. Per MQTT gehen diese Daten an fhem.
Dabei wird ua ein Reading angelegt "cheapest_1hr" mit einem Zeitstempel "2024-11-29T03:00:00Z"
Das selbe auch für die billigsten 3h oder 6h.
Dieses würde ich gern in einem DOIF benutzen, um meine Batterie zu laden. Bekomme aber da den Fehler des falschen Zeitformats.
Internals:
   CFGFN     
   DEF        ##wenn AMS-reader billigste Zeit dann dummy an
([[AMS_Reader:cheapest_1hr]])
(set AMS_1h_laden_Dummy on, set AMS_1h_laden_Dummy off)


   FUUID      674850b6-f33f-7b6c-5f28-b8fedff03e9d4833
   MODEL      FHEM
   NAME       AMS_1h_laden_DOIF
   NOTIFYDEV  global,AMS_Reader
   NR         776354
   NTFY_ORDER 50-AMS_1h_laden_DOIF
   STATE      initialized
   TYPE       DOIF
   VERSION    28546 2024-02-23 20:11:05
   eventCount 16
   .attraggr:
   .attrminint:
   READINGS:
     2024-11-28 17:55:15   cmd             0
     2024-11-28 17:55:15   mode            enabled
     2024-11-28 17:55:15   state           initialized
     2024-11-28 17:55:15   timer_01_c01    error: Wrong timespec 2024-11-29T03:00:00Z: either HH:MM:SS or {perlcode}
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     itimer:
       AMS_Reader:
         itimer:
           cheapest_1hr ^AMS_Reader$:^cheapest_1hr:
   attr:
     cmdState:
     wait:
       0:
         0
         3600
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
   do:
     0:
       0          set AMS_1h_laden_Dummy on, set AMS_1h_laden_Dummy off
     1:
   helper:
     NOTIFYDEV  global,AMS_Reader
     globalinit 1
     last_timer 1
     sleeptimer -1
     bm:
       DOIF_Notify:
         cnt        52
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        28.11. 17:55:20
         max        0.000130891799926758
         tot        0.00359725952148438
         mAr:
           HASH(0x560677244f18)
           HASH(0x560672c99008)
       DOIF_Set:
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        28.11. 17:55:15
         max        3.50475311279297e-05
         tot        6.19888305664062e-05
         mAr:
           HASH(0x560677244f18)
           AMS_1h_laden_DOIF
           ?
   localtime:
   time:
     0          [AMS_Reader:cheapest_1hr]
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   uiState:
   uiTable:
Attributes:
   do         always
   room       AMS_reader
   wait       0,3600
Kann ich dies mit Perl umgehen oder eventuell mit einem userreading im device AMS_Reader?
Vielen Dank.
Titel: Aw: falsches Zeitformat
Beitrag von: Damian am 29 November 2024, 10:01:10
DOIF unterstützt das Zeitformat nicht. Du kannst ggf. HH:MM:SS aus dem Reading extrahieren und dann als Zeitpunkt angeben. Die Zeitangabe gilt aber immer für tägliche Triggerung. Datumsangaben werden als Trigger nicht unterstützt.

siehe: https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen

bei dir sollte das hier funktionieren:

[[AMS_Reader:cheapest_1hr:"(\d\d:\d\d:\d\d)"]]
 
Titel: Aw: falsches Zeitformat
Beitrag von: privat58 am 29 November 2024, 12:03:02
Danke,
das hilft schon mal viel weiter. Das Reading wird jeden Tag gegen 13Uhr gesetzt, das sollte funktionieren. Da ich ich einen Stundentarif habe, würde ich das halt nutzen wollen um die Laptops etc zu laden. Ist ein Unterschied,
ob man 15ct/kWh oder 40ct/kWh bezahlt.
mvh