Seite 2 von 2

Re: Transformierung einer HA Component (pybecker) zu OH möglich?

Verfasst: 29. Apr 2024 17:45
von Harka
Hi,
da Du selbst HA ins Gespräch gebracht hast bin ich davon ausgegangen, dass Du die Möglichkeit hast dieses zumindest temporär einzusetzen. Ich habe es z.B. zum "spielen" unter Proxmox in einem LXC-Container installiert.
Bei der Regel hatte ich, weil Du ja wohl keine Rückmeldungen bekommst, an diese als Grundlage gedacht -> viewtopic.php?t=8243 Nur so ein Gefühl... hatte noch in Erinnerung, dass Udo mal was in der Richtung gebastelt hat.
Mit Pyhton hatte ich mich zwar vor Jahren mal ein wenig beschäftigt aber nicht im Einsatz. Von daher kann ich Dir da nicht weiterhelfen. Meine Suche hier hatte aber gezeigt das es dazu reichlich Treffer gibt.

Re: Transformierung einer HA Component (pybecker) zu OH möglich?

Verfasst: 30. Apr 2024 15:27
von udo1toni
Python Scripte kannst Du recht einfach über das exec Binding steuern (wobei einfach und exec eigentlich nicht in einem Satz auftauchen kann. Nun ja...)

Je nachdem, wie das Python Script funktioniert, könnte man es auch um eine mqtt Schnittstelle erweitern und als Dienst laufen lassen. Das Python Script erledigt dann die Arbeit als "Gateway", und zwar zwischen Becker und mqtt.
Das mqtt Binding in openHAB ist super einfach in der Anwendung.

Re: Transformierung einer HA Component (pybecker) zu OH möglich?

Verfasst: 16. Mai 2024 14:13
von thomaska
Update 16.05.2025:

So, ich hab jetzt den Centronic USB Stick für 45€ bekommen.
Auf meinem Openhabian Pi hab ich das Python script von "ole1986" (https://github.com/ole1986/centronic-py/tree/master) genommen. musste den USB Stick nicht via "/dev/serial/by-id/..." sondern mit "/dev/serial/by-path/..." nehmen, weil mein debian11 da wohl einen bug hat.

Was soll ich sagen: LÄUFT per Konsole 😊

Ich hab eine Jalousie angelernt und diese per Konsolenbefehle UP / HALT / DOWN bewegen.
Was bei mir nicht funktioniert hat, ist die Reichweite des USB-Sticks trotz Verlängerung vom UG (Pi) zur Jalousie in das 2.OG. Der Homematic-USB-Sick hat das über diese Entfernung geschafft. Aber dafür wir sich bestimmt eine Lösung finden.

Nächster Schritt: Steuerung aus OH heraus - ich werde wieder berichten.

Re: Transformierung einer HA Component (pybecker) zu OH möglich?

Verfasst: 8. Jul 2024 21:38
von thomaska
So, hat ein bisschen gedauertaber nun ist es geschafft!

Ein zweiter RasPi 4 (Debian 12) mit mqtt-Broker läuft.
Auch darauf ist das centronic Script von von "ole1986" (https://github.com/ole1986/centronic-py/tree/master), das ich zum Einlernen verwende und mein abgewandeltes mqtt-client Script (centronic-stick-mqtt.py, Anhang). Dieses startet immer automatisch mit. Nur der USB-Stick hat ab und zu noch ein Power-Problem nach einem Restart und muss einmal händisch aus- und angesteckt werden.
Diese Script "lauscht" immer auf "/jalousie/#", wobei ich für die Wildcard "#" den CHANNEL verwende, den ich so auch über OH4 je nach Jalousie/Rolladen übergeben.
Beispiel:

Code: Alles auswählen

mosquitto_pub -h localhost -t /jalousie/1/ -m "DOWN"
Hier eine kleine Anleitung, wie ich es auf meinem RasPi 4 gemacht habe:

MQTT

Install mqtt Broker und Client

Code: Alles auswählen

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install -y mosquitto mosquitto-clients

Code: Alles auswählen

# install für SU
sudo pip install paho-mqtt --break-system-packages
# install für USER
pip install paho-mqtt --break-system-packages
Passe die mosquitto Config an
um von außerhalb erreichbar zu sein muss LISTENERS gesetzt werden

Code: Alles auswählen

sudo vim /etc/mosquitto/mosquitto.conf
folgendes hinzufügen

Code: Alles auswählen

listener 1883
allow_anonymous true
dann noch Neustart des Service

Code: Alles auswählen

sudo systemctl restart mosquitto.service
und zum Autostart hinzufügen:

Code: Alles auswählen

sudo systemctl enable mosquitto.service
Script
Lade das Centronic repositorry von ole1986

Code: Alles auswählen

git clone https://github.com/ole1986/centronic-py.git
mqtt extendetes Python Script in den gleichen Ordner kopieren
centronic-stick-mqtt.py (siehe Anhang - KEIN GEWÄHR!!!)

zu autoloader hinzufügen

Code: Alles auswählen

touch centronic-py/output.log
sudo vim /lib/systemd/system/centronic.service
ACHTUNG: User/Userpfad im folgenden Anpassen!!

Code: Alles auswählen

[Unit]
Description=Python MQTT controlling CENTRONIC rollershutter
Wants=network-online.target
After=network-online.target
StartLimitIntervalSec=30
StartLimitBurst=2
FailureAction=reboot

[Service]
Type=idle
#Type=simple
ExecStart=/usr/bin/python /home/USERXYZ/centronic-py/centronic-stick-mqtt.py
#ExecStart=/usr/bin/python /home/USERXYZ/centronic-py/centronic-stick-mqtt.py > /home/USERXYZ/centronic-py/output.log 2>&1
Restart=on-failure

# Use a dedicated user to run our service
User= USERXYZ

[Install]
WantedBy=multi-user.target
nun aktivieren wir den Service, damit er auch beim Neustart gestartet wird:

Code: Alles auswählen

sudo systemctl daemon-reload
sudo systemctl enable centronic.service
einen ersten Start können wir so ausführen:

Code: Alles auswählen

sudo systemctl start centronic.service
Status check

Code: Alles auswählen

sudo systemctl status centronic.service
nun kann man das System einmal durchstarten und schauen ob der Service auch beim Reboot hochgefahren wird.

Code: Alles auswählen

sudo reboot -h now
Jalousie anlernen
bei mir im PY-File "centronic-stick.py" anpassen, für korrekte USB-Stick Erkennung (default ist UPPERCASE)

Code: Alles auswählen

vim centronic-py/centronic-stick.py

Code: Alles auswählen

....
DEFAULT_DEVICE_NAME = '/dev/serial/by-id/usb-Becker-Antriebe_GmbH_CDC_RS232_v125_Centronic-if00'
...
Check, ob USB-Stick RICHTIG initialisiert ist (hat mich etliche Nerven gekostet, bis ich das herausgefunden hatte)

Code: Alles auswählen

sudo screen /dev/serial/by-id/usb-Becker-Antriebe_GmbH_CDC_RS232_v125_Centronic-if00 115200,cs8
Darin kurzer Check:

Code: Alles auswählen

h
i --> Info:  Centronic-II  PC-Central 868MHz V201 [2022-04-06]
r --> RSSI: -111 dBm
Wenn das nicht kommt, sondern schwarz bleibt, Centronic-Stick ziehen, bis 5 zählen, einstecken und sollte vorheriges wiederholen, bis Response kommt
Tip: Beenden von „screen“ mit

Code: Alles auswählen

crt+a
k
y
Rollo Anlernen
- Auf MASTER-Fernbedienung gewünschten KANAL wählen
- PROG Taste an MASTER für 4 Sekunden gedrückt halten -> Bestätigung mit CLICK
- Im Terminal für diesen Channel TRAIN ausführen

Code: Alles auswählen

python3 centronic-py/centronic-stick.py --send TRAIN --channel 1
- Bestätigung mit CLICK … CLICK
- OK-Taste an MASTER
ggf. für weitere Rollos/Jalousien wiederholen

Viel Spaß damit 😉

Re: Transformierung einer HA Component (pybecker) zu OH möglich?

Verfasst: 9. Jul 2024 17:00
von udo1toni
Sehr schön! Prima, dass Du es gleich hier dokumentiert hast.