Съдържание:
- Стъпка 1: Части и инструменти
- Стъпка 2: Принцип на работа
- Стъпка 3: Сглобете устройството
- Стъпка 4: Качете кода
- Стъпка 5: Конфигурирайте HomeAssistant
- Стъпка 6: Конфигуриране на вашия собствен MQTT сървър [По избор]
- Стъпка 7: OTA (актуализации по въздуха) за NodeMCU
- Стъпка 8: Заключения, бъдеща работа
Видео: Домашен асистент Гейгер Интеграция: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
В този урок ще ви покажа как да добавяте персонализирани сензори към 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
Ще приемем, че имате работещ домашен помощник. В моята система имам 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 дефинирайте множество сензори (както направихме с гейгера), които ще слушат различни теми
Препоръчано:
DIY Интелигентна отварачка за гаражни врати + интеграция на домашен асистент: 5 стъпки
DIY Интелигентна отварачка за гаражни врати + Интеграция на домашен асистент: Превърнете нормалната си гаражна врата умно, като използвате този проект „Направи си сам“. Ще ви покажа как да го изградите и контролирате с помощта на Home Assistant (над MQTT) и да имате възможност за дистанционно отваряне и затваряне на гаражната врата. Ще използвам платка ESP8266, наречена Wemos
Работен брояч на Гейгер W/ минимални части: 4 стъпки (със снимки)
Работещ брояч на Geiger W/ минимални части: Ето, доколкото ми е известно, най -простият функциониращ брояч на Geiger, който можете да изградите. Този използва руска тръба SMG-20 на Гейгер, задвижвана от усилваща верига за високо напрежение, ограбена от електронен мухобой. Той открива бета частици и гам
Направи си сам брояч на Гейгер с ESP8266 и сензорен екран: 4 стъпки (със снимки)
Направи си сам брояч на Гайгер с ESP8266 и сензорен екран: АКТУАЛИЗИРАНЕ: НОВА И ПОДОБРЕНА ВЕРСИЯ С WIFI И ДРУГИ ДОБАВЕНИ ХАРАКТЕРИСТИКИ ТУК проектирах и изградих брояч на Гайгер - устройство, което може да открива йонизираща радиация и да предупреждава потребителя си за опасни нива на радиация от околната среда с всички твърде познат кликване не
Нов и подобрен брояч на Гейгер - сега с WiFi!: 4 стъпки (със снимки)
Нов и подобрен брояч на Гайгер - сега с WiFi !: Това е актуализирана версия на моя брояч на Гайгер от тази инструкция. Беше доста популярен и получих много обратна връзка от хора, които се интересуват от изграждането му, така че ето продължението: GC-20. Брояч на Гайгер, дозиметър и радиация
Превърнете кабелния си звънец в интелигентен звънец с домашен асистент: 6 стъпки
Превърнете кабелния си звънец в интелигентен звънец с домашен асистент: Превърнете съществуващия кабелен звънец в интелигентен звънец. Получавайте известие на телефона си или се сдвоете със съществуващата камера на входната врата, за да получите предупреждение за снимка или видео всеки път, когато някой ви звъни на вратата. Научете повече на: fireflyelectronix.com/pro