Съдържание:

Домашен асистент Гейгер Интеграция: 8 стъпки
Домашен асистент Гейгер Интеграция: 8 стъпки

Видео: Домашен асистент Гейгер Интеграция: 8 стъпки

Видео: Домашен асистент Гейгер Интеграция: 8 стъпки
Видео: Home Assistant - многотарифный счетчик электроэнергии для новичков, настройка в интерфейсе 2024, Ноември
Anonim
Image
Image
Принцип на работа
Принцип на работа

В този урок ще ви покажа как да добавяте персонализирани сензори към HASS (домашен асистент) по -конкретно брояч на Гейгер, но процесът е подобен и за други сензори.

Ще използваме платката NodeMCU, базиран на arduino брояч на Гейгер и вече инсталиран домашен помощник.

Интеграцията ще се основава на MQTT сървър (публичен или частен) и аз ще ви взема стъпка по стъпка с това.

В случай, че не знаете какво е домашен асистент, моля, посетете страницата им https://www.home-assistant.io/. Това е добре известна платформа за домашна автоматизация, която е много добре поддържана и персонализирана.

Ще научите за:

- разширена конфигурация за Home Assistant

- NodeMCU (борд за разработка) и как да го програмирате с Arduino IDE

- OTA (по въздуха актуализации), използвайки Arduino IDE за платката NodeMCU

- как да свържете серийно устройство към NodeMCU

- ръчно инсталиране на MQTT сървър в Linux (по избор)

Основни предположения:

- имате домашен асистент и работи

- знаете малко за електрониката

- имате инсталиран Arduino IDE

Стъпка 1: Части и инструменти

Части:

1. Платка NodeMCU

2. хляб

3. мъжки-мъжки и мъжки-женски проводници

3. usb към micro usb кабел

4. брояч arduino geiger със сериен интерфейс

(потърсете в Ebay за "arduino geiger couter")

5. радиоактивен материал (по избор малка проба за изпитване)

Инструменти:

1. IDE на Arduino

2. Инсталиран Home Assistant

Стъпка 2: Принцип на работа

Нашата цел е да покажем на HomeAssistat (HASS) показанията от брояча на Гейгер. От едната страна имаме HASS сървър, работещ някъде, може да е малиново пи или друго устройство, а от другата страна имаме брояча на Гейгер.

Броячът на Гейгер има сериен порт, едно решение ще бъде да свържете директно серийния порт към RaspberryPi, на който работи HASS.

Някои причини, поради които може да не е добра идея:

- там няма физическо пространство

- имаме някакво друго устройство на серийния порт

- искаме да прикачим сензор за околната среда, който трябва да бъде поставен навън вместо брояча на Гейгер

Добре, така че ще проучим друга възможност за осъществяване на връзката чрез WIFI:

HASS поддържа четене на сензорни данни и показване на това, че чрез MQTT сървър, този вид сървър е връзка с малко тегло за малки устройства, едното устройство публикува съобщение по „тема“, другото слуша по тази тема, за да получи съобщението. Така че HASS ще слуша и имаме нужда от нещо, което да публикува съобщението.

Нашият сензор знае само да говори по серийна линия, така че ще използваме платка, която може да чете серийна линия и която може да се свързва през WIFI и да говори с MQTT сървъра. Евтина платка, която прави това, е NodeMCU.

NodeMCU може да бъде програмиран с Arduino IDE. Скицата е доста проста, прави следното:

- свързва се с WIFI

- поддържа MQTT връзка със сървъра и опитва отново връзката при неуспех или прекъсване

- слуша входящите серийни данни като поредица от цели числа

- след като едно цяло число пристигне, то го изпраща чрез MQTT до определена тема

Стъпка 3: Сглобете устройството

Сглобете устройството
Сглобете устройството

Ще използваме макети и проводници, така че е сравнително просто, имаме няколко стъпки:

- поставете NodeMCU на макета

- свържете тръбата на Гейгер към брояча на Гейгер (внимавайте за полярността)

- VIN отива към брояча на Гейгер +

- GND goest to geiger counter -

- NodeMCU D7 (щифт 13) отива към Geiger TX

- NodeMCU D8 (щифт 15) отива към geiger RX

- захранване на NodeMCU чрез микро USB от компютъра

Стъпка 4: Качете кода

Качете кода
Качете кода
Качете кода
Качете кода
Качете кода
Качете кода
Качете кода
Качете кода

Ще използваме Arduino IDE и ще се уверим, че имаме инсталирана платката NodeMCU и инсталирана библиотеката Adafruit_MQTT.

1. Клонирайте хранилището на github: https://github.com/danionescu0/arduino и копирайте скицата от проекти/HASSGeigerIntegration на вашето място за скици на arduino

