commit 607613e9045f6c80306864f4ce4812723fb92316 Author: CakesTwix Date: Mon Jan 6 20:17:05 2025 +0200 First commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b4b61a5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# Gitignore settings for ESPHome +# This is an example and may include too much for your use-case. +# You can modify this file to suit your needs. +/.esphome/ +/secrets.yaml +.venv diff --git a/README.md b/README.md new file mode 100644 index 0000000..155a28a --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# My ESPHome Configs diff --git a/bma.yaml b/bma.yaml new file mode 100644 index 0000000..18995d9 --- /dev/null +++ b/bma.yaml @@ -0,0 +1,37 @@ +esphome: + name: bma280 + friendly_name: ESPHome BMA280 + platform: ESP8266 + board: d1_mini + + +packages: + common: !include includes/common.yaml + wifi_sensors: !include includes/wifi.yaml + +i2c: + - id: bus_a + sda: D3 + scl: D4 + scan: true + +button: + - platform: restart + name: "Restart BME280" + +sensor: + - platform: bme280_i2c + address: 0x76 + temperature: + name: "Ambient temperature" + oversampling: 16x + pressure: + name: "Atmospheric pressure" + humidity: + name: "BME280 Humidity" + update_interval: 300s + i2c_id: bus_a + - platform: wifi_signal + name: "Wi-Fi Signal" + update_interval: 60s + icon: mdi:wifi diff --git a/includes/common.yaml b/includes/common.yaml new file mode 100644 index 0000000..7bcaa71 --- /dev/null +++ b/includes/common.yaml @@ -0,0 +1,23 @@ +# Enable logging +logger: + +# Enable Home Assistant API +api: + encryption: + key: !secret encryption_key + +ota: + - platform: esphome + password: !secret ota_password # сюди свій пасс вписати + +captive_portal: + +web_server: + port: 80 + version: 3 + +sensor: + - platform: uptime + name: "${friendly_name} Uptime" + - platform: wifi_signal + name: "${friendly_name} Wifi Signal" \ No newline at end of file diff --git a/includes/wifi.yaml b/includes/wifi.yaml new file mode 100644 index 0000000..012b7c3 --- /dev/null +++ b/includes/wifi.yaml @@ -0,0 +1,10 @@ +wifi: + # output_power: 8.5dB #важлива хрінь, не прибирати + ssid: !secret wifi_ssid + password: !secret wifi_password + + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "${friendly_name}" + password: "0000000009" diff --git a/kettle.yaml b/kettle.yaml new file mode 100644 index 0000000..d39d337 --- /dev/null +++ b/kettle.yaml @@ -0,0 +1,172 @@ +substitutions: + name: proficook-pc-wks-1167g + friendly_name: ProfiCook PC-WKS 1167G + device_name: wks-1167g + +esphome: + name: proficook-pc-wks-1167g + friendly_name: ProfiCook PC-WKS 1167G + +esp32: + board: esp32-c3-devkitm-1 + framework: + type: arduino # idf не працює, йде в bootloop + +packages: + common: !include includes/common.yaml + wifi_sensors: !include includes/wifi.yaml + +uart: + rx_pin: GPIO20 + tx_pin: GPIO21 + baud_rate: 9600 + +# Register the Tuya MCU connection +tuya: + id: tuya_tuya_id + +climate: + - platform: tuya + name: "Kettle Climate" + target_temperature_datapoint: 102 + current_temperature_datapoint: 105 + switch_datapoint: 101 + active_state: + datapoint: 106 + visual: + min_temperature: 35 + max_temperature: 100 + temperature_step: 5 + +text_sensor: + - platform: template + name: Kettle State + icon: mdi:kettle + id: text_state + - platform: template + name: Kettle Error + icon: mdi:alert-circle-outline + id: text_error + +select: + - platform: template + name: "Kettle mode" + id: kettle_control + options: + - 45° + - 60° + - 85° + - 100° + - 100° and off + - Custom + - "Off" + optimistic: true + set_action: + - lambda: |- + if (strcmp(x.c_str(), "45°") == 0) { + id(tuya_tuya_id).set_enum_datapoint_value(101, 0); + } else if (strcmp(x.c_str(), "60°") == 0) { + id(tuya_tuya_id).set_enum_datapoint_value(101, 1); + } else if (strcmp(x.c_str(), "85°") == 0) { + id(tuya_tuya_id).set_enum_datapoint_value(101, 2); + } else if (strcmp(x.c_str(), "100°") == 0) { + id(tuya_tuya_id).set_enum_datapoint_value(101, 3); + } else if (strcmp(x.c_str(), "100° and off") == 0) { + id(tuya_tuya_id).set_enum_datapoint_value(101, 4); + } else if (strcmp(x.c_str(), "Custom") == 0) { + id(tuya_tuya_id).set_enum_datapoint_value(101, 5); + } else { + id(tuya_tuya_id).set_enum_datapoint_value(101, 6); + } + +number: + - platform: "tuya" + id: custom_temp + name: "Kettle Custom Temperature" + number_datapoint: 102 + icon: mdi:oil-temperature + min_value: 35 + max_value: 100 + step: 1 + +sensor: + update_interval: 60s + - platform: template + name: Kettle Temperature + id: kettle_temp + unit_of_measurement: "°C" + accuracy_decimals: 0 + + - platform: tuya + id: tuya_105 + sensor_datapoint: 105 + on_value: + then: + - if: + condition: + lambda: |- + return static_cast(id(tuya_106).state) == 1; + then: + - sensor.template.publish: + id: kettle_temp + state: !lambda |- + return 0; + else: + - sensor.template.publish: + id: kettle_temp + state: !lambda |- + return id(tuya_105).state; + + - platform: tuya + id: kettle_remaining + name: Kettle Remaining Time + icon: mdi:clock-time-five-outline + sensor_datapoint: 107 + unit_of_measurement: "min" + accuracy_decimals: 0 + + - platform: tuya + id: tuya_101 + sensor_datapoint: 101 + on_value: + then: + - select.set_index: + id: kettle_control + index: !lambda |- + return id(tuya_101).state; + + - platform: tuya + id: tuya_106 + sensor_datapoint: 106 + on_value: + then: + - text_sensor.template.publish: + id: text_state + state: !lambda |- + switch(static_cast(id(tuya_106).state)) { + case 1: return {"Lifted"}; + case 2: return {"Standby"}; + case 3: return {"Heating"}; + case 4: return {"Cooling"}; + case 5: return {"Maintaining Temp"}; + default: return {""}; + } + - platform: tuya + id: tuya_104 + sensor_datapoint: 104 + on_value: + then: + - if: + condition: + lambda: |- + return id(kettle_temp).raw_state == 0; + else: + - text_sensor.template.publish: + id: text_error + state: !lambda |- + switch(static_cast(id(tuya_104).state)) { + case 0: return {"OK"}; + case 1: return {"Empty"}; + case 4: return {"Overheated"}; + default: return {"other error"}; + } diff --git a/lyws.yaml b/lyws.yaml new file mode 100644 index 0000000..62a12cd --- /dev/null +++ b/lyws.yaml @@ -0,0 +1,41 @@ +esphome: + name: esp32_kitchen + platform: esp32 + board: nodemcu-32s + +substitutions: + name: lyws + friendly_name: LYWS + device_name: lyws + +packages: + common: !include includes/common.yaml + wifi_sensors: !include includes/wifi.yaml + +esp32_ble_tracker: + +sensor: + - platform: atc_mithermometer + mac_address: A4:C1:38:81:EE:B0 + temperature: + name: "Kitchen Temperature" + humidity: + name: "Kitchen Humidity" + battery_level: + name: "Kitchen Battery-Level" + battery_voltage: + name: "Kitchen Battery-Voltage" + signal_strength: + name: "Kitchen Signal" + - platform: atc_mithermometer + mac_address: A4:C1:38:BA:64:BE + temperature: + name: "Outdoors Temperature" + humidity: + name: "Outdoors Humidity" + battery_level: + name: "Outdoors Battery-Level" + battery_voltage: + name: "Outdoors Battery-Voltage" + signal_strength: + name: "Outdoors Signal" \ No newline at end of file diff --git a/secrets.yaml.example b/secrets.yaml.example new file mode 100644 index 0000000..c33a2b0 --- /dev/null +++ b/secrets.yaml.example @@ -0,0 +1,5 @@ +# Your Wi-Fi SSID and password +wifi_ssid: "" +wifi_password: "" +encryption_key: "" +ota_password: ""