EQ3 Bluetooth Smart Thermostat Kopplung

Hallo zusammen, leider bin ich mit meinem bescheidenen Wissen am Ende und hoffe auf Hilfe von euch! Ich versuche schon seit längerem zwei eQ-3 Bluetooth Thermostaten mit HA zu Koppeln doch leider bekomme ich das nicht hin. Ich habe im HACS die Integration "dbuezas/eq3btsmart (github.com) hinzugefügt. Die Thermostaten werden auch erkannt, bekomme aber keine Daten angezeigt. Vermute, dass es mit dem Pairing zu tun hat. Bekomme es aber nicht hin!
Danke schon im Voraus.

Ja das Thema ist alt aber ich habe eine Lösung und die BLE Thermostate von Equiva sind nach wie vor günstig gebraucht zu bekommen. Und außerdem besitze ich eine ganze Flotte von den Dingern. :slight_smile:
Das Problem ist nicht das Pairing oder ähnliches sondern schlicht und einfach der verwendete BLE Treiber bei ESPHome. Mit ESP kommt man nicht weiter.
Das ist keine Klick and go Lösung ala ESPHome!!

Tasmota funktioniert WENN man es vorher anpasst und selbst kompiliert.

Eroli hat für uns Vorarbeit geleistet und geändertes Tasmota geforkt.

Man begrenzt die Arbeit des ESP32 auf maximal 5 (ich empfehle aus Erfahrung 3) Thermostate in dem man deren MAC Adressen direkt in die config von Tasmota einträgt. Kein key etc, nur die MAC.

Kompiliert wird das ganze mit Platform_IDE, ich nutze dafür Visual Studio mit der Erweiterung.
Nicht vergessen auf das dev image tasmota_bluetooth zu wechseln.

Die Datei user_config_override_sample.h bearbeiten.

In dem Beispiel sind es 5 Thermostate in 2 Räumen. Aus meiner Erfahrung heraus eher 3 oder eventuell 4. Einen Thmeratursensor wie einen DS18b20 oder einen DHT22/AM2301 oder was auch immer kann man naürlich auch gleich mit anklemmen. In dem Beispiel sind 2 I2C Sensoren konfiguriert. Jeweils ein Helligkeitssensor und Dopperradar für eine Präsenserkennung um Bad. Ich selbst habe einen DHT22 verbaut.

// First Part: General Settings (WiFI, MQTT)
// WiFi
#undef  STA_SSID1
#define STA_SSID1         "MyWIFISSID"

#undef  STA_PASS1
#define STA_PASS1         "MyWIFIPassword"

// MQTT
#undef  MQTT_HOST
#define MQTT_HOST         "192.168.x.y"
#undef  MQTT_PORT
#define MQTT_PORT         1883
#undef  MQTT_USER
#define MQTT_USER         "MyMQTTUser"
#undef  MQTT_PASS
#define MQTT_PASS         "MyMQTTPassword"

// Second Part: Include the required modules
// Include BLE Interface
#ifdef USE_BLE_ESP32
   #undef USE_BLE_ESP32
#endif
#define USE_BLE_ESP32

// Include EQ3 Driver
#ifdef USE_EQ3_ESP32
   #undef USE_EQ3_ESP32
#endif
#define USE_EQ3_ESP32

// Enable Rules
#ifdef USE_RULES
   #undef USE_RULES
#endif
#define USE_RULES

// Third part: Room Definition. (Un)comment here to change the ESP settings according to the desired room
// Define some rooms
// Bath
#ifdef ROOM_BATH
    #undef ROOM_BATH
 #endif
#define ROOM_BATH
// LivingRoom
// #ifdef ROOM_LIVINGROOM
//     #undef ROOM_LIVINGROOM
//  #endif
// #define ROOM_LIVINGROOM

// Fourth part: Room-Settings: Determine a running configuration only once, then select your ESP configuration in part three
// Room-Specific Parameters
#ifdef ROOM_LIVINGROOM
   #define FRIENDLY_NAME "Tasmota-LivingRoom"
   #define RADIATOR_1 "\x00\x01\x02\x03\x04\x05"   // Radiator A Example MAC 00:01:02:03:04:05
   #define RADIATOR_2 "\x06\x07\x08\x09\x0a\x0b"   // Radiator B Example MAC 06:07:08:09:0A:0B
   #define RADIATOR_3 "\x0c\x0d\x0e\x0f\x11\x12"   // Radiator C Example MAC 0C:0D:0E:0F:11:12

   #define USE_I2C
   #define USE_SHT3X
   #define USE_BH1750
#endif

#ifdef ROOM_BATH
  #undef  FRIENDLY_NAME
  #define FRIENDLY_NAME "Tasmota-ShowerBath"

  #define RADIATOR_1 "\x1f\x20\x21\x22\x23\x24"   // Radiator F Example MAC 1F:20:21:22:23:24
  #define RADIATOR_2 "\x25\x26\x27\x28\x29\x2a"   // Radiator G Example MAC 25:26:27:28:29:2A
  
   #define USE_I2C
   #define USE_SHT3X
   #define USE_BH1750
  
#endif

