Beiträge von bjoernar
-
-
Ich habe ein perl Script das ich aus FHEM ausrufe um mir den String in FHEM zu schreiben.
Das starte ich dann mit eine AT.Sind noch einnige Reste aus dem Original mit drin.
Wollte eigentlich hier das Json auflösen und die Werte in FHEM schreiben, so hatte ich es vorher gemacht.Perl
Alles anzeigen#!/usr/bin/perl package main; use strict; use warnings; no warnings 'uninitialized'; use JSON; use JSON::Parse ':all'; use Data::Dumper; #use chilkat(); ########### Diese Daten müssen angepasst werden ####################################################### my $User = 'my@mail.com'; my $Pass = "1234"; my $VIN = "XXXX";# Bei der VIN müssen alle 17 Stellen eingegeben werden ########### Diese Daten müssen angepasst werden ####################################################### my $modul = ""; my $modul_1 = "dynamic"; my $modul_2 = "service"; my $modul_3 = "navigation"; my $json = ""; my $DEBUG = 3; my $status = ""; #my @Werte = ('remaining_range', 'updateTime_converted_timestamp', 'chargingHVStatus', 'vehicle_tracking', 'beRemainingRangeElectricKm', 'updateTime_converted_time', 'trunk_state', 'overall_energy_consumption', 'mileage', 'condition_based_services', 'Segment_LastTrip_time_segment_end_formatted_date', 'heading', 'door_passenger_rear', 'chargingLevelHv', 'updateTime', 'beEnergyLevelHv', 'battery_size_max', 'remaining_charging_time_minutes', 'connectorStatus', 'Segment_LastTrip_ratio_electric_driven_distance', 'lights_parking', 'door_passenger_front', 'updateTime_converted_date', 'unitOfEnergy', 'soc_hv_percent', 'window_driver_front', 'beChargingLevelHv', 'hood_state', 'unitOfCombustionConsumption', 'lsc_trigger', 'Segment_LastTrip_time_segment_end_formatted_time', 'gps_lng', 'beRemainingRangeElectric', 'gps_lat', 'remaining_fuel', 'lastUpdateReason', 'charging_status', 'beRemainingRangeFuelMile', 'charging_connection_type', 'beMaxRangeElectricKm', 'lastChargingEndReason', 'Segment_LastTrip_time_segment_end_formatted', 'door_lock_state', 'single_immediate_charging', 'beMaxRangeElectric', 'beRemainingRangeFuel', 'unitOfLength', 'door_driver_front', 'updateTime_converted', 'beRemainingRangeElectricMile', 'window_passenger_front', 'door_driver_rear', 'unitOfElectricConsumption', 'kombi_current_remaining_range_fuel', 'beRemainingRangeFuelKm', 'Segment_LastTrip_time_segment_end'); my @Werte = ('chargingHVStatus', 'updateTime_converted_timestamp', 'vehicle_tracking', 'updateTime_converted_time', 'trunk_state', 'overall_energy_consumption', 'mileage', 'Segment_LastTrip_time_segment_end_formatted_date', 'heading', 'door_passenger_rear', 'chargingLevelHv', 'beEnergyLevelHv', 'battery_size_max', 'remaining_charging_time_minutes', 'connectorStatus', 'Segment_LastTrip_ratio_electric_driven_distance', 'lights_parking', 'door_passenger_front', 'updateTime_converted_date', 'unitOfEnergy', 'soc_hv_percent', 'window_driver_front', 'beChargingLevelHv', 'hood_state', 'unitOfCombustionConsumption', 'lsc_trigger', 'Segment_LastTrip_time_segment_end_formatted_time', 'gps_lng', 'beRemainingRangeElectric', 'gps_lat', 'lastUpdateReason', 'charging_status', 'charging_connection_type', 'lastChargingEndReason', 'Segment_LastTrip_time_segment_end_formatted', 'door_lock_state', 'single_immediate_charging', 'beMaxRangeElectric', 'unitOfLength', 'door_driver_front', 'updateTime_converted', 'window_passenger_front', 'door_driver_rear', 'unitOfElectricConsumption', 'Segment_LastTrip_time_segment_end'); ################################################################################################################################ i3Info_getData(); sub i3Info_getData { print "i3Info Start \n" if $DEBUG > 0 ; print "\n" if $DEBUG > 1; $modul = $modul_1; $json = `bimmerconnected status $User $Pass rest_of_world -j`; if (valid_json ($json)) { print "valid json \n" if $DEBUG > 0 ; system("perl", "/opt/fhem/fhem.pl", "7072", "setreading BMW_getData json ".$json ); } else { print "non valid json, exit \n" if $DEBUG > 0 ; } print "i3Info Ende \n" if $DEBUG > 0 ; }
-
kannst du mal den kompletten Teil aus deiner FHEM Config posten...Danke.
wenn du es so machst klappt es:
define d dummy
define j expandJSON d:json:.*
{my $result = qx "/home/pi/.local/bin/bimmerconnected status xxxxx\@xxxx.com xxxxxx rest_of_world --json";;fhem "setreading d json $result";;}
define d_anpassung1 readingsChange d json (\[\{"a) {sprintf("\{\"a")}
define d_anpassung2 readingsChange d json (XXXi\"\}\]) {sprintf("XXXi\"\}")}
das XXXi tauscht du gegen deine fahrzeug bezeichnung aus, damit werden alle readings angelegt , zwar pfuschig aber klappt erstmal
-
...komisch, bei mir kommt das mit "Found 1 vehicles" nur wenn ich ohne -j oder --json starte.
Mit sieht es so aus:
[{"attributes": {"vin": "WBY1234567891234", "model": "i3s 120", "year": 2020, "brand": "BMW", "headUnit": "ID5", "isLscSupported": true, "driveTrain": "ELECTRIC", "puStep": "0321", "iStep": "I001-21-03-530", "telematicsUnit": "ATM", "hmiVersion": "ID5", "bodyType": "I01", "a4aType": "BLUETOOTH", "capabilities": .... -
Bimmerconnected musst du mit -j starten.
Dann kommt nur die Json Ausgabe.
-
Das ist fast genau so wie ich es gemacht habe, aber mit dem Json bekomme ich nicht rund...
-
Den Json String in fhem zu bekommen ist kein Problem. Läuft bei mir schon.
Kann dir gerne den Code geben.
Muss in fhem zerlegt werden oder vorher in Perl ... Hast du Ahnung davon?
-
Hallo,
bimmerconnected läuft seit heute auf meinem Pi.
Ich kann die Daten abrufen und bekomme sie per json angezeigt.
Mir fehlt nur noch die Übergabe an FHEM. ist da schon jemand dran bevor ich mir nun die mühe mache
Gruß Björnar.