Полная домашняя автоматизация в квартире 41 метр

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
mc_gold
Сообщения: 8
Зарегистрирован: 20 фев 2019, 12:00

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение mc_gold » 20 мар 2019, 11:13

прочитал всю ветку, и как-то разочарование что-ли у автора, типа проводов много, делать уже не хочется, малинка подохла, свет просто мигает через мегу. и в общем-то умный дом не умный и не нужный стал

empenoso
Сообщения: 974
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение empenoso » 20 мар 2019, 14:21

у меня есть некоторая специфика - сдаю эту квартиру, и провожу эксперименты только когда там никто не живет, а проводной умный дом хотел сделать для себя и сделал. заложил для всего провода.
а поскольку жилье пользуется полярностью - у меня нет физического доступа, когда кто-то живет ничего не делаю. вот и сейчас буквально несколько дней перерыв в году, только и успел что малину нормально восстановить. а так да - фактически сервер не особо и нужен - мега рулит всем.
кстати обычно умный дом просто как фишка не более того, окончательное решение о том жить прямо в ней или нет не зависит от этого. но потом пользуются.

BlackLykich
Сообщения: 23
Зарегистрирован: 06 июн 2014, 08:24
Откуда: Рыбинск

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение BlackLykich » 20 мар 2019, 22:56

у меня вопрос: квартира сдаётся.
Не было людей, которые боятся например, что их облучит,
останутся запертыми в квартире и весь воздух откачается,
может везде скрытые видеокамеры и тому подобный бред?
че ты тут, Самоделкин наделал, чё-нить ночью коротнёт, а мы тут все сгорим....

poraboloid
Сообщения: 31
Зарегистрирован: 16 окт 2016, 20:13
Откуда: Самара

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение poraboloid » 21 мар 2019, 07:27

А зачем впускать в свою квартиру таких умственно не полноценных?
Такие быстрее квартиру спалят, не имея представлений о простейший физике.

empenoso
Сообщения: 974
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение empenoso » 22 мар 2019, 14:05

на рынке много предложений и умный дом скорее не играет решающей роли, но зато тема разговора :)

empenoso
Сообщения: 974
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение empenoso » 22 мар 2019, 14:45

самое смешное что больше всего проблем, а уже три года плотно знаком с опенхаб - именно с ним. НЕ с мегой и НЕ с esp8266 - а их довольно много использую и давно.
в офисе хочу перенести с синолоджи на малину опенхаб и не могу перенести - опенхаб не стартует :shock:
а так увлекаюсь домашней автоматизацией с середины 2014 г. примерно ( https://z-wave.ru/obzory/255-sozdanie-d ... -wave.html ).

empenoso
Сообщения: 974
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение empenoso » 14 июн 2019, 15:34

Подниму тему. С помощью практически переехал на Home Assistant вместе с мегой - всё штатными средствами без аддонов.

Еще потребовалось сделать удлинитель с управляемыми розетками. Кроме ESP8266 наверное и не сделать недорого. На али нашел https://www.aliexpress.com/item/32864068545.html походящий.
При разборе оказалось что там ESP8285, TYWE2S. Прошивка уже давно мой выбор Sonoff-Tasmota - самый удобный вариант.
Ориентировался на инструкцию https://github.com/arendst/Sonoff-Tasmo ... g-(TYWE2S).
Оказалось что даже есть даже шаблон для Sonoff-Tasmota: https://blakadder.github.io/templates/zeoota_PS022.html

Код: Выделить всё

[empenoso@mike-pc ~]$ sudo esptool flash_id
esptool.py v2.6
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8285
Features: WiFi, Embedded Flash
MAC: c4:ХХ:33:ХХ:dd:53
Uploading stub...
Running stub...
Stub running...
Manufacturer: 51
Device: 4014
Detected flash size: 1MB
Hard resetting via RTS pin...
[empenoso@mike-pc ~]$ sudo esptool erase_flash
esptool.py v2.6
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8285
Features: WiFi, Embedded Flash
MAC: c4:ХХ:33:ХХ:dd:53
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 2.7s
Hard resetting via RTS pin...
[empenoso@mike-pc ~]$ sudo esptool write_flash 0x00000 /home/empenoso/Загрузки/Sonoff-Tasmota-6.5.0/.pioenvs/sonoff-minimal/firmware.bin
[sudo] пароль для empenoso: 
esptool.py v2.6
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8285
Features: WiFi, Embedded Flash
MAC: c4:ХХ:33:ХХ:dd:53
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 1MB
Compressed 359968 bytes to 256161...
Wrote 359968 bytes (256161 compressed) at 0x00000000 in 22.8 seconds (effective 126.1 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
[empenoso@mike-pc ~]$ sudo esptool write_flash 0x00000 /home/empenoso/Загрузки/Sonoff-Tasmota-6.5.0/.pioenvs/sonoff/firmware.bin
esptool.py v2.6
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8285
Features: WiFi, Embedded Flash
MAC: c4:4f:33:89:dd:53
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 1MB
Compressed 519680 bytes to 356061...
Wrote 519680 bytes (356061 compressed) at 0x00000000 in 31.6 seconds (effective 131.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
[empenoso@mike-pc ~]$ 
Вложения
IMG_20190614_154324.jpg
IMG_20190614_154324.jpg (240.41 КБ) 288 просмотров
IMG_20190614_084248.jpg
IMG_20190614_084248.jpg (180.99 КБ) 288 просмотров
IMG_20190614_084810.jpg
IMG_20190614_084810.jpg (223.52 КБ) 288 просмотров
IMG_20190614_085033.jpg
IMG_20190614_085033.jpg (178.2 КБ) 288 просмотров
IMG_20190614_142203.jpg
IMG_20190614_142203.jpg (269.64 КБ) 288 просмотров

empenoso
Сообщения: 974
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение empenoso » 14 июн 2019, 15:36

А вот сама схема TYWE2S:
LA_WF3_08.png
LA_WF3_08.png (26.32 КБ) 288 просмотров
И прошивка Sonoff-Tasmota на ней:
zeoota_2019-06-14_15-10.png
zeoota_2019-06-14_15-10.png (106.98 КБ) 288 просмотров

empenoso
Сообщения: 974
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Полная домашняя автоматизация в квартире 41 метр

Сообщение empenoso » 23 июл 2019, 10:29

Ну что ж. MegaD-2561 в Hass.io - Home Assistant без MQTT. Для быстроты реакции скачиваются все значения в файл, а затем он парсится:

automation_megad.yaml

Код: Выделить всё

automation:
  - alias: megad_get
    trigger:
      - platform: time_pattern
        seconds: "/1"
    action:
      - service: downloader.download_file
        data_template:
          url: "http://192.168.48.20/sec/?cmd=all"
          filename: "devices.txt"
          overwrite: "true"
      - service: downloader.download_file
        data_template:
          url: "http://192.168.48.30/sec/?cmd=all"
          filename: "sensors.txt"
          overwrite: "true"
component_binary_sensor.yaml

Код: Выделить всё

### Двоичные датчики ###

binary_sensor:
  - platform: workday
    country: 'RU'

  - platform: command_line
    name: Дверной звонок
    device_class: sound
    command: "cat '/config/downloads/devices.txt'"
    scan_interval: 2
    value_template: "{{ value.split(';')[10] }}"
    payload_on: "ON"
    payload_off: "OFF"

  - platform: command_line
    name: Стиральная машина
    device_class: power
    command: "cat '/config/downloads/sensors.txt'"
    scan_interval: 5
    value_template: "{{ value.split(';')[11].split(\"/\")[0] }}"
    payload_on: "ON"
    payload_off: "OFF"

  - platform: command_line
    name: Дверь на балкон
    device_class: door
    command: "cat '/config/downloads/sensors.txt'"
    scan_interval: 2
    value_template: "{{ value.split(';')[27].split(\"/\")[0] }}"
    payload_on: "OFF"
    payload_off: "ON"

  - platform: command_line
    name: Дверь в ванную
    device_class: door
    command: "cat '/config/downloads/sensors.txt'"
    scan_interval: 2
    value_template: "{{ value.split(';')[15].split(\"/\")[0] }}"
    payload_on: "OFF"
    payload_off: "ON"

  - platform: command_line
    name: Движение в прихожей
    device_class: motion
    command: "cat '/config/downloads/sensors.txt'"
    scan_interval: 5
    value_template: "{{ value.split(';')[18].split(\"/\")[0] }}"
    payload_on: "ON"
    payload_off: "OFF"

  - platform: command_line
    name: Движение на кухне
    device_class: motion
    command: "cat '/config/downloads/sensors.txt'"
    scan_interval: 5
    value_template: "{{ value.split(';')[19].split(\"/\")[0] }}"
    payload_on: "ON"
    payload_off: "OFF"

  - platform: command_line
    name: Движение на балконе
    device_class: motion
    command: "cat '/config/downloads/sensors.txt'"
    scan_interval: 5
    value_template: "{{ value.split(';')[20].split(\"/\")[0] }}"
    payload_on: "OFF"
    payload_off: "ON"

  - platform: command_line
    name: Движение в ванной
    device_class: motion
    command: "cat '/config/downloads/sensors.txt'"
    scan_interval: 5
    value_template: "{{ value.split(';')[30].split(\"/\")[0] }}"
    payload_on: "ON"
    payload_off: "OFF"
component_cover.yaml

Код: Выделить всё

### Шторы ###

cover:
  - platform: command_line
    covers:
      cover_bedroom:
        friendly_name: Шторы
        command_open: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=3&cmd=3:0'; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=4&cmd=4:1'; sleep 20; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=4&cmd=4:0'"
        command_close: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=4&cmd=4:0'; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=3&cmd=3:1'; sleep 20; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=3&cmd=3:0'"
        command_stop: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=3&cmd=3:0'; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=4&cmd=4:0'"
component_sensor.yaml

Код: Выделить всё

### Датчики ###

sensor:
  # Улица
  - platform: command_line
    name: Температура на улице
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280&i2c_par=1'"
  - platform: command_line
    name: Влажность на улице
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280&i2c_par=2'"
  - platform: command_line
    name: Атмосферное давление
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280&i2c_par=0'"
  - platform: command_line
    name: Освещение улицы
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=max44009&i2c_par0'"

  - platform: template
    sensors:
      temperature_street:
        friendly_name: Температура
        entity_id: sensor.temperatura_na_ulitse
        unit_of_measurement: '°C'
        value_template: '{{ states.sensor.temperatura_na_ulitse.state }}'
        device_class: temperature
      humidity_street:
        friendly_name: Влажность
        entity_id: sensor.vlazhnost_na_ulitse
        unit_of_measurement: '%'
        value_template: '{{ states.sensor.vlazhnost_na_ulitse.state }}'
        device_class: humidity
      pressure_street:
        friendly_name: Атмосферное давление
        entity_id: sensor.atmosfernoe_davlenie
        unit_of_measurement: 'мм рт. ст.'
        value_template: '{{ states.sensor.atmosfernoe_davlenie.state }}'
        device_class: pressure
      illuminance_street:
        friendly_name: Освещение
        entity_id: sensor.osveshchenie_ulitsy
        unit_of_measurement: 'lux'
        value_template: '{{ states.sensor.osveshchenie_ulitsy.state }}'
        device_class: illuminance

  # Спальня
  - platform: command_line
    name: Температура в спальне
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=htu21d&i2c_par=1'"
  - platform: command_line
    name: Влажность в спальне
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=htu21d&i2c_par=2'"
  - platform: command_line
    name: Датчик углекислого газа
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=2&cmd=get'"
  - platform: command_line
    name: Температура батареи спальни
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=7&cmd=list'"
    value_template: "{{ value.split('ff01ec721604:')[1] }}"

  - platform: template
    sensors:
      temperature_bedroom:
        friendly_name: Температура
        entity_id: sensor.temperatura_v_spalne
        unit_of_measurement: '°C'
        value_template: '{{ states.sensor.temperatura_v_spalne.state }}'
        device_class: temperature
      humidity_bedroom:
        friendly_name: Влажность
        entity_id: sensor.vlazhnost_v_spalne
        unit_of_measurement: '%'
        value_template: '{{ states.sensor.vlazhnost_v_spalne.state }}'
        device_class: humidity
      dioxide_bedroom:
        friendly_name: Датчик углекислого газа
        entity_id: sensor.datchik_uglekislogo_gaza
        unit_of_measurement: 'ADC'
        value_template: '{{ states.sensor.datchik_uglekislogo_gaza.state }}'
      battery_bedroom:
        friendly_name: Батарея
        entity_id: sensor.temperatura_batarei_spalni
        unit_of_measurement: '°C'
        value_template: '{{ states.sensor.temperatura_batarei_spalni.state }}'
        device_class: temperature
      plug_load_power:
        friendly_name: Мощность розетки
        unit_of_measurement: 'Вт'
        value_template: '{{ states.switch.plug_158d0002900a8e.attributes.load_power }}'
        device_class: power

  # Кухня
  - platform: command_line
    name: Температура батареи кухни
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=7&cmd=list'"
    value_template: "{{ value.split('ffbe6e731603:')[1].split(';')[0] }}"

  - platform: template
    sensors:
      battery_kitchen:
        friendly_name: Батарея
        entity_id: sensor.temperatura_batarei_kukhni
        unit_of_measurement: '°C'
        value_template: '{{ states.sensor.temperatura_batarei_kukhni.state }}'
        device_class: temperature

  # Ванная
  - platform: command_line
    name: Температура в ванной
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=5&scl=1&i2c_dev=htu21d&i2c_par=1'"
  - platform: command_line
    name: Влажность в ванной
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=5&scl=1&i2c_dev=htu21d&0'"
  - platform: command_line
    name: Температура хол. трубы
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=6&cmd=list'"
    value_template: "{{ value.split(';')[0].split(':')[1] }}"
  - platform: command_line
    name: Температура гор. трубы
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=6&cmd=list'"
    value_template: "{{ value.split(';ff7d30211605:')[1] }}"
  - platform: command_line
    name: Температура ванны
    command: "/usr/bin/curl -X GET 'http://192.168.48.30/sec/?pt=6&cmd=list'"
    value_template: "{{ value.split('ff9ec0711703:')[1].split(';')[0] }}"
  
  - platform: template
    sensors:
      temperature_bathroom:
        friendly_name: Температура
        entity_id: sensor.temperatura_v_vannoi
        unit_of_measurement: '°C'
        value_template: '{{ states.sensor.temperatura_v_vannoi.state }}'
        device_class: temperature
      humidity_bathroom:
        friendly_name: Влажность
        entity_id: sensor.vlazhnost_v_vannoi
        unit_of_measurement: '%'
        value_template: '{{ states.sensor.vlazhnost_v_vannoi.state }}'
        device_class: humidity
      cold_pipe_bathroom:
        friendly_name: Хол. труба
        entity_id: sensor.temperatura_khol_truby
        unit_of_measurement: '°C'
        value_template: '{{ states.sensor.temperatura_khol_truby.state }}'
        device_class: temperature
      hot_pipe_bathroom:
        friendly_name: Гор. труба
        entity_id: sensor.temperatura_gor_truby
        unit_of_measurement: '°C'
        value_template: '{{ states.sensor.temperatura_gor_truby.state }}'
        device_class: temperature
      tub_bathroom:
        friendly_name: Ванна
        entity_id: sensor.temperatura_vanny
        unit_of_measurement: '°C'
        value_template: '{{ states.sensor.temperatura_vanny.state }}'
        device_class: temperature
component_switch.yaml

Код: Выделить всё

### Переключатели ###

switch:
  - platform: command_line
    scan_interval: 1
    switches:
      bra_left_bedroom:
        friendly_name: Левая бра
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=1&cmd=1:1'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=1&cmd=1:0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[1] == "ON" }}'
      bra_right_bedroom:
        friendly_name: Правая бра
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=0&cmd=0:1'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=0&cmd=0:0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[0] == "ON" }}'
      lamps_bedroom:
        friendly_name: Потолочные лампы
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=28&pwm=255'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=28&pwm=0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[28] == "255" }}'
      lamps_hall:
        friendly_name: Потолочные лампы
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=27&pwm=255'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=27&pwm=0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[27] == "255" }}'
      lamps_bathroom:
        friendly_name: Потолочные лампы
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=25&pwm=255'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=25&pwm=0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[25] == "255" }}'
      strip_light_balcony:
        friendly_name: Лента
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=5&cmd=5:1'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=5&cmd=5:0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[5] == "ON" }}'
      strip_light_kitchen:
        friendly_name: Лента
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=7&cmd=7:1'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=7&cmd=7:0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[7] == "ON" }}'
      toggle_water_bathroom:
        friendly_name: Перекрытие воды
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=8&cmd=8:0'; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=9&cmd=9:0'; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=9&cmd=9:1'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=8&cmd=8:0'; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=9&cmd=9:0'; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=8&cmd=8:1'; sleep 20; /usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=8&cmd=8:0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[9] == "ON" }}'
      lamp_kitchen:
        friendly_name: Потолочная лампа
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=13&cmd=13:1'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=13&cmd=13:0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[13] == "ON" }}'
      vent_bathroom:
        friendly_name: Вентиляция
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=22&cmd=22:1'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=22&cmd=22:0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[22] == "ON" }}'
      backlight_hall:
        friendly_name: Лента
        command_on: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=23&cmd=23:1'"
        command_off: "/usr/bin/curl -X GET 'http://192.168.48.20/sec/?pt=23&cmd=23:0'"
        command_state: "cat '/config/downloads/devices.txt'"
        value_template: '{{ value.split(";")[23] == "ON" }}'
Конфиги рабочие. Можно переделать под любые собственные нужды. Надеюсь будет полезно.

Ответить