[74_GardenaBLEDevice] Neues Modul für Gardena Bluetooth Geräte

Begonnen von ambiman, 21 Juni 2021, 22:41:57

Vorheriges Thema - Nächstes Thema

ambiman

Hallo maltejahn,

vielen Dank! Der Output ist wirklich sehr hilfreich. Ich werde das Modul zeitnah anpassen.
Ich plane auch weitere Parameter (u.a. die Version - an Adresse 0x0016 - in deinem Fall 1.7.20.25, richtig ?) auszulesen und in FHEM darzustellen.

Zu deinem Problem in der FHEM Execution: Vermutlich hast du den Code "live" angepasst!?  Man sieht das er das gatttool noch mit der alten Adresse (0x006b) ausgeführt hat  und die neue Adresse in der Queue hängt. Ggf. löscht du das Device nochmal bzw. deaktivierst es kurzzeitig - dann wird die cmd queue geleert.

Übrigens habe ich eine Rückmeldung von Gardena erhalten, die mir bestätigt haben das ein Update mit meinem Steuerteil bzw. dessen Firmware Version nicht möglich ist und mir wurde ein Austausch angeboten - nun bin ich gespannt, ob das mit weiteren Kosten verbunden ist :-).

Viele Grüße,

ambiman

maltejahn

#16
Keine Ahnung was ich jetzt anders gemacht habe, hier die Readings

battery low
batteryLevel 0%
ctrlunitstate removed
deviceTime Tue Mar 20 08:34:18 2091
remainingTime 0 seconds
state off


Batterie ist voll, Steuerung ist aufgesteckt, Ventil zu

Edit: set on bewirkt nichts am Ventil, Log sagt:
2022.07.29 18:31:28 1: PERL WARNING: Use of uninitialized value $param[2] in join or string at ./FHEM/74_GardenaBLEDevice.pm line 424.
2022.07.29 18:31:30 1: PERL WARNING: Use of uninitialized value $2 in concatenation (.) or string at ./FHEM/74_GardenaBLEDevice.pm line 743.
2022.07.29 18:31:30 3: eval: {Gardena_BLE_ExecGatttool_Done('GardenaBLE|F0:5E:CD:2D:12:91|ok|read|0x0071|{"msg":"Char_Value_Desc","value":"01 "}')}
2022.07.29 18:31:30 1: PERL WARNING: Use of uninitialized value $1 in concatenation (.) or string at ./FHEM/74_GardenaBLEDevice.pm line 743.
2022.07.29 18:31:30 3: eval: {Gardena_BLE_ExecGatttool_Done('GardenaBLE|F0:5E:CD:2D:12:91|ok|read|0x0071|{"msg":"Char_Value_Desc","value":"01 "}')}


Edit 2: Firmware 1.7.20.25


Stepho

Zitat von: ambiman am 25 Juli 2022, 12:42:57

Auch als Antwort an @Stepho: Wichtig ist, das ihr bei euren Tests die GardenaBLE App NICHT offen habt! Das Ventil kann lediglich eine Verbindung halten, dann kommt bspw. die Fehlermeldung "connect error: Function not implemented (38)".

Du kannst auch gerne einmal direkt per CLI auf dem Pi folgende Befehle abgeben und die Ausgabe hier posten:

Ermitteln des Ventilstatus (auf/zu):


gatttool -i hci0 -b <MAC-Adresse> --char-read -a 0x006b


Emitteln des Batteriestatus:


gatttool -i hci0 -b <MAC-Adresse> --char-read -a 0x0029


Im besten Fall müssen wir ledigilich die Adressen der Chars anhand der Firmware Verison anpassen und dann sollte es funktionieren.

VG,

ambiman

Vielen Dank für Deine Hilfe.

Es klappt leider dennoch nicht. Außer dem Raspi und dem Gardena ist kein BT Device in der Nähe, App ist nicht offen. Dennoch kommt:


