[gelöst] MQTT Ansatz für PV-Anlage Anker solix2mqtt

Begonnen von Clyde, 02 Februar 2025, 16:07:22

Vorheriges Thema - Nächstes Thema

Clyde

Als MQTT Anfänger brauche ich mal eine Starthilfe.

Ich möchte Daten meiner PV-Anlage in FHEM einbinden.
Es gibt dazu einen MQTT-Ansatz, der unter node.js läuft:

https://github.com/tomquist/solix2mqtt

Mein FHEM läuft in einem LXC unter Proxmox.
MQTT ist bisher nicht vorhanden.

Ich frage mich nun, wie ich das sinnvoll umsetze?  ::)

A) FHEM intern MQTT2-Server
B) FHEM extern mit mosquitto im selben Container
C) FHEM extern mit mosquitto im eigenen Container
D) ganz anders...

Proxmox auf MINIX-Z100, LXC: FHEM, FS20, FHT, HM, Tradfri, Alexa, Anker Solix Solarbank 2

Beta-User

A) ist für Einsteiger die einfachste Variante.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Clyde

Danke, genau so habe ich es jetzt umgesetzt:

Instalation im FHEM-Container: https://github.com/tomquist/solix2mqtt

cd /root/solix2mqtt

Script angelegt und ausführbar gemacht:


  GNU nano 7.2                       solix2mqtt.sh                               
#!/bin/sh

export S2M_USER=xxx
export S2M_PASSWORD=xxx
export S2M_COUNTRY=DE
export S2M_MQTT_URI=mqtt://192.168.2.xx:1883
export S2M_MQTT_TOPIC=solix

cd /root/solix2mqtt
npm run start


chmod +x solix2mqtt.sh

In FHEM Kommandozeile:
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
Der Dienst kann über die Kommandozeile gestartet werden:

{system('sudo /root/solix2mqtt/solix2mqtt.sh&')}
Nachdem die Daten eintrudeln wird die solix2mqtt in einem neuen Raum angelegt: MQTT2_DEVICE

In den Readings werden die Daten inclusive verbauter Plugs fortlaufend aktualisiert.

Anmerkung. Auf https://www.ankersolix.com/de habe ich einen zusätzlichen 2ten Account angelegt. Dieser wird dann in der Anker App unter Profil/System verwalten/Eigentümer als Mitglied einer Familiengruppe eingeladen. Auf einem weiteren Gerät habe ich dann die Anker App mit diesem 2ten Account angelegt.
Dort unter Profil kann man sich dann über die Einladung auf den Eigentümer-Account verbinden. So kann man den Eigentümer-Account unabhängig weiter nutzen. Über diesen 2ten Account läuft dann auch das MQTT.
Proxmox auf MINIX-Z100, LXC: FHEM, FS20, FHT, HM, Tradfri, Alexa, Anker Solix Solarbank 2

zwinzsch

Hi Servus, ich würde gerne das Thema nochmal aufgreifen.
Ich habe eine SOLIX E1600 2 Pro. Ich habe FHEM auf einem Raspberry pi laufen und darauf auch einen MQTT Server, über welchen ich schon Shelly Geräte in FHEM sehe.
Ich scheitere bei der Installation / Inbetriebnahme des solix2mqtt Paketes
* nodejs ist installiert
* npm ist installiert
* solix2mqtt Paket ist geklont
* ich bin nach der GIT Anleitung vorgegangen
* npm install && npm run build liefen fehlerfrei durch
* ein Starterscript, wie oben angesprochen habe ich erstellt (ich habe export weggelassen)
* bei Ausführung kommt es zur Fehlermeldung:
solix2mqtt@1.0.0 start
> node ./bin/app.js

/home/pi/solix2mqtt/bin/app.js:29
            loginData = loginResponse.data ?? null;
                                            ^

SyntaxError: Unexpected token '?'
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47
npm ERR! code 1
npm ERR! path /home/pi/solix2mqtt
npm ERR! command failed
npm ERR! command sh -c node ./bin/app.js

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2025-03-18T17_55_39_413Z-debug.log

Jens_B

Zitat von: Clyde am 03 Februar 2025, 13:16:10Danke, genau so habe ich es jetzt umgesetzt:

Instalation im FHEM-Container: https://github.com/tomquist/solix2mqtt

cd /root/solix2mqtt

Script angelegt und ausführbar gemacht:


  GNU nano 7.2                       solix2mqtt.sh                               
#!/bin/sh

export S2M_USER=xxx
export S2M_PASSWORD=xxx
export S2M_COUNTRY=DE
export S2M_MQTT_URI=mqtt://192.168.2.xx:1883
export S2M_MQTT_TOPIC=solix

cd /root/solix2mqtt
npm run start


chmod +x solix2mqtt.sh

