mrbungle64 / ioBroker.switchbot-ble

Control your SwitchBot "Bot" and monitor SwitchBot "Meter", "Contact" and "Motion" via Bluetooth (BLE)
MIT License
5 stars 1 forks source link

Bug: Curtain Upgrade auf Firmware Version 3.9 #121

Closed patrickbs96 closed 9 months ago

patrickbs96 commented 2 years ago

Is there an existing issue for this?

The problem

Hallo Sascha,

ich lege das mal als Issue an, da das alte Issue geschlossen ist und darauf nicht geantwortet werden kann.

Ich bin bei der Curtain noch bei Version 3.1, ein Update wird mir aktuell aber auch nicht angeboten. Vielleicht wird das inkrementell ausgerollt. Falls ich was testen soll, sag Bescheid 😉


@Pr0xyChainZ @patrickbs96

Hat einer von Euch beim Curtain schon die Firmware-Version 3.9 installiert?

Mit dieser Firmware scheint es Probleme zu geben.

Falls Ihr noch eine niedrigere Version installiert habt würde ich erst mal von einem Update abraten. Ansonsten würde ich mich über Feedback freuen, wie es mit der Firmware-Version 3.9 funktioniert 😉

Originally posted by @mrbungle64 in https://github.com/mrbungle64/ioBroker.switchbot-ble/issues/65#issuecomment-1047794827

Version of the JS controller

4.0.9

Version of Node.js

16.14.0

Operating system

Linux

Anything in the logs that might be useful?

No response

Additional information

No response

patrickbs96 commented 2 years ago

@mrbungle64 Soweit ich das bisher erkannt habe kommt die Fehlermeldung aus node-switchbot. Ich würde das Logging noch etwas erweitern und könnte dann eine Testversion bereitstellen, vielleicht finden wir dann mehr heraus... Ich habe ähnliche Fehlermeldungen im Netz gefunden, die darauf verweisen, dass nur eine Anwendung gleichzeitig auf das Bluetooth zugreifen kann, komisch das der Bot ohne Probleme funktioniert...

Aber das wäre ein guter Anhaltspunkt den ich dann auch testen kann. Werde bei mir dann auch den BLE-Adapter laufen lassen, vielleicht finde ich was Interessantes heraus 😄

mrbungle64 commented 2 years ago

@patrickbs96

@mrbungle64 Soweit ich das bisher erkannt habe kommt die Fehlermeldung aus node-switchbot.

Ja da hast du recht - die Meldung "No service was found." kommt aus node-switchbot. Die Meldung und der entsprechende Code passt zwar (meiner Meinung nach) nicht zum Verhalten - aber es scheint ja trotzdem in der Praxis das Problem zu sein.

Ich würde das Logging noch etwas erweitern und könnte dann eine Testversion bereitstellen, vielleicht finden wir dann mehr heraus... Ich habe ähnliche Fehlermeldungen im Netz gefunden, die darauf verweisen, dass nur eine Anwendung gleichzeitig auf das Bluetooth zugreifen kann, komisch das der Bot ohne Probleme funktioniert...

Aber das wäre ein guter Anhaltspunkt den ich dann auch testen kann. Werde bei mir dann auch den BLE-Adapter laufen lassen, vielleicht finde ich was Interessantes heraus smile

👍🏻

Pr0xyChainZ commented 2 years ago

@mrbungle64 @patrickbs96

Das Hochsetzen des RSSI Update-Intervall Wertes im BLE-Adapter hatte leider keinen gewünschten Effekt. Er war bei mir bei Anfangs 0ms und ich habe mich dann auf 1000ms hochgetastet. Es bleibt also dabei, dass wenn die BLE-Instanz läuft, die Curtains auf Eingaben nicht reagieren.

mrbungle64 commented 2 years ago

@Pr0xyChainZ

@mrbungle64 @patrickbs96

Das Hochsetzen des RSSI Update-Intervall Wertes im BLE-Adapter hatte leider keinen gewünschten Effekt. Er war bei mir bei Anfangs 0ms und ich habe mich dann auf 1000ms hochgetastet. Es bleibt also dabei, dass wenn die BLE-Instanz läuft, die Curtains auf Eingaben nicht reagieren.