:~ $ gatttool -i hci0 -b 0C:EC:80:5E:45:XX  --char-read -a 0x0029
connect error: Function not implemented (38)
i:~ $ gatttool -i hci0 -b 0c:ec:80:5e:45:XX --char-read -a 0x006b
connect error: Function not implemented (38)


maltejahn

#18
Bei mir klappt die Verbindung recht gut, zur Sicherheit deaktiviere ich Bluetooth am Handy. Seit dem kommen die Meldungen "0x38" nicht mehr.

Glaube, ich habe die aktuelle Uhrzeit in 0x34 gefunden:
11:39 2a 67 e6 62 (42 103....)
11:42  cd 67 e6 62 (205 103...)
11:45 6b 68 e6 62 (107 104....)
11:50  bd 69 e6 62 (189 105...)
Jeweils am 31.7.2022
Im Programm ist allerdings 0x31 eingetragen.

z.b. ein 62e669bd von oben passt auch zum heutigen Tag

Edit: Hier die programmierte Zeit (Habe nur eine Zeit für jeden Tag der Woche bisher probiert): 0x49
1 Min, 60 Sekunden:3C
15 Minuten, 900 Sekunden 84 03
87 Minuten, 5220 Sekunden 64 14
158 Minuten, 9480 Sekunden 08 25

mit 25*256+08  für 9480 Sekunden

Die Tage müssten 0x4b sein (Wert 0x0F -> 0b0111 1111) da jeder Tag gesetzt wurde
Mo-So: 0x0F
Mo + Mi+Fr-So: 0x75
Di+Do: 0x0a

So, jetzt ist dann schluß:
Eintrag 1: Tage: 0x4B, Dauer: 0x49, Startzeit: 0x47
Eintrag 2*: Tage: 0x65, Dauer: 0x63, Startzeit: 0x61
Eintrag 3*: Tage: 0x58, Dauer: 0x56, Startzeit: 0x54 (z.B 0x C4FE für 65220 in Sekunden ab 0 Uhr - also "gedreht")

Kann sein das ich Eintrag 2/3 aus versehen beim eintippen verwechselt habe

Batterie könnte 0x2c oder 0x32 sein (100% Anzeige in der App, Wert jeweils 64hex)



maltejahn

So,

ich rudere zurück.

Ich habe den ganzen Tag entweder mit dem BLEfuzzer script gespielt oder gatttool verwendet - ohne Probleme. In der App Werte geändert, APP geschlossen und zur Sicherheit Bluetooth am Handy deaktiviert. Script verwendet um Änderungen nachzuvollziehen. Lief alles wunderbar.

Als dann aber das in der App eingestellte Bewässerungsprogramm laufen sollte, hat es den Zeitpunkt einfach übersprungen und zeigte plötzlich den Bewässerungszeitpunkt von morgen an. Habe mehrfach versucht den Plan neu zu erstellen. Es blieb dabei, die Programme wurden nicht ausgeführt.

Nach einem Werksreset und anschließendem anlernen am Handy -> Bewässerungsprogramm läuft problemlos
-> Raspi zusätzlich anlernen -> Bewässerungsprogramm wird nicht ausgeführt

Ist das so "normal". Oder überschreibt das Script irgendwas?

Grüße
Malte


ambiman

Hallo Malte,

zuerst einmal danke für deine Recherche, das sind alles sehr interessante Infos.
Zu deiner Frage: Der BLEFuzzer sollte eigentlich nichts verändern, er liest lediglich die Charakteristiken etc. aus.

Ich bin gerade schon dabei das Modul auf eine neue Version zu heben und habe mich entschlossen nun die offiziellen GATT UUIDs bspw. für die Firmware zu nutzen (hier: 0x2A26 Firmware Revision String), damit sollte ich auch über verschiedene Geräte hinweg unabhängig von den Adressen der char value handles sein. Nun überlege ich ob ich das gesamte Modul auf die UUIDs umstelle. Ich vermute das Gardena hier einen wiederkehrenden UUID Bereich über mehere Firmware Versionen verwendet, was das Modul deutlich kompatibler machen würde.

Bei mir sieht der Charactistics Read bspw. wie folgt aus:


Characteristics Read
handle = 0x0002, char properties = 0x02, char value handle = 0x0003, uuid = 00002a00-0000-1000-8000-00805f9b34fb
handle = 0x0004, char properties = 0x02, char value handle = 0x0005, uuid = 00002a01-0000-1000-8000-00805f9b34fb
handle = 0x0006, char properties = 0x02, char value handle = 0x0007, uuid = 00002a04-0000-1000-8000-00805f9b34fb
handle = 0x0008, char properties = 0x02, char value handle = 0x0009, uuid = 00002aa6-0000-1000-8000-00805f9b34fb
handle = 0x000a, char properties = 0x02, char value handle = 0x000b, uuid = 00002ac9-0000-1000-8000-00805f9b34fb
handle = 0x000e, char properties = 0x02, char value handle = 0x000f, uuid = 00002a24-0000-1000-8000-00805f9b34fb
handle = 0x0010, char properties = 0x02, char value handle = 0x0011, uuid = 00002a29-0000-1000-8000-00805f9b34fb
handle = 0x0012, char properties = 0x02, char value handle = 0x0013, uuid = 00002a26-0000-1000-8000-00805f9b34fb
handle = 0x0015, char properties = 0x12, char value handle = 0x0016, uuid = 98bd0011-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0018, char properties = 0x12, char value handle = 0x0019, uuid = 98bd0012-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x001b, char properties = 0x02, char value handle = 0x001c, uuid = 98bd0013-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x001d, char properties = 0x0a, char value handle = 0x001e, uuid = 98bd0014-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x001f, char properties = 0x02, char value handle = 0x0020, uuid = 98bd0015-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0021, char properties = 0x12, char value handle = 0x0022, uuid = 98bd0016-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0024, char properties = 0x1a, char value handle = 0x0025, uuid = 98bd0017-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0028, char properties = 0x12, char value handle = 0x0029, uuid = 98bd2a19-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x002c, char properties = 0x0a, char value handle = 0x002d, uuid = 98bd0b11-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x002e, char properties = 0x0a, char value handle = 0x002f, uuid = 98bd0b12-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0030, char properties = 0x0a, char value handle = 0x0031, uuid = 98bd0b13-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0033, char properties = 0x02, char value handle = 0x0034, uuid = 98bdeeef-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0035, char properties = 0x12, char value handle = 0x0036, uuid = 98bdeef0-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0039, char properties = 0x02, char value handle = 0x003a, uuid = 98bd0d11-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x003b, char properties = 0x12, char value handle = 0x003c, uuid = 98bd0d12-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x003e, char properties = 0x02, char value handle = 0x003f, uuid = 98bd0d13-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0040, char properties = 0x02, char value handle = 0x0041, uuid = 98bd0d14-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0043, char properties = 0x0a, char value handle = 0x0044, uuid = 98bd0c11-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0045, char properties = 0x0a, char value handle = 0x0046, uuid = 98bd0c12-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0047, char properties = 0x0a, char value handle = 0x0048, uuid = 98bd0c13-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0049, char properties = 0x0a, char value handle = 0x004a, uuid = 98bd0c14-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x004b, char properties = 0x0a, char value handle = 0x004c, uuid = 98bd0c15-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x004d, char properties = 0x0a, char value handle = 0x004e, uuid = 98bd0c16-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0050, char properties = 0x0a, char value handle = 0x0051, uuid = 98bd0c21-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0052, char properties = 0x0a, char value handle = 0x0053, uuid = 98bd0c22-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0054, char properties = 0x0a, char value handle = 0x0055, uuid = 98bd0c23-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0056, char properties = 0x0a, char value handle = 0x0057, uuid = 98bd0c24-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0058, char properties = 0x0a, char value handle = 0x0059, uuid = 98bd0c25-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x005a, char properties = 0x0a, char value handle = 0x005b, uuid = 98bd0c26-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x005d, char properties = 0x0a, char value handle = 0x005e, uuid = 98bd0c31-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x005f, char properties = 0x0a, char value handle = 0x0060, uuid = 98bd0c32-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0061, char properties = 0x0a, char value handle = 0x0062, uuid = 98bd0c33-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0063, char properties = 0x0a, char value handle = 0x0064, uuid = 98bd0c34-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0065, char properties = 0x0a, char value handle = 0x0066, uuid = 98bd0c35-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0067, char properties = 0x0a, char value handle = 0x0068, uuid = 98bd0c36-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x006a, char properties = 0x12, char value handle = 0x006b, uuid = 98bd0f11-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x006d, char properties = 0x12, char value handle = 0x006e, uuid = 98bd0f12-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0070, char properties = 0x0a, char value handle = 0x0071, uuid = 98bd0f13-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0072, char properties = 0x0a, char value handle = 0x0073, uuid = 98bd0f14-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0074, char properties = 0x02, char value handle = 0x0075, uuid = 98bd0f15-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0077, char properties = 0x0c, char value handle = 0x0078, uuid = f000ffd1-0451-4000-b000-000000000000


Die UUIDS 98bdXXXX-0b0e-421a-84e5-ddbf75dc6de4 scheinen die von Gardena zu sein.
Könnt ihr mir bitte einmal den Output des Befehls:


gatttool -i hci0 -b <MAC> --characteristics


zukommen lassen?

Vielen Dank!

maltejahn

Hallo,

ich würde gerne helfen, aber ich weiß nicht warum ich jetzt Verbindungsprobleme habe. Hatte vorgestern einen Reset durchgeführt und nur mit der App verbunden. Heute wollte ich zusätzlich den Raspberry verbinden.

Aber der Befehl bringt einen Fehler
gatttool -i hci0 -b xxxxxxx --characteristics
Discover all characteristics failed: Request attribute has encountered an unlikely error


Auch das Script wirft mehrheitlich eben diese Fehlermeldung von oben. Der Raspberry liegt in unmittelbarer Nähe des Gardena Teils.

Manuelle Abfrage eines Einzelwerts per gatttools geht mal, mal eben auch nicht.

Wie ist den der richtige Ablauf?
Gardena ins Pairing bringen und dann gatttools nutzen? Oder per bluetoothctl + trust + connect und anschließend gatttools?

Manchmal ist es sogar so, nach einer Nutzung von gatttools, dass das Gardena Teil gar nicht mehr reagiert (Taste für Manuell geht nicht mehr). Dann hilft es nur noch die Batterie raus zu nehmen..

Werde mich nach dem Urlaub nochmal damit befassen, jetzt muss das Ding aber erstmal "produktiv" verwendet werden.

Grüße
Malte



maltejahn

