FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Heiner am 26 Dezember 2022, 09:35:11

Titel: Timestamp reading
Beitrag von: Heiner am 26 Dezember 2022, 09:35:11
Wie krieg ich den Timestamp reading (json extrakt eines MQTT Devices) fuer die naechste Inspektion auf Jahr und Monat reduziert?

Das Reading zeigt:
2024-07-01T00:00:00.000Z
in einer ReadingGroup mit attr valueFormat und %1i bekomme ich das Jahr aber leider bekome ich auch mit %2i nicht den Monat.
Titel: Antw:Timestamp reading
Beitrag von: DeeSPe am 26 Dezember 2022, 10:10:20
Mit einem "userReadings" z.B.:
attr <NAME> userReadings Inspektion:<TIMESTAMP READING> {ReadingsVal('<NAME>','<TIMESTAMP READING>','') =~ /^(\d\d\d\d)-(\d\d)-.*$/; return "$2-$1"}

Gruß
Dan
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 26 Dezember 2022, 14:09:24
Danke aber Ich kriegs nicht hin.

mein MQTT2Device heisst: 225xe
Das reading heisst:1_date_state_requiredService_4_dateTime

Ich mach nun ein attr 225xe userreadings 225xe:Inspektion {ReadingsVal('225xe':'1_date_state_requiredService_4_dateTime','') =~ /^(\d\d\d\d)-(\d\d)-.*$/; return "$2-$1"}

das erzeugt mir aber kein neues Reading mit dem Namen Inspektion an.
Titel: Antw:Timestamp reading
Beitrag von: MadMax-FHEM am 26 Dezember 2022, 14:16:26
1. userreadings vs. userReadings (evtl. nur ein "poste-Fehler"?)

2. das "neue" Reading hieße dann bei dir 225xe

3. der Trigger, bei dem das userReadings "berechnet" wird heißt bei dir Inspektion / ich bin sicher, dass es den nicht gibt -> keine "Berechnung" des userReadings

4. das "neue" Reading wird nur "erzeugt", wenn das userReadings auch "getriggert" wird, siehe 3.

Steht in der commandref und im Wiki (https://wiki.fhem.de/wiki/UserReadings)

also


attr DeviceNameWoDasNeueReadingHinSoll userReadings NeuerReadingName:TriggerWannDasUserReadingsBerechnetWerdenSoll {"Berechnungsformel"}


"Code-Tags" wären auch nett...
Und ein list des Devices hilfreich ;)

Siehe: https://forum.fhem.de/index.php/topic,71806.0.html

EDIT: wenn das hier stimmt
Zitat
mein MQTT2Device heisst: 225xe
Das reading heisst:1_date_state_requiredService_4_dateTime
dann könnte es so aussehen

attr 225xe userReadings Inspektion:1_date_state_requiredService_4_dateTime {ReadingsVal($name,'1_date_state_requiredService_4_dateTime','') =~ /^(\d\d\d\d)-(\d\d)-.*$/; return "$2-$1"}


Gruß, Joachim
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 26 Dezember 2022, 18:07:15
Hallo, klappt leider immer noch nicht:

Hier das Devicelist mit reduzierter Anzahl an readings:

Internals:
   FUUID      63a47e9b-f33f-f57f-1ded-5f65295f111dc27a
   IODev      MQTTServer
   LASTInputDev MQTTServer
   MQTTServer_CONN MQTTServer_127.0.0.1_46952
   MQTTServer_MSGCNT 36
   MQTTServer_TIME 2022-12-26 16:52:51
   MSGCNT     36
   NAME       225xe
   NR         407
   STATE      NOT_CHARGING
   TYPE       MQTT2_DEVICE
   eventCount 36
   READINGS:
     2022-12-26 16:52:51   1_available_attributes_1 gps_position
     2022-12-26 16:52:51   1_available_attributes_10 remaining_battery_percent
     2022-12-26 16:52:51   1_available_attributes_11 remaining_range_electric
     2022-12-26 16:52:51   1_available_attributes_12 last_charging_end_result
     2022-12-26 16:52:51   1_available_attributes_13 remaining_fuel
     2022-12-26 16:52:51   1_available_attributes_14 remaining_range_fuel
     2022-12-26 16:52:51   1_available_attributes_15 remaining_fuel_percent
     2022-12-26 16:52:51   1_available_attributes_16 condition_based_services
     2022-12-26 16:52:51   1_available_attributes_17 check_control_messages
     2022-12-26 16:52:51   1_available_attributes_18 door_lock_state
     2022-12-26 16:52:51   1_available_attributes_19 timestamp
     2022-12-26 16:52:51   1_available_attributes_2 vin
     2022-12-26 16:52:51   1_available_attributes_20 lids
     2022-12-26 16:52:51   1_available_attributes_21 windows
     2022-12-26 16:52:51   1_available_attributes_3 remaining_range_total
     2022-12-26 16:52:51   1_available_attributes_4 mileage
     2022-12-26 16:52:51   1_available_attributes_5 charging_time_remaining
     2022-12-26 16:52:51   1_available_attributes_6 charging_end_time
     2022-12-26 16:52:51   1_available_attributes_7 charging_time_label
     2022-12-26 16:52:51   1_available_attributes_8 charging_status
     2022-12-26 16:52:51   1_available_attributes_9 connection_status
     2022-12-26 16:52:51   1_brand         bmw
     2022-12-26 16:52:51   1_charging_profile_charging_mode IMMEDIATE_CHARGING
     2022-12-26 16:52:51   1_charging_profile_charging_preferences CHARGING_WINDOW
     2022-12-26 16:52:51   1_charging_profile_departure_times_1__timer_dict_action DEACTIVATE
     2022-12-26 16:52:51   1_charging_profile_departure_times_1__timer_dict_id 1
     2022-12-26 16:52:51   1_charging_profile_departure_times_1__timer_dict_timeStamp_hour 8
     2022-12-26 16:52:51   1_charging_profile_departure_times_1__timer_dict_timeStamp_minute 0
     2022-12-26 16:52:51   1_charging_profile_departure_times_1_action DEACTIVATE
     2022-12-26 16:52:51   1_data_state_requiredServices_4_dateTime 2024-07-01T00:00:00.000Z
     2022-12-26 16:52:51   1_data_state_requiredServices_4_description Next service due by the specified date.
     2022-12-26 16:52:51   1_data_state_requiredServices_4_status OK
     2022-12-26 16:52:51   1_data_state_requiredServices_4_type BRAKE_FLUID
     2022-12-26 16:52:51   1_vin           XXX
     2022-12-23 15:21:18   IODev           MQTTServer
Attributes:
   autocreate 0
   devStateIcon FINISHED_FULLY_CHARGED.*:electric_car_charger@green CHARGING.*:electric_car_icon@orange NOT_CHARGING:car@yellow
   icon       car
   readingList /BMW/Status:.* { json2nameValue($EVENT) }
   room       Garage
   stateFormat 1_fuel_and_battery_charging_status
   userReadings Inspektion:1_date_state_requiredServices_4_dateTime {ReadingsVal($name,'1_date_state_requiredServices_4_dateTime','') =~ /^(\d\d\d\d)-(\d\d)-.*$/; return "$2-$1"}
Titel: Antw:Timestamp reading
Beitrag von: Beta-User am 26 Dezember 2022, 18:30:08
Der trigger-Ausdruck ist m.E. zu kurz, eher so:
attr 225xe userReadings Inspektion:1_date_state_requiredService_4_dateTime:.* {ReadingsVal($name,'1_date_state_requiredService_4_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$1-$2":undef}
Titel: Antw:Timestamp reading
Beitrag von: CoolTux am 26 Dezember 2022, 18:31:49
use feature qw /say/;

my $t = '2024-07-01T00:00:00.000Z';


$t = substr($t, 0, 7);

say $t;



attr 225xe userReadings Inspektion:1_date_state_requiredService_4_dateTime:.* { return substr(ReadingsVal($name,'1_date_state_requiredService_4_dateTime','0000-00-00T00:00:00.000Z'),0,7) }
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 26 Dezember 2022, 23:28:32
Hi, Danke fuer die Tipps, funktioniert aber leider beides nicht.
Titel: Antw:Timestamp reading
Beitrag von: CoolTux am 26 Dezember 2022, 23:43:31
???


Ok
Titel: Antw:Timestamp reading
Beitrag von: frank am 27 Dezember 2022, 01:05:15
dieses reading "1_date_state_requiredService_4_dateTime" gibt es gar nicht!  ;)
Titel: Antw:Timestamp reading
Beitrag von: MadMax-FHEM am 27 Dezember 2022, 01:11:08
Zitat von: frank am 27 Dezember 2022, 01:05:15
dieses reading "1_date_state_requiredService_4_dateTime" gibt es gar nicht!  ;)

Stimmt, hab auch bestimmt tausend mal geschaut aber tatsächlich:

1_date_state_requiredService_4_dateTime vs. 1_data_state_requiredServices_4_dateTime

1_data_state_requiredServices_4_dateTime

Damit siehe 3. und 4. von hier: https://forum.fhem.de/index.php/topic,131158.msg1253611.html#msg1253611
Und auch mein EDIT: wenn die Dinge stimmen ;) (stimmten halt nicht / daher besser lists [möglichst sofort] bevor irgendwas aus dem Kopf geschrieben wird und alle in die Irre führt)

D.h. für eine der genannten Varianten entscheiden und den Trigger anpassen ;)
...und auch die Abfrage bei ReadingsVal in der "Berechnung"...

Gruß, Joachim
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 27 Dezember 2022, 09:36:06
Hi,

so ein Mist, immer dieser Typ vor der Tastatur. Habs korrigiert geht aber immer noch nicht.

Hier das neuste Listing:
Internals:
   FUUID      63a47e9b-f33f-f57f-1ded-5f65295f111dc27a
   IODev      MQTTServer
   LASTInputDev MQTTServer
   MQTTServer_CONN MQTTServer_127.0.0.1_52542
   MQTTServer_MSGCNT 43
   MQTTServer_TIME 2022-12-27 08:54:07
   MSGCNT     43
   NAME       225xe
   NR         407
   STATE      NOT_CHARGING
   TYPE       MQTT2_DEVICE
   eventCount 43
   READINGS:
     ...
     2022-12-27 08:54:06   1_data_state_requiredServices_4_dateTime 2024-07-01T00:00:00.000Z
     2022-12-27 08:54:06   1_data_state_requiredServices_4_description Next service due by the specified date.
     2022-12-27 08:54:06   1_data_state_requiredServices_4_status OK
     2022-12-27 08:54:06   1_data_state_requiredServices_4_type BRAKE_FLUID
     ...
     2022-12-23 15:21:18   IODev           MQTTServer
