commit
37cafe50dc
3 changed files with 238 additions and 0 deletions
@ -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 |
||||||
@ -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 - |
||||||
|
|
||||||
@ -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…
Reference in new issue