Browse Source

Initial Commit

ESPHome config for understaris toilet thermostat
main
Jonathan Christison 11 months ago
commit
37cafe50dc
  1. 139
      gf_toilet.yaml
  2. 17
      notes.md
  3. 82
      requirements.txt

139
gf_toilet.yaml

@ -0,0 +1,139 @@
esphome:
name: gf-toilet-thermostat
bk72xx:
board: generic-bk7231t-qfn32-tuya
uart:
rx_pin: RX1
tx_pin: TX1
baud_rate: 9600
# Enable logging
logger:
# Enable Home Assistant API
api:
password: ""
mqtt:
broker: mqtt.blu3cat
username: openhab
password: Hl3Yr6cT2mgSp1eW
ota:
- platform: esphome
password: ""
wifi:
ssid: "blu3cat-legacy"
password: "tubbychristison"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Gf Toilet Thermostat"
password: "yOfdzvIhC1Qd"
captive_portal:
time:
- platform: sntp
id: sntp_time
timezone: Europe/London
servers:
- blu3cat.blu3cat
- 192.168.3.1
tuya:
# The MCU uses this for displaying the time in the display as well as for
# scheduled programmes one may have configured in their thermostat.
time_id: sntp_time
# (Optional)
# Schedules are not modeled in neither ESPHome nor Home Assistant.
#
# This parses the data point and emitting it as a string in the logs, and
# serves as an example for users desiring more advanced configurations.
on_datapoint_update:
- sensor_datapoint: 101
datapoint_type: raw
then:
- lambda: |-
// Apparently these vary per model; these are valid for the BHT-002
const int POS_HOUR = 1;
const int POS_MINUTE = 0;
const float TEMPERATURE_MULTIPLIER = 0.5f;
const std::map<int, std::string> DAY_OFFSET = {
{0, "days 1-5"},
{6, "day 6"},
{12, "day 7"},
};
for (auto& day : DAY_OFFSET) {
for (int period = 0; period < 6; period++) {
int offset = (day.first + period) * 3;
int hour = x[offset + POS_HOUR];
int minute = x[offset + POS_MINUTE];
float temp = x[offset + 2] * TEMPERATURE_MULTIPLIER;
ESP_LOGD("custom", "Scheduled program for %s %02d:%02d set at %.1f C", day.second.c_str(), hour, minute, temp);
}
}
climate:
- platform: tuya
name: "Thermostat"
switch_datapoint: 1
target_temperature_datapoint: 2
current_temperature_datapoint: 3
preset:
eco:
datapoint: 5
temperature: 18 °C
temperature_multiplier: 0.5
visual:
min_temperature: 15 °C
max_temperature: 30 °C
temperature_step: 0.1 °C
sensor:
- platform: "tuya"
name: "Temperature"
sensor_datapoint: 3
unit_of_measurement: "°C"
device_class: "temperature"
accuracy_decimals: 1
filters:
- multiply: 0.5
# The climate component already includes temperature, but having the
# temperature as a separate sensor can be useful
disabled_by_default: false
# The external temperature sensor, if wired
- platform: "tuya"
name: "Temperature (external)"
sensor_datapoint: 102
unit_of_measurement: "°C"
device_class: "temperature"
accuracy_decimals: 1
filters:
- multiply: 0.5
disabled_by_default: false
switch:
- platform: "tuya"
name: "Lock"
icon: "mdi:lock"
switch_datapoint: 6
- platform: "tuya"
name: "Device Power"
switch_datapoint: 1
select:
- platform: "tuya"
name: "Scheduled programming"
icon: "mdi:calendar"
enum_datapoint: 4
options:
0: Use scheduled programs
1: Manual control

17
notes.md

@ -0,0 +1,17 @@
Make: MOES
Model: WHT-NV-GB-WH-MS (box)
Model: BHT-002-GBLWW
Wifi Chipset: WB3S
Family: BK7231T
Useful Links:
https://devices.esphome.io/devices/Beca-Thermostat
https://github.com/tuya-cloudcutter/tuya-cloudcutter/blob/main/INSTRUCTIONS.md
https://www.elektroda.com/rtvforum/topic4003974-60.html
Steps:
* Cloud cutter - Done
* Flash OpenBeken - Done
* Find sensible config -

82
requirements.txt

@ -0,0 +1,82 @@
aioesphomeapi==24.6.2
aiohappyeyeballs==2.4.6
ajsonrpc==1.2.0
anyio==4.8.0
appdirs==1.4.4
argcomplete==3.5.3
async_interrupt==1.2.1
attrs==25.1.0
bitarray==3.0.0
bitstring==4.3.0
bitstruct==8.19.0
bk7231tools==2.1.0
bottle==0.13.2
certifi==2025.1.31
cffi==1.17.1
chacha20poly1305-reuseable==0.13.2
charset-normalizer==3.4.1
click==8.1.7
colorama==0.4.6
cryptography==43.0.0
defcon==0.10.3
ecdsa==0.19.0
esphome==2024.12.4
esphome-dashboard==20241217.1
esptool==4.7.0
fonttools==4.56.0
freetype-py==2.5.1
fs==2.4.16
gflanguages==0.7.3
glyphsets==1.0.0
glyphsLib==6.10.1
h11==0.14.0
hexdump==3.3
icmplib==3.0.4
idna==3.10
ifaddr==0.2.0
importlib_metadata==8.6.1
intelhex==2.3.0
kconfiglib==13.7.1
ltchiptool==4.11.6
marshmallow==3.26.1
noiseprotocol==0.3.1
openstep_plist==0.5.0
packaging==24.2
paho-mqtt==1.6.1
pillow==10.4.0
platformio==6.1.16
prettytable==3.14.0
protobuf==3.20.3
puremagic==1.27
py-datastruct==1.1.0
pycparser==2.22
pycryptodome==3.21.0
pyelftools==0.31
pyparsing==3.2.1
pyserial==3.5
PyYAML==6.0.2
reedsolo==1.7.0
requests==2.32.3
ruamel.yaml==0.18.6
ruamel.yaml.clib==0.2.12
semantic-version==2.10.0
setuptools==75.8.0
six==1.17.0
sniffio==1.3.1
starlette==0.39.2
tabulate==0.9.0
tornado==6.4
typing_extensions==4.12.2
tzdata==2025.1
tzlocal==5.2
ufoLib2==0.17.1
unicodedata2==16.0.0
urllib3==2.3.0
uvicorn==0.30.6
voluptuous==0.14.2
wcwidth==0.2.13
wsproto==1.2.0
wxPython==4.2.2
xmodem==0.4.7
zeroconf==0.132.2
zipp==3.21.0
Loading…
Cancel
Save