Bluetti AC300 + B300

Begonnen von Eisenberg188, 23 September 2022, 10:42:40

Vorheriges Thema - Nächstes Thema

Eisenberg188

Hat schon jemand eine Verbindung zu den Hausbatteriespeicher gemacht oder Infos dazu?
6 Raspi: 3 Fhem, Weewx, SmartPi, Kodi; davis Vintage Pro2; OwnAndroidApps (Maxwell 10)

elscom_fhem

Hallo Eisenberg188,

mein Speicher kommt morgen ;) und wird per https://github.com/warhammerkid/bluetti_mqtt angebunden.
d.h. Bluetti (per Bluetooth) -> Service auf dem Pi (in meinem Fall) -> per mqtt an FHEM.

Die Software läuft mit Python3 und ließ sich problemlos installieren.

vg
Jörg
(P.S. da ich nun schon jahrelang FHEM einsetze und hier fleißig mitgelesen habe, wollte ich auch mal etwas zurückgeben ;) )

sonicdee

 :) cool
und funktioniert??
kann man den Speicher steuern, oder nur abfragen?

elscom_fhem

jep - funktioniert  ;) (beides)
Lesend sogar mehr, als gedacht.
Habe mal die Liste im Anhang bereitgestellt.

Wobei Voltages_x für die Spannung der einzelnen Zellen steht und das für alle 3 möglichen Akkupacks (habe eine AC200Max) einzeln.
Es lassen sich AC-Out und DC-Out per MQTT schalten.

Jetzt muss ich nur noch die Schaltung zur Hauseinspeisung (habe das gelernt und weiß, was ich tue ;) :D ) fertig stellen.

vg
Jörg

leuschman

Zitat von: elscom_fhem am 13 Oktober 2022, 20:04:43
...
d.h. Bluetti (per Bluetooth) -> Service auf dem Pi (in meinem Fall) -> per mqtt an FHEM.

Die Software läuft mit Python3 und ließ sich problemlos installieren.
...

Hallo Jörg,

welchen Pi setzt Du ein? Ich hatte versucht das bluetti_mqtt auf einem Pi3B laufen zu lassen - bekomme da aber immer wieder Fehlermeldungen.
Hast Du irgendwelche Pakete nachinstalliert?

Gruß leuschman

elscom_fhem

Hallo leuschmann,

"zuerst" auf einem Pi4 (auf dem auch fhem läuft). Aber wegen andere Probleme mit dem Bluetooth+Serial IO jetzt auf einem 3B.
Ja - es müssen zusätzliche Pakete installiert werden aber wenn ich mich recht erinnere reicht im aktuellen, python3 mit setuptools und dann sollte eigentlich ein python3 setup.py build zum Erfolg führen.
Läuft seitdem reibungslos (abgesehen vom Umstand, daß im ausgeschalteten (AC200) Zustand der Dienst ständig neu startet.)

vg
Jörg 

leuschman

Hallo Jörg,

leider habe ich noch Probleme bei der Ausführung von "bluetti-mqtt".
Wenn ich die Installation - wie unter https://github.com/warhammerkid/bluetti_mqtt beschrieben - vornehme, dann lässt sich das "bluetti-mqtt"-Script nicht aufrufen.
Die Installation geschieht OHNE SUDO.

Erst, wenn ich mit SUDO installiere:
sudo python3 -m pip install bluetti-mqtt

kann ich das Script ausführen. Aber auch hier OHNE SUDO bekomme ich Fehlermeldungen:
pi@HomeSweetHome:~/.local/bin $ bluetti-mqtt --scan
Scanning....
Traceback (most recent call last):
  File "/usr/local/bin/bluetti-mqtt", line 10, in <module>
    sys.exit(main())
  File "/home/pi/.local/lib/python3.7/site-packages/bluetti_mqtt/server_cli.py", line 161, in main
    cli.execute()
  File "/home/pi/.local/lib/python3.7/site-packages/bluetti_mqtt/server_cli.py", line 67, in execute
    asyncio.run(scan_devices())
  File "/usr/lib/python3.7/asyncio/runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
    return future.result()
  File "/home/pi/.local/lib/python3.7/site-packages/bluetti_mqtt/bluetooth/__init__.py", line 17, in scan_devices
    devices = await BleakScanner.discover()
  File "/usr/local/lib/python3.7/dist-packages/bleak/__init__.py", line 216, in discover
    async with cls(**kwargs) as scanner:
  File "/usr/local/lib/python3.7/dist-packages/bleak/__init__.py", line 126, in __aenter__
    await self._backend.start()
  File "/usr/local/lib/python3.7/dist-packages/bleak/backends/bluezdbus/scanner.py", line 174, in start
    manager = await get_global_bluez_manager()
  File "/usr/local/lib/python3.7/dist-packages/bleak/backends/bluezdbus/manager.py", line 896, in get_global_bluez_manager
    await instance.async_init()
  File "/usr/local/lib/python3.7/dist-packages/bleak/backends/bluezdbus/manager.py", line 233, in async_init
    assert_reply(reply)
  File "/usr/local/lib/python3.7/dist-packages/bleak/backends/bluezdbus/utils.py", line 20, in assert_reply
    raise BleakDBusError(reply.error_name, reply.body)
bleak.exc.BleakDBusError: [org.freedesktop.DBus.Error.AccessDenied] Rejected send message, 2 matched rules; type="method_call", sender=":1.139" (uid=1000 pid=23198 comm="/usr/bin/python3 /usr/local/bin/bluetti-mqtt --sca") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination="org.bluez" (uid=0 pid=375 comm="/usr/lib/bluetooth/bluetoothd ")


Erst wenn ich dann das Script auch MIT SUDO aufrufe, bekomme ich beim SCAN meine BLUETTI angezeigt.

Scanning....
Found EP500P221xxxxxxxx: address 00:xx:yy:zz:11:22


War / Ist dies so auch bei Dir so?
Wenn ja, wie sieht Dein ExecStart Eintrag in der Datei bluetti-mqtt.service aus?

Gruß
leuschman

elscom_fhem

Hallo leuschman,

das ist korrekt so. Der Benutzer, mit dem du installiert/ausgeführt hast, ist nicht in der Gruppe "bluetooth".
Entweder in die Gruppe mit aufnehmen, oder in der DBus-Config manuell für diesen Benutzer ändern (nicht empfohlen ;) ).

im ExecStart habe ich nur das Binary angegeben (und Intervall + Broker).
Wenn du (z.B. als Benutzer "pi") nicht per sudo installierst, wird das Binary ausschließlich für diesen Benutzer installiert und nur dieser Benutzer "findet" es.
Wenn du in der bluetti.service den Eintrag "User" hast, muss dieser Benutzer in der Gruppe "bluetooth" sein und bluetti entweder global (per sudo) oder für diesen Benutzer installiert sein. (und am besten dann den kompletten Pfad zur Binary angeben. Da du aber auch per sudo installiert hast, sollte es global verfügbar sein)

vg
Jörg

leuschman

Hallo Jörg,

danke für die Antwort und Hilfe.
Ich habe jetzt endlich den "bluetti-mqtt" als Dienst zum Laufen bekommen. Auch nach einem Neustart verbleibt dies aktiv!  ;D

Nun kann es weitergehen -  die MQTT-Daten habe ich bereits als Client im FHEM integriert.

Gruß
leuschman

etstudent

Hab das Modul auch installiert. Fhem läuft als MQTT Server. Ich sehe auch die Readings, aber wie kann ich jetzt die Bluetti steuern, also AC/DC ein- ausschalten?


elscom_fhem

mit setlist ->
on <command_topic>/ac_output_on ON
off <command_topic>/ac_output_on OFF

etstudent

#11
Hmm, kapier ich nicht, habe das Topic bluetti/state/AC200M-xxyycceessaga/ac_output_on verwendet, sehe dann auch im Traffic, dass es gesendet wird, aber es geschieht auf der Powerstation nichts.
Ist das nicht das falsche Topic? Habe auch mal homeassistant/switch/2211001985410_ac_output_on/config probiert, aber funktioniert auch nicht.
Die Kommunikation scheint ja zu passen, da Istwerte korrekt angezeigt werden.
Noch einen Tipp?
Danke

Ok habs im Anhang weiter oben gesehen, das richtige Topic wäre

bluetti/command/AC200M-2211001985410/ac_output_on

Komischerweise war das nicht in meiner ReadingList enthalten. Ist das normal?

elscom_fhem

... klar wird es gesendet. Nur wenn "die andere Seite" nichts damit anfangen kann, passiert auch nichts ;)

Das ist (nicht schön, aber) normal. Ich musste auch erst im Quelltext nachschauen, da es nicht erzeugt wurde.
Man kann z.B. auch DC schalten - da ich daran aber keinen Bedarf habe (ich müsste dann ja in den Keller rennen :D ), habe ich es nicht aktiviert.

etstudent

Hallo,

habe jetzt gemerkt, dass ich mehrere Broker in FHEM sehe (mit unterschiedlichen Ports), die zur Bluetti verbunden sind. Ich vermute, dass das die Ursache ist, dass anscheinend viel zu oft die Daten eingelesen werden.
Wie kann ich das unterbinden?

rudolfkoenig

Zitathabe jetzt gemerkt, dass ich mehrere Broker in FHEM sehe (mit unterschiedlichen Ports), die zur Bluetti verbunden sind.
Da ich nicht weiss, was man sieht, rate ich mal:

Die FHEM-Instanzen mit dem Namen "<mqtt_server>_<ip>_<port>" representieren die Client Verbindungen.
Wenn mehrere vom gleichen Geraet existieren, dann kann das zu Problemen fuehren.
Ursache ist meist eine nicht stabile Netzwerkverbindung, und ein Workaround ist auf dem Client einen festen MQTT-ClientID zu vergeben.