Въведение
Home Assistant е може би най-новия член в семейството на софтуера за домашна автоматизация: слоганът на този софтуер за домашна автоматизация е простота.Той е разработен на Python и по същия начин като Domoticz, можете да разширите неговата функционалност с помощта на приставки/add-ons.Home Assistant се предлага като готова операционна система (image) за Raspberry PI или като виртуална машина за PC с Windows, MacOS, Linux (KVM, VirtualBox, VMware).Като контейнер на Docker, Home Assistant може да се изпълнява и във ваша собствена среда, която управлявате сами.Не са необходими специални умения за компилация и конфигуриране!
NetControl и Home Assistant
Home Assistant има вградена поддръжка на протоколите SNMP и MQTT. Може да се използва всеки от тях за интегриране на NetControl, но определено MQTT дава повече възможности, най-вече с това, че данните от NetControl постъпват в Home Assistant в реално време (за разлика от SNMP, където се използва "polling" и устройствата се "запитват" за състоянието си през определено време).
Добавянето на едно или няколко NetControl устройства става ръчно, чрез редактиране на файла configuration.yaml (обърнете внимание на това, че се използват групи от по два интервала за структуриране на данните!). За по-голямо удобство при работа с YAML файлове препоръчваме да си инсталирате 'Studio Code Server' add-on.
'switch' и 'sensor' (това са т.нар. 'integrations') са два от типовете, които Home Assistant използва, като определение за вида на канала на дадено устройство (и данните, които то приема/предава). В групата "switch" попадат релейните изходи на NetControl - т.е. към тях можем да подаваме команди On/Off и да получаваме техния текущ статус. Групата 'sensor' обхваща всички входове на NetControl, които могат само изпращат данни към Home Assistant - алармени входове, входове за датчици (температура, влажност и т.н.), измерване на напрежение, ток, импулси и др. Разбира се, има и други видове 'integrations' като light, binary sensor и др. Може да използвате и тях, според ситуацията - много често имат сходни параметри за настройка.
Интегриране чрез SNMP
Следват примери за добавяне на релеен изход 'Line 1' и вход за температура 'Sensor 1' на NetControl (напр. модели 2R2S1A, 4R4S1A). Моля, имайте предвид, че ако в конфигурационния файл вече имате секции 'swtich' и 'sensor' трябва да добавите само кода към наличните секции (тъй-като не е допустимо да има множество дефиниции за тях).
switch:
- platform: snmp
scan_interval: 10 # state polling interval in seconds
name: "Netcontrol_SNMP_Line1" # Name of this NetControl channel in Home Assistant
host: 192.168.1.100 # IP address of your NetControl Device
version: "1"
auth_protocol: none
priv_protocol: none
payload_on: 1
payload_off: 0
vartype: Integer
# Enter here your R/W community string
community: private
# Line 1 uses [P]=9. Change to another value, according to model (see manual)
baseoid: 1.3.6.1.4.1.19865.2.3.1.9.6.0 sensor:
- platform: snmp
scan_interval: 10
name: "Netcontrol_Temperature_TDS300"
host: 192.168.1.100
version: "1"
auth_protocol: none
priv_protocol: none
community: private
baseoid: 1.3.6.1.4.1.19865.2.3.1.25.6.0 # Channel with [P]=25
unit_of_measurement: "C"
# Template to convert raw SNMP value to temparature
value_template: "{{(((3300 * (value | float) / 1023) - 500) / 10) | round(1)}}"
Интегриране чрез MQTT
ВАЖНИ ПРЕДВАРИТЕЛНИ ИЗИСКВАНИЯ !!!
1. MQTT изисква наличието на т.нар. брокер. Home Assistant предлага такъв под формата на add-on 'Mosquitto broker' - използвайте него, ако нямате вече инсталиран друг брокер.
2. MQTT брокера използва системата от "Users" на Home Assistant за ауторизация. Най-добре си дефинирайте един нов потребител в системата, специално за логването на MQTT клиентите. Потребителят/паролата и IP адреса на Home Assistant трябва да се въведат в MQTT настройките на NetControl.
3. В настройките за MQTT на NetControl трябва 'PUBLISH value format' = JSON и 'Mirror /in to /out'=YES!
Следват примери за добавяне на релеен изход Line 1, вход за температура Sensor 1 на NetControl (напр. 2R2S1A, 4R4S1A) и алармен вход (Alrarm 1 за 2R4A), но вече на базата на MQTT протокола
Последните 3 секции илюстрират добавянето и на вход тип "брояч на импулси" (NetControl 4PC2R). Освен дефиницията за mqtt, чрез която в системата да се получава натрупаната от брояча стойност, са добавени още два блока "statistics" и "template". Тяхното предназначение е да можем да получим информация за мощността на товара (напр. ако имаме свързан електромер към импулсния вход), чрез изчисляване на разликата между новото и предишното показание на електромера. Тези последни две измервания идват от модула "statistics", като най-важното при него е entity_id да сочи към mqtt обекта, от който идват данните (в случая:sensor.pulse_counter_1); с другите параметри му указваме, че се интересуваме от последните два отчета и ако няма данни повече от 5мин да даде нулева стойност. Секцията 'template' се използва за прилагане на самото изчисление на товара, според константата на електромера (imp/kWh) и вграденият параметър 'change_rate' (той изчислява разликата между последните две стойности, разделена на разликата във времето между техните измервания в секунди).
mqtt: - switch: unique_id: uid_switch1 name: "NetControl_A_CH1" # next topics must match your NetControl's settings for 'User defined sub-topic' and desired channel state_topic: "NetControl/subgroup/out/ch9" command_topic: "NetControl/subgroup/in/ch9" payload_on: "ON" payload_off: "OFF" state_on: "ON" state_off: "OFF" retain: true value_template: "{{value_json.value.real}}"
- sensor: unique_id: id_sensor_hum1 name: "NetControl_Hummidity" # topic must match your NetControl's settings for 'User defined sub-topic' and desired channel state_topic: "NetControl/subgroup/out/ch25" unit_of_measurement: "%" # NetControl sends dimension with value, but HomeAssistant doesn't like it - so trim it! value_template: '{{value_json.value.real|trim("%")}}'
- binary_sensor: unique_id: uid_alarm1 name: "NetControl_Door1" state_topic: "NetControl/subgroup/out/ch26" payload_on: "OPEN" payload_off: "CLOSED" device_class: door value_template: "{{value_json.value.real}}"
- sensor: name: "pulse_counter_1" state_topic: "NetControl/subgroup/out/ch20" value_template: "{{value_json.value.raw}}" force_update: true
sensor: - platform: statistics entity_id: sensor.pulse_counter_1 name: pulse_stat_change state_characteristic: change sampling_size: 2 max_age: minutes: 5 # to set zero power value if MQTT data is not received by some reason template: - sensor: - name: "Current load" # Change 1600 with your device's imp/kWh constant state: "{{ (states('sensor.pulse_stat_change') | float * 1000 * 3600 / 1600) | round(1) }}" unit_of_measurement: "W"
След промени в configuration.yaml е необходимо да се презареди или да се рестартира HA. Новодефинираните канали ще се повяват в менюто Integrations/Entities. След това може да ги избирате като източник на данни за графика и др.
Примерните YAML дефиниции можете да свалите тук: