BMW i3-Daten vom Server per MQTT weiterleiten

Begonnen von hasenhirn, 13 Juni 2021, 19:48:44

Vorheriges Thema - Nächstes Thema

hasenhirn

Hi,

kein Ding  ;)

Starten kannst Du das Ganze mit sudo service I3_Info start
Wenn er bei jedem Neustart des Rechners automatisch anlaufen soll musst Du es einfach einschalten mit sudo service I3_Info enabled
Ob der Service noch läuft kannst Du einfach überprüfen mit sudo service I3_Info status
das Ergebnis sollte dann ungefähr so aussehen wie in der angehängten Datei.
Mit dem Befehl ps -Alf | grep I3 sollte in der Prozessliste das Script ungefähr so auftauchen: 4 S root      4517     1  0  80   0 -  6656 -      10:49 ?        00:00:00 /usr/bin/perl I3_Info.pl

Gruß

Thomas

satprofi

sudo service I3_Info befehle klappen alle, nur nach neustart läuft das service nicht. trotz enabled.
versuche das ganze jetzt über cron zu starten.

hast du das script am raspi mit fhem laufen? oder ext. raspi?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

hasenhirn


satprofi

ok. so, mit befehl im crontab startet der service nach reboot. aber mit fehler das neues device angelegt wird.
verstehe die welt nicht mehr.....
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

hasenhirn



Zitat von: satprofi am 13 Februar 2022, 11:55:20
sudo service I3_Info befehle klappen alle, nur nach neustart läuft das service nicht. trotz enabled.
versuche das ganze jetzt über cron zu starten.

hast du das script am raspi mit fhem laufen? oder ext. raspi?

was zeigt er an wenn Du nach dem Neustart den Status abrufst mit sudo service I3_Info status?

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

hasenhirn

ups :(

kann es sein dass noch irgend ein Dienst fehlt der gestartet sein müsste?

satprofi

wie gesagt, über cron @reboot klappts ja. läuft auch sauber, bis auf neues device bei evt. reboot
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

hasenhirn

Cron startet vermutlich erst wenn alle Dienste laufen.
Über den Service wird es so schnell wie möglich gestartet.
Man kann aber in der .service Datei angeben welche Dienste vorher laufen müssen.
Ich weiß jetzt leider nicht welcher Dienst fehlt .

Migul47

Hallo,

geht bei mir nicht mehr. Bearer bleibt leer.

hasenhirn

Jop, die haben was an der Authentifizierung gedreht.
Ich hatte leider am WE keine Zeit.
Hoffe ich komme die Woche dazu  ???
Wenn ich was neues habe stelle ich es hier online.

LG

Thomas

tschimi

Hi,
hat schon jemand ne Lösung gefunden? Bei mir kommen leider auch keine Daten mehr :-(
Lg, tschimi

hasenhirn

Hi,

ich bin noch dran. Leider ist bei mir in letzter Zeit sehr viel los so das ich nicht so viel Zeit habe.
Komme gerade wieder von einer 10 Stunden Schicht  :P
Das Authentifizierungserfahren ist OAuth2, so viel habe ich schon mal heraus gefunden und da lese ich mich gerade ein.
Ich habe Homeassistant installiert da es in dem Modul funktioniert. Leider habe ich von Hass und Python wenig Ahnung was es nicht leichter macht  ;)
Sobald ich weiter gekommen bin, schreibe ich es hier rein.
Vielleicht hat ja jemand ein paar gute Infos, dann immer her damit  ;D

LG
Tom

potash

Hallo,

ich habe einen Lösungsvorschlag über Bimmer Connected . https://github.com/bimmerconnected
Die Installationsanleitung für das Kommandozeilen - Tool befindet sich unter  https://bimmer-connected.readthedocs.io/en/latest/#cli.
Danke an die Autoren!

Mit Hilfe von mosquitto_pub kann die Ausgabe von Bimmer Connected  an FHEM übertragen werden.
Hierzu verwende ich unter Linux (Bullseye) folgenden Service-Script.
#!/bin/bash
#Service zur Abfrage der BMW Fahrzeugdaten über bimmerconnected

# Definition der Parameter
#Abfrageintevall in Sekunden
INTERVAL=7200
#Nutzername
USER="BMW-NUTZERNAME"
#Passwort
PASS="BMW-PASSWORT"
#MQTT Host
MQTTHOST="HOSTNAME"
#MQTT Port
MQTTPORT=1883
#MQTT topic
MQTTTOPIC="/BMW/Status"
#Ende der Defintion

# Lockfile enthält Prozess-ID (PID)
BASENAME=`basename $0`
LOCKFILE="/var/run/${BASENAME}.pid"

# teste auf root
if [ ${UID} -gt 0 ]
then
    echo $"Pleas run as root"
    exit 1
fi

case "$1" in
    start)
        echo -ne "Starting $0 "
        $0 run &
        while [ ! -e ${LOCKFILE} ]
        do
          echo -ne "."
          sleep 2
        done
        echo "(PID: "`cat ${LOCKFILE}`")."
        exit
        ;;

    stop)
        if [ -e ${LOCKFILE} ]
        then
          CPID=`cat ${LOCKFILE}`
          echo -ne "Stopping $0 with PID $CPID "
          # beenden mit SIGTERM,
          # warte bis PID-File entfernt ist
          while [ -e ${LOCKFILE} ]
          do
             echo -ne "."
             kill ${CPID}
             sleep 2
          done
          echo "[done]"

        else
          echo "$0 is not running."
          exit
        fi
        ;;
    restart)
        $0 stop ; $0 start
        ;;
    run)
    if [ -e ${LOCKFILE} ]
    then
      CPID=`cat ${LOCKFILE}`
      echo "Programm lauft bereits. (PID: ${CPID})"
      exit -1
    else
      # PID File samt PID speichern
      # wird via trap am Programm-Ende wieder
      # entsorgt
      echo $$ > ${LOCKFILE}
      trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT
    fi
    while true
    do
     bimmerconnected status --json $USER $PASS rest_of_world|mosquitto_pub -h $MQTTHOST -p $MQTTPORT -d -t $MQTTTOPIC -l --quiet
      sleep $INTERVAL
    done
        ;;
    *)
        echo "usage: $0 start|stop|restart|run"
        echo "options:"
        echo "  start: runs program in background"
        echo "   stop: stops background program"
        echo "restart: restart a already running instance"
        echo "    run: run program in foreground, stopps with Strg-C"
        exit
        ;;
esac



In FHEM dann ein ein MQTT2_DEVICE anlegen. Da die Ausgabe von Bimmer Connected im JSON-Format übermittelt wird, kann man die
Readings im MQTT2_DEVICE über das Atrribut

readingList /BMW/Status:.* { json2nameValue($EVENT) }

anlegen.

LG und schöne Ostern

Heiko
Raspberry Pi 3, FHEM-Server 5.7

hasenhirn

Hallo Heike,

super Arbeit!!!
Danke für die Info und den Code  :)
Ich bin jetzt schon sehr lange am testen und bekomme es unter Perl nicht hin mich gegen den BMW-Server zu authentifizieren  >:(
Vermutlich werde ich auf meiner NAS IOBroker installieren da gibt es ein Modul für BMW und für meinen E3DC.
Schau ma mal.
Sollte ich doch noch eine Lösung finden werde ich sie natürlich hier teilen.

LG und frohe Ostern

Thomas