1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 2

Homeassistant - обмен опытом, совместное изучение и т. п

Тема в разделе "Умный дом", создана пользователем opyzhov, 01.12.21.

  1. неформат
    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552

    неформат

    Живу здесь

    неформат

    Живу здесь

    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552
    Адрес:
    Санкт-Петербург
    Как это не удивительно, но некоторые люди хотят получать в HA команды с Яндекс, и управлять в нем, а не прокидывать устройства HA в Яндекс. Понимаю, что это неожиданно, но вот бывают такие чудаки

    Да, иногда бывает нужно и обратное - отправить устройство в Яндекс. Разные задачи
     
  2. mvb2002
    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25

    mvb2002

    Участник

    mvb2002

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25
    Всем здравствуйте! Никогда не сталкивался раньше с yaml файлами. Вот решил повторить конструкцию
    Переделываем китайский контроллер протечки для удаленного управления с помощью ESPHome
    https://sprut.ai/article/peredelyvaem-kitayskiy-kontroller-protechki-dlya-udalennogo-upravleniya-s-pomoshchyu-esphome
    Мне кажется, что в таком виде yaml- файл использовать нельзя. Я прав?

     
  3. неформат
    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552

    неформат

    Живу здесь

    неформат

    Живу здесь

    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552
    Адрес:
    Санкт-Петербург
    Неформатированный мусор? Нельзя

    Аффтар идиот, не смотрит как его текст смотрится после публикации
     
  4. mvb2002
    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25

    mvb2002

    Участник

    mvb2002

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25
    Аффтар разместил, за что ему спасибо. Как отформатировать файл?
     
  5. Bal0o
    Регистрация:
    29.01.13
    Сообщения:
    342
    Благодарности:
    125

    Bal0o

    Живу здесь

    Bal0o

    Живу здесь

    Регистрация:
    29.01.13
    Сообщения:
    342
    Благодарности:
    125
    Адрес:
    Челябинск
  6. mvb2002
    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25

    mvb2002

    Участник

    mvb2002

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25
    Очень содержательный ответ. Не лень же было писать. Это как раз очевидно. Пробовал. Не получилось. Судя по всему надо изучать yaml с простых примеров.
    Полагаю, что человек в теме за полчаса такой код раскидал бы. Например у мегя наверное бы получилось с С+.
    Поэтому я и обратился за помощью на форум. Можно в личку
     
  7. неформат
    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552

    неформат

    Живу здесь

    неформат

    Живу здесь

    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552
    Адрес:
    Санкт-Петербург
    Зачем человеку в теме форматировать код из какой-то статьи, если можно самому написать?

    Статей таких - куча, примеры для esphome даже чатГПТ уже пишет

    Вы не с того конца подошли. Не подходит статья - ищите другую.

    Можно, наверное, автору еще написать, чтобы нормальный код выложил
     
  8. Bal0o
    Регистрация:
    29.01.13
    Сообщения:
    342
    Благодарности:
    125

    Bal0o

    Живу здесь

    Bal0o

    Живу здесь

    Регистрация:
    29.01.13
    Сообщения:
    342
    Благодарности:
    125
    Адрес:
    Челябинск
    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"
     

    Вложения:

  9. mvb2002
    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25

    mvb2002

    Участник

    mvb2002

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25
    Спасибо вам большое! Буду пробовать и ликвидировать свои пробелы в знаниях. Учиться ведь никогда не поздно)
     
  10. неформат
    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552

    неформат

    Живу здесь

    неформат

    Живу здесь

    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552
    Адрес:
    Санкт-Петербург
    Прикольно. Проверил - да, форматирует
     
  11. Bal0o
    Регистрация:
    29.01.13
    Сообщения:
    342
    Благодарности:
    125

    Bal0o

    Живу здесь

    Bal0o

    Живу здесь

    Регистрация:
    29.01.13
    Сообщения:
    342
    Благодарности:
    125
    Адрес:
    Челябинск
    А еще сразу ошибки исправляет. Я периодически логи в него загружаю и мне дают рекомендации что исправить.
     
  12. неформат
    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552

    неформат

    Живу здесь

    неформат

    Живу здесь

    Регистрация:
    29.09.21
    Сообщения:
    5.695
    Благодарности:
    1.552
    Адрес:
    Санкт-Петербург
    Ну советы ИИ иногда наблюдал - в массе они безумны

    Интересно посмотреть что там за советы
     
    Последнее редактирование: 16.10.25
  13. shura80
    Регистрация:
    18.02.14
    Сообщения:
    4.796
    Благодарности:
    10.802

    shura80

    Живу здесь

    shura80

    Живу здесь

    Регистрация:
    18.02.14
    Сообщения:
    4.796
    Благодарности:
    10.802
    Адрес:
    Россия, Славянск-на-Кубани
    Но нередко допускает ошибки. Носом ткнёшь - дико извиняется и исправляет:)].
     
  14. mvb2002
    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25

    mvb2002

    Участник

    mvb2002

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25
    Спасибо за оказанную помощь.
    Не смотря на все попытки полностью код не скомпилировался.
    Вот в этом блоке ошибка
    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 {"Протечка Кран Закрыт"};
    ...}
    Удаляю его полностью - компилируется, подключается, но не выводит строку состояния.
    Как исправить?
     
    Последнее редактирование: 29.10.25
  15. mvb2002
    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25

    mvb2002

    Участник

    mvb2002

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    46
    Благодарности:
    25
    В общем сам исправил. Кому интересно if на else if, а в конце еще одну строку return с неопознаным состоянием.
    Интеграция - единствнное, что заработало сразу, в схеме естественно тоже ошибка. Вообще странное впечатление оставил проеет. Как будто автор специально вносил ошибки