Мазмуну:

Үй жардамчысы Geiger Counter интеграциясы: 8 кадам
Үй жардамчысы Geiger Counter интеграциясы: 8 кадам

Video: Үй жардамчысы Geiger Counter интеграциясы: 8 кадам

Video: Үй жардамчысы Geiger Counter интеграциясы: 8 кадам
Video: Ошибки в сантехнике. Вводной узел в квартиру. 2024, Июль
Anonim
Image
Image
Иштөө принциби
Иштөө принциби

Бул үйрөткүчтө мен кантип HASSке (үйдүн жардамчысы) бажы сенсорлорун кошуу керектигин көрсөтөм, тагыраагы геигер эсептегич, бирок процесс башка сенсорлорго окшош.

Биз NodeMCU тактасын, arduino негизделген гейгер эсептегичин жана буга чейин орнотулган үй жардамчысын колдонобуз.

Интеграция MQTT серверине негизделет (ачык же жеке) жана мен муну менен кадам сайын кадам шилтеп жатам.

Эгерде сиз үй жардамчысы эмне экенин билбесеңиз, анда алардын баракчасына баш багыңыз https://www.home-assistant.io/. Бул үйдүн автоматташтырылган платформасы, ал абдан жакшы тейленет жана абдан ыңгайлаштырылат.

Сиз төмөнкүлөрдү үйрөнөсүз:

- Home Assistant үчүн өркүндөтүлгөн конфигурация

- NodeMCU (өнүктүрүү тактасы) жана аны Arduino IDE менен кантип программалоо

- OTA (аба жаңыртууларында) NodeMCU тактасы үчүн Arduino IDE колдонуп

- сериялык түзмөктү NodeMCUге кантип туташтыруу керек

- Linux боюнча MQTT серверин кол менен орнотуу (милдеттүү эмес)

Негизги божомолдор:

- Сизде Home Assistant иштеп жатат

- Сиз электроника жөнүндө бир аз билесиз

- сизде Arduino IDE орнотулган

1 -кадам: Бөлүктөр жана шаймандар

Бөлүктөр:

1. NodeMCU тактасы

2. нанкорд

3. эркек-эркек жана ургаачы ургаачы зымдары

3. usb to micro usb cable

4. arduino geiger сериялык интерфейси бар эсептегич

("arduino geiger couter" үчүн Ebayден издеңиз)

5. радиоактивдүү материал (милдеттүү эмес кичинекей сыноо үлгүсү)

Куралдар:

1. Arduino IDE

2. Home Assistant орнотулду

2 -кадам: Иш принциби

Биздин максат - HomeAssistat (HASS) боюнча геигер эсептегичтин көрсөткүчтөрүн көрсөтүү. Бир жагынан бизде HASS сервери иштеп жатат, бул жерде малина пи же башка түзмөк болушу мүмкүн, экинчи жагынан бизде геигер эсептегич бар.

Гейгер эсептегичтин сериялык порту бар, бир чечим HASS иштеген RaspberryPiге түз сериялык портту тиркөө болот.

Жакшы идея болбошунун кээ бир себептери:

- ал жерде физикалык мейкиндик жок

- бизде сериялык портто дагы башка түзмөк бар

- биз геигер эсептегичтин ордуна сыртта жайгаштырылышы керек болгон экологиялык сенсорду тиркегибиз келет

Макул, биз дагы бир мүмкүнчүлүктү изилдеп жатабыз, WIFI аркылуу туташуу:

HASS сенсордук маалыматтарды окууну колдойт жана MQTT сервери аркылуу мындай сервер кичинекей түзмөктөр үчүн жөнөкөй байланыш болуп саналат, бир аппарат "темада" билдирүү жарыялайт, экинчиси ошол теманы угат. Ошентип, HASS угат жана бизге билдирүүнү жарыялай турган нерсе керек.