In FHEM Kommandozeile:
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
Der Dienst kann über die Kommandozeile gestartet werden:

{system('sudo /root/solix2mqtt/solix2mqtt.sh&')}
Nachdem die Daten eintrudeln wird die solix2mqtt in einem neuen Raum angelegt: MQTT2_DEVICE

In den Readings werden die Daten inclusive verbauter Plugs fortlaufend aktualisiert.

Anmerkung. Auf https://www.ankersolix.com/de habe ich einen zusätzlichen 2ten Account angelegt. Dieser wird dann in der Anker App unter Profil/System verwalten/Eigentümer als Mitglied einer Familiengruppe eingeladen. Auf einem weiteren Gerät habe ich dann die Anker App mit diesem 2ten Account angelegt.
Dort unter Profil kann man sich dann über die Einladung auf den Eigentümer-Account verbinden. So kann man den Eigentümer-Account unabhängig weiter nutzen. Über diesen 2ten Account läuft dann auch das MQTT.


Danke! Das funktioniert! Das Device heißt solix2mqtt und liefert viele Readings. Hat jemand schon eine schöne Visualisierung umgesetzt? Ich bin dafür zu doof.
RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

Jens_B

@zwinschh

warum hast Du im Script export= weggelassen?
Stimmt der Pfad in dem das Script liegt?
RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

zwinzsch

#6
HI Jens,
der Pfad "home/pi/solix2mqtt/" passt. Ich weiß, es ist nicht gut, dass in Home-Verzeichnissen liegen zu haben.
Durch das clonen hat er das Verzeichnis in das Home Verzeichnis getan. Ich bin mir unsicher, ob ich das Verzeichnis einfach Verschieben kann.

Das export= habe ich weggelassen, da es in der Anleitung im GitHub von tomquist unter Locally auch nicht erwähnt wird. Aber auch mit kommt es zur gleichen Fehlermeldung.

Ich sehe, Du hast es erfolgreich zum Laufen bekommen. Wenn man positiv denkt, dann scheint er an der Übergabe der Login Daten zu scheitern...

hier noch der Log-Auszug
0 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'start' ]
1 info using npm@7.5.2
2 info using node@v12.22.12
3 timing config:load:defaults Completed in 24ms
4 timing config:load:file:/usr/share/nodejs/npm/npmrc Completed in 26ms
5 timing config:load:builtin Completed in 27ms
6 timing config:load:cli Completed in 29ms
7 timing config:load:env Completed in 4ms
8 timing config:load:file:/home/pi/solix2mqtt/.npmrc Completed in 3ms
9 timing config:load:project Completed in 11ms
10 timing config:load:file:/root/.npmrc Completed in 1ms
11 timing config:load:user Completed in 2ms
12 timing config:load:file:/etc/npmrc Completed in 1ms
13 timing config:load:global Completed in 2ms
14 timing config:load:cafile Completed in 3ms
15 timing config:load:validate Completed in 3ms
16 timing config:load:setUserAgent Completed in 6ms
17 timing config:load:setEnvs Completed in 15ms
18 timing config:load Completed in 131ms
19 verbose npm-session 780656d90b0566e3
20 timing npm:load Completed in 264ms
21 timing command:run-script Completed in 1311ms
22 verbose stack Error: command failed
22 verbose stack     at ChildProcess.<anonymous> (/usr/share/nodejs/@npmcli/pro>
22 verbose stack     at ChildProcess.emit (events.js:314:20)
22 verbose stack     at maybeClose (internal/child_process.js:1022:16)
22 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_pro>
23 verbose pkgid solix2mqtt@1.0.0
24 verbose cwd /home/pi/solix2mqtt
25 verbose Linux 6.1.21-v7+
26 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "start"
27 verbose node v12.22.12
28 verbose npm  v7.5.2
29 error code 1
30 error path /home/pi/solix2mqtt
31 error command failed
32 error command sh -c node ./bin/app.js
33 verbose exit 1



zwinzsch

So jetzt läuft es bei mir auch...super Sache!

Es lag tatsächlich am Skript. Ich hatte npm nochmal geupdatet und dann kam auch eine klarere Fehlermeldung, dass die Env Variablen fehlen.
Dann habe ich das Skript von mir nochmal näher untersucht und es lag an einer zusätzlichen Leerzeile. Alles sauber formatiert und nun läufts!

JoWiemann

Hallo,

bei mir hat solix2mqtt immer wieder dazu geführt, dass nach 3,4 Tagen Anker die Anmeldung für 24 Stunden, wegen zu häufiger Anmeldungen, gesperrt hat.

Ich habe dann die entsprechenden Erweiterung von ioBroker installiert und lasse mir von ioBroker die Daten per MQTT schicken. Dass läuft seid zwei Wochen ohne Probleme.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM