[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 zusammen,

hier ein erstes experimentelles Modul für die neuen Gardena Bluetooth Geräte.
Aktuell wird lediglich das Water Control Ventil (https://www.gardena.com/de/produkte/bewasserung/bewasserungssteuerung/bewasserungssteuerung-bluetooth/970481101/) unterstützt aber
das Modul ist erweiterbar.

Das Modul findet ihr hier: https://github.com/ambiman/fhem/blob/main/74_GardenaBLEDevice.pm

1) Gerät erstellen

Erstellt wird das Device wie folgt:

define <name> GardenaBLEDevice <BTMAC> <MODEL>

bspw. define Ventil GardenaBLEDevice F8:24:41:AA:BB:CC watercontrol

Die MAC des Ventils könnt ihr üblicherweise mittels bluetoothctl wie folgt ermitteln.
Wie suchen nach einem Gerät welches Water Control heißt.


root@system:~# bluetoothctl
[bluetooth]# scan on
(nun einige Zeit scannen lassen)
[bluetooth]# devices
Device 60:98:66:AA:BB:CC Water Control
(sollte keine Device mit dem Namen Water Control auftauchen, dann einfach mittels connect <ADDRESSE aus den Devices> verbinden und dann sollte man eine Chracteristic names 'Name' und Water Control finden, somit habt ihr die MAC-Adresse ermittelt)


2) Unterstütze Set Funktionen:

on/off: Bei "on" Öffnen des Ventils für die Dauer des DEFAULT Werts (siehe Reading DEFAULT_ON_TIME_FHEM und anpassbar über das gleichnamige Attribut).
on-for-timer: Öffnen des Ventils für X Sekunden (min. 5 Sekunden max. 18 Stunden)
default-watering-time: Die Zeit in Sekunden welche standardmäßig und dauerhaft im Ventil gespeichert wird und auch beim manuellen "Kopfdruck" am Ventil angewendet wird. Nicht zu verwechseln mit der DEFAULT_ON_TIME_FHEM - diese ist unabhängig hiervon und wird bei einem set ... on einmalig gesetzt.
synchronizeClock: Synchronisation der Uhr mit der aktuellen Systemzeit (lokale Zeitzone - kein UTC!)
setSchedule1-3: Setzen der einzelnen (maximal 3) Bewässerungszeitpläne im Format [Mon,Tue,Wed,Thu,Fri,Sat,Sun] HH:MM:SS [range 5-28740] (Sekunden)
deleteSchedule1-3: Löschen einzelner Zeitpläne
deleteAllSchedules: Löschen aller Zeitpläne
resetGattCount: Zurücksetzen des GATT Kommandozählers

3) Unterstütze Get Funktionen:

ctrlunitstate: Abfrage ob das Bedienteil aktuell installiert ist
remainingTime: Verbleibende Bewässerungsdauer
stateRequest: Status ad-hoc abfragen

4) Attribute:

Neben den Standardattributen (disable etc.) werden folgende Attribute unterstützt:

interval: Interval für Statusrequests in Sekunden (Standard: 300 sek. / minimal: 30sek.)
default-on-time-fhem: Standardwert in Sekunden für die Bewässerung bei set on; Anpassung des Werts im Reading DEFAULT_ON_TIME_FHEM
hciDevice: Bluetooth Adapter Interface (bspw.: hci0,hci1,hci2 / Standard: hci0)
blockingCallLoglevel: Loglevel für ext. gatttool (bspw.: 1 2,3,4,5)
GATTtimeout: Maximale Zeit (in Sekunden) für die Ausführung einzelner GATT Befehle (Standardwert: 20 Sekunden)
btSecurityLevel: Bluetooth Securitylevel (low, medium) für gatttool - Standard ist medium
maxErrorCount: Maximale Anzahl fehlerhafter GATT Befehle bevor sich das Modul automatisch selbst deaktiviert
sleepBetweenGATTCmds: Sleeps (1-5 Sekunden) zwischen den einzelnen GATT Befehlen. Dies sorgt für eine stabilere Verbindung zum Ventil.

Ich hoffe es hilft jemanden und ich bin für etwaiges Feedback immer offen.

Viele Grüße,

ambiman

Isnogud0815

Hallo ambiman,

bin über dein Modul gestolpert, weil ich auch mein Gardena Water Control in FHEM einbinden möchte.
Bist du da noch aktiv dabei, ich hab ein paar Fragen/Probleme mit dem Modul und es wäre toll, wenn ich/wir das Teil zum Laufen bringen könnten.

Gruß
Isno

Stepho

Ich bin ebenfalls sehr an dem Modul interessiert, bekomme es aber auch leider nicht zum laufen....

Ich erhalte beim Versuch, mit dem Gerät zu kommunizieren immer nur ,,requesting", dann passiert nichts mehr. Nach einer Zeit erhalte ich die Fehlermeldung: ,, The BlockingCall Process terminated unexpectedly". Es scheint also nichts über Bluetooth vom Ventil zurückzukommen.

Welche Vorbedingungen müssen erfüllt sein, muss ich das BLE devices vorher mit dem raspi koppeln, oder was hast du bei Dir gemacht?

Herzlichen Dank für eine kurze Info!

ambiman

#3
Hallo zusammen,

ja, ich nutze das Modul selbst aktiv zur Bewässerung mit zwei BLE Ventilen.

Zitat von: Stepho am 09 Juli 2022, 15:47:18
Ich bin ebenfalls sehr an dem Modul interessiert, bekomme es aber auch leider nicht zum laufen....

Ich erhalte beim Versuch, mit dem Gerät zu kommunizieren immer nur ,,requesting", dann passiert nichts mehr. Nach einer Zeit erhalte ich die Fehlermeldung: ,, The BlockingCall Process terminated unexpectedly". Es scheint also nichts über Bluetooth vom Ventil zurückzukommen.

Welche Vorbedingungen müssen erfüllt sein, muss ich das BLE devices vorher mit dem raspi koppeln, oder was hast du bei Dir gemacht?

Herzlichen Dank für eine kurze Info!

Nein, das Modul muss nicht gepaired werden. Hast du es in FHEM mittels define und der MAC Adresse angelegt ? Ist das hcidevice (kann über das entsprechende Attribut beeinflusst werden) korekt gesetzt - der Standard ist hci0. Du kannst dir mittels "hciconfig -a" alle BT Adapter anzeigen lassen.

Weiterhin könntest du das verbose Level des Gerätes (mit dem gleichnamigen Attribut) hochdrehen - bspw. auf 5 und hier einmal den Output aus dem Logfile einstellen.

@Isnogud0815: Funktioniert das Modul bei dir wie erwartet oder hast du die gleichen Probleme?

VG,

ambiman

Stepho

Vielen Dank für Deine Antwort!

Kriege es aber leider noch nicht hin.

JSON

Ich bekomme immer:

Undefined subroutine &main::encode_json called at ./FHEM/74_GardenaBLEDevice.pm line 520.

JSON ist aus meiner Sicht installiert, habe

folgendes vorher gemacht:

sudo cpan install JSON
sudo apt-get install libjson-perl
sudo apt-get install libjson-xs-perl






Stepho

Jetzt habe ich im Modul

import JSON:XS

geändert in

use JSON:XS

-----------------

Jetzt scheint er das encode_json und decode_json zu finden, aber es gibt gleich das nächste Problem:

2022.07.17 18:54:37 3: Gardena_BLE (Ventil) - ExecGatttool_Done last gatt error: connect error: Function not implemented (38)


Die Meldung kommt alle paar Sekunden, und der FHEM Status des Devices ist "error"


X-Byte

Wollte das neu angeschaffte Gardena Bluetooth Ventil in FHEM integrieren.

Ich bekomme das Modul leider gar nicht erst geladen, muss gestehen dass ich auch bisher keine genutzt hatte, was nicht bereits im FHEM repository enthalten war.
Ich habe 74_GardenaBLEDevice.pm nach /opt/fhem/FHEM geladen und erst mit "reload 74_GardenaBLEDevice.pm" und "reload 74_GardenaBLEDevice" im laufenden FHEM Betrieb zu laden, aber die anschließende Definition eines Gardena_BLE device schlug fehl mit "Unknown module Gardena_BLE". Auch ein "shutdown restart" von FHEM änderte nichts an der Lage.

Im FHEM log findet sich folgendes, was aber wohl nur Warnings und keine Errors sind:
2022.07.22 23:55:01 1: PERL WARNING: %Gardena_BLE_Models{...} in scalar context better written as $Gardena_BLE_Models{...} at ./FHEM/74_GardenaBLEDevice.pm line 95.
2022.07.22 23:55:01 1: PERL WARNING: %Gardena_BLE_Set_Opts{"all"} in scalar context better written as $Gardena_BLE_Set_Opts{"all"} at ./FHEM/74_GardenaBLEDevice.pm line 114.
2022.07.22 23:55:01 1: PERL WARNING: %Gardena_BLE_Set_Opts{...} in scalar context better written as $Gardena_BLE_Set_Opts{...} at ./FHEM/74_GardenaBLEDevice.pm line 114.
2022.07.22 23:55:01 1: PERL WARNING: %Gardena_BLE_Get_Opts{"all"} in scalar context better written as $Gardena_BLE_Get_Opts{"all"} at ./FHEM/74_GardenaBLEDevice.pm line 118.
2022.07.22 23:55:01 1: PERL WARNING: %Gardena_BLE_Get_Opts{...} in scalar context better written as $Gardena_BLE_Get_Opts{...} at ./FHEM/74_GardenaBLEDevice.pm line 118.


Eine kleine Starthilfe wäre sehr willkommen.

X-Byte

OK, Antwort an mich selbst: Es heißt define GardenaBLEDevice und nicht Gardena_BLE

