[MODUL] BLE-YC01 Lokal

Hallo Zusammen,
ich bin dabei ein Modul für das BLE-YC01 Pool Messgerät aus dem Land der Aufgehenden Sonne zu erstellen.
Es gibt zwar schon ein Modul, dieses baut aber auf eine Proprietäre Firmware auf einem ESP32 auf und leider auch auf einen Cloud Dienst.
Nun habe ich etwas geforscht und Überraschung, in HA reihen ist es natürlich integriert und das ohne Cloud.
Habe nun mal geschaut wie man das machen kann damit alles Transparent bleibt.
Somit bin ich bei Tasmota gelandet. Habe einen ESP32 mit tasmota32-bluetooth.bin Version 14.1.0 geflasht.
Bluetooth übers Menü Aktiviert und siehe da das Pool Messgerät macht auf sich Aufmerksam. Log vom Tasmota (MAC anonymisiert)

08:00:58.007 MQT: tele/tas-pool-ble/BLE = {"Time":"2024-06-20T08:00:58","BLEDevices":{"total":1,"C000000XXXXX":{"i":0,"n":"BLE-YC01","r":-71}}}

Als nächstes habe ich in Foren gefunden das man mit dem senden von FF02 and Subskription FF01 ein Datenpacket mit Hex Daten zurück bekommt.

Befehlt in Tasmota:

BLEOp M:c000000XXXXX s:FF01 c:FF02 r go

dann ein paar Momente später kommt das hier zurück:

08:04:54.988 MQT: tele/tas-pool-ble/BLE = {"BLEOperation":{"opid":"0","stat":"3","state":"DONEREAD","MAC":"C000000XXXXX","svc":"0xff01","char":"0xff02","read":"FFA1FE72FEBEFFFFFF5DFFFEFF55F798FBE825FE0CFFFEFFFFFFFF7745"}}

Tada in read steht das Payload.
Soweit so gut.
Natürlich, Tasmota sendet dies über MQTT an tele/{name vom tasmota gerät}/BLE als json
Somit haben wir den Payload in Symcon und da kann der Spass mit PHP weiter gehen.

Wer das alles bis hier mit verfolgt hat und mich unterstützen möchte. Kann diesen Anweisungen folgen und mir Payloads schicken. Also nur die Hex Daten von read.
Da mein Pooltester noch nicht im Pool ist und auch noch nicht Kalibriert kann ich bis jetzt nur sagen Temperatur und PH Wert bekomme ich so wie auf dem Display angezeigt. Ich brächte aber noch Daten aus dem Freifeld um das Dekodieren hier und da zu verfeinern. Natürlich bräuchte ich zu dem Hex string auch noch die Realen Daten von diesem Zeitpunkt :slight_smile:
Aber Achtung, wenn man mit der App verbunden ist kann sich Tasmota nicht Parallel auch verbinden. App muss auf jeden Fall geschlossen sein und auch keine anderen Integrationen auf den Pooltester zugreifen.

So denn erstmal :slight_smile:
Gruß
Dennis

An dem woran ich gerade arbeite:

  • Modul schreiben

Das hört sich doch schon sehr interessant an.
Werde nachher mal einen ESP flashen und mal testen.
Mein Sensor hängt aber wegen Wasser im Gerät auch noch nicht im Pool.

Viele Grüße,
Doc

So super großen schritt weiter.
Ich kann im Modul den BLEOp Befehl absetzen und bekomme die Antwort. Habe nun die Daten die ich decodieren kann.
Eventuell habe ich morgen dann Zeit die ersten Variablen zu erstellen. Zumindest PH und Temperatur :slight_smile:
Dann ginge es schon in die Beta…

Prima,
soweit wie du es oben beschrieben hast, funktioniert es.
Den Payload habe ich jetzt auch in IPS.