2. Отворете Arduino IDE и инсталирайте NodeMCU

- отидете на Файл -> Предпочитания, в URL адресите на Допълнителните платки добавете https://arduino.esp8266.com/stable/package_esp8266com_index.json, ако вече имате нещо, поставете кома отпред и щракнете върху OK

-от Tools -> Board -> Board Manager въведете „nodemcu“и изберете записа esp8266 от ESP8266 Community и натиснете install

3. Инсталирайте Adafruit_MQTT

-отидете на Инструменти -> Управление на библиотеки -> потърсете „Adafruit_MQTT“и инсталирайте „Arduino MQTT библиотека“

4. Включете USB кабела във вашия компютър и конфигурирайте платката:

-отидете на Tools -> Board -> изберете NodeMcu 1.0

-Инструменти -> Порт -> вашия USB порт

- оставете останалите настройки непроменени

4. В скицата променете вашите идентификационни данни за WIFI, така че да съответстват на вашите собствени:

#define STASSID "ssid" // Заменете с вашия WIFI SSID

#define STAPSK "pass" // Заменете с паролата си за WIFI

5. Качете скицата на дъската си и след качването нулирайте дъската от бутона

6. Отворете серийния монитор, ако всичко е наред, трябва да видите изход като този:

Зареждане

IP адрес: 192.168.1.168 активиран OTA Свързване към MQTT… MQTT Свързан! {"радиация": 0,03}..

Стъпка 5: Конфигурирайте HomeAssistant

Конфигурирайте HomeAssistant
Конфигурирайте HomeAssistant
Конфигурирайте HomeAssistant
Конфигурирайте HomeAssistant

Ще приемем, че имате работещ домашен помощник. В моята система имам HASSOS версия 3.12 на RaspberryPi. Ако вашата версия на домашния асистент е твърде стара или много нова, някои функции може да се различават. Този урок работи със сигурност с версия 3.12.

Ако нямате инсталиран Home Assistant, вижте официалното им ръководство за инсталиране:

Преди да продължите с инсталацията, уверете се, че NodeMCU е включен и той публикува данни.

Добре, тук ще имаме серия от стъпки за конфигурацията:

1. Инсталирайте „файлов редактор“, ако го нямате в менюто, ето официалния урок:

2. Редактирайте файла "/config/configuration.yaml" и добавете следното и го запазете

- секцията mqtt, ако вече нямате такава

mqtt:

брокер: broker.hivemq.com откритие: вярно откриване_префикс: ха

- сензорната секция

сензор:

- платформа: mqtt име: "Радиация" state_topic: "ha/радиация" unit_of_measurement: 'uSv' unique_id: "radiation" value_template: "{{value_json.radiation}}"

3. От Конфигурация -> Контроли на сървъра: натиснете „Проверете конфигурацията“, проверете конфигурационния файл на yaml за грешки, след което натиснете „рестартиране“и изчакайте, докато се рестартира

4. От преглед -> меню в горния десен ъгъл -> Конфигуриране на потребителския интерфейс -> натиснете бутона + от долния десен ъгъл

5. Изберете „сензор“от списъка -> в полето „обект“потърсете „сензор.радиация“, в полето за име напишете „Излъчване“и щракнете върху OK, то трябва да е на главната страница сега

Стъпка 6: Конфигуриране на вашия собствен MQTT сървър [По избор]

Нека да обсъдим малко за MQTT

„MQTT е транспортен протокол за съобщения за публикуване/абониране на клиентски сървър. Той е лек, отворен, прост и проектиран така, че да бъде лесен за изпълнение. Тези характеристики го правят идеален за използване в много ситуации, включително ограничени среди, като например за комуникация в контекста Machine to Machine (M2M) и Internet of Things (IoT), където се изисква малък отпечатък на код и/или мрежовата честотна лента е на първо място.”

Цитат от официалната спецификация на MQTT 3.1.1.

Така че по принцип можем да публикуваме съобщение някъде от едната страна, а от другата страна можем да изслушаме тези съобщения и да направим нещо с данните. MQTT поддържа „теми“, темите са низове, които брокерът използва за филтриране на съобщения за всеки клиент, така че ако публикуваме съобщение на тема „/радиация“, слушателят трябва да се абонира за същата тема, за да получи съобщенията, които изпращаме.

Ето един чудесен урок за MQTT в детайли:

Използването на безплатния сървър за кошери има някои недостатъци като:

- всеки, който слуша вашата тема, ще получи вашите съобщения

- ако се понижи или изисква плащане по -късно, няма да можете да го използвате (освен ако не платите)

- ако някой, който публикува съобщения на същата тема, вие също ще получите своите съобщения, той може да публикува несъвместими съобщения и да разбие вашите HASS графики

Използване на частен сървър

Ако не искате да използвате публичния безплатен сървър, имате възможност за частен сървър. Ще инсталираме Mosquitto MQTT на ubuntu / debian сървър като малинов pi или компютър.

Mosquitto е сървър, който внедрява MQTT протокол и е безплатен.

За да го инсталирате, влезте във вашия raspnerry pi или друг сървър, базиран на debian и стартирайте:

sudo apt актуализация

sudo apt install -y mosquitto mosquitto -клиенти sudo systemctl активира mosquitto.service

Това ще актуализира хранилището, ще инсталира Mosquiito сървър и клиент и ще му даде възможност да стартира услуга при стартиране

За да получите IP сървъра, изпълнете:

име на хост -I

и ще изведе нещо като:

192.168.1.52 172.17.0.1 172.18.0.1

Моят ip е 192.168.1.52, в командите по -долу го заменете с вашия собствен ip

Можете да тествате сървъра MQTT, като публикувате съобщение и го получите с инструмента за конзолата, за това трябва да се отворят два терминала, който слуша съобщение, който ще публикува съобщението.

Първо в терминал изпълнете тази команда, за да изслушате съобщение на „/some-topic“

mosquitto_sub -h 192.168.1.52 -t /some -topic

Отворете друг терминал и публикувайте съобщение към тази тема:

mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"влажност": 74.0}'

В първия терминал трябва да видите отпечатано „{" влажност ": 74.0}".

Специално внимание:

- тази настройка предполага, че HASS, Mosquitto и NodeMCU са свързани към една и съща WIFI мрежа и няма правила за защитна стена и те могат да комуникират свободно

-сървърът на Mosquitt MQTT няма потребителско име/парола, ако искате да настроите идентификационни данни, проверете това: https://www.steves-internet-guide.com/mqtt-username-password-example/ Също така ще трябва да конфигурирате идентификационните данни в Home Assistant и в скицата на arduino

Стъпка 7: OTA (актуализации по въздуха) за NodeMCU

Актуализациите по безжичен път означават, че платката за разработка може да се мига безжично, без да е необходим физически кабел.

Arduino IDE поддържа тази функционалност за серия ESP8266 и някои други платки:

- изисква първоначална светкавица през USB кабела

- създава виртуален порт през WIFI и е видим само от Arduino IDE

- няма налична информация за серийно отстраняване на грешки

- поддържа защита с парола

За да активирате OTA в скица на ESP8266, първо включете библиотеката:

#включва "ArduinoOTA.h"

Също така дефинирайте тази константа за парола за скица:

#define SKETCHPASS "some_password"

В раздела за настройка добавете тези редове:

while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("Връзката е неуспешна! Рестартиране …"); забавяне (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {String type; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Започнете актуализирането " + тип);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA. ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [%u]:", error); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} else if (грешка == OTA_BEGIN_ERROR) {Serial.println ("Begin Failed");} else if (error == OTA_CONNECT_ERROR) {Serial.println ("Connect Failed");} else if (error == OTA_RECEIVE_ERROR) {Serial.println (" Получаване неуспешно ");} else if (error == OTA_END_ERROR) {Serial.println (" End Failed ");}}); ArduinoOTA.begin (); Serial.print ("IP адрес:"); Serial.println (WiFi.localIP ());

И в секцията цикъл добавете този ред:

ArduinoOTA.handle ();

След първоначалното качване на кода след зареждане на платката трябва да видите в IDE на Arduino в секцията Инструменти-> Порт два типа портове:

Серийни портове: /dev /ttyUSB0 (например)

Мрежови портове: esp8266-xxxxx на 192.168.1.xxx

Сега можете да изберете мрежовия порт и да качите дистанционното за скица, ще бъдете подканени за паролата за скица (тази, която сте дефинирали в константа по -горе)

Стъпка 8: Заключения, бъдеща работа

Този урок може лесно да бъде променен за изпращане на данни за други видове сензори:

- ако вашият сензор се поддържа директно от NodeMCU чрез библиотека, просто обединете данните от сензора и ги изпратете директно през MQTT

- ако библиотеката на сензорите не работи с NodeMCU, но е само за Arduino, качете вашия код в arduino, изведете стойността през серийния ред и я прочетете в NodeMCU и я натиснете (точно както направихме с брояча на Гейгер)

Можем дори да го модифицираме, за да изпращаме данни от множество сензори по следния начин:

- свържете вашите сензори към NodeMCU

- данни от анкетата от всеки сензор

- за всеки от сензорите публикувайте данните в различна тема

- в HASS дефинирайте множество сензори (както направихме с гейгера), които ще слушат различни теми

Препоръчано: