Bimmerconnected musst du mit -j starten.
Dann kommt nur die Json Ausgabe.
jo -j ist das selbe wie --json , aber wie gesagt expandJSON kommt mit der ausgabe auch nicht klar
Bimmerconnected musst du mit -j starten.
Dann kommt nur die Json Ausgabe.
jo -j ist das selbe wie --json , aber wie gesagt expandJSON kommt mit der ausgabe auch nicht klar
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": ....
kannst du mal den kompletten Teil aus deiner FHEM Config posten...Danke.
Alles anzeigenwenn 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
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.
#!/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 ;
}
Alles anzeigen
kannst du mal den kompletten Teil aus deiner FHEM Config posten...Danke.
so sollte es bei dir klappen:
define d dummy
define j expandJSON d:json:.*
define d_anpassung1 readingsChange d json (\[\{"a) {sprintf("\{\"a")}
define d_anpassung2 readingsChange d json (i3s 120\"\}\]) {sprintf("i3s 120\"\}")}
in device d sind dann alle readings
damit werden die daten abgerufen, ein regelmäßiges aufrufen bau ich dann später das ist mir erstmal nicht wichtig:
{my $result = qx "/home/pi/.local/bin/bimmerconnected status xxxx\@gmail.com xxxx rest_of_world --json";;fhem "setreading d json $result";;}
du musst das @ mit \ escapen sonnst geht das nicht, habe ich aber im beispiel
beim zweiten keine ahnung dann muss du da selbst das regex anpassen, das einzige was ich da mach ich die erste eckige klammer und die letzte eckige klammer zu entfernen.
du musst das @ mit \ escapen sonnst geht das nicht, habe ich aber im beispiel
beim zweiten keine ahnung dann muss du da selbst das regex anpassen, das einzige was ich da mach ich die erste eckige klammer und die letzte eckige klammer zu entfernen.
hi habe auf das Problem das ich per Fehm keine Daten mehr empfange..
zu deinem Script :
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.
Darf ich mal fragen wie Du das gemacht hast?
So wie ich das verstanden habe ist das ein Plugin ( oder wie man das da nennt ) für Home Assistant.
Hast du zum abrufen der date Home Assistant installiert oder kann man das auch so auf der Konsole starten?
Gruß
Onkel Tom