#22
Irgendwie mag ich Bluetooth nicht.
bluetoothctl + pair [mac]
dann
handle = 0x0002, char properties = 0x02, char value handle = 0x0003, uuid = 00002a00-0000-1000-8000-00805f9b34fb
handle = 0x0004, char properties = 0x02, char value handle = 0x0005, uuid = 00002a01-0000-1000-8000-00805f9b34fb
handle = 0x0006, char properties = 0x02, char value handle = 0x0007, uuid = 00002a04-0000-1000-8000-00805f9b34fb
handle = 0x0008, char properties = 0x02, char value handle = 0x0009, uuid = 00002aa6-0000-1000-8000-00805f9b34fb
handle = 0x000a, char properties = 0x02, char value handle = 0x000b, uuid = 00002ac9-0000-1000-8000-00805f9b34fb
handle = 0x000d, char properties = 0x20, char value handle = 0x000e, uuid = 00002a05-0000-1000-8000-00805f9b34fb
handle = 0x0011, char properties = 0x02, char value handle = 0x0012, uuid = 00002a24-0000-1000-8000-00805f9b34fb
handle = 0x0013, char properties = 0x02, char value handle = 0x0014, uuid = 00002a29-0000-1000-8000-00805f9b34fb
handle = 0x0015, char properties = 0x02, char value handle = 0x0016, uuid = 00002a26-0000-1000-8000-00805f9b34fb
handle = 0x0018, char properties = 0x12, char value handle = 0x0019, uuid = 98bd0011-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x001b, char properties = 0x12, char value handle = 0x001c, uuid = 98bd0012-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x001e, char properties = 0x02, char value handle = 0x001f, uuid = 98bd0013-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0020, char properties = 0x0a, char value handle = 0x0021, uuid = 98bd0014-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0022, char properties = 0x02, char value handle = 0x0023, uuid = 98bd0015-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0024, char properties = 0x12, char value handle = 0x0025, uuid = 98bd0016-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0027, char properties = 0x1a, char value handle = 0x0028, uuid = 98bd0017-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x002b, char properties = 0x12, char value handle = 0x002c, uuid = 98bd2a19-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x002f, char properties = 0x0a, char value handle = 0x0030, uuid = 98bd0b11-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0031, char properties = 0x0a, char value handle = 0x0032, uuid = 98bd0b12-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0033, char properties = 0x0a, char value handle = 0x0034, uuid = 98bd0b13-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0036, char properties = 0x02, char value handle = 0x0037, uuid = 98bdeeef-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0038, char properties = 0x12, char value handle = 0x0039, uuid = 98bdeef0-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x003c, char properties = 0x02, char value handle = 0x003d, uuid = 98bd0d11-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x003e, char properties = 0x12, char value handle = 0x003f, uuid = 98bd0d12-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0041, char properties = 0x02, char value handle = 0x0042, uuid = 98bd0d13-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0043, char properties = 0x02, char value handle = 0x0044, uuid = 98bd0d14-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0046, char properties = 0x0a, char value handle = 0x0047, uuid = 98bd0c11-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0048, char properties = 0x0a, char value handle = 0x0049, uuid = 98bd0c12-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x004a, char properties = 0x0a, char value handle = 0x004b, uuid = 98bd0c13-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x004c, char properties = 0x0a, char value handle = 0x004d, uuid = 98bd0c14-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x004e, char properties = 0x0a, char value handle = 0x004f, uuid = 98bd0c15-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0050, char properties = 0x0a, char value handle = 0x0051, uuid = 98bd0c16-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0053, char properties = 0x0a, char value handle = 0x0054, uuid = 98bd0c21-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0055, char properties = 0x0a, char value handle = 0x0056, uuid = 98bd0c22-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0057, char properties = 0x0a, char value handle = 0x0058, uuid = 98bd0c23-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0059, char properties = 0x0a, char value handle = 0x005a, uuid = 98bd0c24-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x005b, char properties = 0x0a, char value handle = 0x005c, uuid = 98bd0c25-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x005d, char properties = 0x0a, char value handle = 0x005e, uuid = 98bd0c26-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0060, char properties = 0x0a, char value handle = 0x0061, uuid = 98bd0c31-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0062, char properties = 0x0a, char value handle = 0x0063, uuid = 98bd0c32-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0064, char properties = 0x0a, char value handle = 0x0065, uuid = 98bd0c33-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0066, char properties = 0x0a, char value handle = 0x0067, uuid = 98bd0c34-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0068, char properties = 0x0a, char value handle = 0x0069, uuid = 98bd0c35-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x006a, char properties = 0x0a, char value handle = 0x006b, uuid = 98bd0c36-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x006d, char properties = 0x12, char value handle = 0x006e, uuid = 98bd0f11-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0070, char properties = 0x12, char value handle = 0x0071, uuid = 98bd0f12-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0073, char properties = 0x0a, char value handle = 0x0074, uuid = 98bd0f13-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0075, char properties = 0x0a, char value handle = 0x0076, uuid = 98bd0f14-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x0077, char properties = 0x02, char value handle = 0x0078, uuid = 98bd0f15-0b0e-421a-84e5-ddbf75dc6de4
handle = 0x007a, char properties = 0x0c, char value handle = 0x007b, uuid = f000ffd1-0451-4000-b000-000000000000


