NEWS
Venus V3.0 API Token
-
Hallo !
vielen Dank für den Code !Api freischalten geht seit etwa Dezember direkt in der App.
Geht einwandfrei !
--> ein bischen Offtopic: Sollte jemand lieber mit Blockly "programmieren" geht das sehr einfach mit exec aufrufen (mit netcat = nc)
echo '{"id":1,"method":"Bat.GetStatus","params":{"id":0}}' | nc -u -w 1 192.168.178.xyz 30000
Alles andere aus der API kann man damit auch abfragen / übertragen / Modes setzen etc. Habs grad probiert. Wichtig ist nur das vorher einmalig :
echo '{ "id": 0, "method": "Marstek.GetDevice", "params": { "ble_mac":"0" } } ' | nc -u -w 1 192.168.178.255 30000 gesendet wird damit er die UDP API aktiviert.
Manchmnal antwort mein Marstek Venus E v3 erst beim 2ten mal. Offenbar muss er nach längerer Zeit immer erst auffwachen.
-

echo '{ "id": 1, "method": "ES.GetMode", "params": { "id": 0 } }'| nc -u -w 1 192.168.178.149 30000
Ich hab den Loglevel auf "fehler" gesetzt damit ichs im log besser sehe..
So kannst du jeden Befehl aus der Api aufrufen.Wenn du die Antwort auswerten/verarbeiten möchtest ist das die Variable "result"
Du must Ihm vorher aber einmal aufwecken mit dem "Suchbefehl". Siehe Api bzw. mein Post weiß es grad nicht auswendig
NC = Netcat ist ein exteres Programm - sollte das in deinem Image nicht drin sein must du es vorher nachinstallieren mit "apt-get install -y netcat" auf der commandozeile
-
Danke dir für die Anleitung womit ich schon ein wenig weiter bin:
a) Ich habe NC nur mit apt install -y netcat-openbsd in den Raspi bekommen.
b) mein Blockly sieht so aus und erzeugt (manchmal) Error und ich schreibe es in die Variable "M-Power2" als string:
-
Hallo.
Dein Linux Image ist offenbar Openbsd basiert, deshalb brauchst du einen anden Install code.. aber das hat ja geklappt.Der "Error" ist kein Error.. im log steht das nur weil du / ich den Output als "Fehler" Ausgabe deklarierst.
Im 2ten Beispiel hast du 2 sachen geändert.
- Du fragst als GetDevice ab.. -> Das must du wiklirch nur einmalig nach dem einschalten des Venus machen. Er öffnet darauf hin die Api und antwortet solang bis er wirklich aus war. Danach schickst du direkt das nächste Kommando. Eventuell ist dem Venus oder dem Netzwerk zu schnell.. und es gibt dann keine Antwort.
Mach mal 3 Programme raus und starte die nacheinander. Oder mach einfach mal 2 Sekunden Pause dazwischen.. Erst GetDevice, dann GetMode, und dann Bat.getmode..
echo '{ "id": 1, "method": "ES.GetMode", "params": { "id": 0 } }'| nc -u -w 1 192.168.178.149 30000 -> "-w 1" bedeutet nach einer Sekunde verbindung abbrechen und ausgeben. Eventuell ist noch gar kein Antwort-Paket angekommen - oder das Anfrage-Paket ist nicht beim Marstek angekommen..
Vielleicht hast du auch beim kopieren der Befehle nen Fehler gemacht. IP / Port ? und mir ist aufgefallen das man aus der API Doku nicht rauskopieren kann. (Die Klammern sind dann immer falsch).
Du kannst die Netcat Befehle auch erst alle direkt auf der Console testen mit und ohne -w "Sekunden" . Dann kannst du sehen ob du überhaupt direkt jedes mal ne Antwort bekommst und auch mal gucken wie schnell das klappt.
nachtrag: Welche Firmware Version hast auf dem Venus ? Und ist es Version 1 2 oder 3
nachtrag2: ich lass mir auch den gesendeten Befehl ins log schreiben, so kann man sehen oder tatsächlich der richitge Befehl gesendet wird (wegen dem hochkomma problem - ich weiß nicht ob das bei OpenBsd genauso klappt wie bei mir) -
Bei mir läuft auf dem Venus 3.0 eine Firmware V147.117.112 leider nicht ohne Probleme so dass ich deshalb auch Firmware-Fehler / API-Fehler vermute. Mal sehen was mit den Support für einen Version kommt. Und auch mit Pausen waren noch nicht erfolgreich.
-
Hallo, ich habe seit gestern auch den Marstek Venus E 3.0 und habe den Support angeschrieben, dass ich ebenfalls eine Freigabe für Smarthome benötige. Sie haben mir heute geantwortet, dass sie jetzt für mich MQTT freigeschaltet haben. Eigentlich benötige ich in iobroker den Füllstand, ob lädt oder entlädt, und die Leistung.
Jetzt stehe ich allerdings auf dem Schlauch, normalerweise müsste ich doch jetzt meine iobroker-ip und port irgendwo in der Marstek-App eingeben oder habe ich einen Denkfehler? Neue Einstellungen habe ich jetzt nicht in der App, nur das bekannte "Local API" und den Port.
-
Hallo !
vielen Dank für den Code !Api freischalten geht seit etwa Dezember direkt in der App.
Geht einwandfrei !
--> ein bischen Offtopic: Sollte jemand lieber mit Blockly "programmieren" geht das sehr einfach mit exec aufrufen (mit netcat = nc)
echo '{"id":1,"method":"Bat.GetStatus","params":{"id":0}}' | nc -u -w 1 192.168.178.xyz 30000
Alles andere aus der API kann man damit auch abfragen / übertragen / Modes setzen etc. Habs grad probiert. Wichtig ist nur das vorher einmalig :
echo '{ "id": 0, "method": "Marstek.GetDevice", "params": { "ble_mac":"0" } } ' | nc -u -w 1 192.168.178.255 30000 gesendet wird damit er die UDP API aktiviert.
Manchmnal antwort mein Marstek Venus E v3 erst beim 2ten mal. Offenbar muss er nach längerer Zeit immer erst auffwachen.
@derkleinschreiber sagte in Venus V3.0 API Token:
--> ein bischen Offtopic: Sollte jemand lieber mit Blockly "programmieren" geht das sehr einfach mit exec aufrufen (mit netcat = nc)
echo '{"id":1,"method":"Bat.GetStatus","params":{"id":0}}' | nc -u -w 1 192.168.178.xyz 30000
Alles andere aus der API kann man damit auch abfragen / übertragen / Modes setzen etc. Habs grad probiert. Wichtig ist nur das vorher einmalig :
echo '{ "id": 0, "method": "Marstek.GetDevice", "params": { "ble_mac":"0" } } ' | nc -u -w 1 192.168.178.255 30000 gesendet wird damit er die UDP API aktiviert.
WIe @derkleinschreiber oben sagte, versuche ich, meine Venus E 3.0 (am LAN) und CT002 über die API auszulesen mit netcat.
Venus Version ist V148.
ping auf die Adresse geht.
Wenn ich Kommandos sende erhalte ich auch eine Antwort, alledings immer einen Fehler.
Prinzipiell scheint daher die Venus ja zu antworten.auch nach mehrmaligem Senden von Bat.GetStatus :
Kommando:
MARSTEK_Result=echo '{ "id": 0, "method": "Marstek.GetDevice", "params": { "ble_mac":"0"}} ' | nc -u -w 1 192.168.2.33 30000
Ergebnis:
MARSTEK_Result={ "id": 0, "src": "VenusE 3.0-bc2a33ad06aa", "error": { "code": -32700, "message": "Parse error", "data": 402 } }Hat jemand eine Idee, woran es liegen kann?
Herzlichen Dank für euren Support!

