RainerStaude / hass-becker-component-plus-pybecker

A native home assistant component to control becker RF shutters with a Becker Centronic USB Stick.
MIT License
44 stars 3 forks source link

Shutters not moving despite commands being sent #30

Closed familyafriends closed 11 months ago

familyafriends commented 11 months ago

Hi @RainerStaude ,

we wrote on the homeassistant community forum where you asked me to open an issue here. Recap:

I have never done this before so I hope I can provide all the info you need.

My config:

cover:
 - platform: becker
   device: "/dev/ttyACM1"
   filename: "my-centronic-stick.db"
   covers:
     kitchen:
       friendly_name: "RollladenKüche"
       channel: "2:1"
       intermediate_position: off
       travelling_time_up: 22.75
       travelling_time_down: 19.45
       remote_id: "7A1A2:1"
     dining_room:
       friendly_name: "RollladenEZ1"
       channel: "2:2"
       intermediate_position: off
       travelling_time_up: 29.5
       travelling_time_down: 25.25
       remote_id: "7A1A2:2"
     dining_room2:
       friendly_name: "RolladenEZ2"
       channel: "2:3"
       intermediate_position: off
       travelling_time_up: 33.6
       travelling_time_down: 23.75
       remote_id: "7A1A2:3"
     living_room:
       friendly_name: "RollladenWZ"
       channel: "2:4"
       intermediate_position: off
       travelling_time_up: 30
       travelling_time_down: 26.5        
     bedroom:
       friendly_name: "RollladenSZ"
       channel: "1:3"
       intermediate_position: off
       travelling_time_up: 18.65
       travelling_time_down: 18
       remote_id: "7A1A3:1"
     bathroom:
       friendly_name: "RollladenBad"
       channel: "1:4"
       intermediate_position: off
       travelling_time_up: 30
       travelling_time_down: 26.5
       remote_id: "7A1A3:2"
     storage_room:
       friendly_name: "RollladenHWR"
       channel: "1:5"
       intermediate_position: off
       travelling_time_up: 18.65
       travelling_time_down: 17.8  
       remote_id: "7A1A3:3"

logger:
 default: info
 logs:
   custom_components.becker: debug

my-centronic-stick.db: 'utf-8' codec can't decode byte 0x82 in position 27: invalid start byte

examples from my home-assistant.log INFO (MainThread) [homeassistant.setup] Setup of domain becker took 0.0 seconds

DEBUG (Thread-2) [custom_components.becker.pybecker.becker_helper] BeckerCommunicator thread started.

Master remote is being received in multiple instances like this one here:

DEBUG (Thread-2) [custom_components.becker.pybecker.becker_helper] Received packet: unit_id: 6A29B, channel: 0, command: DOWN, argument: 8, packet: b'\x020000000002010B00000000006A29B0210100004839\x03'
DEBUG (Thread-2) [custom_components.becker.rf_device] Received packet for dispatcher
DEBUG (MainThread) [custom_components.becker.cover] RollladenEZ1 received a packet from dispatcher
DEBUG (MainThread) [custom_components.becker.cover] RollladenEZ1 is travelling from position 100 to 0 in 25.25 seconds
DEBUG (MainThread) [custom_components.becker.cover] RollladenEZ1 update ha-state now
DEBUG (MainThread) [custom_components.becker.cover] RollladenEZ1 setup update ha-state callback in 25.25 seconds

Me sending out the command with the stick, where nothing happens:

DEBUG (MainThread) [custom_components.becker.cover] RollladenHWR is travelling from position 100 to 0 in 17.8 seconds
DEBUG (MainThread) [custom_components.becker.cover] RollladenHWR update ha-state now
DEBUG (MainThread) [custom_components.becker.cover] RollladenHWR setup update ha-state callback in 17.8 seconds
DEBUG (Thread-2) [custom_components.becker.pybecker.becker_helper] Sent packet: unit_id: 1737B, channel: 5, command: DOWN, argument: 0, packet: b'\x020000000002010B00620000001737B021010500402E\x03'

If there is anything else you need, please let me know and I will try my best to provide the information needed.

Thanks for having a look at this in the first place!!! Steffen

RainerStaude commented 11 months ago

Hallo Steffen,

das sieht ja eigentlich gut aus. Das db file ist angelegt. Pairing hat auf Anhieb geklappt (aus Home Assistent heraus?) Und trotzdem funktioniert es nicht :-(

In der db Datei wird die fortlaufende Nummer gespeichert. Deshalb sollte diese bei jedem Becker Kommando aus Home Assistent heraus aktualisiert werden. Also sollte der Änderungszeitpunkt der db Datei dem Zeitpunkt des letzten Kommandos entsprechen. Wenn das nicht der Fall ist, dann funktionieren die Kommandos an die Motoren nicht. Falls das Schreiben nicht klappt würde ich eigentlich eine Fehlermeldung in der log Datei erwarten. Gibt es irgendwelche anderen Fehlermeldungen?

Die db Datei ist eine SQlite Datenbank und deshalb nicht mit einem Texteditor lesbar.

Grüße Rainer

familyafriends commented 11 months ago

Genau. Ich habe, wie in der Anleitung beschrieben, den becker.pair service verwendet, was immer sofort mit dem Klickklack Geräusch quittiert wurde. Da hat das Aussenden der Befehle also ohne Weiteres geklappt.

Nach deiner Nachricht habe ich eben noch einmal Befehle losgesendet, die auch rausgingen:

DEBUG (MainThread) [custom_components.becker.cover] RollladenHWR setup update ha-state callback in 17.8 seconds
DEBUG (Thread-2) [custom_components.becker.pybecker.becker_helper] Sent packet: unit_id: 1737B, channel: 5, command: DOWN, argument: 0, packet: b'\x020000000002010B00630000001737B021010500402D\x03'
DEBUG (MainThread) [custom_components.becker.cover] RollladenHWR stopped at position 72
DEBUG (MainThread) [custom_components.becker.cover] RollladenHWR update ha-state now
DEBUG (Thread-2) [custom_components.becker.pybecker.becker_helper] Sent packet: unit_id: 1737B, channel: 5, command: HALT, argument: 0, packet: b'\x020000000002010B00640000001737B021010500105C\x03'

Und, wie von dir angesprochen, wurde auch dementsprechend die db Datei aktualisiert und hat nun das Datum von heute, mit der entsprechenden Uhrzeit.

Mir war nicht klar, dass das Änderungsdatum mit den Befehlen zusammenhängt, sorry.

Ist es zielführend, wenn ich einfach alles noch einmal neu installiere? Das wäre auch kein Problem. Da aber verschiedene Dateien angelegt wurde, müsste sichergestellt sein, dass auch wirklich alles restlos gelöscht wurde, um eine saubere neue Installation zu ermöglichen.

Liebe Grüße

RainerStaude commented 11 months ago

Sieht eigentlich alles gut aus.

Welche Version von HA verwendest du? Wie ist das installiert (Docker, VM, etc.) Auf welchem Gerät läuft das (NAS, RasPi, etc. Nur interessehalber, wahrscheinlich ist es nicht so wichtig)?

Ist es das richtige USB Device? Vielleicht hast du es nochmal umgesteckt seitdem es gepaart wurde!?

Welche Motoren und Fernbedienungen hast du?

Hast du schonmal probiert dein HA näher an die Rollladen zu stellen? Vielleicht ist es doch ein Reichweitenproblem? Ich habe auch einen etwas entfernteren Motor, den ich manchmal gar nicht steuern kann. Manchmal kann ich ihn nur starten und nicht mehr stoppen. Und manchmal funktioniert er tadellos.

Vielleicht nochmal ein Reboot deines kompletten Systems?

Manchmal hilft es auch öfters (10 Mal) auf die Stop Taste in HA zu drücken (falls der Motor nicht mehr in Sync ist, z.B. wegen der Reichweite).

Wie du siehst fällt mir auch nicht mehr viel ein. Aber nachdem das Pairing anscheinend funktioniert hat und auch tadellos die Kommandos der Fernbedienungen empfangen wurden sollte es eigentlich klappen.

familyafriends commented 11 months ago

/dev/serial/by-id/usb-Becker-Antriebe_GmbH_CDC_RS232_v125_Centronic-if00 vs /dev/ttyACM1

Ich probiere deine Tipps jetzt mal aus und versuche sonst alles was mit der Integration zu tun hat zu löschen, um das Ganze dann noch einmal neu zu installieren. Ärgerlich! Man hofft immer, dass der eigene Fehler schnell behoben ist und nicht dann wieder irgendeine Konstellation zusammen kommt, die nicht richtig identifiziert werden kann :D Vielen Dank noch einmal für deine Mühe und deine Zeit!

familyafriends commented 11 months ago

Eine komplette Neuinstallation hat leider nichts verändert außer, dass ich gemerkt habe, dass der eine Rollladen mit nur zwei L geschrieben war.

Ich habe eben testweise den Rollladen der Küche neu gepaart. Master: Setup Button bis zum Klick - becker.pair - Master: noch einmal den Setup button bis zum Klick.

Ein Kommando wird also gesendet und empfangen.

Wenn ich die Rollladen Entität offen habe sehe ich auch, wenn ich mit der Master Remote Kommandos sende, weil HomeAssistant das mitbekommt und sich sofort aktualisiert.

Bsp: Ich drücke auf Rollladen schließen auf der Master Remote und Homeassistant wechselt sofort auf "Closing".

Beim Stick ankommen tun die Kommandos also auf jeden Fall.

Sobald ich aber auf Senden gehe, passiert nichts. Eigentlich muss der Fehler ja dann beim Pairing des Sticks mit dem Rollladenmotor passieren. Denn die Kommunikation zwischen Master und Centronics Stick funktioniert ja problemlos und fast ohne Verzögerung.

Es ist zum Verzweifeln :(

Edit: OMG einer der Rollläden bewegt sich, wenn ich das Signal durch Homeassistant schicke :-O Ich habe beim "Pairing Master - becker.pair - Master - becker.pair" durchgeführt und es dadurch geschafft, dass er Kommandos vom Stick annimmt. Unfassbar, ich kann gar nicht glauben, dass einer läuft. Beim Rest hat diese Variante noch nicht geklappt. Ich werde aber diese noch einmal komplett neu löschen und testen, ob es vielleicht mit dieser Variante doch funktioniert.

RainerStaude commented 11 months ago

Manchmal hilft es auch zweimal hintereinander Becker pair auszuführen. Der Motor muss auf jeden Fall 3x klacken, ansonsten war die Paarung nicht erforderlich.

familyafriends commented 11 months ago

Ich habe die Lösung des Problems gefunden. Eigentlich schäme ich mich aber fast sie zu erklären...

Ich habe gemerkt, dass Channel 3 Unit 3 und Channel 2 Unit 2 funktioniert hat, die anderen Rollläden aber nicht.

In der Config gebe ich den Sendeplatz der Rollläden mit Unit:Channel an. Im Becker.pair Service aber mit Channel:Unit. Das heißt, es hat vermutlich die ganze Zeit schon alles so funktioniert wie es sollte. Das Problem war einfach nur, dass die Rollläden selbst nicht auf das belegt waren, was dann HomeAssistant ausgesendet hat, auf Grund meiner widersprüchlichen Angaben in der config und becker.pair.

Wow.... Am Ende war es etwas so banales. Sorry, dass mir das nicht früher aufgefallen ist und noch ein letztes Mal vielen Dank für deine Mühe und Hilfsbereitschaft.

RainerStaude commented 11 months ago

Top! Das freut mich. Dass die Reihenfolge bei Becker pair anderst herum ist wie in der config, ist mir so noch gar nicht aufgefallen.