Attributes:
   autocreate 0
   devStateIcon FINISHED_FULLY_CHARGED.*:electric_car_charger@green CHARGING.*:electric_car_icon@orange NOT_CHARGING:car@yellow
   icon       car
   readingList /BMW/Status:.* { json2nameValue($EVENT) }
   room       Garage
   stateFormat 1_fuel_and_battery_charging_status
   userReadings Inspektion:1_date_state_requiredServices_4_dateTime:.* {ReadingsVal($name,'1_date_state_requiredServices_4_dateTime  ','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$1-$2":undef}
Titel: Antw:Timestamp reading
Beitrag von: OdfFhem am 27 Dezember 2022, 09:50:56
Zitat von: Heiner am 27 Dezember 2022, 09:36:06
Hier das neuste Listing:

einen Typo bereinigt, ein weiterer ist noch enthalten:

Das Reading beginnt mit 1_data_... und nicht mit 1_date_...
Titel: Antw:Timestamp reading
Beitrag von: frank am 27 Dezember 2022, 09:51:08
ZitatHabs korrigiert
nein.
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 27 Dezember 2022, 17:58:41
Oh man, so doof kann man ja gar nicht sein, Tausendmal Entschuldigung, sehr peinlich. Jetzt klappt es natuerlich auch.
Vielen Dank fuer die Hilfe und die Geduld mit mir.
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 02 Januar 2023, 21:03:49
Hallo nochmal,

ich hab noch 2 Fragen:
Also dieser Coder funktioniert:
attr 225xe userReadings Inspektion:1_date_state_requiredService_4_dateTime:.* {ReadingsVal($name,'1_date_state_requiredService_4_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$1-$2":undef}

und bringt ein Ergebnis wie z.B. 2022-12

muesste nicht, wenn ich S1 und $ 2 tausche es also heisst ...$2-$1....
Das Ergebnis so aussehen:   12-2022? Leider passiert das nicht, das Ergebnis bleibt wie es ist.

Und zweitens wenn der urspruengliche Timstamp in GMT ist und ich auf Stunde Minute filtere, wie bekomme ich die Zeit nach CET. Dabei will ich eigentlich nicht nur +1h rechnen wollen, sondern lieber die Zeitzone verwenden damit ich auch immer richtig bei Sommer und Winterzeit bin.

Danke fuer die Info.


Titel: Antw:Timestamp reading
Beitrag von: DeeSPe am 02 Januar 2023, 21:22:09
Zitat von: Heiner am 02 Januar 2023, 21:03:49
Also dieser Coder funktioniert:
attr 225xe userReadings Inspektion:1_date_state_requiredService_4_dateTime:.* {ReadingsVal($name,'1_date_state_requiredService_4_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$1-$2":undef}

Ich glaube nicht dass das funktioniert, weil:
Wieso nun wieder "1_date_state_requiredService_4_dateTime", wenn doch das Reading "1_data_state_requiredService_4_dateTime" heißt?

Und:
Mein ursprünglicher Vorschlag war doch bereits "$2-$1".

Gruß
Dan
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 03 Januar 2023, 09:26:42
Hi,

du hast natuerlich recht es heisst:

attr 225xe userReadings Inspektion:1_data_state_requiredService_4_dateTime:.* {ReadingsVal($name,'1_data_state_requiredService_4_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$1-$2":undef}

aber es liefert den gleichen Output wie:

attr 225xe userReadings Inspektion:1_data_state_requiredService_4_dateTime:.* {ReadingsVal($name,'1_data_state_requiredService_4_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$2-$1":undef}


das Device listing sieht im ganzen so aus:
Zitat
Save config
Tablet-UI
ESPHome
Garage
Garten
Heizung
MQTT
Photovoltaik
Pool
Schalter
Tablet
Unsorted
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
Internals:
   FUUID      63a47e9b-f33f-f57f-1ded-5f65295f111dc27a
   IODev      MQTTServer
   LASTInputDev MQTTServer
   MQTTServer_CONN MQTTServer_127.0.0.1_60826
   MQTTServer_MSGCNT 631
   MQTTServer_TIME 2023-01-03 09:10:23
   MSGCNT     631
   NAME       225xe
   NR         406
   STATE      NOT_CHARGING/
SECURED
   TYPE       MQTT2_DEVICE
   eventCount 631
   READINGS:
     ...
     2023-01-03 09:10:23   1_data_fetched_at 2023-01-03T08:10:19.190658+00:00
     ...
     2023-01-03 09:10:23   1_data_state_currentMileage 35918
     2023-01-03 09:10:23   1_data_state_doorsState_combinedSecurityState SECURED
     ...
     2023-01-03 09:10:23   1_data_state_lastFetched 2023-01-03T08:10:22.557Z
     ...
     2023-01-03 09:10:23   1_data_state_requiredServices_1_dateTime 2024-07-01T00:00:00.000Z
     2023-01-03 09:10:23   1_data_state_requiredServices_1_description Next state inspection due by the specified date.
     2023-01-03 09:10:23   1_data_state_requiredServices_1_status OK
     2023-01-03 09:10:23   1_data_state_requiredServices_1_type VEHICLE_TUV
     2023-01-03 09:10:23   1_data_state_requiredServices_2_dateTime 2023-07-01T00:00:00.000Z
     2023-01-03 09:10:23   1_data_state_requiredServices_2_description Next service due after the specified distance or date.
     2023-01-03 09:10:23   1_data_state_requiredServices_2_mileage 20000
     2023-01-03 09:10:23   1_data_state_requiredServices_2_status OK
     2023-01-03 09:10:23   1_data_state_requiredServices_2_type OIL
     2023-01-03 09:10:23   1_data_state_requiredServices_3_dateTime 2023-07-01T00:00:00.000Z
     2023-01-03 09:10:23   1_data_state_requiredServices_3_description Next vehicle check due after the specified distance or date.
     2023-01-03 09:10:23   1_data_state_requiredServices_3_mileage 20000
     2023-01-03 09:10:23   1_data_state_requiredServices_3_status OK
     2023-01-03 09:10:23   1_data_state_requiredServices_3_type VEHICLE_CHECK
     2023-01-03 09:10:23   1_data_state_requiredServices_4_dateTime 2024-07-01T00:00:00.000Z
     2023-01-03 09:10:23   1_data_state_requiredServices_4_description Next service due by the specified date.
     2023-01-03 09:10:23   1_data_state_requiredServices_4_status OK
     2023-01-03 09:10:23   1_data_state_requiredServices_4_type BRAKE_FLUID
     ...
    2023-01-03 09:10:23   1_doors_and_windows_door_lock_state SECURED
     ...
     2023-01-03 09:10:23   1_fuel_and_battery_account_timezone CET
     2023-01-02 10:57:03   1_fuel_and_battery_charging_end_time 2023-01-02T10:04:59.403272+00:00
     2023-01-03 09:10:23   1_fuel_and_battery_charging_status NOT_CHARGING
     2023-01-03 09:10:23   1_fuel_and_battery_is_charger_connected false
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_battery_percent 100
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_fuel_1 27
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_fuel_2 L
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_range_electric_1 36
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_range_electric_2 km
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_range_fuel_1 385
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_range_fuel_2 km
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_range_total_1 421
     2023-01-03 09:10:23   1_fuel_and_battery_remaining_range_total_2 km
     ...
    2022-12-27 18:37:02   Bremsen         2024-07
     2023-01-02 10:57:03   ChargingEndTime 10:04
     2022-12-27 17:35:48   IODev           MQTTServer
     2022-12-27 18:37:02   Inspektion      2023-07
     2023-01-03 09:10:23   Lastseen        08:10
     2022-12-27 18:37:02   Oel             2023-07
     2022-12-27 18:37:02   TUV             2024-07
Attributes:
   autocreate 0
   devStateIcon FINISHED_FULLY_CHARGED.*:electric_car_charger@green
CHARGING.*:electric_car_icon@orange
NOT_CHARGING.*:car@yellow
UNLOCKED.*:secur_open@orange
SECURED.*:secur_locked@green
   event-on-change-reading .*
   icon       car
   readingList /BMW/Status:.* { json2nameValue($EVENT) }
   room       Garage
   stateFormat 1_fuel_and_battery_charging_status/
1_doors_and_windows_door_lock_state
   userReadings TUV:1_data_state_requiredServices_1_dateTime:.* {ReadingsVal($name,'1_data_state_requiredServices_1_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$1-$2":undef},
Oel:1_data_state_requiredServices_2_dateTime:.* {ReadingsVal($name,'1_data_state_requiredServices_2_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$1-$2":undef},
Inspektion:1_data_state_requiredServices_3_dateTime:.* {ReadingsVal($name,'1_data_state_requiredServices_3_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$2-$1":undef},
Bremsen:1_data_state_requiredServices_4_dateTime:.* {ReadingsVal($name,'1_data_state_requiredServices_4_dateTime','') =~ m/^(\d\d\d\d)-(\d\d)-/? "$2-$1":undef},
ChargingEndTime:1_fuel_and_battery_charging_end_time:.* {ReadingsVal($name,'1_fuel_and_battery_charging_end_time','') =~ m/^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d)./? "$4:$5":undef},
Lastseen:1_data_state_lastFetched.* {ReadingsVal($name,'1_data_state_lastFetched','') =~ m/^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d)/? "$4:$5":undef}

Wie man sieht habe ich mehrere timestamps und man sieht auch das Ergebnis: Tuev und Oel bringen gleiches format wie Inspektion und Bremsen. obwohl einmal mit $1-$2 und einmal mit $2-$1
Und konsequent weitergefuehrt auf die Uhrzeit ist dann ChargingEndTime und Lastseen aber halt nicht in CET
Titel: Antw:Timestamp reading
Beitrag von: DeeSPe am 03 Januar 2023, 10:13:28
Am Timestamp deiner userReadings sieht man doch eindeutig dass diese (bis auf 2) dieses Jahr noch gar nicht aktualisiert wurden.
Das liegt an "event-on-change-reading".
Mit der Umrechnung in CET kann ich dir leider gerade nicht helfen.

Gruß
Dan
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 03 Januar 2023, 20:03:01
Danke, na klar das is es, da hab ich gar nicht dran gedacht.

Titel: Antw:Timestamp reading
Beitrag von: DeeSPe am 10 Januar 2023, 22:53:28
Funktionieren Deine userReadings jetzt wie gewünscht?
Für das Zeitproblem hattest Du ja ein eigenes Thema aufgemacht, das sollte also hoffentlich mittlerweile auch funktionieren!?

Gruß
dan
Titel: Antw:Timestamp reading
Beitrag von: Heiner am 23 Januar 2023, 11:26:09
Hi, ja funktionirt, Danke nochmals, Thema geschlossen.