Въведение

  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 файлове препоръчваме да си инсталирате 'Visual Studio Code' 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:
platformsnmp
    scan_interval10               # state polling interval in seconds
    name"Netcontrol_SNMP_Line1"   # Name of this NetControl channel in Home Assistant
    host192.168.1.100             # IP address of your NetControl Device
    version"1"
    auth_protocolnone
    priv_protocolnone
    payload_on1
    payload_off0
    vartypeInteger
      
# Enter here your R/W community string
    communityprivate              
     
# Line 1 uses [P]=9. Change to another value, according to model (see manual)
    baseoid1.3.6.1.4.1.19865.2.3.1.9.6.0  
sensor:
platformsnmp
    
scan_interval10
     name"Netcontrol_Temperature_TDS300"
    host192.168.1.100
    version"1"
    auth_protocolnone
    priv_protocolnone
    communityprivate
    baseoid1.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
Home Assistant

    Следват примери за добавяне на релеен изход Line 1 и вход за температура Sensor 1 на NetControl (напр. 2R2S1A, 4R4S1A), но вече на базата на MQTT протокола

    Последните 3 секции илюстрират добавянето и на вход тип "брояч на импулси" (NetControl 4PC2R). Освен дефиницията за mqtt, чрез която в системата да се получава натрупаната от брояча стойност, са добавени още два блока "statistics" и "template". Тяхното предназначение е да можем да получим информация за мощността на товара (напр. ако имаме свързан електромер към импулсния вход), чрез изчисляване на разликата между новото и предишното показание на електромера. Тези последни две измервания идват от модула "statistics", като най-важното при него е entity_id да сочи към mqtt обекта, от който идват данните (в случая:sensor.pulse_counter_1); с другите параметри му указваме, че се интересуваме от последните два отчета и ако няма данни повече от 5мин да даде нулева стойност.  Секцията 'template' се използва за прилагане на самото изчисление на товара, според константата на електромера (imp/kWh) и вграденият параметър 'change_rate' (той изчислява разликата между последните две стойности, разделена на разликата във времето между техните измервания в секунди).  

switch:
  - platformmqtt
    name"NetControl_A_CH1"
     # next topics must match your NetControl's settings for 'User defined sub-topic' and desired channel
    command_topic"NetControl/subgroup/in/ch9"
    state_topic"NetControl/subgroup/out/ch9"
    retaintrue
    payload_on"ON" 
    payload_off"OFF"
    value_template"{{value_json.value.real}}"
sensor:
  - platformmqtt
    name"NetControl_Hummidity"
     
# topic must match your NetControl's settings for 'User defined sub-topic' and desired channel
    state_topic"NetControl/subgroup/out/ch28"
    unit_of_measurement"%"
     
# NetControl sends dimension with value, but HomeAssistant doesn't like it - so trim it!
    value_template'{{value_json.value.real|trim("%")}}'

   - platformmqtt
    name"pulse_counter_1"
    state_topic"NetControl/subgroup/out/ch20"
    value_template"{{value_json.value.raw}}"
    force_updatetrue

  - platformstatistics
    entity_idsensor.pulse_counter_1
    namepulse_stat_1
    sampling_size2
    max_age:
      minutes5 # to set zero power value if MQTT data is not received by some reason

  - platformtemplate
    sensors:
      current_power:
        friendly_name"Power current load"
         
# Change 1600 with your device's imp/kWh constant
        value_template"{{ (state_attr('sensor.pulse_stat_1','change_rate')|float * 1000 * 3600 / 1600) | round(1)}} Watt"

 
Примерните YAML дефиниции можете да свалите във файл от тук: netcontrol_ha.yaml