Mit den Nutzdaten kann ich dir aber aktuell nicht viel weiter helfen, da der Sensor noch „an Land“ liegt und die Werte doch sehr stark schwanken, das man gleichzeit die Werte vom Display und die Hex Werte vergleichen könnte.

Kalibrierlösungen hatte ich mir gerade erst bestellt und warte noch darauf …

Ich bin gespannt, wie es weiter geht … :wink:

Viele Grüße,
Doc

Mir würde der hex string und die ungefähre Temperatur und PH Wert vom Display reichen. Somit habe ich schon mal eine zweite Referenz ob ich die beiden Werte schon mal korrekt habe.
Wir können es auch so machen, du gibt’s mir den hex string und ich nenne dir die Werte :blush:

FFA1FED2FE3FFF0CFFEFFFBBFF75F78FFBEC75FEAEFFBBFFFFFFFFD744

22,9°C
PH: 6,6
228 µs/cm
113ppm
138mV
0,0mg/l

… das müssten die recht genauen Werte vom Display sein.
Sensor war im Glas Wasser zum stabilisieren…

Hier auf Github steht etwas zum Decodieren, falls dir das hilft.

Product Code int(15)
Hold Reading int(0)
Battery float(95)
EC int(226)
Salt float(124.30000000000001)
TDS int(113)
Chlor float(0)
PH float(6.6)
ORP float(0.136)
Temperature float(22.9)

Also Temperatur °C, PH, Batterie in % (bei mir sind es auch nach dem spielen 95%, bei dir auch?), ORP in V, EC in µs/cm, TDS in ppm
Chlor / Salz muss noch weiter angegangen werden wenn Werte vorliegen. Da gibt es in den Foren unterschiedliche Ansätze.

Aber die ersten Werten haben wir über 2 Geräte hinweg Validiert :slight_smile:

Gruß
Dennis

So es gibt etwas zu spielen.
Beta → Suche nach BLEYC10 :slight_smile:

Dreher im Namen.
Finde ihn unter BLEYC10

Ich bekomme über das Modul keine Daten rein.
Bin mir aber nicht sicher, ob ich den MQTT-Namen richtig eingetragen habe.
Ich hatte Poolsensor und Poolsensor/BLE probiert, es kommen aber keine Daten.

Auch wenn ich das Auslesen in der Tasmota Console direkt auslöse, kommt nichts im Modul an.
Das Poolsensor/BLE Topic bekommt dann allerdings dann Daten.

Irgendeine Idee?

2024-06-21_16h44_52

Hi @Doctor_Snuggles
bei mir kommt das per MQTT so rein

image

image

So funktioniert es bei mir.

Nehme das BLE mal weg

Hatte ich oben ja schon geschrieben, habe ich auch ohne das „/BLE“ getestet und da kommt nichts an.
Wie sieht denn deine Konfiguration vom ESP aus bei MQTT und Other?

Viele Grüße,
Doc

Sieht eigentlich ähnlich aus wie bei mir, nur ist das Topic „Poolsensor“.
Habe mal IPS neu gestartet, keine Änderung.
Im MQTT Server Debug sehe ich aber die Daten, wenn ich das Senden auf dem ESP selber direkt auslöse.
Vermutlich fehlt da irgenwo wieder ein Häkchen …

Hi Thomas,
bei mir sehen die Debug Daten wie folgt aus. Vielleicht siehst du da ja einen Unterschied

Leerzeichen hinter oder vor der MAC Adresse oder beim Topic?

Hallo Georg,

nee mit den Leerzeichen hatte ich als erstes geschaut.

Ich bekomme manuell ja Daten zurück, aber eben nicht in dass neue Gerät BLEYC01.

Auch versucht das Modul die Daten abzufragen, kommt aber wohl nicht raus …

Ob das hier dran liegt?

„tele“ habe ich bei mir nicht im Topic, oder wo kommt das her?

ehrlich gesagt, keine Ahnung. Da habe ich gestern auch schon nach gesucht. In der ganzen Config des ESP32 habe ich das nicht gefunden.