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.
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
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.
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
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"}
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}
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) }
Hi, Danke fuer die Tipps, funktioniert aber leider beides nicht.
???
Ok
dieses reading "1_date_state_requiredService_4_dateTime" gibt es gar nicht! ;)
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_dat
a_state_requiredService
s_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
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}
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_...
ZitatHabs korrigiert
nein.
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.
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.
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_dat
e_state_requiredService_4_dateTime", wenn doch das Reading "1_dat
a_state_requiredService_4_dateTime" heißt?
Und:
Mein ursprünglicher Vorschlag war doch bereits "$2-$1".
Gruß
Dan
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
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
Danke, na klar das is es, da hab ich gar nicht dran gedacht.
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
Hi, ja funktionirt, Danke nochmals, Thema geschlossen.