Auslesen der BMW-Daten mit FHEM (225xe)

  • na, dann hier das nächste BETA-Release V0.3

    Alle Daten und Angaben ohne Gewähr. :)

    Changelog


    ##########################################################
    # Changelog V0.3 Beta
    # SanityCheck für Credentials
    # ..Eingabe VIN, User, Passwort auf bekannte Probleme überprüft
    # Rückgabewerte verbessert --> bessere Fehleranzeige in BMW_CurrentState
    # Datum / Version im Log
    # BMW_Push in BMW_StatusUpdate umbenannt
    # Etwas Aufgeräumt, Umsortiert, Dokumentiert
    # WebWidget for Maps: Umgewandelt in Block-Quote statt .= Concatenation
    # ..Bessere Lesbarkeit und leichter zu Editieren.
    # Bug:doppelte Einträge im Log für LastTrip (Chart)
    # ..Notify auf Watchdog BMW_wd_Trigger geändert, damit der Trigger bei Statusänderungen erst später kommt, wenn alle Daten aktuell sind.
    # BMW_average_fuel_consumption_total
    # ..Berechnung des groben durchschnittlichen Benzinverbrauchs BMW_FuelStatistics()
    # ..Ausgabe beliebige Stellen, Anzeige mittels sprintf mit 2 Nachkommastellen
    # Verbrauch 0 Liter Anzeige -- korrigiert für Statistik
    # AddLog ergänzt: Mehr Einträge werden beim Stoppen geloggt selbst wenn per Notify kein Logging gemacht werden würde (gleiche werte)
    # ..Bsp: Benzinverbrauch, 2x 0L/100km am Stück wurde bisher nur 1x geloggt
    # addLog nochmals um 23:59 um die Diagramme schöner darzustellen
    # Daten ergänzt
    # ..chargingTimeRemaining ergänzt. Inkl berechneter Uhrzeit
    # ..Status Parkleuten BMW_lights_parking ergänzt
    # ..Connection Status ergänzt (Connection zu Ladekabel)
    # ..check_control_messages
    # ..chargingLogicCurrentlyActive
    # ..battery_size_max
    # Abfrage BMW_lights_parking beim Parken ergänzt
    # Vereinfachtes Anlegen neuer Daten
    # Notify für CheckControl Message mittels Pusch falls mal was käme
    #
    #Known or new Bugs
    # Neue Bugs sind zu gut versteckt... hab bisher keine gefunden, aber ist ja bald Ostern.
    ########################## USES ##########################

    Anleitung

    • Beide Dateien downloaden und öffnen
    • einen beliebigen Dummy öffnen
    • dort auf "Raw definition klicken
    • den dortigen Text löschen und durch den Inhalt von Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. ersetzen
    • Falls nicht bereits gesechehen: Den Inhalt des ersten Postings mit den Anmeldedaten dort ebenfalls hinten dran hängen
    • Execute Commands drücken
    • Edit Files --> bestehende 99_myBMWUtils.pm öffnen
    • alles markieren und löschen
    • Den Inhalt der Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. dort hinen kopieren
    • Testen
    • Save Config falls alles klappt. :)

    Kleine Warnung: der das push umgesetzt hat für sich (pushbullet oder anderes) könnte vielleicht kurz die Gratulation bekommen, dass das Auto eingefahren ist. :D


    Wie immer mit eingeschränktem Support und ohne Garantien.


    Die Anhänge zeigt es unten aktuell nicht an, daher hier nochmals die Links:
    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.


    Ich bitte um Rückmeldungen, falls was nicht klappt. Gerne auch wenn's klappt :D

    Habt ihr Feature-Wünsche? Ideen?

    Auf meiner Roadmap stehen folgende, kleinere Features:
    - Mehr Daten auslesen (sobald Verfügbar)

    Größere Features für die Zukunft
    - Darstellung grafisch als Flootplan? (evtl. mit schönerem Design?)
    - Ideen für besseres Updaten suchen
    - Evtl. doch mal als Modul umsetzen?

    Weitere Ideen?

    BMW 225xe Sport Line Atlantikgrau seit 14.11.2017 :D
    BMW X1 Bj. '16 weiß/DRK mit getarnter Sondersignalanlage (5-10 Tage/Monat Dienst)
    Audi A4 Avant bj 2006 bis 11.2017 / Fiat Tipo Bj '97 bis 2007 /Honda Civic Bj. '87 bis 2003

    2 Mal editiert, zuletzt von Rumbel (16. April 2018 um 17:37)

  • Folgendes kam per Konversation.

    Da auch andere das Problem haben könnten, hier mein Lösungsvorschlag bzw. die weitere Diskussion dazu öffentlich

    Zitat von Supportanfrage

    Hallo Rumbel
    [...]
    In FHEM habe ich die Räume ‚Alle Lichter‘ und ‚BMW‘, die Variablen werden aber nicht aktualisiert weil ich keine Kommunikation mit dem BMW ConnectDrive herstellen kann.

    Ich denke das Kernproblem ist die folgende Meldung, die ich in FHEM erhalte, wenn ich zum Testen ein ‚reload 99_myBMWUtils-2‘ auslöse:

    Code
    Can't locate JSON/Parse.pm in @INC (you may need to install the JSON::Parse module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/arm-linux-gnueabihf/perl5/5.24 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM) at ./FHEM/99_myBMWUtils-2.pm line 14. BEGIN failed--compilation aborted at ./FHEM/99_myBMWUtils-2.pm line 14.


    Vielleicht kannst du mir einen Tipp geben wie ich da weiter komme, ich installierte zwar verschiedene JSON-Module leider ohne Erfolg.


    Thema "Alle Lichter" ja, sorry... mein Fehler.
    So heißt mein "Raum" in dem ich die Übersicht aller Lichter und Co pflege und dort hab ich die Karte geparkt ;)

    Zum Fehler an sich:
    Auf dem Raspberry muss nicht nur JSON und co installiert sein, sondern auch die Perl-Module dafür (erkennbar am .pm)

    Hier fehlt also das JSON::Parse modul.
    Ich kann mich selbst grad nicht dran erinnern, wie ich das gemacht hatte... und welche Module dabei waren oder fehlten.


    Grundsätzlich hilft es, perl und das Betriebssystem (bei mir Raspbian) aktuell zu halten, dann ist schon mal das Meiste dabei.

    Zur Installation einzelner Module je nach Betriebssystem googeln, wie man Perl-Module installiert.


    Probier mal folgendes

    Code
    sudo apt-get install libjson-perl


    Ansonsten könnte folgender Link zum Vorgehen helfen
    https://www.raspberrypi.org/forums/viewtop…t=50254#p394203

    Wie gesagt: das ist leider stark davon abhängig, auf welchem System FHEM läuft (hardware) und welche Linux- oder Windows-Version da drunter läuft. :)

    (und ich bin auch kein Linux-Experte :-D)

    Bitte sag bescheid, ob's geklappt hat

    BMW 225xe Sport Line Atlantikgrau seit 14.11.2017 :D
    BMW X1 Bj. '16 weiß/DRK mit getarnter Sondersignalanlage (5-10 Tage/Monat Dienst)
    Audi A4 Avant bj 2006 bis 11.2017 / Fiat Tipo Bj '97 bis 2007 /Honda Civic Bj. '87 bis 2003

    Einmal editiert, zuletzt von Rumbel (17. April 2018 um 16:36)

  • Vielen Dank für die rasche Antwort.

    Leider ergibt sich mit beiden Vorschlägen keine Verbesserung.
    Könnte es sein, dass das am Raspberry 3 B+ liegt, dass da ev. noch nicht alle Module lauffähig sind?
    Da ich vieles ohne Erfolg probierte werde ich nächste Woche den Raspberry und FHEM neu auf setzen mit der Hoffnung dass es dann klappt. Ich berichte wieder.

  • hm, am b+ sollte es eigentlich nicht liegen

    was kam denn beim

    Code
    sudo apt-get install libjson-perl

    zurück?

    was kam beim

    Code
    perl -MCPAN -e'shell'
    install JSON::Parse

    zurück?

    mal ein update generell gemacht?

    Code
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo reboot


    Weitere Variante

    Code
    sudo apt-get install curl gcc-4.7
    sudo curl -L http://cpanmin.us | perl - --sudo App::cpanminus
    sudo cpanm -i JSON::Parse

    BMW 225xe Sport Line Atlantikgrau seit 14.11.2017 :D
    BMW X1 Bj. '16 weiß/DRK mit getarnter Sondersignalanlage (5-10 Tage/Monat Dienst)
    Audi A4 Avant bj 2006 bis 11.2017 / Fiat Tipo Bj '97 bis 2007 /Honda Civic Bj. '87 bis 2003

    2 Mal editiert, zuletzt von Rumbel (17. April 2018 um 17:00)

  • zu sudo apt-get install libjson-perl:

    Spoiler anzeigen

    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut.
    Statusinformationen werden eingelesen.... Fertig
    libjson-perl ist schon die neueste Version (2.90-1).
    0 aktualisiert, 0 neu installiert, 0 zu entfernen und 5 nicht aktualisiert.


    zu perl -MCPAN -e'shell':

    Spoiler anzeigen

    Terminal does not support AddHistory.
    There seems to be running another CPAN process (pid 1618). Contacting...
    Other job not responding. Shall I overwrite the lockfile '/home/pi/.cpan/.lock'? (Y/n) [y]


    y:

    Spoiler anzeigen

    cpan shell -- CPAN exploration and modules installation (v2.1101)
    Enter 'h' for help.
    cpan[1]>


    zu install JSON::Parse:

    Spoiler anzeigen

    Reading '/home/pi/.cpan/Metadata'
    Database was generated on Tue, 17 Apr 2018 14:17:02 GMT
    Running install for module 'JSON::Parse'
    Fetching with LWP:
    http://www.cpan.org/authors/id/B/B…rse-0.55.tar.gz
    Fetching with LWP:
    http://www.cpan.org/authors/id/B/BK/BKB/CHECKSUMS
    Checksum for /home/pi/.cpan/sources/authors/id/B/BK/BKB/JSON-Parse-0.55.tar.gz ok
    Scanning cache /home/pi/.cpan/build for sizes
    ............................................................................DONE
    Argument "1.4417_001" isn't numeric in numeric ge (>=) at /usr/share/perl/5.24/CPAN/Distribution.pm line 672.
    Configuring B/BK/BKB/JSON-Parse-0.55.tar.gz with Makefile.PL
    Checking if your kit is complete...
    Looks good
    Generating a Unix-style Makefile
    Writing Makefile for JSON::Parse
    Writing MYMETA.yml and MYMETA.json
    BKB/JSON-Parse-0.55.tar.gz
    /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK
    Running make for B/BK/BKB/JSON-Parse-0.55.tar.gz
    cp lib/JSON/Tokenize.pod blib/lib/JSON/Tokenize.pod
    cp lib/JSON/Parse.pod blib/lib/JSON/Parse.pod
    cp lib/JSON/Parse.pm blib/lib/JSON/Parse.pm
    cp lib/JSON/Tokenize.pm blib/lib/JSON/Tokenize.pm
    Running Mkbootstrap for JSON::Parse ()
    chmod 644 "Parse.bs"
    "/usr/bin/perl" "/usr/share/perl/5.24/ExtUtils/xsubpp" -typemap "/usr/share/perl/5.24/ExtUtils/typemap" -typemap "typemap" Json3.xs > Json3.xsc && mv Json3.xsc Json3.c
    arm-linux-gnueabihf-gcc -c -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -DVERSION=\"0.55\" -DXS_VERSION=\"0.55\" -fPIC "-I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE" Json3.c
    rm -f blib/arch/auto/JSON/Parse/Parse.so
    arm-linux-gnueabihf-gcc -shared -L/usr/local/lib -fstack-protector-strong Json3.o -o blib/arch/auto/JSON/Parse/Parse.so \
    \

    chmod 755 blib/arch/auto/JSON/Parse/Parse.so
    "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Parse.bs blib/arch/auto/JSON/Parse/Parse.bs 644
    cp script/validjson blib/script/validjson
    "/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/validjson
    Manifying 2 pod documents
    BKB/JSON-Parse-0.55.tar.gz
    /usr/bin/make -- OK
    Running make test
    Running Mkbootstrap for JSON::Parse ()
    chmod 644 "Parse.bs"
    PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
    t/array.t ............... ok
    t/collision.t ........... ok
    t/JSON-Parse.t .......... ok
    t/json-tokenize.t ....... ok
    t/Json3.t ............... ok
    t/kolmorogov42-1.t ...... ok
    t/numbers.t ............. ok
    t/object.t .............. ok
    t/perl-monks-1165399.t .. ok
    t/read-file.t ........... ok
    t/rfc7159.t ............. ok
    t/syntax.t .............. ok
    t/test-empty-string.t ... ok
    t/unicode.t ............. ok
    t/utf8.t ................ ok
    t/valid-json.t .......... ok
    t/whitespace.t .......... ok
    All tests successful.
    Files=17, Tests=438, 3 wallclock secs ( 0.32 usr 0.06 sys + 2.25 cusr 0.16 csys = 2.79 CPU)
    Result: PASS
    BKB/JSON-Parse-0.55.tar.gz
    /usr/bin/make test -- OK
    Running make install
    Manifying 2 pod documents
    Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
    Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/auto/JSON/Parse/Parse.so
    Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/JSON/Tokenize.pod
    Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/JSON/Parse.pod
    Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/JSON/Parse.pm
    Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/JSON/Tokenize.pm
    Installing /usr/local/man/man3/JSON::Tokenize.3pm
    Installing /usr/local/man/man3/JSON::Parse.3pm
    Installing /usr/local/bin/validjson
    Appending installation info to /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/perllocal.pod
    BKB/JSON-Parse-0.55.tar.gz
    sudo /usr/bin/make install -- OK

    Updates habe ich mehrfach gemacht und jetzt nochmals und nach einem reboot
    ist die Fehlermeldung im FHEM weg beim Befehl 'reload 99_myBMWUtils-2' und es erscheint die folgende Meldung:
    Undefined subroutine &main::myBMWUtils-2_Initialize called at fhem.pl line 2488.und beim Befehl: 'rereadcfg fhem.cfg.bmwV2' erhalte ich folgende Meldungen:Please define SVG_0 firstPlease define allowed_WEB firstPlease define allowed_WEB first

    Ich denke ein kleiner Erfolg hat sich ergeben

    Einmal editiert, zuletzt von Bugs (17. April 2018 um 18:32)

  • 1 tipp: in code-tags gepackt sieht das ganze kleiner und übersichtlicher aus :)
    2. ich nutze gern die Spoiler-Tags hier im Forum um alles kompakter und übersichtlicher zu halten.
    kannst ja vielleicht noch bearbeiten. :)


    so. JSON::Parse scheint zu gehen.

    jetzt schauen wir mal weiter.

    Zitat

    main::myBMWUtils-2_Initialize called at fhem.pl line 2488

    hm. hast du das modul umbenannt?

    Wenn das Modul 99_myBMWUtils.pm heißt, muss es innen auch die Funktion geben, um das Modul als solches zu registrieren (selbst, wenn es noch kein Modul ist)
    Wenn das Modul mittlerweile 99_myBMWUtils2.pm heißt, dann muss innen die Funktion dafür umbenannt werden

    Code
    sub myBMWUtils-2_Initialize($$)
    {
    my ($hash) = @_; #no FHEM Module Functions so far...
    }

    davon würde ich aber abraten. lieber die -2 im Namen entfernen :)
    Du musst sonst bei jedem Update an die -2 denken

    zum

    Zitat

    rereadcfg fhem.cfg.bmwV2' erhalte ich folgende Meldungen:Please define SVG_0 firstPlease define allowed_WEB firstPlease define allowed_WEB first


    öhm... äh... hä?
    hast du ne zweite FHEM config angelegt?

    Da hab ich immer brav die finger von gelassen.
    ich hab immer nur eine fhem.cfg und lass sogar dort die finger weg (lieber alles als raw commands senden)

    BMW 225xe Sport Line Atlantikgrau seit 14.11.2017 :D
    BMW X1 Bj. '16 weiß/DRK mit getarnter Sondersignalanlage (5-10 Tage/Monat Dienst)
    Audi A4 Avant bj 2006 bis 11.2017 / Fiat Tipo Bj '97 bis 2007 /Honda Civic Bj. '87 bis 2003

  • Ja das Modul heisst bei mir '99_myBMWUtils-2.pm' das muss aus versehen passiert sein, ist nicht gewollt,
    habe ich nun umbenannt nach '99_myBMWUtils.pm'

    Für die BMW-Applikation habe ich mir 'fhem.cfg.bmwV2' erstellt mit der Idee, dass ich jederezit wieder auf die ursprüngliche Version 'fhem.cfg' zurück kann. Darauf kam ich weil ich in einem Beispiel 'fhem.cfg.demo' fand. Als Basis für die 'fhem.cfg.bmwV2' habe ich die 'fhem.cfg' genommen und den Inhalt vom 'FHEM_Config.txt' ergänzt.


    Nach den Änderungen und einem 'shutdown restart' erhalte ich beim Befehl

    Code
    set BMWIF_vim...    Please define BMWif_vim first
  • Hier der Code in drei Teilen
    Einrichten der Passswörter / VIM

    mit dem o.g. Code-Schnipsel kannst das anlegen.

    die VIM bitte vollständig und nicht nur die letzten 7 Stellen

    BMW 225xe Sport Line Atlantikgrau seit 14.11.2017 :D
    BMW X1 Bj. '16 weiß/DRK mit getarnter Sondersignalanlage (5-10 Tage/Monat Dienst)
    Audi A4 Avant bj 2006 bis 11.2017 / Fiat Tipo Bj '97 bis 2007 /Honda Civic Bj. '87 bis 2003

  • Supper, jetzt funktioniert deine Applikation auch bei mir.

    Nächste Woche werde ich dann die neuste Version versuchen zu integrieren.

    Rumbel
    Vielen, herzlichen Dank für deine Unterstützung und deine Geduld :)

    p.s.
    Gibt es hier im Forum eine Anleitung wie die Code-Tags verwendet werde können?