Eurotronic comet blue Modul Entwicklung

Begonnen von gent, 28 November 2016, 21:45:59

Vorheriges Thema - Nächstes Thema

barneybaer

#15
Dies hab ich aus der App für die Handy-Steuerung.


public static final String COBL = "47e9EE2D-47E9-11E4-8939-164230D1DF67";
public static final String COMET_BATTERY = "47e9ee2c-47e9-11e4-8939-164230d1df67";
public static final int COMET_BLUE = 1;
public static final String COMET_DeviceInfoService = "180a";
public static final String COMET_FLAGS = "47e9ee2a-47e9-11e4-8939-164230d1df67";
public static final String COMET_HOLIDAY_1 = "47e9ee20-47e9-11e4-8939-164230d1df67";
public static final String COMET_HOLIDAY_2 = "47e9ee21-47e9-11e4-8939-164230d1df67";
public static final String COMET_HOLIDAY_3 = "47e9ee22-47e9-11e4-8939-164230d1df67";
public static final String COMET_HOLIDAY_4 = "47e9ee23-47e9-11e4-8939-164230d1df67";
public static final String COMET_HOLIDAY_5 = "47e9ee24-47e9-11e4-8939-164230d1df67";
public static final String COMET_HOLIDAY_6 = "47e9ee25-47e9-11e4-8939-164230d1df67";
public static final String COMET_HOLIDAY_7 = "47e9ee26-47e9-11e4-8939-164230d1df67";
public static final String COMET_HOLIDAY_8 = "47e9ee27-47e9-11e4-8939-164230d1df67";
public static final String COMET_LCD_TIMER = "47e9ee2e-47e9-11e4-8939-164230d1df67";
public static final String COMET_PIN = "47e9ee30-47e9-11e4-8939-164230d1df67";
public static final String COMET_READ_COBL_VER = "00002a26-0000-1000-8000-00805f9b34fb";
public static final String COMET_READ_RFBL_VER = "00002a28-0000-1000-8000-00805f9b34fb";
public static final String COMET_SWITCH_POINT_FRIDAY = "47e9ee14-47e9-11e4-8939-164230d1df67";
public static final String COMET_SWITCH_POINT_MONDAY = "47e9ee10-47e9-11e4-8939-164230d1df67";
public static final String COMET_SWITCH_POINT_SATURDAY = "47e9ee15-47e9-11e4-8939-164230d1df67";
public static final String COMET_SWITCH_POINT_SUNDAY = "47e9ee16-47e9-11e4-8939-164230d1df67";
public static final String COMET_SWITCH_POINT_THURSDAY = "47e9ee13-47e9-11e4-8939-164230d1df67";
public static final String COMET_SWITCH_POINT_TUESDAY = "47e9ee11-47e9-11e4-8939-164230d1df67";
public static final String COMET_SWITCH_POINT_WEDNESDAY = "47e9ee12-47e9-11e4-8939-164230d1df67";
public static final String COMET_SpecialService = "ee00";
public static final String COMET_TEMPERATURE = "47e9ee2b-47e9-11e4-8939-164230d1df67";
public static final String COMET_TIME = "47e9ee01-47e9-11e4-8939-164230d1df67";
public static final String COMET_WRITE_AND_NOTIFY_FW = "47e9ee40-47e9-11e4-8939-164230d1df67";

   
Characteristik mit gatttool:

handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb -- Gerätename
handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0006, char properties: 0x0a, char value handle: 0x0007, uuid: 00002a02-0000-1000-8000-00805f9b34fb
handle: 0x0008, char properties: 0x02, char value handle: 0x0009, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x000d, char properties: 0x22, char value handle: 0x000e, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x0011, char properties: 0x02, char value handle: 0x0012, uuid: 00002a29-0000-1000-8000-00805f9b34fb
handle: 0x0013, char properties: 0x02, char value handle: 0x0014, uuid: 00002a24-0000-1000-8000-00805f9b34fb
handle: 0x0015, char properties: 0x02, char value handle: 0x0016, uuid: 00002a26-0000-1000-8000-00805f9b34fb
handle: 0x0017, char properties: 0x02, char value handle: 0x0018, uuid: 00002a28-0000-1000-8000-00805f9b34fb
handle: 0x001a, char properties: 0x0a, char value handle: 0x001b, uuid: 47e9ee01-47e9-11e4-8939-164230d1df67
handle: 0x001c, char properties: 0x0a, char value handle: 0x001d, uuid: 47e9ee10-47e9-11e4-8939-164230d1df67
handle: 0x001e, char properties: 0x0a, char value handle: 0x001f, uuid: 47e9ee11-47e9-11e4-8939-164230d1df67
handle: 0x0020, char properties: 0x0a, char value handle: 0x0021, uuid: 47e9ee12-47e9-11e4-8939-164230d1df67
handle: 0x0022, char properties: 0x0a, char value handle: 0x0023, uuid: 47e9ee13-47e9-11e4-8939-164230d1df67
handle: 0x0024, char properties: 0x0a, char value handle: 0x0025, uuid: 47e9ee14-47e9-11e4-8939-164230d1df67
handle: 0x0026, char properties: 0x0a, char value handle: 0x0027, uuid: 47e9ee15-47e9-11e4-8939-164230d1df67
handle: 0x0028, char properties: 0x0a, char value handle: 0x0029, uuid: 47e9ee16-47e9-11e4-8939-164230d1df67
handle: 0x002a, char properties: 0x0a, char value handle: 0x002b, uuid: 47e9ee20-47e9-11e4-8939-164230d1df67
handle: 0x002c, char properties: 0x0a, char value handle: 0x002d, uuid: 47e9ee21-47e9-11e4-8939-164230d1df67
handle: 0x002e, char properties: 0x0a, char value handle: 0x002f, uuid: 47e9ee22-47e9-11e4-8939-164230d1df67
handle: 0x0030, char properties: 0x0a, char value handle: 0x0031, uuid: 47e9ee23-47e9-11e4-8939-164230d1df67
handle: 0x0032, char properties: 0x0a, char value handle: 0x0033, uuid: 47e9ee24-47e9-11e4-8939-164230d1df67
handle: 0x0034, char properties: 0x0a, char value handle: 0x0035, uuid: 47e9ee25-47e9-11e4-8939-164230d1df67
handle: 0x0036, char properties: 0x0a, char value handle: 0x0037, uuid: 47e9ee26-47e9-11e4-8939-164230d1df67
handle: 0x0038, char properties: 0x0a, char value handle: 0x0039, uuid: 47e9ee27-47e9-11e4-8939-164230d1df67
handle: 0x003a, char properties: 0x0a, char value handle: 0x003b, uuid: 47e9ee2a-47e9-11e4-8939-164230d1df67
handle: 0x003c, char properties: 0x0a, char value handle: 0x003d, uuid: 47e9ee2b-47e9-11e4-8939-164230d1df67 -- Temperaturen
handle: 0x003e, char properties: 0x0a, char value handle: 0x003f, uuid: 47e9ee2c-47e9-11e4-8939-164230d1df67 -- Batterie
handle: 0x0040, char properties: 0x0a, char value handle: 0x0041, uuid: 47e9ee2d-47e9-11e4-8939-164230d1df67
handle: 0x0042, char properties: 0x0a, char value handle: 0x0043, uuid: 47e9ee2e-47e9-11e4-8939-164230d1df67
handle: 0x0044, char properties: 0x1a, char value handle: 0x0045, uuid: 47e9ee40-47e9-11e4-8939-164230d1df67
handle: 0x0047, char properties: 0x08, char value handle: 0x0048, uuid: 47e9ee30-47e9-11e4-8939-164230d1df67 -- Pin / Standart "0"


Ermitteln des Gerätenamens "ohne Pin-Eingabe möglich".

char-read-hndchar-read-hnd 0x0003
Characteristic value/descriptor: 43 6f 6d 65 74 20 42 6c 75 65 -- Comet Blue


Bevor Temperatur etc. ausgelesen werden kann, muss mit dem Bluethooth Pin gepairt werden. Sonst hat man keine Leserechte. Der Standard-Pin ist "0"

char-write-req 0x0048 00000000
Characteristic value was written successfully


Auslesen des Batteriestandes:

char-read-hnd 0x003f
Characteristic value/descriptor: 48 -- 48 Hex = 72 Dezimal also 72%


Auslesen der Temperaturen:

char-read-hnd 0x003d
Characteristic value/descriptor: 2a 38 20 2a 00 04 0a
2a= Zimmertemperatur (42/2 = 21°C)
38= Manuelle Temperatur (56/2 = 28°C) Welche am Display mit Drehrad oder mit der App eingestellt wird.
20= Minimale Ziel-Temperatur (32/2 = 16°C)
2a= Maximale Ziel-Temperatur (42/2 = 21 °C)
00= Ausgleichstemperatur
04 = Fenster offen Detektor
0a= Zeit Fenster offen in Minuten


Zum setzen der Temperatur muss ich den kompletten Hex-Code angeben und nur den Hex-Codes der Temperatur ändern. Anders habe ich es noch nicht geschafft da mit die Programmierkenntnisse dazu fehlen.

char-write-req 0x003d 2a 20 202a00040a -- (die 38 habe ich in 20 geändert für 16°C)
Characteristic value was written successfully


Fals jemand eine Idee hat wie ich das in ein Modul umsetzen kann, kann gern was dazu schreiben.
Danke an http://torsten-traenkner.de/wissen/smarthome/heizung.php. Fast das selbe nur eine Andere Version.

Thorsten Pferdekaemper

Hi,
das Modul XiaomiFlowerSens scheint eine ähnliche Schnittstelle zu benutzen. Da müsstest Du abschauen können, wie es im Prinzip geht. Das Protokoll hast Du ja schon.
Gruß,
    Thorsten
FUIP

barneybaer

Also ich habe das ganze erstmal mit einem Skript und Dummy am Laufen zum Heizung Ein/Aus schalten. Ist zwar nicht die besondere Lösung, aber besser wie keine. Evtl. gibt's später Hilfe von CoolTux, Danke dafür im Vorraus. Fals jemand Interesse daran hat, kann sich gern melden.

CoolTux

Muss kurz mal fragen. Wird write des Pins vor jeder Abfrage benötigt? Jetzt mal ab vom Devicenamen. Aber wenn ich erstmal die Batterie abfrage und danach gleich noch mal den Temperatur Status muß ich da vor jedem read auch ein write machen?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

barneybaer

Wenn mit gatttool verbunden, muss erst ein write für den Pin eingegeben werden, solange man verbunden ist reicht einmal. Nach der Trennung muss wieder erst der Pin eingegeben werden. Bei mir ist es momentan so, das beim schalten von Temperaturen die hci0 Schnittstelle erst gekillt werden muss, sonst ist das Gerät nicht erreichbar, aus irgendeinen Grund ist es mit dem raspi dauerhaft verbunden.

CoolTux

Ok schauen wir mal wie das wird.
Eine erste Version für das abrufen der Temperaturen ist so gut wie fertig. Ich will erstmal sehen wie das Teil reagiert und ob die Daten vernünftig kommen. Melde mich wenn es was zu testen gibt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Ich brauche mal ein Beispiel für
04 = Fenster offen Detektor

Was steht dann in der App genau und welchen Wert gibt es noch?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

So eine erste first Preview steht nun zum testen bereit. Bitte mal schauen.

Bitte hier runterladen
Entpacken und das Modul installieren, Rechte und Besitzer entsprechend den anderen vergeben und dann ein reload 74_CometBlueBTLE machen.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

barneybaer

Danke, ich werde ich gleich mal testen.

barneybaer

2018.01.18 18:12:26 3: CometBlueBTLE (WZ_Heizung) - Read CometBlueBTLE_ExecGatttool_Run WZ_Heizung|45:EB:xxxx|read|0x3f
2018.01.18 18:12:26 3: CometBlueBTLE (WZ_Heizung) - ExecGatttool_Run: call gatttool with command gatttool -i hci0 -b 45:EB:xxxx --char-write-req -a 0x48 -n 00000000 2>&1 /dev/null and loop 0
2018.01.18 18:12:30 3: CometBlueBTLE (WZ_Heizung) - ExecGatttool_Run: gatttool loop result Characteristic value was written successfully

2018.01.18 18:12:30 3: CometBlueBTLE (WZ_Heizung) - ExecGatttool_Run: gatttool result Characteristic value was written successfully

2018.01.18 18:12:30 3: CometBlueBTLE (WZ_Heizung) - ExecGatttool_Done: gatttool return string: WZ_Heizung|45:EB:xxxx|error|write|0x48|{"gtResult":"no data response"}
2018.01.18 18:12:30 3: CometBlueBTLE (WZ_Heizung) - ProcessingErrors
2018.01.18 18:12:30 3: CometBlueBTLE (WZ_Heizung) - WriteReadings: Readings were written 

CoolTux

Super danke Dir. Ich passe nachher gleich mal an.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

barneybaer

OK, sieht aus als wenn erst die Temperatur abgefragt und danach erst der Pin gesendet wird.

CoolTux

#27
Nee das passt schon so. Sieht nur so aus.

So hab enur mal eine kleine Änderung gemach. Ich will sehen ob er bei einem --listen uns was mit gibt worauf ich reagieren kann, sonst muß ich etwas tricksen und ich mag es eher sauber.


Bitte testen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

barneybaer

#28
   2018.01.18 18:32:03 3: CometBlueBTLE (WZ_Heizung) - Read CometBlueBTLE_ExecGatttool_Run WZ_Heizung|45:EB:xxxx|read|0x3f
2018.01.18 18:32:03 3: CometBlueBTLE (WZ_Heizung) - ExecGatttool_Run: call gatttool with command timeout 15 gatttool -i hci0 -b 45:EB:xxxx --char-write-req -a 0x48 -n 00000000 --listen 2>&1 /dev/null and loop 0
2018.01.18 18:32:18 3: CometBlueBTLE (WZ_Heizung) - ExecGatttool_Run: gatttool loop result Characteristic value was written successfully

2018.01.18 18:32:18 3: CometBlueBTLE (WZ_Heizung) - ExecGatttool_Run: gatttool result Characteristic value was written successfully

2018.01.18 18:32:18 3: CometBlueBTLE (WZ_Heizung) - ExecGatttool_Done: gatttool return string: WZ_Heizung|45:EB:xxxx|error|write|0x48|{"gtResult":"no data response"}
2018.01.18 18:32:18 3: CometBlueBTLE (WZ_Heizung) - ProcessingErrors
2018.01.18 18:32:18 3: CometBlueBTLE (WZ_Heizung) - WriteReadings: Readings were written



von 0x48 bekommt er aber auch keine daten.
und Read CometBlueBTLE_ExecGatttool_Run WZ_Heizung|45:EB:xxxx|read|0x3f sollte nach dem Pin kommen.

CoolTux

Ok. Ich schaue nachher mal wie ich das am schönsten mache.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net