Як додати в сервер Home Assistant сенсор GGreg20_V3 з каналу ThingSpeak

Якщо у вас є контролер з модулем детектора радіації GGreg20_V3, який періодично надсилає дані на сервер ThingSpeak, то ви також можете легко підключити його  і до вашого сервера Home Assistant. У цій публікації ми розглянемо чому може виникнути така необхідність, а також як це зробити.

У даній публікації ми приводимо приклади на двох модулях виробництва IoT-devices LLC:

  • модуль контролера ESP12.OLED з ESP8266;
  • модуль детектора іонізуючої радіації GGreg20_V3.

Це працюючий у нас лічильник гейгера на базі ESP8266 для самостійного складання.

F1. Лічильник Гейгера з контролером ESP12.OLED (на базі ESP8266) з сенсором GGreg20_V3

У якості публічного каналу ThingSpeak як приклад наводимо для наш власний демо-канал, який ми нещодавно створили для вимірювання радіації в київському регіоні.

F2. GGreg20_V3 Radiation Sensor Node data flow to ThingSpeak

Примітка: зверніть увагу, що в такий спосіб ви можете підключати до сервера Home Assistant будь-який контролер з будь-яким сенсором, який вже налаштовано на відправку показників у хмару ThingSpeak. У цій статті ми наводимо приклади на пристроях нашого виробництва.

Таким чином, щоб провести з нами разом досліди і реалізувати приклади цієї статті вам необхідно мати: 

  • контролер на базі ESP8266, як у нас, або будь-який інший з підтримкою REST (HTTP POST/GET); 
  • модуль GGreg20_V3, або будь-який інший сенсор; 
  • налаштований публічний канал ThingSpeak: власний (щоб мати змогу вносити зміни), або наш (тільки читання, як приклад); 
  • програмний код (у нашому випадку це Lua-скрипт для прошивки NodeMCU), який відправляє дані з контролера у хмару ThingSpeak;
  • сервер Home Assistant з доступом адміністратора.

Отже, у нас є модуль ESP12.OLED з прошивкою NodeMCU і розробленим кодом на Lua та підключеним до нього сенсором GGreg20_V3, який вже працює з сервісом ThingSpeak. Нам дуже не хочеться вносити в нього якісь зміни спеціально для Home Assistant. Крім того, сенсор, що у нас вже є, підключено до Twitter через ThingSpeak у якості демонстраційного сенсорного вузла. Тож втручатися в його роботу до наших планів не входить.. Але ми хочемо також отримувати з нього виміри в наш сервер Home Assistant. Ба більше, це може бути сенсор сусіда, який ми також можемо використовувати як джерело даних для нашого Home Assistant. Саме тому ми вирішили скористатися з наявних інструментів і вирішити всі задачі одночасно з мінімальними трудовитратами.

Інформаційні потоки

Отже з одного боку маємо діючий сенсор, який вже передає дані вимірювань у ThingSpeak, та в роботу якого ми не можемо чи не бажаємо втручатися. З іншого боку, маємо сервер Home Assistant, на який ми хочемо підключити цей сенсор.

Це можливо зробити завдяки можливостям, які нам надає сервіс ThingSpeak. Схема руху даних наведена на наступному Рис.

F3. Data Flows: Home Assistant – ThingSpeak HTTP GET Request/Response

Наш демонстраційний канал для модуля GGreg20_V3 на ThingSpeak працює у постійному режимі та має такий вигляд:

F4. Public GGreg20_V3 Radiation Sensor Node Channel at ThingSpeak

Адреса даного каналу така: https://thingspeak.com/channels/1749073

Крім цього каналу ви також можете переглядати та підписатися на твіти нашого демо-модуля у мережі Twitter за посиланням: https://twitter.com/GGreg20_V3

F5. GGreg20_V3 Radiation Sensor Node tweeting live from Kyiv

Також рекомендуємо переглянути корисні розділи нашого сайту за цією темою:

Реалізація задачі у Home Assistant

Сервер Home Assistant має всі необхідні механізми та інструменти для реалізації поставленої нами задачі. Таке підключення віртуального сенсора до даних у хмарі вирішується в кілька рядків конфігурації у файлі /config/configuration.yaml сервера:

#YAML 
  - platform: rest 
    name: UA GGreg20_V3 Radiation Sensor Node 
    resource: https://api.thingspeak.com/channels/1749073/fields/2.json?results=1 
    scan_interval: 300 # check every 5 minutes 
    unit_of_measurement: uSv/h  
    value_template: '{{ value_json.feeds.0.field2 }}' 
    headers: 
      Content-Type: application/json 
#YAML 

Результати

Після додавання такого фрагменту конфігурації та перезапуску сервера ми отримуємо новий сенсор в Home Assistant. На наступних Рис. наводимо скріншоти отриманих результатів:

F6. Developer Tools Menu. New sensor entity

Віджети, які ми створили для перегляду даних сенсора в Home Assistant:

F7. Dashboard widget examples

Отримавши на рівні Home Assistant новий сенсор, ми можемо виконувати за його допомогою такі задачі, наче це справжній сенсор: 

  • реалізовувати сценарії автоматизації, 
  • створювати віджети, 
  • сповіщати про рівні радіації за порогами, 
  • використовувати значення з сенсора як вхідні дані для інших пристроїв, підключених до Home Assistant, тощо.

Окремо хочемо наголосити, що Home Assistant має у своєму арсеналі не лише прекрасний і потужний Web-додаток для браузера, а ще й має повнофункціональний та зручний додаток для смартфонів з Android / iOS. Також Home Assistant через сервіси Nabu Casa дозволяє користувачам отримувати віддалений доступ до повного функціоналу сервера через Web і мобільний застосунок з будь-якої локації, де є підключення до інтернет.

Висновки

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

У нашому випадку ми легко підключили до Home Assistant абсолютно нестандартний контролер (прошивка NodeMCU з мовою Lua) з таким же нестандартним модулем детектора радіації GGreg20_V3. Жоден з цих пристроїв у такій конфігурації не підтримується та не розпізнається сервером автоматично, але завдяки наявності підтримки REST та завдяки існуванню сервісу ThingSpeak ми спромоглися підключити сенсор ще простіше і швидше, ніж ми підключали б його стандартним методом через прошивку ESPHome.

І найголовніше, що йдучи цим шляхом ми не внесли жодної зміни у сенсор, який у нас вже був запрограмований і працює на Lua.

Ось лише погляньте, які задачи інтеграції ми змогли вирішити: 

  • мова програмування, яку ми добре знаємо і надаємо їй перевагу, несумісна з Home Assistant;
  • ми хочемо мати сенсор радіації в Home Assistant, щоб мати доступ до його даних через гарні віджети у додатку та мати сценарії автоматизації зі сповіщеннями на смартфон;
  • ми не хотіли переробляти сенсор, що працює на передачу у ThingSpeak.

Ми вирішили всі ці питання авдяки протоколу REST (HTTP), сервісу ThingSpeak та серверу Home Assistant. Подяка їх розробникам.

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

IoT-devices, LLC