РЕКЛАМА НА ФОРУМХАУС Как это не удивительно, но некоторые люди хотят получать в HA команды с Яндекс, и управлять в нем, а не прокидывать устройства HA в Яндекс. Понимаю, что это неожиданно, но вот бывают такие чудаки Да, иногда бывает нужно и обратное - отправить устройство в Яндекс. Разные задачи
Всем здравствуйте! Никогда не сталкивался раньше с yaml файлами. Вот решил повторить конструкцию Переделываем китайский контроллер протечки для удаленного управления с помощью ESPHome https://sprut.ai/article/peredelyvaem-kitayskiy-kontroller-protechki-dlya-udalennogo-upravleniya-s-pomoshchyu-esphome Мне кажется, что в таком виде yaml- файл использовать нельзя. Я прав?
Очень содержательный ответ. Не лень же было писать. Это как раз очевидно. Пробовал. Не получилось. Судя по всему надо изучать yaml с простых примеров. Полагаю, что человек в теме за полчаса такой код раскидал бы. Например у мегя наверное бы получилось с С+. Поэтому я и обратился за помощью на форум. Можно в личку
Зачем человеку в теме форматировать код из какой-то статьи, если можно самому написать? Статей таких - куча, примеры для esphome даже чатГПТ уже пишет Вы не с того конца подошли. Не подходит статья - ищите другую. Можно, наверное, автору еще написать, чтобы нормальный код выложил
Deepseek в помощь... Тут в сообщении удаляется форматирование. во вложении переименованый yaml substitutions: plug_name: "water_control" esphome: name: ${plug_name} platform: ESP8266 board: nodemcuv2 esp8266_restore_from_flash: true on_boot: then: - switch. turn_off: button1 - switch. turn_off: button2 - switch. turn_off: button3 wifi: ssid: !secret wifi_ssid password: !secret wifi_pass fast_connect: true ap: ssid: ${plug_name}_Fallback_Hotspot password: !secret ap_pass # Можно указать статический ip # Optional manual IP # manual_ip: # static_ip: 192.168.1.15 # gateway: 192.168.1.1 # subnet: 255.255.255.0 logger: api: password: !secret ha_api_pass services: # Сервис для установки первоначальных значений хв - service: new_cold_water_counter variables: new_cold_water_counter: float then: - logger. log: "Call service 'new_cold_water_counter'" - lambda: |- id (cold_water_counter) = new_cold_water_counter; # Сервис для установки первоначальных значений гв - service: new_hot_water_counter variables: new_hot_water_counter: float then: - logger. log: "Call service 'new_hot_water_counter'" - lambda: |- id (hot_water_counter) = new_hot_water_counter; ota: password: !secret ha_api_pass web_server: globals: - id: hot_water_counter type: float restore_value: true - id: cold_water_counter type: float restore_value: true - id: tap_state type: int restore_value: true text_sensor: - platform: template name: "${plug_name} state" id: wcstate lambda: |- if (id (tap_state) = 2 && id (wcsn).state) { return {"Кран закрыт"}; } if (id (tap_state) = 1 && id (wcsn).state) { return {"Кран открыт"}; } if (id (wcswl).state) { return {"Протечка Кран Закрыт"}; } binary_sensor: - platform: gpio name: "${plug_name}_cold" pin: number: D2 mode: INPUT_PULLUP filters: - delayed_on_off: 100ms on_release: then: - lambda: |- id (cold_water_counter) += 0.01; - platform: gpio name: "${plug_name}_hot" pin: number: GPIO5 # D1 mode: INPUT_PULLUP filters: - delayed_on_off: 100ms on_release: then: - lambda: |- id (hot_water_counter) += 0.01; - platform: gpio name: "${plug_name}_binary_sensor_reset" pin: number: GPIO14 # D5 inverted: true id: light_reset filters: - delayed_on: 50ms on_multi_click: - timing: - ON for 1s to 2s then: - binary_sensor.template.publish: id: wcswl state: ON - binary_sensor.template.publish: id: wcsc state: ON - binary_sensor.template.publish: id: wcsn state: OFF - binary_sensor.template.publish: id: wcso state: OFF - timing: - ON for 50s to 75s then: - binary_sensor.template.publish: id: wcsn state: ON - binary_sensor.template.publish: id: wcswl state: OFF - platform: gpio name: "${plug_name}_binary_sensor_open" pin: number: GPIO12 # D6 id: light_open filters: - delayed_on: 8s on_state: then: - binary_sensor.template.publish: id: wcso state: ON - binary_sensor.template.publish: id: wcsc state: OFF - binary_sensor.template.publish: id: light_reset state: OFF - binary_sensor.template.publish: id: wcsn state: OFF - platform: gpio name: "${plug_name}_binary_sensor_close" pin: number: GPIO13 # D7 id: light_close filters: - delayed_on: 8s on_state: then: - binary_sensor.template.publish: id: wcsc state: ON - binary_sensor.template.publish: id: wcso state: OFF - binary_sensor.template.publish: id: light_reset state: OFF - binary_sensor.template.publish: id: wcsn state: OFF - platform: template name: "tap-state-close" id: wcsc on_release: then: - lambda: |- id (tap_state) = 1; - platform: template name: "tap-state-open" id: wcso on_release: then: - lambda: |- id (tap_state) = 2; - platform: template name: "water-control-state-water-leak" id: wcswl - platform: template name: "water-control-state-normal" id: wcsn switch: - platform: gpio name: "reset_${plug_name}" pin: GPIO16 # D0 inverted: true id: button1 - platform: gpio name: "open_${plug_name}" pin: GPIO0 # D3 inverted: true id: button2 - platform: gpio name: "close_${plug_name}" pin: GPIO2 # D4 inverted: true id: button3 - platform: template name: "reset_button" icon: "mdi:reload" turn_on_action: - switch. turn_on: button1 - delay: 500ms - switch. turn_off: button1 - binary_sensor.template.publish: id: wcswl state: OFF - platform: template name: "open_button" icon: "mdi:water-pump" turn_on_action: - switch. turn_on: button2 - delay: 500ms - switch. turn_off: button2 - delay: 55s - switch. turn_on: button1 # сбрасываем reset - delay: 500ms - switch. turn_off: button1 - platform: template name: "close_button" icon: "mdi:water-pump-off" turn_on_action: - switch. turn_on: button3 - delay: 500ms - switch. turn_off: button3 - delay: 55s - switch. turn_on: button1 # сбрасываем reset - delay: 500ms - switch. turn_off: button1 sensor: - platform: template name: "${plug_name}_cold_count" unit_of_measurement: "m³" accuracy_decimals: 2 icon: "mdi:water" lambda: |- return id (cold_water_counter); update_interval: 15s - platform: template name: "${plug_name}_hot_count" unit_of_measurement: "m³" accuracy_decimals: 2 icon: "mdi:water" lambda: |- return id (hot_water_counter); update_interval: 15s - platform: uptime name: "${plug_name}_uptime" - platform: wifi_signal name: "${plug_name}_wifi_signal" update_interval: 60s - platform: template name: "tap_state_sensor" lambda: |- return id (tap_state); update_interval: 10s text_sensor: - platform: version name: "${plug_name}_firmware_version"
Спасибо вам большое! Буду пробовать и ликвидировать свои пробелы в знаниях. Учиться ведь никогда не поздно)
А еще сразу ошибки исправляет. Я периодически логи в него загружаю и мне дают рекомендации что исправить.
Спасибо за оказанную помощь. Не смотря на все попытки полностью код не скомпилировался. Вот в этом блоке ошибка text_sensor: ..- platform: template ...name: "${plug_name} state" ...id: wcstate ...lambda: |- ...if (id (tap_state) = 2 && id (wcsn).state) { ...return {"Кран закрыт"}; ...} ...if (id (tap_state) = 1 && id (wcsn).state) { ...return {"Кран открыт"}; ...} ...if (id (wcswl).state) { ...return {"Протечка Кран Закрыт"}; ...} Удаляю его полностью - компилируется, подключается, но не выводит строку состояния. Как исправить?
В общем сам исправил. Кому интересно if на else if, а в конце еще одну строку return с неопознаным состоянием. Интеграция - единствнное, что заработало сразу, в схеме естественно тоже ошибка. Вообще странное впечатление оставил проеет. Как будто автор специально вносил ошибки