Dann aber:
Zitatgatttool -i hci0 -b xx.xx.xx.xx.xx --char-read -a 0x0029
connect to xx.xx.xx.xx.xx: Device or resource busy (16)

mit einem bluetoothctl + delete und dann gehen die Abfragen wieder...


edit: 0x0071 könnte Zustand gesteckt/nicht gesteckt sein

ambiman

Hallo Malte,

perfekt - danke dir. Die Hoffnung das die UUIDs identisch sind, hat sich somit erfüllt  ;D.

Somit kann ich das Modul nun auf UUIDs umbauen und sollte damit unabhängig von der Firmware sein (bspw. wird der Status des Ventils dann mittels UUID 98bd0f11-0b0e-421a-84e5-ddbf75dc6de4 angesprochen, was bei mir über das Char value handle 0x006b ausgelesen wurde und bei dir mit 0x006e).

Zu deiner Frage mit dem Pairing, eigentlich reicht die reine Ausführung des gattttools bzw. bluetoothctl +connect.
Der Trust ist mehr kosmetisch und wird nicht benötigt. Sollte die Bluetooth Verbdindung einmal zicken hilft meist etwaige Verbindungen (auch die von FHEM! Also die Geräte bitte dort auch disablen) zu trennen und im schlimmsten Fall einmal den 9V Block zu entnehmen - dann sollte es wieder funktionieren.

Ich nutze meine Ventile seit knapp einem Jahr für die Bewässerung und steuere diese ausschließlich mittels des FHEM Moduls und muss sagen das sie damit eigentlich sehr stabil funktionieren - hin und wieder (nach mehreren Wochen Betrieb) habe ich jedoch das Phänomen das sie manchmal nicht reagieren, was bei einer Bewässerung natürlich ungünstig ist :-).
In diesem Fall lassen sie sich auch nicht mehr per App ansprechen und reagieren nicht mehr (auch nicht mehr auf Knopfdruck, wie du beschrieben hast) - ich vermute das hier ein interner Buffer o.ä. vollläuft und habe auf ein SW-Update seitens Gardena gehofft.
In der neuen Modulversion baue ich zu diesem Zweck nun auch eine Event- oder Msgcountvariable ein um zu schauen ob das reproduzierbar nach X Abfragen auftritt umd darauf reagieren zu können.

Mit deinen Infos werde ich das Modul nun nochmal sanpassen und stelle es dann hier (bzw. im Git) zur Verfügung. Dann sollte der Steuerung in FHEM nichts mehr im Wege stehen - unabhängig von der eingesetzen Firmware :-)

VG,

ambiman

ambiman

#24
Hallo Malte,

sehe gerade das dein letzer read bei dem du die errno 16 bekommen hast auf eine Adresse zielt, die kein Value beinhaltet (das ist genau die Diskrepanz der Firrmwareversionen die ich meinte) - 0x0029 gibt es in deiner Charactistic List nicht - ggf. baut das Ventil dann die Verbindung ab und du musst dich neu verbinden.

Folgendes (zwecks Batteriestatus) sollte alternativ funktionieren:


gatttool -i hci0 -b <MAC> --char-read -u 98bd2a19-0b0e-421a-84e5-ddbf75dc6de4


Folgendes habe ich bislang gemapped und in die Version 0.2. des Moduls eingebaut:


'wuuid' => '98bd0f13-0b0e-421a-84e5-ddbf75dc6de4',
'timestamp' => '98bd0b13-0b0e-421a-84e5-ddbf75dc6de4',
'battery' => '98bd2a19-0b0e-421a-84e5-ddbf75dc6de4',
'state' => '98bd0f11-0b0e-421a-84e5-ddbf75dc6de4',
'duration' => '98bd0f13-0b0e-421a-84e5-ddbf75dc6de4',
'ctrlunitstate' => '98bd0f12-0b0e-421a-84e5-ddbf75dc6de4',
'firmware_revision' => '00002a26-0000-1000-8000-00805f9b34fb' #Firmware Revision String


Bei mir läuft es aktuell im Debug zwecks der letzten Tests und bislang wird  über die UUIDs alles einwandfrei ausgelesen.
Ich denke somit, das ich eine erste Version bis Morgen einmal zur Verfügung stellen kann.

Nächster Schritt wäre es dann die programmierten Bewässerungszeiten (die du schon ermittelt hast) auszulesen bzw. diese ggf. dann auch zu modifzieren.

VG,

ambiman

ambiman

#25
Hallo zusammen,

ich habe gerade eine erste aktualisierte Version (v0.2) ins Git gestellt:

https://github.com/ambiman/fhem/blob/main/74_GardenaBLEDevice.pm

Feedback ist wie immer sehr willkommen :-)

Wenn ihr das Modul in das FHEM Modul Verzeichnis kopiert habt, genügt ein:


reload 74_GardenaBLEDevice.pm


Anschließend solltet ihr auch etwaige GardenaBLEDevice Geräte einmal löschen und neu definieren (den initialen Post hier habe ich nun auch aktualisiert), da bei der Erstellung nun weitere interne Variablen gesetzt werden.

Das JSON Library Problem sollte nun ebenfalls behoben sein.

Übrigens bekomme ich nun von Gardena kostenlos neue Steuereinheiten für meine Ventile  :) - super Service, da kann man nichts sagen !
Das macht dann die Pflege des Moduls für zukünftige Firmware Versionen etwas einfacher.

VG,

ambiman

X-Byte

#26
Hi ambiman,

habe mir die neue Modulversion 0.2 herunterladen und gemäß Deinen Vorgaben das Modul neu geladen / bestehende Geräte gelöscht und neu angelegt.
Funktioniert hervorragend! Beide Ventile, sowohl eins ohne Hahnanschluss zu Testzwecken 2m vom Raspi auf dem Schreibtisch als auch eins in ca. 5m Entfernung (durch die Hauswand) können ausgelesen und gesteuert werden.

Sämtliche Readings haben nun die passenden Werte. Bei einem testweisen "on-for-timer" mit 60 Sekunden hat die Abschaltung zeitgenau funktioniert (Timerlauf erfolgt wohl im Ventil selbst?), die Readings state/remaining time erhielten allerdings erst 2 Minuten nach Ende des Timers die richtigen Werte, was aber nicht
weiters tragisch ist. (Und wie ich gerade im ersten Post gelesen habe, am Attribut "interval" hängt, das standardmäßig alle 5 Minuten den Status abfragt)

Code (Readings) Auswählen
battery ok 2022-08-05 14:19:17
batteryLevel 100% 2022-08-05 14:19:17
ctrlunitstate installed 2022-08-05 14:19:18
default-one-time-watering-time 1800 seconds 2022-08-05 14:19:18
deviceTime Fri Aug 5 14:19:28 2022 2022-08-05 14:19:17
firmware 1.7.20.25 2022-08-05 14:19:16
remainingTime 0 seconds 2022-08-05 14:19:18
state off 2022-08-05 14:19:16


- Die Darstellung des Readings deviceTime ist mit "Fri Aug 5 13:56:22 2022" etwas gewöhnungsbedürftig, evtl. auf ISO Formatierung umstellen?
- Die Benennung und Werte für die Battery Readings scheinen im FHEM Standard (?) wie folgt zu sein, zumindest ist das bei meinen vielfältigen anderen batteriebetriebenen Geräten so. Wäre toll wenn Du das noch anpassen würdest, dann funktionieren auf Readingnamen/werten basierende ReadingGroups/Auswertungen/Grafiken/Dashboards auch für das Ventil.
battery: 100 %
batteryPercent: 100
batteryState: ok