Das ist nur 1 Sekunde. Das ist zu wenig. Teste mal bitte mit 60000 ms

mrbungle64 commented 2 years ago

@Pr0xyChainZ

Ich habe gerade mal in den Code vom BLE Adapter geschaut. Dieser Wert scheint nur Auswirkungen darauf zu haben, wie oft die Datenpunkte im ioBroker beschrieben werden - und nicht wie oft das abgefragt wird. Du kannst es also wieder auf 0 stellen - das wird uns leider nicht weiterhelfen ...

Pr0xyChainZ commented 2 years ago

@mrbungle64

Ich hatte es auch mal mit 66000ms versucht. Soweit ich das gesehen habe ist es auch wie du beschrieben hast. Die eingesetzten BT-Thermometer schicken auch nur ihre Werte in festen Intervallen in den Ether und werden vom BT-Adapter bzw. BLE Adapter abgefangen und in die Datenpunkte geschrieben.

patrickbs96 commented 2 years ago

@mrbungle64 Ich kriege den Fehler nachgestellt... Es sieht so aus, dass solange der ble Adapter läuft über das Modul @abandonware/noble keine Services gefunden werden. Es wird dort die Funktion discoverServices aufgerufen, diese liefert aber eine leere Liste zurück und solange das passiert können die Geräte nicht gesteuert werden.

@Pr0xyChainZ Könntest du etwas für mich testen? Ich kann meinen Bot aktuell nicht testen, da er zum Einschalten meines Servers gedacht ist und der aktuell läuft 😄

  1. Adapter von hier aus installieren: https://github.com/patrickbs96/ioBroker.switchbot-ble
  2. Auf dem Pi im Pfad /opt/iobroker/node_modules/iobroker.switchbot-ble npm install ausführen (Sonst nimmt der Adapter nicht meine Version vom node-switchbot)
  3. Loglevel vom Adapter auf Alles/silly stellen
  4. Wiederholungsversuche reduzieren, 5 sollten reichen
  5. Aktion am Bot ausführen

Kannst du mir dann das Log schicken, dass beim Ausführen eines Bot-Befehls entstanden ist?

Pr0xyChainZ commented 2 years ago

@patrickbs96

Ich hoffe ich kann es heute Abend testen. :)

Pr0xyChainZ commented 2 years ago

@patrickbs96

So ich hoffe ich habe alles korrekt installiert. Ich habe einmal den Switchbot (Button) laufen lassen und dann den Curtain. Hier das Log:

Switchbot:

switchbot-ble.0 2022-03-07 13:25:25.494 info [botAction] SwitchBot Bot (e9:c4:50:1a:70:aa) successfully pressed down

Switchbot Curtain:

switchbot-ble.0 2022-03-07 13:25:40.168 error [botAction] max. retries (5) reached. Giving up ... switchbot-ble.0 2022-03-07 13:25:40.166 warn [botAction] error while running 'close' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. switchbot-ble.0 2022-03-07 13:25:39.243 warn [botAction] Will try again (5/5) executing 'close' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. switchbot-ble.0 2022-03-07 13:25:38.435 warn [botAction] Will try again (4/5) executing 'close' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. switchbot-ble.0 2022-03-07 13:25:37.510 warn [botAction] Will try again (3/5) executing 'close' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. switchbot-ble.0 2022-03-07 13:25:36.696 warn [botAction] Will try again (2/5) executing 'close' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. switchbot-ble.0 2022-03-07 13:25:35.792 warn [botAction] Will try again (1/5) executing 'close' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found.

mrbungle64 commented 2 years ago

@Pr0xyChainZ

Du musst das Log Level noch auf "Alles" bzw. "silly" stellen (denke ich)

patrickbs96 commented 2 years ago

@mrbungle64 @Pr0xyChainZ Ja genau, das Loglevel müsste noch geändert werden 😊

Pr0xyChainZ commented 2 years ago

@patrickbs96 @mrbungle64

Ich hatte es auf silly umgestellt konnte aber das log nicht herunterladen. Ich habe es gerade nochmal gemacht allerdings kommt da auch nicht viel mehr Information bei raus:

Switchbot (Button):

2022-03-08 01:23:39.056 - info: switchbot-ble.0 (3669) [botAction] SwitchBot Bot (e9:c4:50:1a:70:aa) successfully pressed up

Switchbot Curtain:

2022-03-08 01:23:49.352 - warn: switchbot-ble.0 (3669) [botAction] Will try again (1/5) executing 'open' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. 2022-03-08 01:23:50.161 - warn: switchbot-ble.0 (3669) [botAction] Will try again (2/5) executing 'open' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. 2022-03-08 01:23:51.081 - warn: switchbot-ble.0 (3669) [botAction] Will try again (3/5) executing 'open' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. 2022-03-08 01:23:51.905 - warn: switchbot-ble.0 (3669) [botAction] Will try again (4/5) executing 'open' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. 2022-03-08 01:23:52.740 - warn: switchbot-ble.0 (3669) [botAction] Will try again (5/5) executing 'open' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. 2022-03-08 01:23:53.576 - warn: switchbot-ble.0 (3669) [botAction] error while running 'open' for SwitchBot Curtain (f2:dd:6c:85:93:c3): Error: No service was found. 2022-03-08 01:23:53.576 - error: switchbot-ble.0 (3669) [botAction] max. retries (5) reached. Giving up ...

Oder hat das mit der Installation von Patricks Version nicht hingehauen? Hatte es nach der Beschreibung durchgeführt. Der Adapter wird als Version 0.4.1 angezeigt:

grafik

patrickbs96 commented 2 years ago

@mrbungle64 @Pr0xyChainZ Hm komisch, kann ich mir leider so nicht erklären... Eventuell steht bei der Protokollanzeige das Loglevel noch auf debug?

Ich konnte es vorhin aber dann doch einmal bei mir testen und das passt genau zu dem Verhalten von @Pr0xyChainZ Beim Bot werden die characteristics trotzdem gefunden und dadurch lässt sich der Bot weiterhin bedienen...

Bot

[parseAdvertising.e2ecf6076dbf.H] return {"id":"e2ecf6076dbf","address":"e2:ec:f6:07:6d:bf","rssi":-50,"serviceData":{"model":"H","modelName":"WoHand","mode":false,"state":false,"battery":100}}
[botAction] connecting to SwitchBot Bot (e2:ec:f6:07:6d:bf) for executing command 'press'
[_connect] device connected
[_getCharacteristics] discovered characteristics: ["2a00","2a01","2a04"]
[_getCharacteristics] discovered characteristics: []
[_getCharacteristics] discovered characteristics: ["fec8","fec7","fec9"]
[_getCharacteristics] discovered characteristics: ["cba20003224d11e69fb80002a5d5c51b","cba20002224d11e69fb80002a5d5c51b"]
[_connect] device disconnected

Curtain

[parseAdvertising.e55a9e31791e.c] return {"id":"e55a9e31791e","address":"e5:5a:9e:31:79:1e","rssi":-82,"serviceData":{"model":"c","modelName":"WoCurtain","calibration":true,"battery":41,"position":92,"lightLevel":2}}
[botAction] connecting to SwitchBot Curtain (e5:5a:9e:31:79:1e) for executing command 'open'
[_connect] device connected
[_discoverServices] service uuid "cba20d00224d11e69fb80002a5d5c51b" not found in list []!
[botAction] Will try again (10/10) executing 'open' for SwitchBot Curtain (e5:5a:9e:31:79:1e): Error: No service was found.
[_connect] device disconnected
mrbungle64 commented 2 years ago

@patrickbs96 Danke für die Infos 👍🏻

Sollte @Pr0xyChainZ jetzt aber auch noch mal Logs liefern oder hast du damit soweit die Infos die du wolltest?

patrickbs96 commented 2 years ago

@mrbungle64 Muss er denke ich nicht mehr machen, er müsste hier zum gleichen Ergebnis kommen..

Ich habe jetzt nur keine Idee, wie wir da jetzt weiter vorgehen sollen. Wenn beide nicht funktioniert hätten wäre das Problem ja klar gewesen aber so ist es doch recht komisch. Den einzigen Unterschiede zwischen Bot und Curtain bei mir sind, dass die Curtain weiter weg ist und mit dem Remote verbunden ist.

Aber die Services werden durch den noble ermittelt, die Frage wäre weshalb das nicht funktioniert

Pr0xyChainZ commented 2 years ago

@patrickbs96 @mrbungle64

Ich habe jetzt nochmal den Log des Adapters auf Silly gestellt. Das Log befindet sich im Anhang. Ich hoffe der ist brauchbar. ;) Aktuell habe ich mir ne Zwischenlösung gebaut. Wenn der Curtain durch ein Skript oder manuell durch VIS (naja auch hier ist ein Skript hinter) angesprochen wird, wird zuvor der BLE-Adapter deaktiviert und nach der Aktion wieder aktiviert. Die kurzzeitige Nichtübertragung der Temperaturwerte per BLE stellt erstmal kein Problem dar. Wäre natürlich trotzdem schön wenn es in Zukunft ohne den Trick funktionieren würde.

Switchbot Curtain Log 20.03.2022.txt

mrbungle64 commented 2 years ago

@Pr0xyChainZ

Ich habe gerade noch mal geschaut - das scheint ein grundsätzliches Problem mit einer solchen Konstellation zu sein

Ich befürchte, dass ich das Problem in diesem Adapter alleine nicht gelöst bekomme. Das einzige was ich noch als Todo habe, ist dass man gezielt Bluetooth Devices ansprechen kann. Dann könnte man die Switchbot Devices z.B. über einen Bluetooth USB Adapter ansteuern.

Der BLE Adapter kann das anscheinend - das wäre die alternative Lösung dazu, dass du für diesen Adapter einen Bluetooth USB Adapter benutzt.

mrbungle64 commented 2 years ago

@Pr0xyChainZ

Das einzige was ich noch als Todo habe, ist dass man gezielt Bluetooth Devices ansprechen kann. Dann könnte man die Switchbot Devices z.B. über einen Bluetooth USB Adapter ansteuern.

Ich habe dies nun soweit umgesetzt. Vielleicht wäre das ja eine Möglichkeit für dich das Problem zu lösen

Ansonsten gibt es vom BLE Adapter nun die Version 0.13.0. Hast du das schon mal probiert, ob es damit besser funnktioniert?

Pr0xyChainZ commented 2 years ago

@mrbungle64

Das einzige was ich noch als Todo habe, ist dass man gezielt Bluetooth Devices ansprechen kann. Dann könnte man die Switchbot Devices z.B. über einen Bluetooth USB Adapter ansteuern.

Ich habe dies nun soweit umgesetzt. Vielleicht wäre das ja eine Möglichkeit für dich das Problem zu lösen

Super, vielen Dank. Vielleicht werde ich mir in den nächsten Wochen mal einen seperaten USB BT-Adaper zulegen. Momentan bin ich jedoch mit meiner Bastellösung noch relativ Happy. Ab und an kann ich über vis die Curtains nicht alle ansprechen obwohl der Button geschaltet wird. Bei der Verwendung eines zeitgesteuerten Skripts funktioniert es hingegen momentan einwandfrei. Nervig ist hingegen auch, wenn ich die Curtains per Schedule über die Switchbot-App sowie über Iobroker ansteuere. Der Button bekommt den Schaltvorgang über die App nicht mit und zeigt dann noch den alten Wert an bzw. funktioniert dann das Skript nicht. Aber ich werde jetzt nach einer Testphase wohl komplett auf iobroker und zeitgesteuerte Skripte umstellen.

Ansonsten gibt es vom BLE Adapter nun die Version 0.13.0. Hast du das schon mal probiert, ob es damit besser funnktioniert?

Die habe ich leider noch nicht installiert. Die Version ist wohl noch nicht im stable repo, aber sobald ich sie habe teste ich das gerne.