Autor Thema: BMW i3-Daten vom Server per MQTT weiterleiten  (Gelesen 13074 mal)

Offline Manfi

  • New Member
  • *
  • Beiträge: 14
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #45 am: 06 Dezember 2022, 15:10:44 »
@potash
Hi,
Versuche seit einiger Zeit die Ur-Lösung von Rumbel durch Deine zu ersetzen, scheitere aber mangels Programmierkenntnissen.
Letzte Version von bimmerconnected ist installiert, funktioniert und liefert Werte. Wenn ich deinen Script starte, bekomme ich allerdings folgende Meldung:

sudo /opt/fhem/BMW2MQTT start
Starting /opt/fhem/BMW2MQTT .Client (null) sending CONNECT
Client (null) received CONNACK (0)
Traceback (most recent call last):
  File "/home/pi/.local/bin/bimmerconnected", line 5, in <module>
    from bimmer_connected.cli import main
ModuleNotFoundError: No module named 'bimmer_connected'
Client (null) sending DISCONNECT
(PID: 779).


LG und frohe Weihnachten  ;)
Manfi
Hardware: Raspberry Pi2, SignalDuino 433, Sonoff/Tasmota, NodeMCU/ESPEasy, FS10

Offline hasenhirn

  • Full Member
  • ***
  • Beiträge: 116
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #46 am: 06 Dezember 2022, 17:54:47 »
Hallo Manfi,

BMW hat einige male die Authentifizierung umgestellt und ich hatte irgendwann keine Lust mehr dem hinterher zu programmieren.
Ich bin auf IoBroker umgestiegen da es dort ein gut funktionierendes Modul gibt und ich den Rest von FHEM jetzt nach und nach durch IoBroker ersetze.
Tut mir leid dass ich dir da nicht weiter helfen kann - sorry

LG

Thomas

Offline potash

  • New Member
  • *
  • Beiträge: 11
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #47 am: 07 Dezember 2022, 19:47:34 »
@Manfi

Hallo Manfi,

ich habe leider erst am Wochenende Zeit für Dein Problem.
Die Lösung mit bimmerconnected funktioniert jedenfalls bei mir auch mit der aktuiellen Authentifizierung.

Noch einen schönen Abend.

Heiko

Raspberry Pi 3, FHEM-Server 5.7

Online binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1580
  • 🏠⚙️💡🛠📱
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #48 am: 07 Dezember 2022, 19:55:04 »
Hi,
bei mir läuft das hier seit 2 Monaten stabil:
#!/bin/bash
MQTTHOST="10.3.3.8"
MQTTPORT="1883"
MQTTUSER="mqtt_user"
MQTTPW="mqtt_pass"
#get data from bmw:
echo -e "Hole Daten bei BWM..."
json=$(sudo /usr/local/bin/./bimmerconnected status -j 'user' 'pass' rest_of_world)
echo -e "...fertig"
echo -e "Sende Daten an FHEM..."
mosquitto_pub -h $MQTTHOST -p $MQTTPORT -u $MQTTUSER -P $MQTTPW -t bmw -i bmw -m "$json"
echo -e "...fertig!"

