Підключення сенсора радіації GGreg20_V3 до сервера Home Assistant через інтеграцію ESP Home

  • Категорія запису:Tips

Пропонуємо до вашої уваги процедуру підключення детектора (сенсора) GGreg20 у поєднанні з головним контролером ESP8266 чи ESP32 до сервера Home Assistant через плагін ESP Home.

Якщо ви вже маєте досвід налаштування та розгортання пристроїв у середовищі ESP Home під керуванням Home Assistant, можете пропустити вступні розділи та відразу переходити до прикладу yaml-файлу конфігурації, який ви можете взяти за основу для своєї власної системи і пристроїв.

Всі приклади файлів є робочими та працюють у реально розгорнутому сервері та контролері ESP8266 з детектором GGreg20. ESP32 також підтримується ESP Home і на прикладі ESP8266, читач може зробити варіант yaml-файлу для платформи ESP32. У даній публікації ми  демонструємо роботу з ESP32 у обмеженому вигляді, оскільки з точки зору налаштувань ESP Home та Home Assistant, платформи ESP8266 та ESP32 майже не відрізняються.

Примітка. Дана публікація підходить для всіх версій детектора іонізуючої радіації виробництва IoT-devices: GGreg20_V1, GGreg20_V2, GGreg20_V3. 

Оскільки вся лінійка даних детекторів орієнтована на трубку СБМ-20, усі версії пристроїв мають однаковий алгоритм та коефіцієнти розрахунку рівня потужності та дози іонізуючого випромінювання.

На точність вимірювання впливають лише індивідуальні властивості встановленої в кожен конкретний детектор GGreg20_V3 трубки СБМ-20. У технічних характеристиках виробника трубок вказано граничний діапазон точності вимірювань у 20%. На практиці це означає, що два однакові пристрої GGreg20, але з різними трубками СБМ-20, можуть давати результати (не білше ніж) із зазначеним відхиленням за кількістю імпульсів.

Кроки з підключення GGreg20 до Home Assistant

Далі ми докладно розглядаємо кроки з підключення детектора (сенсора) GGreg20. Чесно кажучи, нам доводиться наводити багато тексту та рисунків, щоб пояснити деякі важливі моменти – через це публікація здається процедурним жахом. Це не так! Всі ці кроки є простими, автоматизованими і виконуються за 15-20 хвилин.

Сервер

Крок 1. Встановити (або запустити) сервер Home Assistant

Якщо у вас вже встановлено сервер, просто запустіть його. Якщо ж вам потрібно розгорнути  сервер, рекомендуємо переглянути розроблену нами інструкцію щодо розгортання Home Assistant у віртуальній машині під ОС Windows 10.

Плагін ESP Home для Home Assistant

Крок 2. Підключити розширення ESP Home для сервера Home Assistant через меню Supervisor -> Add-on Store

Процедура встановлення офіційного плагіна, як-от ESP Home, у Home Assistant доволі проста. Рекомендуємо переглянути Крок 8. Встановлення плагіну ESP Home (Опція) вже згаданої раніше інструкції.

YAML-конфіг нового пристрою ESP з GGreg

Це ключова частина даної публікації, яка нас цікавить більше, ніж всі інші загальні дані про підготовчі кроки середовища. На 3 і 4 кроках будемо розробляти власний конфіг для ESP з GGreg на базі реальних прикладів з нашого тестового сервера Home Assistant.

Крок 3. Скачати готовий приклад пакетного yaml-файлу конфігурації пристрою GGreg20_V3 для ESP8266 з нашого сайту

YAML-файл – це загальноприйнятий у Home Assistant текстовий скриптовий файл, у даному випадку з інструкціями для ESP Home, які застосовуються під час побудови прошивки.

Ми розробили такий файл для ESP8266 з GGreg20 та виклали його у себе на сайті для вільного скачування і використання усіма, кому потрібно підключити GGreg20 до Home Assistant через ESP Home. Скачати файл можливо за цим посиланням.

Повний файл який ви щойно скачали, має наступний вміст:

Open YAML-text

Розглянемо основні частини підготовленого нами файлу ggreg20_esp8266_esphome.yaml.

Для розрахунку значення потужності іонізуючого випромінювання мікрозіверт на годину, використовується Pulse Counter Sensor – компонент API плагіну ESP Home:

https://esphome.io/components/sensor/pulse_counter.html

За це відповідає ця частина yaml-коду:

sensor:
- platform: pulse_counter
  pin: D3
  unit_of_measurement: 'mkSv/Hour'
  name: 'Ionizing Radiation Power'
  count_mode: 
    rising_edge: DISABLE
    falling_edge: INCREMENT
  update_interval: 60s
  accuracy_decimals: 3
  id: my_doze_meter
  filters:
    - sliding_window_moving_average: # 5-minutes moving average (MA5) here
        window_size: 5
        send_every: 5      
    - multiply: 0.0054 # SBM20 tube conversion factor of pulses into mkSv/Hour 

