FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Prof. Dr. Peter Henning am 30 Januar 2025, 11:32:02

Titel: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 30 Januar 2025, 11:32:02
Nachdem ich mit einem meiner FHEM-Server seit ca. 1 Monat erhebliche Probleme habe, ist der Übeltäter jetzt als MQTT identifiziert.

Ich habe meinen VW ID7 über MQTT an FHEM angekoppelt. Dazu läuft auf einer anderen Maschine ein kleiner Python-Server, der die Daten von VW abholt und an einen MQTT-Server sendet (und natürlich in umgekehrter Richtung). Die von VW gelieferte Datenmenge variiert sehr stark - zeitweise sind das etliche 100 kB alle 5 Minuten.

Nach einem nicht näher bestimmbaren Zeitraum - zwischen ein paar Tagen und 2 Wochen - wächst der CPU-Load des FHEM-Prozesses auf 100% an, und fast nichts geht mehr. Wenn ich die Ankopplung von FHEM an den MQTT-Server abschieße, verschwindet das Problem.

Erstaunlicherweise ist das unabhängig davon, ob ich

a.) den MQTT-Server intern als MQTT2_SERVER betreibe, an den die MQTT2-Devices direkt angebunden sind. Der "Abschuss" besteht in diesem Fall einfach darin, das MQTT2_Server-Device brutal zu löschen.

Oder

b.) den MQTT-Server extern als Mosquitto betreibe, an den ich die MQTT2-Devices von FHEM via MQTT2_CLIENT anbinde. Der "Abschuss" besteht in diesem Fall einfach darin, das MQTT2_CLIENT-Device brutal zu löschen.

Ich frage jetzt erstmal in die Runde, ob es irgendwelche Ideen für die weitere Eingrenzung gibt.

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: CQuadrat am 30 Januar 2025, 12:06:15
Ich habe ja eine ähnliche Installation habe aber keine diesbezüglichen Probleme.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 30 Januar 2025, 12:38:55
Mosquitto oder MQTT2_Server?

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: MarkusN am 30 Januar 2025, 12:59:03
Ich nutze MQTT2_Server und habe mehrere Victron Systeme angebunden. Ich sehe auch eine hohe CPU Auslastung, mit 10-15 Events pro Sekunde. Da ich das aber auch in richtung InfluxDB wegschreibe (anderer Container) kann ich nicht genau sagen ob das auch zur CPU Auslastung beiträgt.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: betateilchen am 30 Januar 2025, 13:16:41
Da Dein "Problem" sowohl bei MQTT2_SERVER als auch bei mosquitto besteht, würde ich mit der Ursachenforschung an der Quelle der Daten beginnen.

Zitat von: Prof. Dr. Peter Henning am 30 Januar 2025, 11:32:02Dazu läuft auf einer anderen Maschine ein kleiner Python-Server, der die Daten von VW abholt und an einen MQTT-Server sendet

Mich würde interessieren, wie das publish an den MQTT Server aussieht.

Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: CQuadrat am 30 Januar 2025, 13:22:03
Zitat von: Prof. Dr. Peter Henning am 30 Januar 2025, 12:38:55Mosquitto oder MQTT2_Server?

Bei mir läuft ein eigenständiger Mosquitto-Server, der via MQTT2_CLIENT angebunden ist.

Allerdings konnte ich schon einige Male beobachten, dass sich der Python-Server aufhing.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: marvin78 am 30 Januar 2025, 13:26:34
Ich beobachte auch immer mal wieder, dass sich die Last bis auf 100% hochschaukelt. Leider in unregelmäßigen Abständen. Ich habe auch schon eine Weile MQTT im Verdacht. Ich habe lange Zeit MQTT_SERVER verwendet und bin wegen des Verdachts, dass die hohe Last mit MQTT zusammenhängt, auf Mosquitto gewechselt (ein LXC). Seit dem ist es besser geworden aber sporadisch geht die Last noch immer nach oben. Die Anzahl der Events, die durch Mosquitto ausgelöst werden, ist jedoch relativ Konstant. Es gibt nichts, das zu irgendeiner Zeit eine besonders hohe Anzahl an Events produziert. Ich frage mich trotzdem, ob hier irgendwann durch einen Auslöser, den ich noch nicht gefunden habe, ein Flaschenhals an irgendeiner Stelle entsteht. Die Antwort darauf habe ich noch nicht.

InfluxDB verwende ich auch und das Zusammenspiel ist ebenfalls nicht ohne, was die Last angeht. Ich habe schon einmal den Versuch gestartet, das Modul InfluxDBLogger zu optimieren, meine Zeit lässt das allerdings aktuell gar nicht zu. 
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 30 Januar 2025, 16:41:24
Ich habe die Anbindung von MQTT ja schon lange laufen, allerdings vorwiegend mit kleinen Geräten, die - sagen wir mal - einmal pro Minute ein paar Daten senden. Die richtige Belastung (und damit die Probleme) gibt es erst seit der Anbindung des ID7.

Nachstehend mal alle Topics, die per autocreate erzeugt werden (<VIN> ist die Vehicle Identificaton Number). Natürlich braucht man die nicht alle, viele habe ich auch einfach zu einem Reading zusammengebogen. Die Liste gibt aber einen Eindruck von dem Datenwust, den VW hier liefert.

Zum genauen "publish" kann ich noch nichts sagen. Möglicherweise liefert VW (oder der Python-Server) irgendwelche falschen Flags mit.

LG

pah
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/pictures/car:.* { WriteFile("www/images/ID7_car.png",$EVENT);; {img_car=>"<html><a href=\"fhem/www/images/ID7_car.png\">ID7_car.png</a></html>"} }
MQTTBridge:weconnect/vehicles/<VIN>/pictures/carWithBadge:.* { WriteFile("www/images/ID7_carWithBadge.png",$EVENT);; {img_carWithBadge=>"<html><a href=\"fhem/www/images/ID7_carWithBadge.png\">ID7_carWithBadge.png</a></html>"} }
MQTTBridge:weconnect/vehicles/<VIN>/pictures/status:.* { WriteFile("www/images/ID7_status.png",$EVENT);; {img_status=>"<html><a href=\"fhem/www/images/ID7_status.png\">ID7_status.png</a></html>"} }
MQTTBridge:weconnect/vehicles/<VIN>/pictures/statusWithBadge:.* { WriteFile("www/images/ID7_statusWithBadge.png",$EVENT);; {img_statusWithBadge=>"<html><a href=\"fhem/www/images/ID7_statusWithBadge.png\">ID7_statusWithBadge.png</a></html>"} }
MQTTBridge:weconnect/mqtt/weconnectUpdated:.* weconnectUpdated
MQTTBridge:weconnect/mqtt/topics:.* topics
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthInspection/maintenanceStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/connectionState/isActive:.* isActive
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthInspection/maintenanceStatus/mileage_km:.* mileage_km
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthWarnings/warningLights/mileage_km:.* mileage_km
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthWarnings/warningLights/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnectlocal/mqtt/weconnectCommand:.* weconnectCommand
MQTTBridge:weconnect/mqtt/weconnectConnected:.* weconnectConnected
MQTTBridge:weconnect/mqtt/weconnectUpdateInterval_s:.* weconnectUpdateInterval_s
MQTTBridge:weconnect/mqtt/weconnectConnected:.* weconnectConnected
MQTTBridge:weconnect/mqtt/error/code:.* code
MQTTBridge:weconnect/mqtt/error/message:.* message
MQTTBridge:weconnect/vehicles/<VIN>/vin:.* vin
MQTTBridge:weconnect/vehicles/<VIN>/role:.* role
MQTTBridge:weconnect/vehicles/<VIN>/enrollmentStatus:.* enrollmentStatus
MQTTBridge:weconnect/vehicles/<VIN>/userRoleStatus:.* userRoleStatus
MQTTBridge:weconnect/vehicles/<VIN>/model:.* model
MQTTBridge:weconnect/vehicles/<VIN>/devicePlatform:.* devicePlatform
MQTTBridge:weconnect/vehicles/<VIN>/nickname:.* nickname
MQTTBridge:weconnect/vehicles/<VIN>/brandCode:.* brandCode
MQTTBridge:weconnect/vehicles/<VIN>/images:.* images
MQTTBridge:weconnect/vehicles/<VIN>/tags:.* tags
MQTTBridge:weconnect/vehicles/<VIN>/coUsers/0/id:.* coUsers_0_id
MQTTBridge:weconnect/vehicles/<VIN>/coUsers/0/role:.* coUsers_0_role
MQTTBridge:weconnect/vehicles/<VIN>/coUsers/0/roleReseted:.* coUsers_0_roleReseted
MQTTBridge:weconnect/vehicles/<VIN>/coUsers/0/enrollmentStatus:.* coUsers_0_enrollmentStatus
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/overallStatus:.* overallStatus
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doorLockStatus:.* doorLockStatus
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/bonnet/lockState:.* lockState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/bonnet/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/trunk/lockState:.* lockState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/trunk/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/rearRight/lockState:.* lockState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/rearRight/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/rearLeft/lockState:.* lockState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/rearLeft/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/frontRight/lockState:.* lockState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/frontRight/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/frontLeft/lockState:.* lockState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/doors/frontLeft/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/windows/sunRoof/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/windows/roofCover/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/windows/sunRoofRear/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/windows/frontLeft/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/windows/frontRight/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/windows/rearLeft/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/windows/rearRight/openState:.* openState
MQTTBridge:weconnect/vehicles/<VIN>/domains/access/accessStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/enabled:.* timers_1_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/startTime:.* startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/targetTime:.* targetTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/recurringOn/mondays:.* mondays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/recurringOn/tuesdays:.* tuesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/recurringOn/wednesdays:.* wednesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/recurringOn/thursdays:.* thursdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/recurringOn/fridays:.* fridays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/recurringOn/saturdays:.* saturdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/recurringOn/sundays:.* sundays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/repetitionDays/monday:.* monday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/2/enabled:.* timers_2_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/2/singleTimer/startDateTime:.* startDateTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/2/singleTimer/targetDateTime:.* targetDateTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timeInCar:.* timeInCar
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/None/id:.* id
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/name:.* profiles_1_name
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/maxChargingCurrent:.* profiles_1_maxChargingCurrent
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/minSOC_pct:.* profiles_1_minSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/targetSOC_pct:.* profiles_1_targetSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/options/autoUnlockPlugWhenCharged:.* autoUnlockPlugWhenCharged
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/options/usePrivateCurrentEnabled:.* usePrivateCurrentEnabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/1/enabled:.* timers_1_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/1/climatisation:.* timers_1_climatisation
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/1/singleTimer/occurringOn:.* occurringOn
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/1/singleTimer/startTime:.* startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/enabled:.* timers_2_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/climatisation:.* timers_2_climatisation
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/startTime:.* startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/targetTime:.* targetTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/recurringOn/mondays:.* mondays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/recurringOn/tuesdays:.* tuesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/recurringOn/wednesdays:.* wednesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/recurringOn/thursdays:.* thursdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/recurringOn/fridays:.* fridays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/recurringOn/saturdays:.* saturdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/recurringOn/sundays:.* sundays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/repetitionDays/saturday:.* saturday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/2/recurringTimer/repetitionDays/sunday:.* sunday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/enabled:.* timers_3_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/climatisation:.* timers_3_climatisation
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/startTime:.* startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/targetTime:.* targetTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/recurringOn/mondays:.* mondays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/recurringOn/tuesdays:.* tuesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/recurringOn/wednesdays:.* wednesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/recurringOn/thursdays:.* thursdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/recurringOn/fridays:.* fridays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/recurringOn/saturdays:.* saturdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/recurringOn/sundays:.* sundays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/repetitionDays/monday:.* monday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/repetitionDays/tuesday:.* tuesday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/repetitionDays/wednesday:.* wednesday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/repetitionDays/thursday:.* thursday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/repetitionDays/friday:.* friday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/repetitionDays/saturday:.* saturday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/timers/3/recurringTimer/repetitionDays/sunday:.* sunday
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/None/id:.* id
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/1/enabled:.* preferredChargingTimes_1_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/1/startTime:.* preferredChargingTimes_1_startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/1/endTime:.* preferredChargingTimes_1_endTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/2/enabled:.* preferredChargingTimes_2_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/2/startTime:.* preferredChargingTimes_2_startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/2/endTime:.* preferredChargingTimes_2_endTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/3/enabled:.* preferredChargingTimes_3_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/3/startTime:.* preferredChargingTimes_3_startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/3/endTime:.* preferredChargingTimes_3_endTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4/enabled:.* preferredChargingTimes_4_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4/startTime:.* preferredChargingTimes_4_startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4/endTime:.* preferredChargingTimes_4_endTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/timeInCar:.* timeInCar
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/nextChargingTimer/targetSOCreachable:.* targetSOCreachable
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/batteryStatus/cruisingRangeElectric_km:.* cruisingRangeElectric_km
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/batteryStatus/currentSOC_pct:.* currentSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/batteryStatus/navigationTargetSOC_pct:.* navigationTargetSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/batteryStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/remainingChargingTimeToComplete_min:.* remainingChargingTimeToComplete_min
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/chargingState:.* chargingState
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/chargeMode:.* chargeMode
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/chargePower_kW:.* chargePower_kW
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/chargeRate_kmph:.* chargeRate_kmph
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/chargeType:.* chargeType
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/chargingSettings:.* chargingSettings
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/chargingScenario:.* chargingScenario
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingSettings/maxChargeCurrentAC:.* maxChargeCurrentAC
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingSettings/autoUnlockPlugWhenCharged:.* autoUnlockPlugWhenCharged
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingSettings/autoUnlockPlugWhenChargedAC:.* autoUnlockPlugWhenChargedAC
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingSettings/targetSOC_pct:.* targetSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingSettings/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargeMode/preferredChargeMode:.* preferredChargeMode
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargeMode/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/plugStatus/plugConnectionState:.* plugConnectionState
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/plugStatus/plugLockState:.* plugLockState
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/plugStatus/externalPower:.* externalPower
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/plugStatus/ledColor:.* ledColor
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/plugStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingCareSettings/batteryCareMode:.* batteryCareMode
MQTTBridge:weconnect/vehicles/<VIN>/domains/charging/chargingCareSettings/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/None/id:.* id
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/name:.* profiles_1_name
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/maxChargingCurrent:.* profiles_1_maxChargingCurrent
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/minSOC_pct:.* profiles_1_minSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/targetSOC_pct:.* profiles_1_targetSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/options/autoUnlockPlugWhenCharged:.* autoUnlockPlugWhenCharged
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/options/usePrivateCurrentEnabled:.* usePrivateCurrentEnabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/1/enabled:.* timers_1_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/1/climatisation:.* timers_1_climatisation
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/1/singleTimer/occurringOn:.* occurringOn
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/1/singleTimer/startTime:.* startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/enabled:.* timers_2_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/climatisation:.* timers_2_climatisation
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/startTime:.* startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/targetTime:.* targetTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/recurringOn/mondays:.* mondays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/recurringOn/tuesdays:.* tuesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/recurringOn/wednesdays:.* wednesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/recurringOn/thursdays:.* thursdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/recurringOn/fridays:.* fridays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/recurringOn/saturdays:.* saturdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/recurringOn/sundays:.* sundays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/repetitionDays/saturday:.* saturday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/2/recurringTimer/repetitionDays/sunday:.* sunday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/enabled:.* timers_3_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/climatisation:.* timers_3_climatisation
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/startTime:.* startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/targetTime:.* targetTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/recurringOn/mondays:.* mondays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/recurringOn/tuesdays:.* tuesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/recurringOn/wednesdays:.* wednesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/recurringOn/thursdays:.* thursdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/recurringOn/fridays:.* fridays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/recurringOn/saturdays:.* saturdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/recurringOn/sundays:.* sundays
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/repetitionDays/monday:.* monday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/repetitionDays/tuesday:.* tuesday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/repetitionDays/wednesday:.* wednesday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/repetitionDays/thursday:.* thursday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/repetitionDays/friday:.* friday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/repetitionDays/saturday:.* saturday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/timers/3/recurringTimer/repetitionDays/sunday:.* sunday
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/None/id:.* id
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/1/enabled:.* preferredChargingTimes_1_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/1/startTime:.* preferredChargingTimes_1_startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/1/endTime:.* preferredChargingTimes_1_endTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/2/enabled:.* preferredChargingTimes_2_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/2/startTime:.* preferredChargingTimes_2_startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/2/endTime:.* preferredChargingTimes_2_endTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/3/enabled:.* preferredChargingTimes_3_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/3/startTime:.* preferredChargingTimes_3_startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/3/endTime:.* preferredChargingTimes_3_endTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4/enabled:.* preferredChargingTimes_4_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4/startTime:.* preferredChargingTimes_4_startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4/endTime:.* preferredChargingTimes_4_endTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/timeInCar:.* timeInCar
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/nextChargingTimer/targetSOCreachable:.* targetSOCreachable
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/batteryChargingCare/chargingCareSettings/batteryCareMode:.* batteryCareMode
MQTTBridge:weconnect/vehicles/<VIN>/domains/batteryChargingCare/chargingCareSettings/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/climatisationState:.* climatisationState
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/remainingClimatisationTime_min:.* remainingClimatisationTime_min
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationSettings/targetTemperature_C:.* targetTemperature_C
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationSettings/targetTemperature_F:.* targetTemperature_F
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationSettings/unitInCar:.* unitInCar
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationSettings/climatizationAtUnlock:.* climatizationAtUnlock
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationSettings/windowHeatingEnabled:.* windowHeatingEnabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationSettings/zoneFrontLeftEnabled:.* zoneFrontLeftEnabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationSettings/zoneFrontRightEnabled:.* zoneFrontRightEnabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationSettings/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/windowHeatingStatus/windows/front/windowHeatingState:.* windowHeatingState
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/windowHeatingStatus/windows/rear/windowHeatingState:.* windowHeatingState
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/windowHeatingStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/enabled:.* timers_1_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/startTime:.* startTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/targetTime:.* targetTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/recurringOn/mondays:.* mondays
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/recurringOn/tuesdays:.* tuesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/recurringOn/wednesdays:.* wednesdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/recurringOn/thursdays:.* thursdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/recurringOn/fridays:.* fridays
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/recurringOn/saturdays:.* saturdays
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/recurringOn/sundays:.* sundays
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/repetitionDays/monday:.* monday
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/2/enabled:.* timers_2_enabled
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/2/singleTimer/startDateTime:.* startDateTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/2/singleTimer/targetDateTime:.* targetDateTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timeInCar:.* timeInCar
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/fuelStatus/rangeStatus/carType:.* carType
MQTTBridge:weconnect/vehicles/<VIN>/domains/fuelStatus/rangeStatus/primaryEngine/type:.* type
MQTTBridge:weconnect/vehicles/<VIN>/domains/fuelStatus/rangeStatus/primaryEngine/remainingRange_km:.* remainingRange_km
MQTTBridge:weconnect/vehicles/<VIN>/domains/fuelStatus/rangeStatus/primaryEngine/currentSOC_pct:.* currentSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/fuelStatus/rangeStatus/totalRange_km:.* totalRange_km
MQTTBridge:weconnect/vehicles/<VIN>/domains/fuelStatus/rangeStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleLights/lightsStatus/lights/right/status:.* status
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleLights/lightsStatus/lights/left/status:.* status
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleLights/lightsStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/connectionState/isOnline:.* isOnline
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/connectionState/isActive:.* isActive
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/connectionState/batteryPowerLevel:.* batteryPowerLevel
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/connectionState/dailyPowerBudgetAvailable:.* dailyPowerBudgetAvailable
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/connectionWarning/insufficientBatteryLevelWarning:.* insufficientBatteryLevelWarning
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/connectionWarning/dailyPowerBudgetWarning:.* dailyPowerBudgetWarning
MQTTBridge:weconnect/vehicles/<VIN>/domains/readiness/readinessStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthInspection/maintenanceStatus/inspectionDue_days:.* inspectionDue_days
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthInspection/maintenanceStatus/mileage_km:.* mileage_km
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthInspection/maintenanceStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthWarnings/warningLights/mileage_km:.* mileage_km
MQTTBridge:weconnect/vehicles/<VIN>/domains/vehicleHealthWarnings/warningLights/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/rangeStatus/totalRange_km:.* totalRange_km
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/rangeStatus/electricRange:.* electricRange
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/rangeStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/odometerStatus/odometer:.* odometer
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/odometerStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/temperatureBatteryStatus/temperatureHvBatteryMin_K:.* temperatureHvBatteryMin_K
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/temperatureBatteryStatus/temperatureHvBatteryMax_K:.* temperatureHvBatteryMax_K
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/temperatureBatteryStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/temperatureOutsideStatus/temperatureOutside_K:.* temperatureOutside_K
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/temperatureOutsideStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/fuelLevelStatus/currentSOC_pct:.* currentSOC_pct
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/fuelLevelStatus/primaryEngineType:.* primaryEngineType
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/fuelLevelStatus/carType:.* carType
MQTTBridge:weconnect/vehicles/<VIN>/domains/measurements/fuelLevelStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/domains/batterySupport/batterySupportStatus/batterySupport:.* batterySupport
MQTTBridge:weconnect/vehicles/<VIN>/domains/batterySupport/batterySupportStatus/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/parking/parkingPosition/latitude:.* latitude
MQTTBridge:weconnect/vehicles/<VIN>/parking/parkingPosition/longitude:.* longitude
MQTTBridge:weconnect/vehicles/<VIN>/parking/parkingPosition/carCapturedTimestamp:.* carCapturedTimestamp
MQTTBridge:weconnect/vehicles/<VIN>/controls/charging:.* charging
MQTTBridge:weconnect/vehicles/<VIN>/controls/climatisation:.* climatisation
MQTTBridge:weconnect/vehicles/<VIN>/controls/windowheating:.* windowheating
MQTTBridge:weconnect/mqtt/weconnectUpdated:.* weconnectUpdated
MQTTBridge:weconnect/mqtt/topics:.* topics
MQTTBridge:weconnect/mqtt/writeableTopics:.* writeableTopics
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4/id:.* preferredChargingTimes_4_id
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/profiles/1/preferredChargingTimes/4:.* preferredChargingTimes_4
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/chargingProfiles/nextChargingTimer:.* nextChargingTimer
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4/id:.* preferredChargingTimes_4_id
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/profiles/1/preferredChargingTimes/4:.* preferredChargingTimes_4
MQTTBridge:weconnect/vehicles/<VIN>/domains/chargingProfiles/chargingProfilesStatus/nextChargingTimer:.* nextChargingTimer
MQTTBridge:weconnect/vehicles/<VIN>/parking/parkingPosition:.* parkingPosition
MQTTBridge:weconnect/mqtt/weconnectForceUpdate_writetopic:.* weconnectForceUpdate_writetopic
MQTTBridge:weconnect/mqtt/weconnectForceUpdate:.* weconnectForceUpdate
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/status:.* status
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/operation:.* operation
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/body:.* { json2nameValue($EVENT, 'body_', $JSONMAP) }
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/requestId:.* requestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/vcfRequestId:.* vcfRequestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/status:.* status
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/operation:.* operation
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/body:.* { json2nameValue($EVENT, 'body_', $JSONMAP) }
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/requestId:.* requestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5/vcfRequestId:.* vcfRequestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5:.* 58fc8a06-ce65-493d-8ac6-f09ea08869c5
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request:.* request
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/58fc8a06-ce65-493d-8ac6-f09ea08869c5:.* 58fc8a06-ce65-493d-8ac6-f09ea08869c5
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request:.* request
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/recurringOn:.* recurringOn
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer/repetitionDays:.* repetitionDays
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/recurringTimer:.* timers_1_recurringTimer
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/singleTimer/startDateTime:.* startDateTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/timers/1/singleTimer/targetDateTime:.* targetDateTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/status:.* status
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/operation:.* operation
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/body:.* { json2nameValue($EVENT, 'body_', $JSONMAP) }
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/requestId:.* requestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/vcfRequestId:.* vcfRequestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/recurringOn:.* recurringOn
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer/repetitionDays:.* repetitionDays
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/recurringTimer:.* timers_1_recurringTimer
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/singleTimer/startDateTime:.* startDateTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/timers/1/singleTimer/targetDateTime:.* targetDateTime
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/status:.* status
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/operation:.* operation
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/body:.* { json2nameValue($EVENT, 'body_', $JSONMAP) }
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/requestId:.* requestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0/vcfRequestId:.* vcfRequestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/automation/climatisationTimer/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0:.* 2f7aecd3-1e1b-4791-afd3-8afd76759ba0
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisationTimers/climatisationTimersStatus/request/2f7aecd3-1e1b-4791-afd3-8afd76759ba0:.* 2f7aecd3-1e1b-4791-afd3-8afd76759ba0
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/request/0309a513-4338-4bf1-8e55-f9181513ac6e/status:.* status
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/request/0309a513-4338-4bf1-8e55-f9181513ac6e/operation:.* operation
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/request/0309a513-4338-4bf1-8e55-f9181513ac6e/body:.* { json2nameValue($EVENT, 'body_', $JSONMAP) }
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/request/0309a513-4338-4bf1-8e55-f9181513ac6e/requestId:.* requestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/request/0309a513-4338-4bf1-8e55-f9181513ac6e/vcfRequestId:.* vcfRequestId
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/request/0309a513-4338-4bf1-8e55-f9181513ac6e:.* 0309a513-4338-4bf1-8e55-f9181513ac6e
MQTTBridge:weconnect/vehicles/<VIN>/domains/climatisation/climatisationStatus/request:.* request
MQTTBridge:weconnect/vehicles/<VIN>/controls/climatisation_writetopic:.* climatisation_writetopic

Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 30 Januar 2025, 17:15:32
So, einen Schritt weiter.

Der VW-Server sendet auch Binärdaten (die zu richtig albernen PNG-Bildchen des Auto mit "Badges" ( = Schloss- oder Ladestecker-Symbolen) zusammengesetzt werden).
Das sind jeweils so zwischen 100 und 200 kB.

Ich habe jetzt festgestellt, dass der Mosquitto-Server diese Daten länger aufhebt - Kommando dafür
mosquitto_sub -u <user> -P <pass> -t "#" -v --retained-only
Derzeit habe ich den Verdacht, dass damit die Persistenzdatenbank von Mosquitto irgendwann überfordert ist.

Bei dem Python-Server kann man dafür sorgen, dass die Bildchen nicht geschickt werden, da habe ich jetzt mal eingestellt. Und natürlich mit
mosquitto_sub  --remove-retained -t '#' -W 1 den ganzen Müll gelöscht

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: rudolfkoenig am 31 Januar 2025, 12:44:05
ZitatDa Dein "Problem" sowohl bei MQTT2_SERVER als auch bei mosquitto besteht, würde ich mit der Ursachenforschung an der Quelle der Daten beginnen.
Eine Gemeinsamkeit liegt aber auch in der Verarbeitung in MQTT2_DEVICE.

Insb. kann eine grosse Anzahl von readingList Eintraegen zu viel CPU fuehren:
- wenn kein ClientID im readingList spezifiziert ist, dann werden die Eintraege fuer alle Clients durchprobiert
- wenn das Topic im readingList ein Regexp ist, dann werden alle Nachrichten gegen diesen Eintrag geprueft.
- die Kombination (kein ClientID und Regexp) ist Worst-Case, weil dagegen werden immer alle Nachrichten geprueft, auch die nochmal, die auch "bessere" Eintraege haben.

ZitatNach einem nicht näher bestimmbaren Zeitraum - zwischen ein paar Tagen und 2 Wochen - wächst der CPU-Load des FHEM-Prozesses auf 100% an
Das wird mit der obigen Bemerkung leider nicht erklaert.
Mein Setup hat zwar nur 11 MQTT2_DEVICE Eintraege, die minuetlich wenig Daten senden, laeuft aber seit 5 Monaten durch, und benutzt 1.5% CPU (vmtl. wegen einem seriellen Inputs, was mit 2.4kBaud dauersendet)
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 31 Januar 2025, 12:56:27
Nur damit ich Dich richtig verstehe:

ZitatMQTTBridge:weconnect2?/vehicles/xxxxxxx/domains/charging/batteryStatus/currentSOC_pct:.* SOC

erzeugt zusätzliche CPU-Last wegen "2?",

ZitatMQTTBridge:weconnect/vehicles/xxxxxxx/domains/charging/batteryStatus/currentSOC_pct:.* SOC
MQTTBridge:weconnect2/vehicles/xxxxxxx/domains/charging/batteryStatus/currentSOC_pct:.* SOC

wäre schneller?

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: rudolfkoenig am 31 Januar 2025, 13:06:49
Zitaterzeugt zusätzliche CPU-Last wegen "2?",
Richtig.
Bei der "2?" Variante werden alle anderen 300+ Nachrichten von MQTTBridge gegen diesen Regexp geprueft.
Bei der expliziten Variante wird jeweils nur das passende Topic nochmal samt Message gegen das Regexp geprueft.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: betateilchen am 31 Januar 2025, 13:50:48
Zitat von: Prof. Dr. Peter Henning am 30 Januar 2025, 16:41:24Nachstehend mal alle Topics, die per autocreate erzeugt werden (<VIN> ist die Vehicle Identificaton Number). Natürlich braucht man die nicht alle, ...
Die Liste gibt aber einen Eindruck von dem Datenwust, den VW hier liefert.

