Hauptmenü

falsches Zeitformat

Begonnen von privat58, 28 November 2024, 18:00:18

Vorheriges Thema - Nächstes Thema

privat58

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.

Damian

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

privat58

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