@ragnarroek Habe mal ein Skript geschrieben mit dem man rein aus dem String 'Manufacturerdata' des WS08 ThermoBeacon (Brifit oder SevenLike) die Temperatur und die Luftfeuchtigkeit auslesen kann. Es werden zwei unterschiedliche Strings völlig random aus dem WS08 rausgeschrieben aber man kann nur den einen brauchen (den kürzeren)...
on({id: 'ble.0.62:53:00:00:00:64.services.manufacturerData', change: 'ne'}, function (obj) { // Aktion nur ausführen wenn sich der Wert ändert
var data = getState('ble.0.62:53:00:00:00:64.services.manufacturerData'); //WS08 ble Gerät
var hexstring = data.val;
if (hexstring.length<41){
//"11000000640000005362500b4301b702dfd03300"; raw daten von IoBroker (Beispiel)
//"11000000 64 00 00 00 53 62 500b4301b702dfd03300"; raw daten von IoBroker (Beispiel) Mac Adresse Rückwärts geschrieben
//"11000000640000005362500b 43 01 b702dfd03300"; raw daten von IoBroker (Beispiel) ThermoDaten lsB =43 Hexwert = 0143 -> Dec 323 -> Temp 323/16=20.1875
//"11000000640000005362500b4301 b7 02 dfd03300"; raw daten von IoBroker (Beispiel) Hygrwerte lsb =b7 Hexwert = 02b7 -> Dec 695 -> Hyg 695/16=43.4375
var temperatur_hex1 = hexstring.substr(26, 2); //Byte 1 der Temperatur
var temperatur_hex2 = hexstring.substr(24, 2); //Byte 2 der Temperatur
var hygro_hex1 = hexstring.substr(30, 2); //Byte 1 der Luftfeuchte
var hygro_hex2 = hexstring.substr(28, 2); //Byte 2 der Luftfeuchte
//console.log("Temperatur");
var temperatur_dec1 = parseFloat(parseInt(temperatur_hex1, 16)*16); //Dividiert man die Dezimale Darstellung der Bytes durch 16 kommt der Richtige Zahlenwert der Temperatur bzw. der Luftfeuchtigkeit heraus.
var temperatur_dec2 = parseFloat(parseInt(temperatur_hex2, 16)/16);
var temperatur_dec3 = temperatur_dec1 + temperatur_dec2;
//console.log(temperatur_dec1);
//console.log(temperatur_dec2);
//console.log(temperatur_dec3);
setState('0_userdata.0.Thermobeacon_Temperatur', temperatur_dec3);/*Thermobeacon Temperatur*/
//console.log("");
//console.log("Luftfeuchte");
var hygro_dec1 = parseFloat(parseInt(hygro_hex1, 16)*16);
var hygro_dec2 = parseFloat(parseInt(hygro_hex2, 16)/16);
var hygro_dec3 = hygro_dec1 + hygro_dec2;
//console.log(hygro_dec1);
//console.log(hygro_dec2);
setState('0_userdata.0.Thermobeacon_Feuchte', hygro_dec3);/*Thermobeacon Temperatur*/
//console.log(hygro_dec3);
}
});
hoffe das hilft weiter. vll hat auch jemand Lust einen echten Adapter dafür zu bauen.
die Basis kommt von hier:
https://github.com/araines/homeassistant-thermoplus-ble
schöne Grüße
Matthias