Vielleicht sollte autocreate einfach nach 20 angelegten readings in einem device aufhören, neue anzulegen und den Benutzer dazu auffordern, sich erstmal Gedanken darüber zu machen, welche readings er realistisch betrachtet wirklich "braucht".
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 31 Januar 2025, 18:15:01
Wenn die weiteren 150 Readings _nicht_ angelegt würden und auch der gesamte Datensatz nicht dokumentiert ist (à la VW), wüsste dann aber der Ersteller gar nicht, was da so alles einläuft.

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: passibe am 31 Januar 2025, 18:34:29
Zitat von: Prof. Dr. Peter Henning am 31 Januar 2025, 18:15:01wüsste dann aber der Ersteller gar nicht, was da so alles einläuft
Das geht doch mit "Show MQTT Traffic" im MQTT2_SERVER-Device oder mit Tools wie MQTT Explorer.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: betateilchen am 31 Januar 2025, 19:02:06
Zitat von: Prof. Dr. Peter Henning am 31 Januar 2025, 18:15:01Wenn die weiteren 150 Readings _nicht_ angelegt würden und auch der gesamte Datensatz nicht dokumentiert ist (à la VW), wüsste dann aber der Ersteller gar nicht, was da so alles einläuft.

Pragmatischer Lösungsvorschlag:

Man könnte die eingehenden readings in ihrer Gesamtheit in diesem Fall, wenn sie nicht angelegt werden, einmalig (!) ins Log schreiben, anstatt sie anzulegen.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 01 Februar 2025, 10:40:41
Zitat von: passibe am 31 Januar 2025, 18:34:29Show MQTT Traffic
Sorry, aber das ist Unsinn. Die Anzeige des Traffic ist nicht persistent, und wenn dutzende Nachrichten in kurzer Zeit einlaufen, auch nicht sinnvoll nutzbar.
Und der Hinweis auf externe Tools auch nicht zielführend.

Auch das "einmalige Schreiben ins Log" halte ich für überflüssig. Im Device wird ja jetzt bereits ein Attribut "topics" befüllt, aus dem man mit wenigen Klicks Inhalte in die readingList übernehmen kann.

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 01 Februar 2025, 12:46:29
Zitat von: betateilchen am 01 Februar 2025, 12:40:45Dauert maximal ein paar Minuten
Das ziehe ich bei dem Datenwust von VW doch mal in Zweifel. Hängt eben vom konkreten Fall ab.

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: betateilchen am 01 Februar 2025, 13:07:32
Zitat von: Prof. Dr. Peter Henning am 01 Februar 2025, 12:46:29Das ziehe ich bei dem Datenwust von VW doch mal in Zweifel. Hängt eben vom konkreten Fall ab.

Da könnte gesunder Menschenverstand weiterhelfen:


Um es mal überspitzt zu sagen: Es ist mir doch völlig egal, wie oft in den vergangenen drei Wochen das vordere Fenster auf der Beifahrerseite geöffnet und geschlossen wurde.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 01 Februar 2025, 17:03:44
Ich habe jetzt noch einmal etwas mehr an den Mosquitto angekoppelt - nämlich einen ebusd, der auch eine ganz Menge Daten sendet. Und heute nachmittag wieder dasselbe Phänomen beobachtet: Im Mosquitto bleiben VW-Topics, die eigentlich vom MQTT2_DEVICE abgeholt werden sollen, auf "retained" stehen. Und parallel dazu wächst die Systemlast wieder dramatisch an, bis in FHEM wilde Latenzen auftreten.

Irgendetwas ist dabei noch faul.
1.Frage: Wieso bleiben die Daten überhaupt als  retained im Mosquitto?
2.Frage: Was macht der MQTT2_CLIENT, wenn derart viele Daten im Server stehen, die eigentlich auf Topics in einem Device passen?

LG

pah

O.T.: "Da könnte gesunder Menschenverstand weiterhelfen"... das ist es vielleicht. Den habe ich gerade verliehen.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: betateilchen am 01 Februar 2025, 20:25:57
Zitat1.Frage: Wieso bleiben die Daten überhaupt als  retained im Mosquitto?

Vermutlich, weil sie mit einem retained-Flag von Deinem Server zum mosquitto geschickt werden.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: passibe am 01 Februar 2025, 21:06:12
Falls tatsächlich retain das Problem ist, könntest du das jedenfalls bei MQTT2_SERVER auch regelmäßig clearen, z.B. 1x pro Tag mit einem at, dasset <MQTT2_SERVER> clearRetainausführt.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: DasQ am 02 Februar 2025, 05:59:07
Ist in dem vw ein eigenständiger mqtt broker verbaut?


Wenn ja, warum abonnierst du nicht einfach nur die topics, die dich auch wirklich interessieren?

Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 02 Februar 2025, 09:53:50
Zitat von: DasQ am 02 Februar 2025, 05:59:07Ist in dem vw ein eigenständiger mqtt broker verbaut?
Nein.

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: betateilchen am 02 Februar 2025, 11:37:06
Zitat von: DasQ am 02 Februar 2025, 05:59:07warum abonnierst du nicht einfach nur die topics, die dich auch wirklich interessieren?

Weil das der "gesunde Menschenverstand" wäre.

Und da gibt es gerade ein Problem:

Zitat von: Prof. Dr. Peter Henning am 01 Februar 2025, 17:03:44O.T.: "Da könnte gesunder Menschenverstand weiterhelfen"... das ist es vielleicht. Den habe ich gerade verliehen.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 02 Februar 2025, 12:55:54
Es freut uns doch alle, dass es hier jemanden gibt, der den gesunden Menschenverstand erklären kann.

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: passibe am 02 Februar 2025, 13:18:15
Verstehe nicht ganz.
Hast du denn jetzt mal probiert, diese ellenlange Liste an Topics zu reduzieren? Eventuell auch so, dass sie sich nicht überschreiben – vielleicht ist das ja auch ein Grund, wieso hier irgendwas schief läuft? Weil ein ankommender Wert sofort wieder überschrieben wird?
Oder hast du probiert, regelmäßig clearRetain auszuführen?
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 05 Februar 2025, 10:55:45
So, ich bin jetzt etwas weiter.

Die hohe CPU-Last entsteht, wenn eine Vielzahl von Daten im MQTT-Server (intern als MQTT2_SERVER oder extern als Mosquitto) vorliegt und gleichzeitig eine Vielzahl von Einträgen in der readingList vorhanden ist, die als Regulärer Ausdruck formatiert sind. Insofern war der Hinweis von Rudi der Zielführende.

Was ich noch nicht ganz verstehe ist, warum das Wachstum der CPU-Last deutlich stärker als quadratisch mit der Anzahl der Topics ist - das kann man aber hinten anstellen.

Betreffend den von VW gelieferten Datenwust: Unglücklicherweise sind davon viele Daten relevant, den Unsinn, "mit gesundem Menschenverstand" erst einmal zu überlegen, was man denn eigentlich wolle, kann man sich also getrost sparen.

Die Misere wird natürlich gefördert durch den von Till Steinbach stammenden Python-Server zur Verbindung mit den VW-Servern.
Der baut intern ein gewaltig großes JSON-Objekt auf, und jedesmal, wenn ein Datenwert von VW eintröpfelt, wird der als separate MQTT Message an den MQTT-Server gesendet (und zwar mit retain-Flag).

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: TomLee am 05 Februar 2025, 12:07:08
ZitatDer baut intern ein gewaltig großes JSON-Objekt auf, und jedesmal, wenn ein Datenwert von VW eintröpfelt, wird der als separate MQTT Message an den MQTT-Server gesendet (und zwar mit retain-Flag).

Wie ist das genau zu verstehen? Jedes mal wenn ein Datenwert eintröpfelt, wird dieser im großen Json ergänzt und der Json ohne retain-Flag gesendet und zusätzlich wird der neue Datenwert separat retained gesendet?
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 05 Februar 2025, 12:34:21
Fast richtig. Der ganze JSON-Kram wird nur gesendet, wenn man das explizit freischaltet. Standard ist: Nur der neue Datenwert, mit retain_Flag.

Leicht irre, das - aber das ist Software von jemand anders. Ich versuche, den von einem besseren Ansatz zu überzeugen.

LG

pah
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: TomLee am 05 Februar 2025, 13:11:05
ZitatFast richtig. Der ganze JSON-Kram wird nur gesendet, wenn man das explizit freischaltet.

In dem Json ist der neue Wert enthalten oder nicht? Auf den retain-Zweig könnte man verzichten? Würde ja weniger Last bedeuten (die Bildchen würden nicht zweimal geschrieben).
Warum werden bei Dir bei Einsatz vom MQTT2_SERVER die retain-Nachrichten überhaupt angenommen/verarbeitet?
Default würde mit aktuellem FHEM der retain-Zweig im MQTT2_SERVER eigentlich ignoriert, siehe respectRetain-Attribut.
Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: DasQ am 05 Februar 2025, 13:36:56
Zitat von: Prof. Dr. Peter Henning am 05 Februar 2025, 12:34:21Leicht irre, das - aber das ist Software von jemand anders. Ich versuche, den von einem besseren Ansatz zu überzeugen.

LG

pah

BTW. Weist ja der Macher von dem Ganzen explizit darauf hin das man die Menge der Daten beschränken kann/soll
ZitatTopics

If your broker does not let you observe all available topics you can pass the parameter --list-topics to get all topics displayed on the commandline. Topics marked as "(writeable)" can be manipulated. There are also two topics to receive all available topics as a comma seperated list: weconnect/0/mqtt/topics lists all available topics, weconnect/0/mqtt/writeableTopics provides topics that can be manipulated.

Disabling features

You can disable data for the cars capabilities with --no-capabilities If you only need a subset of the data you can use the --selective option. E.g. --selective climatisation

https://github.com/tillsteinbach/WeConnect-mqtt/blob/main/README.md
https://github.com/tillsteinbach/WeConnect-mqtt

Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: Prof. Dr. Peter Henning am 05 Februar 2025, 14:18:58
@TomLee:
ZitatAuf den retain-Zweig könnte man verzichten?
Genau. Das habe ich Till Steinbach vorgeschlagen, nötig wäre ein Server-Flag, das dies unterdrückt. Ich gehe sogar noch weiter: Eigentlich sollte diese Python-Software nicht immer den ganzen JSON-Kram senden, sondern aufgeteilt nach den einzelnen Bereichen Teilobjekte davon. Die man dann in einem MQTT-Client strukturiert verarbeiten kann.
ZitatWarum werden bei Dir bei Einsatz vom MQTT2_SERVER die retain-Nachrichten überhaupt angenommen/verarbeitet
Das war ja meine Frage unten, das muss nochmal überprüft werden.

@DasQ: Ich bin mir nicht sicher, was das besagen soll, hier den Link auf die (rudimentäre) Dokumentation von Till Steinbach zu posten - selbstverständlich kenne ich die. Ein "Soll" zur Datenreduktion ist daraus nicht abzuleiten - und das ist ja auch nicht Sinn der Sache, wenn man Daten aus allen Bereichen benötigt. Die Möglichkeiten zum "Kann" sind wiederum vollkommen absurd, wie ich oben geschrieben habe. Auch das mit den "no-capabilities" ist eher als Witz zu verstehen - denn der Verzicht darauf würde zu der gewaltigen Liste von Topics weitere > 150 Einträge hinzufügen.

LG

pah



Titel: Aw: Wieder mal: 100% CPU-Last durch MQTT
Beitrag von: DasQ am 06 Februar 2025, 18:14:13
Ach mei, Fehler sind menschlich ... btw. Wenn man eine Sache für lau bekommt und die Leistung dann nicht passt, sollte man immer schön bitte und danke sagen.


Naja mein Post hat ja dann doch was gebracht ... wenn da ne 0 Zuviel im Topic steht. ;D