Ich konnte es also erfolgreich anlegen, erhalte aber als state nur "error" und lastGattError "connect error".

Bei einem bluetoothctl / scan on / devices taucht die MAC zwar auf, aber "water control" wird nicht als text dahinter angezeigt.
Darf das Ventil möglicherweise nicht zuvor mit einem Handy in der Gardena Bluetooh App gekoppelt werden?
Mit einem zweiten Handy finde kann ich das Ventil mit der Gardena Bluetooth nämlich auch nicht finden/hinzufügen, bei einem BLE Scan auf dem Handy taucht die MAC auf, aber im Gegensatz zum ersten Handy ohne "water control" text.

X-Byte

Habe mir noch ein zweites Gardena Bluetooth Ventil zugelegt, das noch komplett jungfräulich (ungepaart) ist und damit in FHEM ein GardenaBLEDevice definiert. Die MAC konnte vorher beim Scan gefunden werden, allerdings auch hier ohne Water Control als Text.

Mit dem bisher ungepaarten Ventil komme ich etwas weiter, wenn auch nicht viel. Wenigstens werden hier ein paar mehr Readings angezeigt als lastGattError und state:

Readings
battery: low
batteryLevel: 0%
ctrlunitstate: removed
deviceTime: Tue Mar 20 08:34:18 2091
lastGattError: connect error
remainingTime: 0 seconds
state: error


Wobei die Control unit nach der Bluetooth Verbindung mittlerweile verbunden ist, der Status dazu ändert sich nicht. Die deviceTime wurde wohl auch nie gesetzt.
Und auch sonst reagiert es auf keine der Set/Get Befehle mit einer anderen Meldung außer connect error.

Andere BLE Geräte, wie z.B. 74_XiaomiBTLESens (Temperatursensor) funktionieren übrigens problemlos, so dass ich ein Rapsberry Pi/OS Problem eher ausschließen würde.

ambiman

Hallo X-Byte,

ich könnte mir vorstellen, das das Gerät vielleicht eine neuere Firmware und damit andere BLE Characteristics im Vergleich zu meinem Ventil hat.

Mein Ventil hat die Firmware 1.7.7.17 (habe ich per GardenaBLE App ermittelt) - wie sieht es bei dir aus ?

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



X-Byte

Danke ambiman für Deine Rückmeldung  :)

Beide Ventile haben bei mir die Firmware Version 1.7.13.20

gatttool -i hci0 -b 70:xx:xx:xx:xx:F6 --char-read -a 0x006b
Characteristic value/descriptor: 00 00


gatttool -i hci0 -b 70:xx:xx:xx:xx:F6 --char-read -a 0x0029
Characteristic value/descriptor: 00 00


Bei dem etwas weiter weg, bereits angeschlossenem Ventil kommt bei beiden Abfragen nur "connect error: Function not implemented (38)". Allerdings wird es bei bluetoothctl / scan on / devices auf dem Pi gelistet, sollte also in Reichweite sein.

ambiman

Hallo X-Byte,

danke für deine Rückmeldung.
Ich kenne aktuell leider keinen Weg mein Ventil auf eine neue Firmware zu heben.
Ich gehe davon aus die Geräte werden bei Auslieferung einmal geflashed. Ich müsste diesbezüglich einmal bei Gardena anfragen.

Da die Ergebnise der beiden Abfragen kein brauchbares Ergebnis lieferten, müssen wir leider etwas reverse engineer'en :-(.

Könntest du bei Gelegenheit bitte einmal das BLE Fuzzer Skript hier ausführen und die Ergebnise teilen ?

https://gist.github.com/deliciouskek/e6589f2467461681b154

Idealerweise führst du das Skript einmal mit geschlossenen und einem mit geöffneten Ventil aus.
Du kannst die sleep Befehle im Skript entfernen.

Bzgl. dem Fehler "connect error: Function not implemented (38)": Kannst du das weiter entfernte / montierte Ventil denn
mittels Smartphone vom gleichen Standort wie der Pi per Gardena App steuern ?

Besten Dank und VG,

ambiman

X-Byte

Hi Ambiman,

Die Scriptausführung kann ich nächste Woche mal angehen, bis dahin hab ich recht volles Programm ;).

Übrigens habe ich zufälligerweise heute ein Gardena Bluetooth App (Android) erhalten, mit dem sich (endlich) die Ventil Firmwares direkt über die App flashen lassen. Dies wird auch direkt beim Starten der App und Verbinden mit dem Ventil angezeigt. Du müsstest damit auch in der Lage sein, dein Ventil auf den aktuellen Stand zu heben.

ZitatBzgl. dem Fehler "connect error: Function not implemented (38)": Kannst du das weiter entfernte / montierte Ventil denn
mittels Smartphone vom gleichen Standort wie der Pi per Gardena App steuern ?
Ja das funktioniert, Smartphone direkt neben Pi positioniert kann das weiter entfernte Ventil erreichen und steuern. Mag natürlich sein, dass die im Smartphone verbaute BTLE Einheit besser/leistungsstärker ist.

Gruß
X-Byte

ambiman

Hallo X-Byte,

Zitat von: X-Byte am 26 Juli 2022, 23:21:46
Übrigens habe ich zufälligerweise heute ein Gardena Bluetooth App (Android) erhalten, mit dem sich (endlich) die Ventil Firmwares direkt über die App flashen lassen. Dies wird auch direkt beim Starten der App und Verbinden mit dem Ventil angezeigt. Du müsstest damit auch in der Lage sein, dein Ventil auf den aktuellen Stand zu heben.
Gruß
X-Byte

Habe ich gestern Abend sowohl mit der iOS als auch mit der Android App probiert: Leider hat mir keiner der beiden Apps ein Firmware Update für mein Ventil angeboten. Vielleicht kam das OTA Update auch erst mit einer neuen Version!?
Ich habe nun auch einmal eine Anfrage an Gardena platziert - ich bin gespannt was zurück kommt.
Somit kann ich aktuell jedoch leider keine Tests durchführen :-(.

VG,

ambiman

maltejahn

#14
Hallo,

ich versuche mich gerade auch an dem Ventil. Das State bleibt im "requesting" hängen. Aber vielleicht passen die Einträge auch nicht:

Ventil ausVentil aus
0x0001
Characteristic value/descriptor: 00 18
0x0002
Characteristic value/descriptor: 02 03 00 00 2a
0x0003
Characteristic value/descriptor: 57 61 74 65 72 20 43 6f 6e 74 72 6f 6c
0x0004
Characteristic value/descriptor: 02 05 00 01 2a
0x0005
Characteristic value/descriptor: 00 00
0x0006
Characteristic value/descriptor: 02 07 00 04 2a
0x0007
Characteristic value/descriptor: 50 00 a0 00 00 00 e8 03
0x0008
Characteristic value/descriptor: 02 09 00 a6 2a
0x0009
Characteristic value/descriptor: 01
0x000a
Characteristic value/descriptor: 02 0b 00 c9 2a
0x000b
Characteristic value/descriptor: 00
0x000c
Characteristic value/descriptor: 01 18
0x000d
Characteristic value/descriptor: 20 0e 00 05 2a
0x000e
Characteristic value/descriptor read failed: Attribute can't be read
0x000f
Characteristic value/descriptor: 00 00
0x0010
Characteristic value/descriptor: 0a 18
0x0011
Characteristic value/descriptor: 02 12 00 24 2a
0x0012
Characteristic value/descriptor: 4d 6f 64 65 6c 20 4e 75 6d 62 65 72 20 54 42 44
0x0013
Characteristic value/descriptor: 02 14 00 29 2a
0x0014
Characteristic value/descriptor: 48 75 73 71 76 61 72 6e 61 20 41 42
sleep 5
0x0015
Characteristic value/descriptor: 02 16 00 26 2a
0x0016
Characteristic value/descriptor: 31 2e 37 2e 32 30 2e 32 35
0x0017
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 00 bd 98
0x0018
Characteristic value/descriptor: 12 19 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 00 bd 98
0x0019
Characteristic value/descriptor: 00
0x001a
Characteristic value/descriptor: 00 00
0x001b
Characteristic value/descriptor: 12 1c 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 00 bd 98
0x001c
Characteristic value/descriptor: 00
0x001d
Characteristic value/descriptor: 00 00
0x001e
Characteristic value/descriptor: 02 1f 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 00 bd 98
0x001f
Characteristic value/descriptor: 00 00 00 00 00 00 00 00 00 00
0x0020
Characteristic value/descriptor: 0a 21 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 14 00 bd 98
0x0021
Characteristic value/descriptor: 50
0x0022
Characteristic value/descriptor: 02 23 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 15 00 bd 98
0x0023
Characteristic value/descriptor: 00
0x0024
Characteristic value/descriptor: 12 25 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 16 00 bd 98
0x0025
Characteristic value/descriptor: 00 00 00 00
0x0026
Characteristic value/descriptor: 00 00
0x0027
Characteristic value/descriptor: 1a 28 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 17 00 bd 98
0x0028
Characteristic value/descriptor: 00
sleep 5
0x0029
Characteristic value/descriptor: 00 00
0x002a
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 0f 18 bd 98
0x002b
Characteristic value/descriptor: 12 2c 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 19 2a bd 98
0x002c
Characteristic value/descriptor: 64
0x002d
Characteristic value/descriptor: 00 00
0x002e
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 0b bd 98
0x002f
Characteristic value/descriptor: 0a 30 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 0b bd 98
0x0030
Characteristic value/descriptor: 00 00 00 00
0x0031
Characteristic value/descriptor: 0a 32 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 0b bd 98
0x0032
Characteristic value/descriptor: 64
0x0033
Characteristic value/descriptor: 0a 34 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 0b bd 98
0x0034
Characteristic value/descriptor: 22 de e3 62
0x0035
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b ee ee bd 98
0x0036
Characteristic value/descriptor: 02 37 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b ef ee bd 98
0x0037
Characteristic value/descriptor: 01 03 04 04 03 04 03 04 03 04 04 04 04 04 04 04 04 04 04 04 04 04
0x0038
Characteristic value/descriptor: 12 39 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b f0 ee bd 98
0x0039
Characteristic value/descriptor: 19
0x003a
Characteristic value/descriptor: 00 00
0x003b
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 0d bd 98
0x003c
Characteristic value/descriptor: 02 3d 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 0d bd 98
sleep 5
0x003d
Characteristic value/descriptor: 25 d4 e3 62 d3 d4 e3 62 d5 d4 e3 62 dc d4 e3 62 54 d9 e3 62 73 d9
0x003e
Characteristic value/descriptor: 12 3f 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 0d bd 98
0x003f
Characteristic value/descriptor: 0b
0x0040
Characteristic value/descriptor: 00 00
0x0041
Characteristic value/descriptor: 02 42 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 0d bd 98
0x0042
Characteristic value/descriptor: 02 02 02 02 02 02 02 02 02 02 00
0x0043
Characteristic value/descriptor: 02 44 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 14 0d bd 98
0x0044
Characteristic value/descriptor: 03 00 00 00 32 00 00 00 01 00 00 00 02 00 00 00 4c 00 00 00 02 00
0x0045
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 0c bd 98
0x0046
Characteristic value/descriptor: 0a 47 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 0c bd 98
0x0047
Characteristic value/descriptor: 00 00 00 00
0x0048
Characteristic value/descriptor: 0a 49 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 0c bd 98
0x0049
Characteristic value/descriptor: 00 00 00 00
0x004a
Characteristic value/descriptor: 0a 4b 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 0c bd 98
0x004b
Characteristic value/descriptor: 00
0x004c
Characteristic value/descriptor: 0a 4d 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 14 0c bd 98
0x004d
Characteristic value/descriptor: 00 00
0x004e
Characteristic value/descriptor read failed: Invalid handle
0x004f
Characteristic value/descriptor: 00
0x0050
Characteristic value/descriptor: 0a 51 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 16 0c bd 98
sleep 5
0x0051
Characteristic value/descriptor: 00 00
0x0052
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 20 0c bd 98
0x0053
Characteristic value/descriptor: 0a 54 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 21 0c bd 98
0x0054
Characteristic value/descriptor: 00 00 00 00
0x0055
Characteristic value/descriptor: 0a 56 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 22 0c bd 98
0x0056
Characteristic value/descriptor: 00 00 00 00
0x0057
Characteristic value/descriptor: 0a 58 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 23 0c bd 98
0x0058
Characteristic value/descriptor: 00
0x0059
Characteristic value/descriptor: 0a 5a 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 24 0c bd 98
0x005a
Characteristic value/descriptor: 00 00
0x005b
Characteristic value/descriptor: 0a 5c 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 25 0c bd 98
0x005c
Characteristic value/descriptor: 00
0x005d
Characteristic value/descriptor: 0a 5e 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 26 0c bd 98
0x005e
Characteristic value/descriptor: 00 00
0x005f
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 30 0c bd 98
0x0060
Characteristic value/descriptor: 0a 61 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 31 0c bd 98
0x0061
Characteristic value/descriptor: 00 00 00 00
0x0062
Characteristic value/descriptor: 0a 63 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 32 0c bd 98
0x0063
Characteristic value/descriptor: 00 00 00 00
0x0064
Characteristic value/descriptor: 0a 65 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 33 0c bd 98
sleep 5
0x0065
Characteristic value/descriptor: 00
0x0066
Characteristic value/descriptor: 0a 67 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 34 0c bd 98
0x0067
Characteristic value/descriptor: 00 00
0x0068
Characteristic value/descriptor: 0a 69 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 35 0c bd 98
0x0069
Characteristic value/descriptor: 00
0x006a
Characteristic value/descriptor: 0a 6b 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 36 0c bd 98
0x006b
Characteristic value/descriptor: 00 00
0x006c
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 0f bd 98
0x006d
Characteristic value/descriptor: 12 6e 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 0f bd 98
0x006e
Characteristic value/descriptor: 00
0x006f
Characteristic value/descriptor: 00 00
0x0070
Characteristic value/descriptor: 12 71 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 0f bd 98
0x0071
Characteristic value/descriptor: 01
0x0072
Characteristic value/descriptor: 00 00
0x0073
Characteristic value/descriptor: 0a 74 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 0f bd 98
0x0074
Characteristic value/descriptor: 00 00 00 00
0x0075
Characteristic value/descriptor: 0a 76 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 14 0f bd 98
0x0076
Characteristic value/descriptor: 08 07 00 00
0x0077
Characteristic value/descriptor: 02 78 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 15 0f bd 98
0x0078
Characteristic value/descriptor: 00
sleep 5
0x0079
Characteristic value/descriptor: 00 00 00 00 00 00 00 b0 00 40 51 04 d0 ff 00 f0
0x007a
Characteristic value/descriptor: 0c 7b 00 00 00 00 00 00 00 00 b0 00 40 51 04 d1 ff 00 f0
0x007b
Characteristic value/descriptor read failed: Attribute can't be read
0x007c
Characteristic value/descriptor: 4f 41 44 20 53 74 61 72 74 2f 52 65 73 65 74
0x007d



Ventil ein
Ventil ein
0x0001
Characteristic value/descriptor: 00 18
0x0002
Characteristic value/descriptor: 02 03 00 00 2a
0x0003
Characteristic value/descriptor: 57 61 74 65 72 20 43 6f 6e 74 72 6f 6c
0x0004
Characteristic value/descriptor: 02 05 00 01 2a
0x0005
Characteristic value/descriptor: 00 00
0x0006
Characteristic value/descriptor: 02 07 00 04 2a
0x0007
Characteristic value/descriptor: 50 00 a0 00 00 00 e8 03
0x0008
Characteristic value/descriptor: 02 09 00 a6 2a
0x0009
Characteristic value/descriptor: 01
0x000a
Characteristic value/descriptor: 02 0b 00 c9 2a
0x000b
Characteristic value/descriptor: 00
0x000c
Characteristic value/descriptor: 01 18
0x000d
Characteristic value/descriptor: 20 0e 00 05 2a
0x000e
Characteristic value/descriptor read failed: Attribute can't be read
0x000f
Characteristic value/descriptor: 00 00
0x0010
Characteristic value/descriptor: 0a 18
0x0011
Characteristic value/descriptor: 02 12 00 24 2a
0x0012
Characteristic value/descriptor: 4d 6f 64 65 6c 20 4e 75 6d 62 65 72 20 54 42 44
0x0013
Characteristic value/descriptor: 02 14 00 29 2a
0x0014
Characteristic value/descriptor: 48 75 73 71 76 61 72 6e 61 20 41 42
sleep 5
0x0015
Characteristic value/descriptor: 02 16 00 26 2a
0x0016
Characteristic value/descriptor: 31 2e 37 2e 32 30 2e 32 35
0x0017
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 00 bd 98
0x0018
Characteristic value/descriptor: 12 19 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 00 bd 98
0x0019
Characteristic value/descriptor: 00
0x001a
Characteristic value/descriptor: 00 00
0x001b
Characteristic value/descriptor: 12 1c 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 00 bd 98
0x001c
Characteristic value/descriptor: 00
0x001d
Characteristic value/descriptor: 00 00
0x001e
Characteristic value/descriptor: 02 1f 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 00 bd 98
0x001f
Characteristic value/descriptor: 00 00 00 00 00 00 00 00 00 00
0x0020
Characteristic value/descriptor: 0a 21 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 14 00 bd 98
0x0021
Characteristic value/descriptor: 50
0x0022
Characteristic value/descriptor: 02 23 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 15 00 bd 98
0x0023
Characteristic value/descriptor: 00
0x0024
Characteristic value/descriptor: 12 25 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 16 00 bd 98
0x0025
Characteristic value/descriptor: 00 00 00 00
0x0026
Characteristic value/descriptor: 00 00
0x0027
Characteristic value/descriptor: 1a 28 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 17 00 bd 98
0x0028
Characteristic value/descriptor: 00
sleep 5
0x0029
Characteristic value/descriptor: 00 00
0x002a
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 0f 18 bd 98
0x002b
Characteristic value/descriptor: 12 2c 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 19 2a bd 98
0x002c
Characteristic value/descriptor: 64
0x002d
Characteristic value/descriptor: 00 00
0x002e
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 0b bd 98
0x002f
Characteristic value/descriptor: 0a 30 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 0b bd 98
0x0030
Characteristic value/descriptor: 00 00 00 00
0x0031
Characteristic value/descriptor: 0a 32 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 0b bd 98
0x0032
Characteristic value/descriptor: 64
0x0033
Characteristic value/descriptor: 0a 34 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 0b bd 98
0x0034
Characteristic value/descriptor: 73 df e3 62
0x0035
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b ee ee bd 98
0x0036
Characteristic value/descriptor: 02 37 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b ef ee bd 98
0x0037
Characteristic value/descriptor: 01 03 04 04 03 04 03 04 03 04 04 04 04 04 04 04 04 04 04 04 04 04
0x0038
Characteristic value/descriptor: 12 39 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b f0 ee bd 98
0x0039
Characteristic value/descriptor: 2e
0x003a
Characteristic value/descriptor: 00 00
0x003b
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 0d bd 98
0x003c
Characteristic value/descriptor: 02 3d 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 0d bd 98
sleep 5
0x003d
Characteristic value/descriptor: 25 d4 e3 62 d3 d4 e3 62 d5 d4 e3 62 dc d4 e3 62 54 d9 e3 62 73 d9
0x003e
Characteristic value/descriptor: 12 3f 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 0d bd 98
0x003f
Characteristic value/descriptor: 0b
0x0040
Characteristic value/descriptor: 00 00
0x0041
Characteristic value/descriptor: 02 42 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 0d bd 98
0x0042
Characteristic value/descriptor: 02 02 02 02 02 02 02 02 02 02 00
0x0043
Characteristic value/descriptor: 02 44 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 14 0d bd 98
0x0044
Characteristic value/descriptor: 03 00 00 00 32 00 00 00 01 00 00 00 02 00 00 00 4c 00 00 00 02 00
0x0045
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 0c bd 98
0x0046
Characteristic value/descriptor: 0a 47 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 0c bd 98
0x0047
Characteristic value/descriptor: 00 00 00 00
0x0048
Characteristic value/descriptor: 0a 49 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 0c bd 98
0x0049
Characteristic value/descriptor: 00 00 00 00
0x004a
Characteristic value/descriptor: 0a 4b 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 0c bd 98
0x004b
Characteristic value/descriptor: 00
0x004c
Characteristic value/descriptor: 0a 4d 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 14 0c bd 98
0x004d
Characteristic value/descriptor: 00 00
0x004e
Characteristic value/descriptor read failed: Invalid handle
0x004f
Characteristic value/descriptor: 00
0x0050
Characteristic value/descriptor: 0a 51 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 16 0c bd 98
sleep 5
0x0051
Characteristic value/descriptor: 00 00
0x0052
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 20 0c bd 98
0x0053
Characteristic value/descriptor: 0a 54 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 21 0c bd 98
0x0054
Characteristic value/descriptor: 00 00 00 00
0x0055
Characteristic value/descriptor: 0a 56 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 22 0c bd 98
0x0056
Characteristic value/descriptor: 00 00 00 00
0x0057
Characteristic value/descriptor: 0a 58 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 23 0c bd 98
0x0058
Characteristic value/descriptor: 00
0x0059
Characteristic value/descriptor: 0a 5a 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 24 0c bd 98
0x005a
Characteristic value/descriptor: 00 00
0x005b
Characteristic value/descriptor: 0a 5c 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 25 0c bd 98
0x005c
Characteristic value/descriptor: 00
0x005d
Characteristic value/descriptor: 0a 5e 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 26 0c bd 98
0x005e
Characteristic value/descriptor: 00 00
0x005f
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 30 0c bd 98
0x0060
Characteristic value/descriptor: 0a 61 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 31 0c bd 98
0x0061
Characteristic value/descriptor: 00 00 00 00
0x0062
Characteristic value/descriptor: 0a 63 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 32 0c bd 98
0x0063
Characteristic value/descriptor: 00 00 00 00
0x0064
Characteristic value/descriptor: 0a 65 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 33 0c bd 98
sleep 5
0x0065
Characteristic value/descriptor: 00
0x0066
Characteristic value/descriptor: 0a 67 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 34 0c bd 98
0x0067
Characteristic value/descriptor: 00 00
0x0068
Characteristic value/descriptor: 0a 69 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 35 0c bd 98
0x0069
Characteristic value/descriptor: 00
0x006a
Characteristic value/descriptor: 0a 6b 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 36 0c bd 98
0x006b
Characteristic value/descriptor: 00 00
0x006c
Characteristic value/descriptor: e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 10 0f bd 98
0x006d
Characteristic value/descriptor: 12 6e 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 11 0f bd 98
0x006e
Characteristic value/descriptor: 01
0x006f
Characteristic value/descriptor: 00 00
0x0070
Characteristic value/descriptor: 12 71 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 12 0f bd 98
0x0071
Characteristic value/descriptor: 01
0x0072
Characteristic value/descriptor: 00 00
0x0073
Characteristic value/descriptor: 0a 74 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 13 0f bd 98
0x0074
Characteristic value/descriptor: 1f 06 00 00
0x0075
Characteristic value/descriptor: 0a 76 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 14 0f bd 98
0x0076
Characteristic value/descriptor: 08 07 00 00
0x0077
Characteristic value/descriptor: 02 78 00 e4 6d dc 75 bf dd e5 84 1a 42 0e 0b 15 0f bd 98
0x0078
Characteristic value/descriptor: 00
sleep 5
0x0079
Characteristic value/descriptor: 00 00 00 00 00 00 00 b0 00 40 51 04 d0 ff 00 f0
0x007a
Characteristic value/descriptor: 0c 7b 00 00 00 00 00 00 00 00 b0 00 40 51 04 d1 ff 00 f0
0x007b


0x71 bleibt identisch, allerdings ändert sich 0x6e . Scheint doch zu passen

my %Gardena_BLE_Models = (
        watercontrol => {
                'whandle'               => '0x0071',
                'timestamp'             => '0x0031',
                'battery'               => '0x0029', ##Most likely the battery - or it's 0x002f
                'state'                 => '0x006b',
                'duration'              => '0x0071',
                #'laststop'             => '0x003a', ##TODO: History sprinkler data ?
                'ctrlunitstate' => '0x006e'
        }
);


Komisch finde ich, das ich per Console einen Befehl absetzen kann:
pi@raspberrypi:~ $ gatttool -i hci0 -b F0:5E:CD:xx:yy:zz --char-read -a 0x006e
Characteristic value/descriptor: 00

aber über FHEM klappt das nicht
2022.07.29 13:50:59 5: Gardena_BLE_Get (GardenaBLE) - cmd: ctrlunitstate
2022.07.29 13:50:59 5: Gardena_BLE (GardenaBLE) - getCharValue: ctrlunitstate
2022.07.29 13:50:59 5: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool with mod: read
2022.07.29 13:50:59 4: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool Another job is running adding to pending: read 0x006e
2022.07.29 13:51:11 1: Timeout for Gardena_BLE_ExecGatttool_Run reached, terminated process 17261
2022.07.29 13:51:11 5: Gardena_BLE_Notify (GardenaBLE) - devname: GardenaBLE | devtype: GardenaBLEDevice | events: state: unreachable
2022.07.29 13:51:11 5: Gardena_BLE_Notify (GardenaBLE) - devname: GardenaBLE | devtype: GardenaBLEDevice | events: lastGattError: The BlockingCall Process terminated unexpectedly. Timedout state: error
2022.07.29 13:51:11 3: Gardena_BLE (GardenaBLE) - ExecGatttool_Aborted: The BlockingCall Process terminated unexpectedly. Timeout
2022.07.29 13:52:13 5: Gardena_BLE_stateRequest (GardenaBLE)
2022.07.29 13:52:13 5: Gardena_BLE_Notify (GardenaBLE) - devname: GardenaBLE | devtype: GardenaBLEDevice | events: state: requesting
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool with mod: read
2022.07.29 13:52:13 4: Gardena_BLE (GardenaBLE) - Read Gardena_BLE_ExecGatttool_Run GardenaBLE|F0:5E:CD:xx:yy:zz|read|0x006b
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - getCharValue: battery
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool with mod: read
2022.07.29 13:52:13 4: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool Another job is running adding to pending: read 0x0029
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - getCharValue: timestamp
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool with mod: read
2022.07.29 13:52:13 4: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool Another job is running adding to pending: read 0x0031
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - getCharValue: duration
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool with mod: read
2022.07.29 13:52:13 4: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool Another job is running adding to pending: read 0x0071
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - getCharValue: ctrlunitstate
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool with mod: read
2022.07.29 13:52:13 4: Gardena_BLE (GardenaBLE) - Run CreateParamGatttool Another job is running adding to pending: read 0x006e
2022.07.29 13:52:13 5: Gardena_BLE (GardenaBLE) - stateRequestTimer: Call Request Timer
2022.07.29 13:52:13 4: Gardena_BLE (GardenaBLE) - ExecGatttool_Run: call gatttool with command: gatttool -i hci0 -b F0:5E:CD:xx:yy:zz --char-read -a 0x006b 2>&1 /dev/null and loop 0
2022.07.29 13:52:53 5: Gardena_BLE (GardenaBLE) - ExecGatttool_Run: gatttool loop result connect error: Connection refused (111)
2022.07.29 13:52:53 4: Gardena_BLE (GardenaBLE) - ExecGatttool_Run: call gatttool with command: gatttool -i hci0 -b F0:5E:CD:xx:yyzz --char-read -a 0x006b 2>&1 /dev/null and loop 1



-> FHEM: defmod GardenaBLE GardenaBLEDevice F0:5E:CD:xx:yy:zz watercontrol, wobei der Name Watercontrol bei der Abfrage des device ebenfalls leer war

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

X-Byte

#30
Hi ambiman, konnte natürlich nicht widerstehen und habe gleich die Version 0.3 installiert, beim Reload hat FHEM allerdings gemeckert, dass das DateTime Perl Modul nicht vorhanden ist, welches ich dann mit sudo cpan -i DateTime nachinstalliert habe. (Hätte nicht gedacht, dass der Pi dafür mehr als eine halbe Stunde vor sich hinkompilieren muss). Evtl übernimmst Du noch eine Anleitung für die Installation der notwendigen Module mit in dein erstes Posting? Das macht es anderen Interessierten bestimmt einfacher.

Und toll, dass Gardena so problemlos kostenlos neue Ventile hat zukommen lassen!

Danke für das Ergänzen der Batteriereadings, allerdings fehlt ein wichtiges: batteryPercent - auch wenn es auf den ersten Blick redundant zum Attribut battery erscheint, so ist es doch das Reading, welches am häufigsten für Auswertungen und Reports herangezogen wird, da es geräteübergreifend verlässlich eine reine Zahl liefert und sich hiermit ohne irgendwelche Umformungen direkt rechnen lässt.
Auch scheint battery je nach Device unterschiedlich genutzt zu werden, mal steht nur eine Zahl drin (HUEDevice), mal eine Zahl mit " %" als Anhang (ZWave), mal als Text z.B. "low" (auch ZWave) mal fehlt das Attribut komplett (XiaomiBTLESens, XiaomiDevice).
Wäre also grandios, wenn Du das noch ergänzen könntest ;)


Die neue Version funktioniert soweit gut für mich, allerdings stelle ich fest, dass der periodische statusrequest für die Aktualisierung der Readings für die wohl erste Anfrage nach dem "state" wie schon in der Version 0.2 sehr häufig einen Fehler produziert aber die ganzen nachfolgenden Readings korrekt ausliest. Das hinterlässt im Device Status dann auch ein unschönes "error". Evtl. mach es Sinn den state gleich zwei mal abzufragen, da die erste Antwort eben häufig "connect error" ist? Oder ein anderes weniger wichtiges Reading zuerst?

2022-08-19_13:15:26 eg_garten_wasserventil_1 requesting
2022-08-19_13:15:38 eg_garten_wasserventil_1 off
2022-08-19_13:15:40 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_13:15:41 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_13:15:41 eg_garten_wasserventil_1 battery: ok
2022-08-19_13:15:43 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:15:44 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:15:46 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:15:48 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:15:50 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:15:52 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:16:47
2022-08-19_13:15:54 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:15:56 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:15:57 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:15:59 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:16:02 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:16:03 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:16:05 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:16:20 eg_garten_wasserventil_1 requesting
2022-08-19_13:16:27 eg_garten_wasserventil_1 off
2022-08-19_13:16:43 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-19_13:16:43 eg_garten_wasserventil_1 error
2022-08-19_13:16:51 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:17:08 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:17:23 eg_garten_wasserventil_1 requesting
2022-08-19_13:17:27 eg_garten_wasserventil_1 off
2022-08-19_13:20:31 eg_garten_wasserventil_1 requesting
2022-08-19_13:20:43 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-19_13:20:43 eg_garten_wasserventil_1 error
2022-08-19_13:20:51 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_13:20:53 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_13:20:53 eg_garten_wasserventil_1 battery: ok
2022-08-19_13:20:54 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:20:55 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:20:56 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:20:57 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:20:59 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:21:00 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:21:55
2022-08-19_13:21:01 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:21:03 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:21:04 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:21:05 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:21:06 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:21:08 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:21:09 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:25:34 eg_garten_wasserventil_1 requesting
2022-08-19_13:25:38 eg_garten_wasserventil_1 off
2022-08-19_13:25:40 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_13:25:41 eg_garten_wasserventil_1 battery: ok
2022-08-19_13:25:41 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_13:25:42 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:25:44 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:25:46 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:25:47 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:25:49 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:25:51 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:26:45
2022-08-19_13:25:52 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:25:54 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:25:55 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:25:57 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:25:59 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:26:01 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:26:02 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:30:34 eg_garten_wasserventil_1 requesting
2022-08-19_13:30:41 eg_garten_wasserventil_1 off
2022-08-19_13:30:42 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_13:30:44 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_13:30:44 eg_garten_wasserventil_1 battery: ok
2022-08-19_13:30:45 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:30:47 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:30:48 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:30:50 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:30:52 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:30:53 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:31:48
2022-08-19_13:30:55 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:30:57 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:30:58 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:30:59 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:31:01 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:31:03 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:31:05 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:35:35 eg_garten_wasserventil_1 requesting
2022-08-19_13:35:43 eg_garten_wasserventil_1 off
2022-08-19_13:35:44 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_13:35:46 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_13:35:46 eg_garten_wasserventil_1 battery: ok
2022-08-19_13:35:47 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:35:48 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:35:50 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:35:51 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:35:53 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:35:54 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:36:49
2022-08-19_13:35:56 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:35:58 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:35:59 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:36:01 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:36:03 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:36:04 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:36:07 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:40:35 eg_garten_wasserventil_1 requesting
2022-08-19_13:40:47 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-19_13:40:47 eg_garten_wasserventil_1 error
2022-08-19_13:40:59 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-19_13:41:08 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-19_13:41:17 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:41:19 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:41:20 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:41:21 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:41:22 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:41:24 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:42:19
2022-08-19_13:41:25 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:41:27 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:41:28 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:41:30 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:41:32 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:41:33 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:41:35 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:45:37 eg_garten_wasserventil_1 requesting
2022-08-19_13:45:44 eg_garten_wasserventil_1 off
2022-08-19_13:45:45 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_13:45:47 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_13:45:47 eg_garten_wasserventil_1 battery: ok
2022-08-19_13:45:48 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:45:49 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:45:51 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:45:53 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:45:55 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:45:57 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:46:51
2022-08-19_13:45:58 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:46:00 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:46:02 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:46:03 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:46:05 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:46:07 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:46:08 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:50:41 eg_garten_wasserventil_1 requesting
2022-08-19_13:50:50 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-19_13:50:50 eg_garten_wasserventil_1 error
2022-08-19_13:50:59 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-19_13:51:07 eg_garten_wasserventil_1 battery: ok
2022-08-19_13:51:07 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_13:51:08 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:51:10 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:51:11 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:51:12 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:51:14 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:51:16 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:52:10
2022-08-19_13:51:17 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:51:18 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:51:20 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:51:21 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:51:23 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:51:24 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:51:26 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_13:55:45 eg_garten_wasserventil_1 requesting
2022-08-19_13:55:48 eg_garten_wasserventil_1 off
2022-08-19_13:55:49 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_13:55:51 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_13:55:51 eg_garten_wasserventil_1 battery: ok
2022-08-19_13:55:52 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_13:55:53 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_13:55:55 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_13:55:57 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_13:55:58 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_13:56:00 eg_garten_wasserventil_1 deviceTime: 2022-08-19 13:56:54
2022-08-19_13:56:01 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_13:56:03 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_13:56:05 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_13:56:06 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_13:56:07 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_13:56:09 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_13:56:11 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_14:00:47 eg_garten_wasserventil_1 requesting
2022-08-19_14:00:56 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-19_14:00:56 eg_garten_wasserventil_1 error
2022-08-19_14:00:59 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_14:01:01 eg_garten_wasserventil_1 battery: ok
2022-08-19_14:01:01 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_14:01:02 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_14:01:03 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_14:01:04 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_14:01:06 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_14:01:08 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_14:01:09 eg_garten_wasserventil_1 deviceTime: 2022-08-19 14:02:04
2022-08-19_14:01:10 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_14:01:12 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_14:01:13 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_14:01:15 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_14:01:16 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_14:01:18 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_14:01:19 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_14:01:40 eg_garten_wasserventil_1 requesting
2022-08-19_14:01:44 eg_garten_wasserventil_1 off
2022-08-19_14:05:54 eg_garten_wasserventil_1 requesting
2022-08-19_14:06:01 eg_garten_wasserventil_1 off
2022-08-19_14:06:03 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_14:06:04 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_14:06:04 eg_garten_wasserventil_1 battery: ok
2022-08-19_14:06:05 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_14:06:07 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_14:06:09 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_14:06:11 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_14:06:12 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_14:06:13 eg_garten_wasserventil_1 deviceTime: 2022-08-19 14:07:08
2022-08-19_14:06:15 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_14:06:16 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_14:06:18 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_14:06:20 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_14:06:21 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_14:06:23 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_14:06:24 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-19_14:11:03 eg_garten_wasserventil_1 requesting
2022-08-19_14:11:10 eg_garten_wasserventil_1 off
2022-08-19_14:11:11 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-19_14:11:13 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-19_14:11:13 eg_garten_wasserventil_1 battery: ok
2022-08-19_14:11:14 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-19_14:11:16 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-19_14:11:17 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-19_14:11:19 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-19_14:11:21 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-19_14:11:23 eg_garten_wasserventil_1 deviceTime: 2022-08-19 14:12:17
2022-08-19_14:11:24 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-19_14:11:26 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-19_14:11:28 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-19_14:11:30 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-19_14:11:32 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-19_14:11:33 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-19_14:11:35 eg_garten_wasserventil_1 remainingTime: 0 seconds

X-Byte

Hi ambiman, habe mich wohl zu früh gefreut, seit heute Nacht verweigern meine beiden Ventile die Zusammenarbeit. Ich bekomme nur noch "lastGattError: The BlockingCall Process terminated unexpectedly: timed out" obwohl das eine Ventil nach wie vor 2 Meter für Testzwecke neben dem Pi liegt. Den Errorcounter hochsetzen bringt natürlich nichts, wenn der request immer auf ein Timeout läuft. Ich verstehe nur nicht woran das so plötzlich liegen kann, bewusst geändert habe ich nichts, schon gar nicht nachts um 2:42 Uhr. Mein andere BTLE Gerät (XiaomiBTLESens) funktioniert weiterhin problemlos.
Jetzt bin ich am überlegen ob ich wieder zur 0.2 zurückkehre, will aber nicht schon wieder die Geräte löschen und außerdem nochmal in Google Home einbinden müssen.

2022-08-21_02:32:41 eg_garten_wasserventil_1 requesting
2022-08-21_02:32:47 eg_garten_wasserventil_1 remainingTime: 0 seconds
2022-08-21_02:32:49 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-21_02:32:50 eg_garten_wasserventil_1 ctrlunitstate: installed
2022-08-21_02:32:51 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-21_02:32:52 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-21_02:32:54 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-21_02:32:54 eg_garten_wasserventil_1 battery: ok
2022-08-21_02:32:56 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-21_02:32:57 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-21_02:32:59 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-21_02:33:01 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-21_02:33:02 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-21_02:33:04 eg_garten_wasserventil_1 deviceTime: 2022-08-21 02:34:03
2022-08-21_02:33:06 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-21_02:33:07 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-21_02:33:09 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-21_02:33:11 eg_garten_wasserventil_1 off
2022-08-21_02:37:43 eg_garten_wasserventil_1 requesting
2022-08-21_02:37:59 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_02:37:59 eg_garten_wasserventil_1 error
2022-08-21_02:38:06 eg_garten_wasserventil_1 schedule2-duration: 0 seconds
2022-08-21_02:38:18 eg_garten_wasserventil_1 schedule2-starttime: 00:00:00
2022-08-21_02:38:19 eg_garten_wasserventil_1 schedule2-weekdays: n/a
2022-08-21_02:38:21 eg_garten_wasserventil_1 batteryLevel: 100%
2022-08-21_02:38:21 eg_garten_wasserventil_1 battery: ok
2022-08-21_02:38:22 eg_garten_wasserventil_1 firmware: 1.7.20.25
2022-08-21_02:38:24 eg_garten_wasserventil_1 schedule1-starttime: 00:00:00
2022-08-21_02:38:26 eg_garten_wasserventil_1 default-one-time-watering-time: 1800 seconds
2022-08-21_02:38:27 eg_garten_wasserventil_1 schedule1-weekdays: n/a
2022-08-21_02:38:29 eg_garten_wasserventil_1 schedule3-duration: 0 seconds
2022-08-21_02:38:30 eg_garten_wasserventil_1 deviceTime: 2022-08-21 02:39:30
2022-08-21_02:38:32 eg_garten_wasserventil_1 schedule3-starttime: 00:00:00
2022-08-21_02:38:34 eg_garten_wasserventil_1 schedule3-weekdays: n/a
2022-08-21_02:38:35 eg_garten_wasserventil_1 schedule1-duration: 0 seconds
2022-08-21_02:38:37 eg_garten_wasserventil_1 off
2022-08-21_02:42:43 eg_garten_wasserventil_1 requesting
2022-08-21_02:43:03 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_02:43:03 eg_garten_wasserventil_1 error
2022-08-21_02:47:49 eg_garten_wasserventil_1 requesting
2022-08-21_02:48:03 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_02:48:03 eg_garten_wasserventil_1 error
2022-08-21_02:48:23 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_02:52:53 eg_garten_wasserventil_1 requesting
2022-08-21_02:53:31 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_02:53:31 eg_garten_wasserventil_1 error
2022-08-21_02:58:03 eg_garten_wasserventil_1 requesting
2022-08-21_02:58:17 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_02:58:17 eg_garten_wasserventil_1 error
2022-08-21_02:58:23 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_02:58:34 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_02:58:51 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_02:59:04 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_02:59:24 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:03:04 eg_garten_wasserventil_1 requesting
2022-08-21_03:03:20 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_03:03:20 eg_garten_wasserventil_1 error
2022-08-21_03:03:40 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:08:04 eg_garten_wasserventil_1 requesting
2022-08-21_03:08:24 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:08:24 eg_garten_wasserventil_1 error
2022-08-21_03:13:11 eg_garten_wasserventil_1 requesting
2022-08-21_03:13:31 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:13:31 eg_garten_wasserventil_1 error
2022-08-21_03:18:11 eg_garten_wasserventil_1 requesting
2022-08-21_03:18:31 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:18:31 eg_garten_wasserventil_1 error
2022-08-21_03:23:18 eg_garten_wasserventil_1 requesting
2022-08-21_03:23:43 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_03:23:43 eg_garten_wasserventil_1 error
2022-08-21_03:24:19 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:28:26 eg_garten_wasserventil_1 requesting
2022-08-21_03:28:46 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:28:46 eg_garten_wasserventil_1 error
2022-08-21_03:33:26 eg_garten_wasserventil_1 requesting
2022-08-21_03:33:37 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_03:33:37 eg_garten_wasserventil_1 error
2022-08-21_03:33:52 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_03:34:12 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:38:35 eg_garten_wasserventil_1 requesting
2022-08-21_03:38:45 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_03:38:45 eg_garten_wasserventil_1 error
2022-08-21_03:39:05 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:43:37 eg_garten_wasserventil_1 requesting
2022-08-21_03:43:47 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_03:43:47 eg_garten_wasserventil_1 error
2022-08-21_03:44:07 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:48:39 eg_garten_wasserventil_1 requesting
2022-08-21_03:48:59 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:48:59 eg_garten_wasserventil_1 error
2022-08-21_03:53:41 eg_garten_wasserventil_1 requesting
2022-08-21_03:53:46 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_03:53:46 eg_garten_wasserventil_1 error
2022-08-21_03:54:06 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:58:49 eg_garten_wasserventil_1 requesting
2022-08-21_03:59:09 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_03:59:09 eg_garten_wasserventil_1 error
2022-08-21_04:03:56 eg_garten_wasserventil_1 requesting
2022-08-21_04:04:08 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_04:04:08 eg_garten_wasserventil_1 error
2022-08-21_04:04:28 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:09:00 eg_garten_wasserventil_1 requesting
2022-08-21_04:09:16 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_04:09:16 eg_garten_wasserventil_1 error
2022-08-21_04:09:36 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:14:00 eg_garten_wasserventil_1 requesting
2022-08-21_04:14:20 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:14:20 eg_garten_wasserventil_1 error
2022-08-21_04:19:07 eg_garten_wasserventil_1 requesting
2022-08-21_04:19:42 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:19:42 eg_garten_wasserventil_1 error
2022-08-21_04:24:15 eg_garten_wasserventil_1 requesting
2022-08-21_04:24:35 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:24:35 eg_garten_wasserventil_1 error
2022-08-21_04:29:19 eg_garten_wasserventil_1 requesting
2022-08-21_04:29:39 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:29:39 eg_garten_wasserventil_1 error
2022-08-21_04:34:27 eg_garten_wasserventil_1 requesting
2022-08-21_04:34:47 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:34:47 eg_garten_wasserventil_1 error
2022-08-21_04:39:34 eg_garten_wasserventil_1 requesting
2022-08-21_04:39:54 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:39:54 eg_garten_wasserventil_1 error
2022-08-21_04:44:41 eg_garten_wasserventil_1 requesting
2022-08-21_04:45:01 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:45:01 eg_garten_wasserventil_1 error
2022-08-21_04:49:49 eg_garten_wasserventil_1 requesting
2022-08-21_04:50:09 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_04:50:09 eg_garten_wasserventil_1 error
2022-08-21_04:54:54 eg_garten_wasserventil_1 requesting
2022-08-21_04:55:10 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_04:55:10 eg_garten_wasserventil_1 error
2022-08-21_04:55:19 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_04:55:28 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_04:55:48 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:00:01 eg_garten_wasserventil_1 requesting
2022-08-21_05:00:21 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:00:21 eg_garten_wasserventil_1 error
2022-08-21_05:05:10 eg_garten_wasserventil_1 requesting
2022-08-21_05:05:24 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_05:05:24 eg_garten_wasserventil_1 error
2022-08-21_05:05:44 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:10:17 eg_garten_wasserventil_1 requesting
2022-08-21_05:10:37 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:10:37 eg_garten_wasserventil_1 error
2022-08-21_05:15:19 eg_garten_wasserventil_1 requesting
2022-08-21_05:15:39 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:15:39 eg_garten_wasserventil_1 error
2022-08-21_05:20:22 eg_garten_wasserventil_1 requesting
2022-08-21_05:20:43 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:20:43 eg_garten_wasserventil_1 error
2022-08-21_05:25:31 eg_garten_wasserventil_1 requesting
2022-08-21_05:25:51 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:25:51 eg_garten_wasserventil_1 error
2022-08-21_05:30:39 eg_garten_wasserventil_1 requesting
2022-08-21_05:30:59 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:30:59 eg_garten_wasserventil_1 error
2022-08-21_05:35:45 eg_garten_wasserventil_1 requesting
2022-08-21_05:36:05 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:36:05 eg_garten_wasserventil_1 error
2022-08-21_05:40:53 eg_garten_wasserventil_1 requesting
2022-08-21_05:41:13 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:41:13 eg_garten_wasserventil_1 error
2022-08-21_05:46:00 eg_garten_wasserventil_1 requesting
2022-08-21_05:46:20 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:46:20 eg_garten_wasserventil_1 error
2022-08-21_05:51:09 eg_garten_wasserventil_1 requesting
2022-08-21_05:51:29 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_05:51:29 eg_garten_wasserventil_1 error
2022-08-21_05:56:09 eg_garten_wasserventil_1 requesting
2022-08-21_05:56:15 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_05:56:15 eg_garten_wasserventil_1 error
2022-08-21_05:56:35 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_06:01:13 eg_garten_wasserventil_1 requesting
2022-08-21_06:01:33 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_06:01:33 eg_garten_wasserventil_1 error
2022-08-21_06:06:20 eg_garten_wasserventil_1 requesting
2022-08-21_06:06:34 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_06:06:34 eg_garten_wasserventil_1 error
2022-08-21_06:06:54 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_06:11:29 eg_garten_wasserventil_1 requesting
2022-08-21_06:11:49 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_06:11:49 eg_garten_wasserventil_1 error
2022-08-21_06:16:33 eg_garten_wasserventil_1 requesting
2022-08-21_06:16:53 eg_garten_wasserventil_1 disabled
2022-08-21_06:16:53 eg_garten_wasserventil_1 disabled (error)
2022-08-21_09:20:39 eg_garten_wasserventil_1 disabled
2022-08-21_09:21:21 eg_garten_wasserventil_1 pending
2022-08-21_09:21:21 eg_garten_wasserventil_1 requesting
2022-08-21_09:21:41 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:21:41 eg_garten_wasserventil_1 error
2022-08-21_09:24:17 eg_garten_wasserventil_1 requesting
2022-08-21_09:24:37 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:24:37 eg_garten_wasserventil_1 error
2022-08-21_09:26:30 eg_garten_wasserventil_1 requesting
2022-08-21_09:26:50 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:26:50 eg_garten_wasserventil_1 error
2022-08-21_09:31:38 eg_garten_wasserventil_1 requesting
2022-08-21_09:31:58 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:31:58 eg_garten_wasserventil_1 error
2022-08-21_09:36:41 eg_garten_wasserventil_1 requesting
2022-08-21_09:37:01 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:37:01 eg_garten_wasserventil_1 error
2022-08-21_09:38:28 eg_garten_wasserventil_1 requesting
2022-08-21_09:38:55 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:38:55 eg_garten_wasserventil_1 error
2022-08-21_09:43:37 eg_garten_wasserventil_1 requesting
2022-08-21_09:43:57 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:43:57 eg_garten_wasserventil_1 error
2022-08-21_09:48:45 eg_garten_wasserventil_1 requesting
2022-08-21_09:49:05 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:49:05 eg_garten_wasserventil_1 error
2022-08-21_09:53:49 eg_garten_wasserventil_1 requesting
2022-08-21_09:54:07 eg_garten_wasserventil_1 lastGattError: connect error
2022-08-21_09:54:07 eg_garten_wasserventil_1 error
2022-08-21_09:54:27 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:58:51 eg_garten_wasserventil_1 requesting
2022-08-21_09:59:11 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_09:59:11 eg_garten_wasserventil_1 error
2022-08-21_10:03:51 eg_garten_wasserventil_1 requesting
2022-08-21_10:04:11 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_10:04:11 eg_garten_wasserventil_1 error
2022-08-21_10:08:59 eg_garten_wasserventil_1 requesting
2022-08-21_10:09:19 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_10:09:19 eg_garten_wasserventil_1 error
2022-08-21_10:14:07 eg_garten_wasserventil_1 requesting
2022-08-21_10:14:27 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_10:14:27 eg_garten_wasserventil_1 error
2022-08-21_12:49:53 eg_garten_wasserventil_1 requesting
2022-08-21_12:50:13 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_12:50:13 eg_garten_wasserventil_1 error
2022-08-21_13:26:16 eg_garten_wasserventil_1 requesting
2022-08-21_13:26:39 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_13:26:39 eg_garten_wasserventil_1 error
2022-08-21_13:31:21 eg_garten_wasserventil_1 requesting
2022-08-21_13:31:41 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_13:31:41 eg_garten_wasserventil_1 error
2022-08-21_13:36:30 eg_garten_wasserventil_1 requesting
2022-08-21_13:36:50 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_13:36:50 eg_garten_wasserventil_1 error
2022-08-21_13:41:35 eg_garten_wasserventil_1 requesting
2022-08-21_13:41:55 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_13:41:55 eg_garten_wasserventil_1 error
2022-08-21_13:46:40 eg_garten_wasserventil_1 requesting
2022-08-21_13:47:00 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_13:47:00 eg_garten_wasserventil_1 error
2022-08-21_13:51:49 eg_garten_wasserventil_1 requesting
2022-08-21_13:52:09 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_13:52:09 eg_garten_wasserventil_1 error
2022-08-21_13:56:52 eg_garten_wasserventil_1 requesting
2022-08-21_13:57:12 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_13:57:12 eg_garten_wasserventil_1 error
2022-08-21_14:01:52 eg_garten_wasserventil_1 requesting
2022-08-21_14:02:12 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:02:12 eg_garten_wasserventil_1 error
2022-08-21_14:06:56 eg_garten_wasserventil_1 requesting
2022-08-21_14:07:16 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:07:16 eg_garten_wasserventil_1 error
2022-08-21_14:12:00 eg_garten_wasserventil_1 requesting
2022-08-21_14:12:20 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:12:20 eg_garten_wasserventil_1 error
2022-08-21_14:17:04 eg_garten_wasserventil_1 requesting
2022-08-21_14:17:24 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:17:24 eg_garten_wasserventil_1 error
2022-08-21_14:22:12 eg_garten_wasserventil_1 requesting
2022-08-21_14:22:32 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:22:32 eg_garten_wasserventil_1 error
2022-08-21_14:27:12 eg_garten_wasserventil_1 requesting
2022-08-21_14:27:32 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:27:32 eg_garten_wasserventil_1 error
2022-08-21_14:32:15 eg_garten_wasserventil_1 requesting
2022-08-21_14:32:35 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:32:35 eg_garten_wasserventil_1 error
2022-08-21_14:37:17 eg_garten_wasserventil_1 requesting
2022-08-21_14:37:37 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:37:37 eg_garten_wasserventil_1 error
2022-08-21_14:42:26 eg_garten_wasserventil_1 requesting
2022-08-21_14:42:46 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:42:46 eg_garten_wasserventil_1 error
2022-08-21_14:47:30 eg_garten_wasserventil_1 requesting
2022-08-21_14:47:50 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:47:50 eg_garten_wasserventil_1 error
2022-08-21_14:52:37 eg_garten_wasserventil_1 requesting
2022-08-21_14:52:57 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:52:57 eg_garten_wasserventil_1 error
2022-08-21_14:57:43 eg_garten_wasserventil_1 requesting
2022-08-21_14:58:03 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_14:58:03 eg_garten_wasserventil_1 error
2022-08-21_15:02:43 eg_garten_wasserventil_1 requesting
2022-08-21_15:03:03 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:03:03 eg_garten_wasserventil_1 error
2022-08-21_15:07:46 eg_garten_wasserventil_1 requesting
2022-08-21_15:08:07 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:08:07 eg_garten_wasserventil_1 error
2022-08-21_15:12:47 eg_garten_wasserventil_1 requesting
2022-08-21_15:13:07 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:13:07 eg_garten_wasserventil_1 error
2022-08-21_15:17:53 eg_garten_wasserventil_1 requesting
2022-08-21_15:18:13 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:18:13 eg_garten_wasserventil_1 error
2022-08-21_15:22:57 eg_garten_wasserventil_1 requesting
2022-08-21_15:23:17 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:23:17 eg_garten_wasserventil_1 error
2022-08-21_15:28:03 eg_garten_wasserventil_1 requesting
2022-08-21_15:28:23 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:28:23 eg_garten_wasserventil_1 error
2022-08-21_15:33:11 eg_garten_wasserventil_1 requesting
2022-08-21_15:33:31 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:33:31 eg_garten_wasserventil_1 error
2022-08-21_15:38:15 eg_garten_wasserventil_1 requesting
2022-08-21_15:38:35 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:38:35 eg_garten_wasserventil_1 error
2022-08-21_15:43:16 eg_garten_wasserventil_1 requesting
2022-08-21_15:43:36 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:43:36 eg_garten_wasserventil_1 error
2022-08-21_15:48:16 eg_garten_wasserventil_1 requesting
2022-08-21_15:48:36 eg_garten_wasserventil_1 lastGattError: The BlockingCall Process terminated unexpectedly: timed out
2022-08-21_15:48:36 eg_garten_wasserventil_1 error
2022-08-21_15:53:24 eg_garten_wasserventil_1 requesting
2022-08-21_15:53:44 eg_garten_wasserventil_1 disabled
2022-08-21_15:53:44 eg_garten_wasserventil_1 disabled (error)
2022-08-21_18:40:50 eg_garten_wasserventil_1 on

ambiman

#32
Hallo X-Byte,

konntest du zu diesem Zeitpunkt noch eine Verbindung zu den Ventilen per Gardena App herstellen und sind beide Ventile zeitgleich in den "error" Zustand gegangen ?

Ich gehe davon aus, dass du vor dem erfolgreichen Read um 18:40:50 bei 'eg_garten_wasserventil_1' einmal die Batterien im Ventil entnommen hast, oder ?

Sollte die Annahme mit den Batterien stimmen, ist meine Vermutung das die Ventile nach einer bestimmten Anzahl Anfragen BT-seitig einfach aussteigen - ggf. läuft in der Firmware irgendeine Variable o.ä. voll. Hier wäre einmal interessant wie hoch der GATTCount nach dem letzten Batteriewechsel gewesen ist.

Ein Downgrade der Modulversion ist aus meiner Sicht nicht zielführend, da sich am prinzipiellen Ablauf nichts geändert hat.
Der Unterschied zu alten Version ist das ich nun das BT-Securitylevel erhöht habe (dies kann man bei der neuen Version auch per Attribut wieder auf den Standardwert 'low' stellen) und die sleeps (aus eigentlich genau diesen Problemen) eingebaut hatte. Ein weiterer Unterschied bei der neuen Version ist jedoch auch, das ich nun deutlich mehr Parameter lese (durch die Bewässerungszeitpläne sind es schon +9). Ich denke jedoch, dass das Problem mit der alten Version - etwas später - auch aufgetreten wäre. Testen könnte man es dennoch :).

Zur Stabilisierung mit der neuen Version hast du folgende Optionen:

a) auf BT-Securitylevel low gehen
b) den SleepbetweenGattCmds etwas höher setzen
c) ggf. das globale Interval (Standard: 5 Minuten) zur Abfrage der Parameter erhöhen

VG und nochmals danke für die Info,

ambiman

P.S.: Bei mir laufen aktuell drei Ventile (unterschiedliche Firmware-Versionen und mit den Standardwerten) mit der neuen Modulversion bislang äußerst stabil.
Ich werde das aber auch beobachten.

X-Byte

Hi ambiman,

ich kann sogar jetzt noch eine Verbindung mit beiden Ventilen mit der Gardena App aufbauen und bekomme dort auch den Verlauf der manuell über Knopfdruck gestarteten Bewässerungen der letzten Tage angezeigt. Batterien habe ich in der ganzen Zeit NICHT entnommen und auch nicht die Steuerteile vom Unterbau getrennt.

Beide Geräte befinden sich im Status "disabled (error)". Auch nach setzen von Security auf low, sleep auf 3 kommt nach der Reaktivierung (disabled attribut löschen) des Geräts in FHEM auf ein Statusrequest nur der Timeout error. Ich hatte mir erhofft, dass ich durch ein erhöhen des BlockingCallLogevel auf 5 die echten GATTTool Kommandos im Log sehen würde und daraus evtl. etwas ableiten könnte, aber die Kommandos tauchen im Log leider nicht auf.


Jetzt habe ich bei beiden Ventilen die Batterie kurz entfernt. Mein zweites Testventil lässt sich daraufhin in FHEM wieder erreichen, Statusupdates laufen.
Bei meinem produktiven Ventil musste ich erst die Steuereinheit mal abbauen und direkt neben den Pi gelegt, nochmal Batterie entnehmen, um es gefügig zumachen. Jetzt funktioniert es wieder und ist auch nach Platzierung am Wasserhahn meistens erreichbar. Bin gespannt wie lange. ;)

maltejahn

Hallo,

nachdem es eine Zeit lang ohne Probleme lief war letzte Woche das Ventil weder per App noch per FHEM Modul erreichbar:


2022.09.21 15:14:58 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 21234
2022.09.24 14:51:14 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 9784
2022.09.24 14:56:17 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 10013
2022.09.24 15:01:23 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 10247
2022.09.25 14:58:55 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 25051
2022.09.25 15:03:40 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 25120
2022.09.25 15:08:44 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 25192
2022.09.25 15:13:46 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 25319
2022.09.25 15:18:50 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 25400
2022.09.25 15:23:59 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 25474
2022.09.25 15:28:39 2: GardenaBLEDevice (f2f_Gardena_Blumen) - Run CreateParamGatttool Maximum number of jobs reached, dropping newer ones.
2022.09.25 15:28:39 2: GardenaBLEDevice (f2f_Gardena_Blumen) - Run CreateParamGatttool Maximum number of jobs reached, dropping newer ones.
......


2022.09.26 23:32:18 2: GardenaBLEDevice (f2f_Gardena_Blumen) - Run CreateParamGatttool Maximum number of jobs reached, dropping newer ones.
2022.09.26 23:32:38 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 25047
2022.09.26 23:32:38 3: GardenaBLEDevice (f2f_Gardena_Blumen) - disabled
2022.09.26 23:32:38 2: GardenaBLEDevice (f2f_Gardena_Blumen) - disabled because MAXERRORCOUNT of 30 reached


Auf den ersten Blick, nach 15x
2022.09.26 22:46:42 2: GardenaBLEDevice (f2f_Gardena_Blumen) - Run CreateParamGatttool Maximum number of jobs reached, dropping newer ones.

kommt ein
2022.09.25 15:39:06 1: Timeout for GardenaBLEDevice_ExecGatttool_Run reached, terminated process 25694


Oder anders herum. Henne und Ei und so

defmod f2f_Gardena_Blumen GardenaBLEDevice F0:5... watercontrol
attr f2f_Gardena_Blumen disable 1
attr f2f_Gardena_Blumen room GardenaBLE
attr f2f_Gardena_Blumen webCmd on:off

ambiman

Hallo zusammen,

danke für das Feedback.

Ich habe das bei meinen Ventilen mittlerweile (unabhängig von der Modulversion) ebenfalls beobachtet - nach einiger Zeit reagieren diese BT-seitig nicht mehr.
Weder mittels FHEM noch mit der Gardena App - ich vermute, die Ventile sind nicht für diese Vielzahl der BT Verbindungen ausgelegt und das SW-seitig irgendetwas vollläuft und somit keine Verbindungen (bis zum Reset = Batterien raus) mehr möglich sind.

Dennoch... im Sommer haben die Ventile bei mir zum Großteil alle Bewässerungssaufgaben erfüllt :-).

Wenn die Ventile jedoch in der Lage wären mehr Bewässerungszeitpläne (ich nutze u.a. den mechanischen Wasserverteiler von Gardena) zu speichen,
wäre die o.g. Limitation ja auch kein wirkliches Problem - sofern man die Zeitpläne einmal gesetzt hat.

Aktuell sind die Ventile bei mir - witterunsbedingt - nun nicht mehr montiert, ich habe jedoch noch zwei (die mit der alten Firmware, welche kein OTA-Update unterstützen) hier liegen, die ich mir auch mal etwas genauer anschauen (=tear down :) ) möchte.

Ich halte euch auf dem Laufenden.

VG,

ambiman

hetterich

Hallo miteinander,

ich habe mein watercontrol auf einem BananaPi mit armbian erfolgreich in Fhem in Betrieb genommen.
Bin begeistert. Soweit klappt alles.
Ich habe im Garten jedoch noch 3 Bodenventile in Betrieb.
Wäre es möglich diese ebenfalls im Modul zu integrieren?
Beim pairing im Bpi meldet sich das Bodenventil sowie das Hahnventil mit "Water Control" (zumindest bei der neuen Firmware)
In der App steht/stand jedoch beim Hahnventil "Water Control" und beim Bodenventil "Valve"

ambiman

#37
Hallo hetterich,

ich unterstützte gerne bei der Integration der Bodenventile.
Bitte führe einfach mal das BLE Fuzzing Skript aus und schicke mir den Output, dann kann ich mir die entsprechenden Characteristics / UUIDs raussuchen und im Modul aufnehmen.

Siehe hier:

Zitat von: ambiman am 26 Juli 2022, 13:48:06
Könntest du bei Gelegenheit bitte einmal das BLE Fuzzer Skript hier ausführen und die Ergebnise teilen ?

https://gist.github.com/deliciouskek/e6589f2467461681b154

Idealerweise führst du das Skript einmal mit geschlossenen und einem mit geöffneten Ventil aus.
Du kannst die sleep Befehle im Skript entfernen.

VG,

ambiman

RalfRog

Wie immer tolle Arbeit derjenigen die sich an so Module trauen.
Mal ne Frage am Rande => wäre das auch etwas für die ganzen Gardena Mähroboter?

Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

ambiman

Hallo,

ja, das sollte ebenfalls funktionieren. Auch hier - sofern ich die BLE Informationen bekomme und bei dem Mähroboter die gewünschen Funktionen - kann ich diese gerne einbauen. Meine Nachbarn haben auch einen BLE Mäher von Gardena, da wollte ich nach dem Saisonstart ohnehin einmal anfragen :). Mein Mäher von Gardena hat noch keinen BLE Transceiver sondern arbeitet noch mit 868Mhz Smartprotokoll und der dedizierten Bridge.

VG,

ambiman

RalfRog

Ok
Die erste Hürde wäre wohl erstmal meinem Raspi mit nem BT-Stick zu versorgen....
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

kurt6908

Hallo ambiman,

bin seit Kurzem Besitzer eines Gardena SILENO minimo mit Bluetooth und wäre auch an einem FHEM-Modul interessiert.

Ich kann daher gerne mittesten, wenns mal eine neue Version für die Gardena Mäher gibt.

Wir könnten auch mal nur mit Ausgaben anfangen, falls Du noch keine weiteren BLE Infos hast.

Viele Grüße

Kurt
3* Raspberry Pi (2 über LTE/VPN), 5* Cul, 3* FS20, 4* FHT, 6* HM, Somfy, Solarlog, WMBus/EnergyCam, AVM FritzBox, 3* AVM Powerline, Alexa, Tasmota/MQTT, Rademacher DuoFern, EPEver HiPower/ModBus, go-eCharger

Mikesn

Hallo ambiman,

ich versuche gerade mein Ventil mit FHEM zu verbinden, bekomme aber immer den Fehler "Error: onetimewaterhandle char value handle does not exist".

MAC hab ich die eingetragen die unter bluetoothctl als Water Control zu sehen war.

Hast du eine Idee?

Danke

kurt6908

#43
Hallo,

hier in der Anlage mal ein BT-Mitschnitt für die BLE-Mäher (hier Sileno Minimo).

Die Aufzeichnung startet mit Start der App und dem Einlesen der Status-Seite. Aktionen als solche sind nicht enthalten.

Vielleicht kann schon jemand damit was anfangen.

Paket 765 sollte den nächsten Mähzeitpunkt enthalten: hier timestamp = 1686297600

Viele Grüße

Kurt

3* Raspberry Pi (2 über LTE/VPN), 5* Cul, 3* FS20, 4* FHT, 6* HM, Somfy, Solarlog, WMBus/EnergyCam, AVM FritzBox, 3* AVM Powerline, Alexa, Tasmota/MQTT, Rademacher DuoFern, EPEver HiPower/ModBus, go-eCharger

Randybobandy

Danke für das tolle Modul. Funktioniert super auf einem Raspi Zero W. Firmware der Gardena Wasser Steuerung 1.7.23.29
Läuft seit ein paar Tagen einwandfrei. Habe den Pi auch zwischendurch mehrmals neu starten müssen (nicht wegen dem Garden Ding) und läuft immer noch.
Ich musste am Anfang ziemlich lange mit bluetoothctl rumspielen, bis die Verbindung geklappt hat. Habe alles mögliche ausprobiert inkl. "pair" befehl in bluetoothctl. Keine Ahnung, ob das eine Rolle gespielt hat.