- Beim Anlegen des Geräts wird aktuell kein FileLog Device für Auswertungen/Grafiken mit angelegt, wie ich das von meinen anderen Geräten bisher gewohnt bin. Baust Du das noch ein?

Habe das Ventil über das Attribut genericDeviceType "sprinkler" für gassistant zu Google Home hinzugefügt und konnte es mit dem Sprachkommando "Starte Rasensprenger für 3 Minuten" individuell zeitgesteuert für 3 Minuten laufen lassen   8)


Vielen Dank für dein Engagement an diesem Modul (und natürlich auch an maltejahn für das Beisteuern der notwendigen Parameter)

Gruß
X-Byte

ambiman

Hallo X-Byte,

es freut mich, dass das Modul funktioniert :)

Weiterhin vielen Dank für dein Feedback, das ist sehr wertvoll.

Ich bin aktuell dabei eine neue Version des Moduls zu erstellen. Ich werde deine Anmerkungen berücksichtigen.
Bislang habe ich in der neuen Version noch ein paar kleinere Bugfixes vorgenommen, eine Funktion zur Synchronisierung der Uhr im Ventil mit der Systemzeit des FHEM Hosts sowie eine Funktion zum Reset des GATT-Kommando Zählers eingebaut.

Weiterhin möchte ich auch noch das Setzen der Bewässerungszeitpläne implementieren.

Viele Grüße,

ambiman

maltejahn

Hallo,

da kommt man aus dem Urlaub, installiert das Update und es funktioniert einfach - klasse.
Weiß nicht ob es gebraucht wird, aber in 0x30 stehen die "Regenfreien" Tage drin. In der App stelle man z.B. 3 Tage ein. Der Wert in 0x30 ist dann 3 Tage plus die Restzeit heute bis 0 Uhr (alles in Minuten)

Grüße

ambiman

#29
Hallo zusammen,

wie angekündigt habe ich soeben eine neue - aus meiner Sicht major - Version des Moduls (v0.3) ins Git gestellt:

https://github.com/ambiman/fhem/blob/main/74_GardenaBLEDevice.pm

In dieser Version wurden nun viele Dinge angepasst: Bugfixes, Stabilitätsthemen (bspw. konfigurierbare Sleeps zwischen den GATT Befehlen was die Ventile einem wohl danken, BT Security Level von low->medium gehoben, Automatische Deaktivierung des Moduls bei zuvielen Fehlversuchen etc.) sowie folgende neue Funktionen:

- Die Synchronisation der Uhrzeit in der Steuereinheit des Ventils
- Die Konfiguration der Bewässerungszeitpläne inkl. Löschung einzelner / aller

Weiterhin habe ich die Readings angepasst: bspw. die lokale Zeit im ISO-Format. Bei den Batteryreadings passt es wohl zum aktuellen "FHEM-Standard".

Die o.g. Stabilitätsprobleme traten bei mir bei mehreren Ventilen auf ( alte Firmware sowie neue - ja, Gardena hat mir kostenlos neue Ventile geliefert :) ).
Bedeutet die Ventile waren Bluetooth-technisch nicht mehr auffindbar und konnten nicht mehr verbunden werden - bis man einmal die Batterie entfernt hat.

Mit dem o.g. Sleeptimer traten diese Probleme bei meinen Ventilen bislang nicht mehr auf - hier würde mich jedoch auch euer Feedback über einen längeren Zeitraum interessieren.

Wie immer freue ich mich über Feedback und wünsche viel Erfolg beim testen. Da ich wieder einige interne Variablen gesetzt habe, sollten nach dem Reload des Moduls bestehende Devices gelöscht und wieder neu angelegt werden.

Viele Grüße,

ambiman