Для розрахунку сумарної отриманої дози опромінення мікрозіверт, застосовується Integration Sensor, теж компонент ESP Home API:

https://esphome.io/components/sensor/integration.htm

За це відповідає ця частина yaml-коду:

- platform: integration
  name: "Total Ionizing Radiation Dose"
  unit_of_measurement: "mkSv"
  sensor: my_dose_meter # link entity id to the pulse_counter values above
  icon: "mdi:radioactive"
  accuracy_decimals: 5
  time_unit: min # integrate values every next minute
  filters:
    # obtained dose. Converting from mkSv/hour into mkSv/minute: [mkSv/h / 60] OR [mkSv/h * 0.0166666667].
    # if my_dose_meter in CPM, then [0.0054 / 60 minutes] = 0.00009; so CPM * 0.00009 = dose every next minute, mkSv.
    - multiply: 0.0166666667

Також, з метою можливості тестування лічильника імпульсів без сенсора GGreg20, у конфігурацію додано дискретний сенсор кнопки Flash ESP8266 – на той же GPIO0 (D3), що і Pulse Counter – але застосовується вже інший компонент ESP Home API, GPIO Binary Sensor:

https://esphome.io/components/binary_sensor/gpio.html

За це відповідає ця частина yaml-коду:

binary_sensor:
  - platform: gpio
    name: "D3 Input Button"
    pin:
      number: 0
      inverted: True
      mode: INPUT_PULLUP

Плагін ESP Home має достатню документацію на ці компоненти з прикладами, тому ми не будемо вдаватися до детальних пояснень. Де ми вважали за потрібне, ми додали коментарі всереднині yaml-коду.

Крок 4. Створити (на базі прикладу) у ESP Home відповідний yaml-файл конфігурації

Після скачування готового файлу, пропонуємо вам відкрити його будь-яким текстовим редактором і ознайомитися з його вмістом.

Далі необхідно у інтерфейсі плагіну ESP Home на веб-сторінці Home Assistant з правами доступу адміністратора, створити свій власний yaml-файл натиснувши “+” і відповівши на кілька початкових запитань майстра.

Рис. Загальний вигляд інтерфейсу плагіну ESP Home у Home Assistant

Рис. Даємо назву нашому новому пристрою

Рис. Обираємо потрібну платформу відповідно до типу контролера

Рис. Вказуємо параметри WiFi-роутера та пароль для OTA оновлення

Після завершення роботи “майстра”, в інтерфейсі ESP Home з’являється створений нами файл з базовими параметрами, які ми вже налаштували. Тепер потрібно дописати в цей файл частини, які ви знайдете у файлі ggreg20_esp8266_esphome.yaml

Рис. Базова конфігурація для ESP8266 / NodeMCU що створює “майстер”.

Для прикладу наводимо аналогічний початковий yaml-файл для ESP32. Як можна бачити, він майже не відрізняється від файлу для ESP8266.

Рис. Базова конфігурація для ESP32 / WROVER що створює “майстер”.

Якщо скомпілювати такий початковий файл – він буде працювати і робити базові речі – з’єднуватися з сервером, піднімати точку доступу для налаштувань і тому подібне. Але такий контролер не буде виконувати жодних прикладних завдань.

Саме тому вам знадобиться розроблений нами файл – потрібно скопіювати решту налаштувань з нашого файлу у ваш. Також ви можете повністю замінити вміст у вашому файлі даними з ggreg20_esp8266_esphome.yaml, звісно, якщо у вас контролер ESP8266. Якщо ж у вас контролер відрізняється – потрібно замінити відповідні частини файлу, а решту залишити без змін.

Висновки

Ми виконали наступні кроки з підключення GGreg20 до Home Assistant:

Крок 1. Встановити (або запустити) сервер Home Assistant
Крок 2. Підключити розширення ESP Home для сервера Home Assistant через меню Supervisor -> Add-on Store
Крок 3. Скачати готовий приклад пакетного yaml-файлу конфігурації пристрою GGreg20_V3 для ESP8266 з нашого сайту
Крок 4. Створити (на базі прикладу) у ESP Home відповідний yaml-файл конфігурації

Далі ми докладно розглядаємо наступни кроки:

Частина 2:

Крок 5. Обрати пін GPIO на контролері, який буде реєструвати імпульси від Ggreg20
Крок 6. Підключити до контролера ESP8266 детектор радіації GGreg20_V3 через роз’єм Out до обраного GPIO контролера
Крок 7. Побудувати і записати прошивку для контролера

Частина 3:

Крок 8. Перевірити журнал нового контролера ESP8266 з підключеним Ggreg20
Крок 9. Перевірити, чи утворилися нові сутності на боці сервера
Крок 10. Додати на Дашборд віджети сенсора радіації Ggreg20
Крок 11. Додати скрипт автоматизації Push-нотифікації у додаток Home Assistant про перетин порогів

На цьому все. Бажаємо успіхів!