Das zughörige device sieht dann so aus:
defmod bmw.mqtt MQTT2_DEVICE fhem2
attr bmw.mqtt autocreate 0
attr bmw.mqtt readingList fhem2:bmw:.* { my $h1 = json2nameValue($EVENT);;;; my %h2 = map { my $k=$_;;;; $k=~s/^1_//;;;; ($k,$h1->{$_}) } keys %{$h1};;;; \%h2 }

Siehe auch hier:
https://forum.fhem.de/index.php/topic,128932.0/all.html
und hier mit Maps-Anbindung von Boris:
https://forum.fhem.de/index.php/topic,129067.html

VG Sebastian
« Letzte Änderung: 07 Dezember 2022, 19:57:47 von binford6000 »

Offline Manfi

  • New Member
  • *
  • Beiträge: 14
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #49 am: 07 Dezember 2022, 23:02:29 »
Hi,
Habe deine Variante mal an meine Verhältnisse angepasst:

#!/bin/bash
MQTTHOST="10.1.1.114"
MQTTPORT="1883"
MQTTUSER=""
MQTTPW=""
#get data from bmw:
echo -e "Hole Daten bei BWM..."
json=$(sudo /home/pi/.local/bin/bimmerconnected status -j 'user' 'password' rest_of_world)
echo -e "...fertig"
echo -e "Sende Daten an FHEM..."
mosquitto_pub -h $MQTTHOST -p $MQTTPORT -u $MQTTUSER -P $MQTTPW -t bmw -i bmw -m "$json"
echo -e "...fertig!"



...und bekomme den gleichen Fehler wie bei der Variante von potash:

$ /opt/fhem/530d2MQTT.sh
Hole Daten bei BWM...
Traceback (most recent call last):
  File "/home/pi/.local/bin/bimmerconnected", line 5, in <module>
    from bimmer_connected.cli import main
ModuleNotFoundError: No module named 'bimmer_connected'
...fertig
Sende Daten an FHEM...
...fertig!

bimmerconnected von der Kommandozeile gestartet funktioniert einwandfrei

LG
Manfi
Hardware: Raspberry Pi2, SignalDuino 433, Sonoff/Tasmota, NodeMCU/ESPEasy, FS10

Offline potash

  • New Member
  • *
  • Beiträge: 11
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #50 am: 11 Dezember 2022, 12:10:57 »
Hallo Manfi,

Da bimmerconnected auf der Kommandozeile funktioniert, von woher wird es aufgerufen?

which bimmerconnected
Versuche doch mal die direkte Übergabe von bimmerconnected auf  mosquitto_pub über die Kommandozeile:

sudo bimmerconnected status -j 'user' 'password' rest_of_world | mosquitto_pub -h 10.1.1.114 -p 1883  -t bmw -d  --quiet  -l
Einen schönen 3. Advent,

Heiko
Raspberry Pi 3, FHEM-Server 5.7

Offline Manfi

  • New Member
  • *
  • Beiträge: 14
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #51 am: 11 Dezember 2022, 20:31:57 »
Hi Heiko,

Hier das Resultat:

$ which bimmerconnected                                       
/home/pi/.local/bin/bimmerconnected

$ sudo bimmerconnected status -j 'user' 'password' rest_of_world | mosquitto_pub -h 10.1.1.114 -p 1883  -t bmw -d  --quiet  -l Client (null) sending CONNECT
Client (null) received CONNACK (0)
sudo: bimmerconnected: command not found
Client (null) sending DISCONNECT

allerdings:
$ bimmerconnected status -j 'user' 'password' rest_of_world | mosquitto_pub -h 10.1.1.114 -p 1883  -t bmw -d  --quiet  -l Client (null) sending CONNECT
Client (null) received CONNACK (0)
DEBUG:asyncio:Using selector: EpollSelector
Client (null) sending PUBLISH (d0, q0, r0, m1, 'bmw', ... (7301 bytes))
Client (null) sending DISCONNECT
funktioniert  ;D
jetzt muß ich das noch in FHEM zum Laufen bringen.

Danke
und auch noch einen schönen Rest-Adventsonntag

LG
Manfi
Hardware: Raspberry Pi2, SignalDuino 433, Sonoff/Tasmota, NodeMCU/ESPEasy, FS10

Offline potash

  • New Member
  • *
  • Beiträge: 11
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #52 am: 15 Dezember 2022, 17:08:12 »
Hallo Manfi,

ich habe bei mir die Abfrage über einen "service "automatisiert. Angepaßt an Deine Konfiguration sieht der Script dann so aus:
 #!/bin/bash
#Service zur Abfrage der BMW Fahrzeugdaten über bimmerconnected

# Definition der Parameter
#Abfrageintevall in Sekunden
INTERVAL=7200
#Nutzername
USER="user"
#Passwort
PASS="password"
MQTTHOST="10.1.1.114"
MQTTPORT=1883
MQTTTOPIC="bmw"


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

# teste auf root
if [ ${UID} -gt 0 ]
then
    echo $"Script muss als Superuser ausgef▒gret werden!"
    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
     sudo pi /home/pi/.local/bin/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

Auf FHEM Seite empfängt dann folgendes MQTT2 - DEVICE

define StatusBMW MQTT2_DEVICE
attr StatusBMW autocreate 0
attr StatusBMW readingList /bmw:.* { json2nameValue($EVENT) }

Noch einen schönen Abend, LG Heiko
Raspberry Pi 3, FHEM-Server 5.7

Offline Heiner

  • Full Member
  • ***
  • Beiträge: 295
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #53 am: 17 Dezember 2022, 15:30:49 »
Hi,
ich hab Bimmerconnected am laufen, kriege die Daten aber nicht ins fhem.
Beides laeuft auf dem gleichen PI.
Brauchts unbedingt MQTT? Und wenn, gehts auch auf Basis MQTT2 aus fhem, das hab ich naemlich schon in Betrieb und moscitto on top fuert zu problemen.

Danke fuer eure Tipps.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Offline potash

  • New Member
  • *
  • Beiträge: 11
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #54 am: 22 Dezember 2022, 19:50:08 »
Hallo Heiner,

für die Übertragung der Ausgabe von Bimmerconnected auf den MQTT2 - Server in FHEM benötigst Du noch einen "MQTT Publisher".
Ich habe den aus dem Mosquitto - Paket verwendet. Dieser läßt sich auch ohne Mosquitto-Server installieren.
Hier das Beispiel für Ubuntu/Debian/Rasbian

sudo apt install mosquitto-clients
LG und schöne Feiertage!

Heiko
Raspberry Pi 3, FHEM-Server 5.7

Offline Heiner

  • Full Member
  • ***
  • Beiträge: 295
Antw:BMW i3-Daten vom Server per MQTT weiterleiten
« Antwort #55 am: 25 Dezember 2022, 09:18:12 »
Hi, frohe Weihnachten.
Danke funktioniert.

Wie krieg ich den Time reading fuer die naechste Inspektion auf Jahr und Monat reduziert?

Das Reading zeigt:
2024-07-01T00:00:00.000Zmit value format und %1i bekomme ich das Jahr aber leider bekome ich auch mit %2i nicht den Monat.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

 

decade-submarginal