Биздин сенсор сериялык линия аркылуу сүйлөшүүнү гана билет, андыктан биз WIFI аркылуу туташып, MQTT сервери менен сүйлөшө турган сериялык линияны окуй турган тактайды колдонобуз. Муну аткарган арзан такта - NodeMCU.

NodeMCU Arduino IDE менен программаланышы мүмкүн. Эскиз абдан жөнөкөй, ал төмөнкүлөрдү аткарат:

- WIFIге туташат

- сервер менен MQTT байланышын жүргүзөт жана ишке ашпай калганда же ажыратылганда туташууну кайталап көрөт

- сериялык келген маалыматтарды бүтүн сандар катарында угат

- бүтүн сан келгенден кийин аны MQTT аркылуу белгилүү бир темага жөнөтөт

3 -кадам: Түзмөктү чогултуу

Түзмөктү чогултуу
Түзмөктү чогултуу

Биз нан такталарын жана зымдарды колдонобуз, ошондуктан бул абдан жөнөкөй, бизде бир нече кадам бар:

- NodeMCUду нан тактасына коюңуз

- геигер түтүкчөсүн геигер эсептегичке туташтырыңыз (полярдуулукка көңүл буруңуз)

- VIN геигер эсептегичке барат +

- GND goiger эсептегичине барат -

- NodeMCU D7 (пин 13) geiger TXке барат

- NodeMCU D8 (pin 15) geiger RXке барат

- NodeMCUну компьютерден микро USB аркылуу иштетүү

4 -кадам: Кодду жүктөө

Кодду жүктөө
Кодду жүктөө
Кодду жүктөө
Кодду жүктөө
Кодду жүктөө
Кодду жүктөө
Кодду жүктөө
Кодду жүктөө

Биз Arduino IDE колдонобуз жана NodeMCU тактасы орнотулганына жана Adafruit_MQTT китепканасы орнотулганына ишенебиз.

1. Github репозиторийин клондоштуруу: https://github.com/danionescu0/arduino жана долбоорлордун эскизин көчүрүү/HASSGeigerIntegration to your arduino sketchbook location

2. Arduino IDE ачыңыз жана NodeMCU орнотуңуз

- Файлга -> Тандоолорго өтүңүз, Кошумча такталар менеджеринин URL дарегине https://arduino.esp8266.com/stable/package_esp8266com_index.json кошуңуз, эгерде сизде буга чейин бир нерсе болсо, команы коюп, OK баскычын чыкылдатыңыз.

-Tools -> Board -> Board Manager "nodemcu" терип, ESP8266 Community тарабынан esp8266 жазуусун тандап, орнотууну басыңыз.

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ти конфигурациялоо

Сизде үй жардамчысы иштеп жатат деп ойлоп жатабыз. Менин тутумумда RaspberryPiде HASSOS 3.12 версиясы бар. Эгерде сиздин үй жардамчыңыздын версиясы өтө эски же өтө жаңы болсо, кээ бир өзгөчөлүктөр айырмаланышы мүмкүн. Бул окуу куралы сөзсүз түрдө 3.12 версиясы менен иштейт.

Эгерде сизде Home Assistant орнотулган эмес болсо, алардын расмий орнотуу көрсөтмөсүн караңыз:

Орнотууну улантуудан мурун, NodeMCU сайылганын жана маалыматтарды жарыялаганын текшериңиз.

Макул, бизде конфигурация үчүн бир катар кадамдар болот:

1. "Файл редакторун" орнотуңуз, эгер менюда жок болсо, бул жерде расмий үйрөткүч бар:

2. "/config/configuration.yaml" файлын түзөтүп, төмөнкүлөрдү кошуңуз жана сактаңыз

- mqtt бөлүмү, эгер сизде буга чейин жок болсо

mqtt:

брокер: broker.hivemq.com ачылышы: чыныгы discovery_prefix: га

- сенсорлор бөлүмү

сенсор:

- платформа: mqtt аты: "Радиация" абалы_темасы: "га/нурлануу" бирдигинин_өлүмү: 'uSv' уникалдуу_ид: "нурлануунун" мааниси_темплети: "{{value_json.radiation}}"

3. Конфигурациядан -> Серверди көзөмөлдөө: "Конфигурацияны текшерүү" баскычын басып, yaml конфигурация файлын каталар үчүн текшериңиз, анан "кайра баштоо" баскычын басып, кайра башталганча күтө туруңуз.

4. Обзордон -> Жогорку оң бурчтагы меню -> UIди конфигурациялоо -> астынкы оң жактагы + баскычын басыңыз

5. Тизмеден "сенсорду" тандаңыз -> "субъект" талаасында "sensor.radiation" издеңиз, аталыш талаасында "Radiation" деп жазыңыз жана Ok чыкылдатыңыз, ал азыр башкы бетте болушу керек

6 -кадам: Өз MQTT серверин конфигурациялоо [Милдеттүү эмес]

Келгиле, MQTT жөнүндө бир аз талкуулайлы

MQTT - бул Client Server жарыялоо/жазылуу транспорттук протоколу. Бул жеңил, ачык, жөнөкөй жана ишке ашыруу үчүн оңой иштелип чыккан. Бул мүнөздөмөлөр көптөгөн жагдайларда, анын ичинде чектелген чөйрөдө, мисалы, Машинадан Машинага (M2M) жана Интернеттин (IoT) контекстинде кичинекей коддун изи талап кылынган жана/же тармактын өткөрүү жөндөмү премиум болгон контексттерде колдонуу үчүн идеалдуу кылат.”

Расмий MQTT 3.1.1 спецификациясынан цитата.

Ошентип, негизинен, биз билдирүүнү бир жакка жарыялай алабыз, экинчи тараптан ошол билдирүүлөрдү угуп, маалыматтар менен бир нерсе кыла алабыз. MQTT "темаларды" колдойт, темалар - бул брокер ар бир кардар үчүн билдирүүлөрдү чыпкалоо үчүн колдонгон саптар, ошондуктан биз "/радиация" темасына билдирүү жарыяласак, угуучу биз жөнөтүп жаткан билдирүүлөрдү алуу үчүн ошол эле темага жазылышы керек.

Бул жерде MQTT жөнүндө кеңири маалымат:

Бекер уюк серверин колдонуунун кээ бир кемчиликтери бар:

- темаңызды уккан адам сиздин билдирүүлөрдү алат

- эгер ал төмөндөп кетсе же кийинчерээк төлөм талап кылынса, аны колдоно албай каласыз (эгер сиз төлөбөсөңүз)

- Эгерде кимдир бирөө ошол эле темага билдирүүлөрдү жарыяласа, анда сиз алардын билдирүүлөрүн аласыз, алар дал келбеген билдирүүлөрдү жарыялашы жана HASS графиктериңизди бузушу мүмкүн.

Жеке серверди колдонуу

Эгерде сиз ачык акысыз серверди колдонууну каалабасаңыз, анда жеке сервердин тандоосу бар. Биз Mosquitto MQTT'ди малина pi же компьютер сыяктуу ubuntu / debian серверине орнотобуз.

Mosquitto - бул MQTT протоколун ишке ашыруучу сервер жана ал бекер.

Аны орнотуу үчүн raspnerry pi же debianга негизделген башка серверге кирип, иштетиңиз:

sudo apt update

sudo apt install -y mosquitto mosquitto -clients sudo systemctl mosquitto.service иштетүү

Бул репозиторийди жаңыртып, чиркейлердин серверин жана кардарын орнотот жана кызматты ишке киргизүүдө иштетет

IP серверин алуу үчүн:

хосттун аты -I.

жана ал мындай нерсени чыгарат:

192.168.1.52 172.17.0.1 172.18.0.1

Ошентип, менин IP 192.168.1.52, төмөндөгү буйруктарда аны жеке IP менен алмаштырыңыз

Сиз MQTT серверин билдирүү жарыялоо жана аны консоль куралы менен кабыл алуу аркылуу текшере аласыз, анткени бул эки терминал билдирүүнү угуучу, билдирүүнү жарыялай турган ачылышы керек.

Адегенде терминалда "/кээ бир тема" боюнча билдирүү угуу үчүн бул буйрукту аткарыңыз.

mosquitto_sub -h 192.168.1.52 -t /кээ -тема

Башка терминалды ачыңыз жана ошол темага билдирүү жарыялаңыз:

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/ Ошондой эле конфигурациялашыңыз керек үй жардамчысынын жана arduino эскизиндеги ишеним грамоталары

7 -кадам: NodeMCU үчүн OTA (аба жаңыртуулары)

Абанын жаңыртуулары, өнүгүү тактасын физикалык кабелге муктаж болбостон, wirelesly жаркылдайт дегенди билдирет.

Arduino IDE бул функцияны ESP8266 сериясы жана башка кээ бир такталар үчүн колдойт:

- USB кабели аркылуу баштапкы жаркыроону талап кылат

- WIFI аркылуу виртуалдык портту түзөт жана ал Arduino IDEден гана көрүнөт

- Сериялык мүчүлүштүктөр жөнүндө маалымат жок

- сырсөз менен коргоону колдойт

OTAны ESP8266 эскизинде иштетүү үчүн алгач китепкананы камтыйт:

#"ArduinoOTA.h" кошуу

Ошондой эле бул эскиз сырсөзүн аныктаңыз:

#аныктоо SKETCHPASS "some_password"

Орнотуу бөлүмүнө бул саптарды кошуңуз:

жатканда (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 ("\ nАкыры");}); ArduinoOTA.onProgress ( (колу жок прогресс, белгисиз int жалпы) {Serial.printf ("Прогресс:%u %% / r", (прогресс / (бардыгы / 100)));}); ArduinoOTA.onError ( (ota_error_t ката) {Serial.printf ("Error [%u]:", ката); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} if if (error == OTA_BEGIN_ERROR) {Serial.println ("Башталбай калды");} башка болсо (ката == OTA_CONNECT_ERROR) {Serial.println ("Туташпай калды");} башка болсо (ката == 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 ();

Баштапкы код жүктөлгөндөн кийин, такта жүктөлгөндөн кийин, Arduino IDEде Tools-> Port бөлүмүндө порттордун эки түрүн көрүшүңүз керек:

Сериялык порттор: /dev /ttyUSB0 (мисалы)

Тармак порттору: esp8266-xxxxx at 192.168.1.xxx

Эми сиз тармак портун тандап, эскиз пультун жүктөй аласыз, сизден эскиздин сырсөзү талап кылынат (сиз жогоруда туруктуу аныктаган пароль)

8 -кадам: Жыйынтыктар, Келечектеги Иш

Бул окуу куралы сенсорлордун башка түрлөрү жөнүндө маалыматтарды жөнөтүү үчүн оңой өзгөртүлүшү мүмкүн:

- Эгерде сиздин сенсор түздөн -түз NodeMCU тарабынан китепкана аркылуу колдоого алынса, жөн гана сенсордогу маалыматтарды чогултуп, аны MQTT аркылуу түз түртүңүз.

- эгер сенсордук китепкана NodeMCU менен иштебесе, бирок бул Arduino үчүн гана болсо, анда кодуңузду arduinoго жүктөңүз, маанини сериялык сызык аркылуу чыгарыңыз жана NodeMCUдан окуп, аны түртүңүз (биз геигер эсептегичте болгондой эле)

Биз аны бир нече сенсорлордон маалыматтарды жөнөтүү үчүн өзгөртө алабыз:

- сенсорлоруңузду NodeMCUге туташтырыңыз

- ар бир сенсордон сурамжылоо маалыматы

- сенсордун ар бири үчүн маалыматтарды башка темага жарыялоо

- HASSте ар кандай темаларды уга турган бир нече сенсорлорду аныктайбыз (биз геигер менен болгондой)

Сунушталууда: