Einrichtung SAIC MQTT Gateway auf einem Raspberry Pi - Tutorial

  • Hallo, so bei mir läuft es nun endlich, das SAIC MQTT Gateway auf meinem Raspberry Pi. Das Gateway published als MQTT-User "evcc" topics, die mit dem Topic root saic beginnen. Abonniert hat das bei mir der ioBroker und eben auch evcc. Hier, was ich gemacht habe, vielleicht hilft es dem ein oder anderen. Ich hoffe, ich kriege das alles noch genau aus dem Kopf hin. Gerade die mosqitto Installation ist schon sehr lange her.

    Mosqitto installieren

    Als erstes bringen wir das System aktuell:

    Code
    sudo apt update
    sudo apt upgrade

    Füge nun das Mosquitto Repository dazu:

    Code
    sudo apt install software-properties-common
    sudo add-apt-repository ppa:mosquitto-dev/mosquitto-ppa

    Aktualisiere die Paketquellen erneut:

    Code
    sudo apt update

    Installiere Mosquitto und die Mosquitto-Clients:

    Code
    sudo apt install mosquitto mosquitto-clients

    Starte den Mosquitto-Dienst und aktiviere ihn, damit er beim Booten automatisch startet:

    Code
    sudo systemctl start mosquitto
    sudo systemctl enable mosquitto

    Prüfe, ob der Dienst läuft:

    Code
    sudo systemctl status mosquitto

    Mosqitto Nutzer evcc erstellen

    Erstelle die Konfigurationsdatei

    Code
    sudo nano /etc/mosquitto/conf.d/custom.conf

    Kopiere das in die Datei hinein:

    Code
    listener 1883
    
    allow_anonymous false
    password_file /etc/mosquitto/mosquitto_passwords

    listener hört also auf Port 1883 (der Standard Port für Mosqitto, allow_anonymous false bedeutet, dass man immer ein Passwort braucht und das Passwort file wird definiert mit der letzten Zeile.

    Legt nun einen neuen Benutzer evcc an:

    Code
    sudo mosquitto_passwd -c /etc/mosquitto/mosquitto_passwords evcc

    Ihr werdet nach einem Passwort gefragt. Wählt ein sicheres und merkt euch das. Am Besten verwendet ihr nur Zahlen, Gross- und Kleinbuchstaben und ein sehr langes Passwort.

    Nun den Dienst nochmal neu starten:

    Code
    sudo systemctl restart mosquitto

    Prüft, ob ihr ufw aktiv habt:

    Code
    sudo ufw status

    Wenn ja, achtet darauf, dass Port 1883 offen ist.

    MQTT Explorer unter Windows installieren

    Um zu prüfen, ob nun alles wie gewünscht läuft, installieren wir uns den MQTT-Explorer unter Windows:

    - Gehe auf die Webpage: https://github.com/thomasnordquist/MQTT-Explorer/releases

    - Lade dir die neueste stabile Version herunter, die ist auch gekennzeichnet mit "Latest".

    - Klicke dort auf das kleine Assets-Pfeilchen und suche die Windows-Exe. Kann sein, dass du nochmal auf "Show all assets" klicken musst.

    - Installiere die exe und öffne den MQTT Explorer.

    - Klicke auf das gelbe Plus-Zeichen (Connections) und wähle unter Name einen Namen deiner Wahl.

    - Protocol stelle mqtt ein.

    - Als Host gibst du die Raspi-IP ein, die du in deiner Router-Konfiguration findest. Port ist der Standard port 1883.

    - Als Username wählst du evcc und gebe dann dein gemerktes Passwort ein.

    - Dann klicke auf Save und Connect

    Verbindung testen

    Du hast nun hoffentlich erfolgreich Mosqitto eingerichtet. Um das auch zu prüfen, gehe zurück in dein Raspi-Terminal und gib folgendes ein (ersetze dabei die IP unter -h mit der IP deines Raspis, die du auch schon oben rausgesucht hast und ersetze das Passwort mit deinem:

    Code
    mosquitto_pub -h 192.168.178.19 -p 1883 -u evcc -P <Dein Passwort> -t test/topic -m "Test message"

    Die Nachricht muss dann in dem Fenster vom MQTT Explorer rauskommen, ansonsten ist etwas schief gelaufen.


    Python-Version prüfen und bei Bedarf updaten

    Das SAIC MQTT Gateway läuft nur mit Pyhton Versionen grösser oder gleich 3.12. Ich hatte 3.11 drauf auf meinem Raspi und es wurde nicht automatisch angehoben. Deswegen musste ich 3.12.9 (war bei mir aktuell) manuell installieren.

    Code
    python3 --version

    Wenn also eine Version mit 3.11 angezeigt wird, dann musst du folgende Schritte ausführen, ansonsten diese überspringen:

    Wieder Paketquellen aktualisieren:

    Code
    sudo apt update
    sudo apt upgrade

    Abhängigkeiten installieren:

    Code
    sudo apt install -y software-properties-common
    sudo apt install -y build-essential libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev zlib1g-dev

    Python herunterladen

    Code
    cd /tmp
    wget https://www.python.org/ftp/python/3.12.9/Python-3.12.9.tgz

    Archiv entpacken:

    Code
    tar -xzf Python-3.12.9.tgz

    Python installieren (nach dem Absetzen der Kommandos kannst du entspannt Kaffee trinken, kann schon 30-45 Minuten dauern):

    Code
    cd Python-3.12.9
    ./configure --enable-optimizations
    make -j $(nproc)
    sudo make altinstall


    Prüfe auf Erfolg:

    Code
    python3.12 --version

    Nun solltest du noch den Python Paketmanager installieren:

    Code
    wget https://bootstrap.pypa.io/get-pip.py
    sudo python3.12 get-pip.py

    Und auch prüfen:

    Code
    pip3.12 --version


    Sehr gut, auch Python installiert. Als nächste Schritte folgen das SAIC Gateway.

    Zweitaccount anlegen

    - Nehmt ein zweites Handy oder öffnet ein zweites Profil auf eurem Handy. Installiert die MG App und legt einen weiteren Account an. Wählt dabei eine email-Adresse, z. B. zweitkonto@email.de und schliesst die App wieder ohne das Fahrzeug zu koppeln. Achtung beim Passwort: nur Zahlen, Gross- und Kleinbuchstaben.

    - Öffnet die App von MG mit eurem Erstkonto, klickt das Icon ganz rechts unten und legt ein Zweitkonto an, indem ihr auf das kleine + rechts oben klickt. Wählt dauerhaft aus. Als Name wählt ihr z. B. mqtt und Konto die vorhin angelegte zweitkonto@email.de

    - Wenn das geklappt hat, dann seht ihr das in der Übersicht im Menü Zweitkonto.

    - Bei Bedarf kann die MG App auf dem zweiten Handy / Profil wieder deinstalliert werden.

    SAIC Gateway installieren

    Öffnet wieder ein Terminal auf eurem Raspi und bringt euer System auf den neuesten Stand:

    Code
    sudo apt update
    sudo apt upgrade


    Lade das SAIC MQTT Gateway herunter:

    Code
    cd ~
    git clone https://github.com/SAIC-iSmart-API/saic-python-mqtt-gateway.git
    cd saic-python-mqtt-gateway

    Erstelle eine virtuelle Umgebung, aber Achtung, nehme die Python-Version, die du oben installiert hast:


    Code
    python3.12 -m venv venv

    Aktiviere die virtuelle Umgebung:

    Code
    source venv/bin/activate

    Installiere Abhängigkeiten:

    Code
    pip install -r requirements.txt


    Nun sollte sich das ganze starten lassen - bitte beachte, dass immer noch ein (venv) am Anfang deiner Kommandozeile steht, wenn nicht, aktiviere mit source wie oben beschrieben die venv. Ersetze die Werte zweitkonto@email.de, das Passwort des Zweitaccounts, die IP-Adresse eures Raspis, und das mqtt-Passwort von evcc mit deinen Werten:


    Code
    python3 mqtt_gateway.py -u zweitkonto@email.de -p <Passwort-des-zweitaccounts> -m tcp://192.168.178.19:1883 --mqtt-user evcc --mqtt-password <Passwort-vom-evcc-mqtt-Nutzer> --messages-request-interval 30


    Nun prüft wieder die Ausgaben auf der Shell und auch den MQTT Explorer: Hier sollte nach kurzer Zeit Werte auftauchen von eurem Fahrzeug unter dem Topic saic. Wenn nicht, nochmal alles prüfen.


    Den Rest gibt es später

    Luxury, MY23, EZL 11/24, Pebble Black

    Einmal editiert, zuletzt von topcaser ()

  • Hi, ich versuch mich auch gerade an deiner Anleitung.

    wie ich gerade sehe, ist dieses "evcc"ein Programm zur Steuerung und Datenerfassung.

    Ich hab es eben installiert und muß mich erst noch einlesen.

    Auch meine Wallbox ist noch nicht installiert.

    Allerdings hab ich bereits einen Tasmota-SMR-Lesekopf am Zähler und erfasse die Leistung meines Balkonkraftwerkes über eine Tasmota-'Steckdose.

  • Hi, ich versuch mich auch gerade an deiner Anleitung.

    wie ich gerade sehe, ist dieses "evcc"ein Programm zur Steuerung und Datenerfassung.

    Ich hab es eben installiert und muß mich erst noch einlesen.

    Auch meine Wallbox ist noch nicht installiert.

    Allerdings hab ich bereits einen Tasmota-SMR-Lesekopf am Zähler und erfasse die Leistung meines Balkonkraftwerkes über eine Tasmota-'Steckdose.

    Balkonkraftwerk? Da würde ich evcc nicht in Betrieb nehmen für, kommt zu wenig

  • Was genau ist deine Frage? Hat die Installation bei Dir gelappt, war die Anleitung verständlich? Ich muss noch das tutorial erweitern, wie das dauerhaft nach einem reboot läuft.

    ich habe es nach deiner Anleitung auf einem Mini-PC in Proxmox in einer Debian-VM installiert und es läuft auch.
    Allerdings ist mir nicht klar, was ich bei den verschiedenen Abfragen bei


    Code
    sudo evcc configure


    angeben muß.

    Dann hatte ich das Addon SAIC MQTT Gateway (Python) entdeckt und in Home Assistant installiert.
    Fazit:

    ich möchte meine noch zu erwerbende Wallbox sowie mein MG 4 in Homeassistant erfassen.