Nun sollte der Tasmota-ESP den mqtt Broker konnektiert haben. Wenn man in der Tasmota Weboberfläche auch die Sensoren erfolgreich hinzugefügt hat und Bluetooth aktiviert ist sollten die Werte zu lesen sein. Ich empfehle mqtt-explorer, das Tool gibt es auch für Windows genau wie Visual Studio.

Mittels der configuration.yaml von Home Assistant kann man sich dann die gewünschten Daten aus dem Broker fischen lassen. Die betreffenden Topics
sieht man in meinem Codebeispiel. Ich habe die beiden Thermostate gleich als Gruppe zusammen gefasst.
Ein offset Wert ist auch möglich, geht aber auch mittels der Tasmota Konsole. tempoffset -4.2 setzt den Wert.

mqtt:
  climate:
    - name: Wohnzimmer_Heizung1
      modes: ["off", heat, auto]
      min_temp: 5
      max_temp: 26.0
      temp_step: 0.5
      precision: 0.1
      mode_command_topic: cmnd/tasmota_67E854/EQ3/001A22087B17/mode
      temperature_command_topic: cmnd/tasmota_67E854/EQ3/001A22087B17/settemp
      temperature_state_topic: stat/EQ3/001A22087B17
      temperature_state_template: "{{ value_json.temp }}"
      mode_state_topic: stat/EQ3/001A22087B17
      mode_state_template: "{{ value_json.hassmode }}"
      current_temperature_topic: tele/tasmota_67E854/SENSOR
#      current_temperature_template: '{{ value_json["AM2301"].Temperature - 4.2 }}'
      current_temperature_template: '{{ value_json["AM2301"].Temperature }}'
      current_humidity_topic: tele/tasmota_67E854/SENSOR
      current_humidity_template: '{{ value_json["AM2301"].Humidity }}'

    - name: Wohnzimmer_Heizung2
      modes: ["off", heat, auto]
      min_temp: 5
      max_temp: 26.0
      temp_step: 0.5
      precision: 0.1
      mode_command_topic: cmnd/tasmota_67E854/EQ3/001A2208793D/mode
      temperature_command_topic: cmnd/tasmota_67E854/EQ3/001A2208793D/settemp
      temperature_state_topic: stat/EQ3/001A2208793D
      temperature_state_template: "{{ value_json.temp }}"
      mode_state_topic: stat/EQ3/001A2208793D
      mode_state_template: "{{ value_json.hassmode }}"
      current_temperature_topic: tele/tasmota_67E854/SENSOR
 #     current_temperature_template: '{{ value_json["AM2301"].Temperature - 4.2 }}'
      current_temperature_template: '{{ value_json["AM2301"].Temperature }}'
      current_humidity_topic: tele/tasmota_67E854/SENSOR
      current_humidity_template: '{{ value_json["AM2301"].Humidity }}'

climate:
  - platform: climate_group
    name: Heizung Wohnzimmer
    temperature_unit: C  # default to celsius, 'C' or 'F'
    entities:
    - climate.wohnzimmer_heizung1
    - climate.wohnzimmer_heizung2
#

Mittels der Entitäten und Simons diversen Anleutungen sah mein Ergebnis dann so aus.

grafik

Hallo der Thread ist zwar schon älter aber es geht mit den Thermostaten.
So hatte ich es gemacht, einen ESP32 mit ESPHome.
In der Config trägst du dann das ein.

esp32_ble:
  io_capability: keyboard_only

esp32_ble_tracker:

ble_client:
  - mac_address: 00:1A:22:1A:FA:73  # <-- Hier die MAC anpassen
    id: kinderzimmer_ble_display
    on_passkey_request:
      then:
        - logger.log: "Authenticating with passkey"
        - ble_client.passkey_reply:
            id: kinderzimmer_ble_display
            passkey: 936374  # <-- die Pin die das Thermostat anzeigt 

bluetooth_proxy:
  active: true

web_server: 
  port: 80
  include_internal: true
  ota: true

button:
  - platform: restart
    name: "Kinderzimmer Bluetooth restart"

captive_portal:

Wichtig ist bei Passkey die 6 Stellige pin einzugeben und die BT MAC Adresse vom Thermostat.

Das habe ich heute umgehend ausprobiert und funktionierte nicht zuverlässig bis gar nicht.

Der ESP darf nicht weiter als 3-4 Meter entfernt sein und bloß ein Thermostat pro ESP anmelden. Bei mehren melden die sich ab.

Ach was, die Anzahl passiver BLE Clienten soll das Problem sein? Das ist echt unpraktisch vor allem wenn man ein paar Thermostate mehr hat.
Mit der alten ESPhome Lösung gingen 5.

Ich nutze die ESP32 mit externer Antenne. Die Reichweite ist deutlich besser für BLE und WIFI.
Bei uns daheim sind es 2 ESP’s je Etage die jeweils für 3 Thermostate zuständig sind. In dem Raum in dem die ESP’s montiert sind ist auch immer ein Temperatur und Luftfeuchte Sensor angeschlossen.

Ich nutze geänderter Tasmota-Bluetooth Firmware. Man muss lediglich für jeden Thermostat eine Entität in der configuration.yaml rein schreiben. Achja und ein mqtt Server sollte laufen.

Ich habe alle EQ-3 resetet und nur Bluetooth aktiviert. Das Pairing wird nur für die Smartphone App benötigt die ich nicht verwende.