Приклади рішень для Інтернету речей в IoT проекті - Народний Моніторинг

Як додати датчик на мапуу | Як додати веб-камеру на мапу | Як передати покази | База знань з датчиків

+ У цьому розділі зібрані приклади і керівництва від учасників проекту в т.ч. і на зовнішніх ресурсах.
якщо ви виявили помилку або хочете додати статтю в список - повідомте в техпідтримку.

+ За публікацію статей або відео в якості посібника для початківців або для обміну досвідом (з реферальним посиланням на проект), ви будете отримувати бонус до ліміту за кожного активного учасника, який прийшов з вашої статті до нас в проект.

+ Підключення Raspberry Pi до проекту

Для передачі показань на сервер проекту також може бути використано і Raspberry Pi. Нижче наводяться посилання на деякі способи знімання показань за допомогою Raspberry Pi з метою їх дальньої передачі на сервер проекту згідно з протоколом передачі показань.

- Робота з «Народний моніторинг» на Python з Raspberry Pi / Habr
- Надсилання даних про температуру з роутера TL-MR3020 і Raspberry Pi на «Народний моніторинг» / Habr
- Підключаємо безпровідний дозиметр радіації до сервісу «Народний моніторинг» через Raspberry PI / Habr
- Історія взаємодії «чайника» і DS18B20 допомогою Raspberry Pi з відправкою даних на narodmon.ru / Habr

Питання, зауваження та доповнення - пишіть на admin @ narodmon.ru

+ Підключення приладів на базі Ардуино до проекту

Для передачі показань датчиків можуть бути використані розробки на основі Arduino або Freeduino. Нижче наводяться посилання на деякі варіанти реалізації знімання показань датчиків і передачі їх на сервер проекту згідно з протоколом передачі показань.

- Простий приклад зняття температури і відправка на narodmon.com / ESP8266
- Метеорологічна станція Ардуїнов (OREGON EDITION)
- Моніторинг температури у вуликах на Wemos D1
- Погодна станція з годинником (за півгодини) / Devicter.ru
- Відправка температури на Народний моніторинг / Амперка.ru
- Зв'язка UNO+EFcom v1.2+сайт народний монітор / Arduino.ru
- Відправка даних по GPRS на сервіс «Народний моніторинг» / JT5.ru
- Контроль вологості і температури будинку і не тільки DIY / Star-t-hinking
- Погода в домі: бездротовий метеодатчик з Arduino Pro Mini / MYSKU.ru
- Підключення Arduino до вітчизняного проектом Народного моніторингу / Student-proger.ru
- Barometric Pressure Sensor Module for Arduino або як зробити метеостанцію своїми руками / MYSKU.ru
- Метеостанція на Arduino і MR3020 для Народного моніторингу / cxem.net
- Підключення Arduino Pro Mini + Enc28j60 + DHT11 + DS18B20 до сервісу narodmon.ru / @imarh.ru

Питання, зауваження та доповнення - пишіть на admin @ narodmon.ru

+ Підключення метеостанцій Oregon до проекту

Для передачі показань на сервер проекту також можуть бути використані метеостанції і зовнішні датчики фірми Oregon.
Далі наводиться приклад реалізації передачі показань на narodmon.ru з метеостанції Oregon Scientific WMR88 за допомогою сервісу Meteoplug або Meteobridge.

1. Роутер TP-Link TL-MR3020(або сумісний) вже має повноцінно працювати з сервісом Meteoplug або Meteobridge. Тобто вже повинна бути проведена реєстрація, введені дані про свою метеостанції і про всіх підключених до неї датчиках згідно інструкції на сайтах Meteoplug або Meteobridge.
У налаштуваннях Meteobridge включати модуль Meteoplug Cloud Graphing не треба.

2. Залишається один раз закачати в роутер скрипт, який за розкладом, кожні 10 хвилин буде брати останні свідчення стандартних датчиків метеостанції (вони накопичуються в роутері), буде формувати з них нові дані в новому форматі і буде відправляти їх на narodmon.ru.

3. Підключаєтеся до Вашого роутера за допомогою PuTTY і виконайте команди:

# Переходимо в корінь диска
cd /

# Завантажуємо скрипт
wget http://narodmon.ru/apps/oregon-uni.sh

# Даємо скрипту права на виконання
chmod 755 oregon-uni.sh

4. Якщо роутер працює з сервісом Meteoplug, то треба наступні рядки скопіювати і вставити у командний рядок і натиснути Enter.

echo "0 0 * * * /etc/init.d/loggerd stop; echo -n > /tmp/run/meteohub/inetupload; /etc/init.d/loggerd start" >> /etc/crontabs/root
echo "*/10 * * * * /oregon-uni.sh" >> /etc/crontabs/root

Перший рядок опівночі перезапускає програму збору даних і обрізає файл з даними, інакше він з часом розпухає.
Другий рядок кожні 10 хвилин запускає наш скрипт.

5. Якщо роутер працює з сервісом Meteobridge, то треба наступні рядки скопіювати і вставити у командний рядок і натиснути Enter.

echo "0 0 * * * /etc/init.d/loggerd stop; /etc/init.d/loggerd start" >> /etc/crontabs/meteobridge
echo "*/10 * * * * /oregon-uni.sh" >> /etc/crontabs/meteobridge

Перший рядок опівночі перезапускає програму збору даних.
Другий рядок кожні 10 хвилин запускає наш скрипт.

6. Додаткова інформація про метеостанціях і датчиках фірми Oregon:

- Flashing Meteobridge Firmware
- Arduino Weather Station (OREGON EDITION)
- Метеорологічна Станція Data Logger / SourceForge
- Decoding the Oregon Scientific V2 protocol / JeeLabs
- Oregon Scientific USB Station Logger/Reader / Google Project Hosting
- Погодна станція з годинником (за півгодини) / Devicter.ru
- Arduino&Oregon або погодна станція своїми руками / Хабр
- Вибір цифрового термометра/метеорологічної станції з бездротовим датчиком температури для вулиці і будинки / Конференція iXBT
- Повна покрокова інструкція підключення Oregon THN132N

+ Підключення метеостанцій Misol, WeatherSmart до проекту

Щоб надіслати дані з метеостанції, вона повинна підтримувати вибір довільного сервера для надсилання даних у Weather Logger.
У розділі Weather Network \ Weather Station Settings вказується:

Remote Server: Customized
Server IP/Hostname: narodmon.com (або eu.narodmon.com)
Server Port: 80
Server Type: PHP
Station ID: вказується унікальний MAC(серійний номер), який слід ввести під час реєстрації станції у проекті.
Password: може бути залишено порожнім.

Протестовано на прошивках від Conrad 2.1.9 та 2.2.5.
Важливо! Щоб уникнути блокувань, інтервал передачі слід встановити в 5 хвилин (за замовчуванням 1 хвилина) або сплатити скорочення інтервалу в проекті.

Додаткова інформація:
- Прошивки Conrad
- Купити на Aliexpress
- Опис станції IpObserver

+ Підключення метеостанцій AMBWeather, EasyWeather до проекту

У вбудованому веб-інтерфейсі станцій прописати наступне:

Hostname: narodmon.com (або eu.narodmon.com)
Path: /post
Port: 80
Upload Interval: 300

Після чого зберегти налаштування та перезавантажити станцію.
Для реєстрації станції в проекті слід використовувати параметр PASSKEY.
Перевірялося на моделях станцій WS2350 та WS-2902.

+ Блоки живлення і помилка 99% в датчиках вологості

Якщо ви використовуєте досить поширені гігрометри і вони постійно показують 99% вологості, то ця стаття для Вас.

З'ясувалося, що датчики дуже чутливі до якості харчування, пульсації з розмахом 150-200 мілівольт повністю паралізують канал вологості, при цьому канал температури і обмін по шині працюють нормально і контрольні суми збігаються. А оскільки за нинішніх часів багато радіоаматорів використовують готові блоки живлення вартістю 100 рублів, то не варто дивуватися, що їх якість сильно кульгає. Та й живлення від USB порту комп'ютера теж часто не ідеально. Хоча більшості повністю цифрових пристроїв це не заважає. А ще буває так, що новий блок живлення працює нормально, а через тиждень з'являється шум і датчик підключений до нього починає брехати.

Отже, якщо у вас датчик постійно показує 99% і живиться від напруги 5 вольт, то спробуйте для початку замінити блок живлення на свідомо нормальний. На жаль, можливо, доведеться перебрати кілька різних блоків живлення, бажано від різних виробників. Однак хороший блок живлення буде коштувати не 100 рублів, та й просто його може не бути під рукою. В якості дуже простого рішення можна спробувати просто поставити в розрив дроти живлення датчика (провід йде до контакту Vcc) резистор опором 270-560 Ом.

Це працює, оскільки струм споживаний датчиком дуже малий, всього 3 міліампера, то цей резистор не сильно "просадить" харчування, а вже наявний в датчику стабілізатор все одно знизить напругу до трьох вольт. У той же час спільно з конденсатором вже наявним в датчику, цей резистор утворює цілком ефективний RC фільтр.

Ну і трохи картинок:

Візьмемо середньостатистичний блок живлення-зарядник. На етикетці написано 5V 1000mA.
Ось так виглядають шуми прилітають на ніжку VCC датчика від цього блоку живлення.

Шуми блоку живлення 5V 1000mA

А ось так виглядає картинка після установки резистора і відповідно датчик почав працювати.

Шуми блоку живлення з RC фільтром

Картинка з ще одного блоку живлення з гордим написом 5V 1000mA. З цим блоком живлення датчик теж показує 99%.

Шуми блоку живлення 5V 1000mA

А ось картинка від блоку живлення йде в комплекті з роутером MR3020.
Це теж недорогий блок живлення, але як бачимо шумів мало і датчик з ним прекрасно працює без жодних переробок.

Шуми блоку живлення MR3020

Загалом ретельно ставитеся до вибору блоку живлення :) Успіхів!

Джерело: etrivia.ru/news/O-vybore-bloka-pitaniya.

Підключення приладів на базі OpenWRT

+ OpenWRT. Вибір роутера, адаптера і прошивка

Процедура налаштування описана на прикладі мініатюрного WiFi-роутера TP-Link TL-MR3020 і його китайського аналога TL-WR703N з прошивкою OpenWRT, проте дана методика підійде і для інших пристроїв з підтримкою OpenWRT і створених на її основі OR-WRT і CyberWRT.

Для підключення популярних термодатчиків DS18B20 до роутера потрібно (на ваш вибір):
1. Дешевий адаптер USB2UART, наприклад: PL2303 или CP2101 или FT232.
2. USB-термометр MP707(R), RODOS-5/6 + будь-який USB-хаб для узгодження рівнів USB 1.1 i USB 2.0.

Необхідно завантажити прошивку OpenWRT (або її аналог) для вашого роутера і згідно з рекомендаціями авторів обраної прошивки оновити ПЗ роутера.
В параметри локальної мережі вашого ПК слід додати будь-який вільний IP з мережі 192.168.1.x (x>1) після чого можна буде підключитися до роутера, використовуючи команду (у Windows Пуск \ Виконати) telnet 192.168.1.1, а потім passwd root після чого ввести новий пароль адміністратора (root) роутера і його підтвердження. Тепер з роутером можна працювати за протоколом ssh використовуючи утиліти putty і WinSCP і веб-інтерфейс за адресою http://192.168.1.1.
Використовуючи веб-інтерфейс або ж у файлі конфігурації /etc/config/network слід вказати параметри вашої локальної мережі для доступу в Інтернет: IP роутера, маска локальної мережі, IP шлюзу в Інтернет, DNS сервера і перезавантажити роутер.
Тепер ви можете встановити пакет локалізації luci-i18n-russian використовуючи веб-інтерфейс або виконати в консолі роутера opkg update, а потім opkg install luci-i18n-russian.

+ OpenWRT. Адаптер USB-UART + термодатчик

Після успішної установки прошивки OpenWRT на роутер і оновлення списку пакетів командою opkg update в консолі (telnet/ssh) роутера, встановлюємо необхідні драйвера для USB-UART адаптера:
Для PL2303: opkg install kmod-usb-serial-pl2303
Для CP2101: opkg install kmod-usb-serial-cp210x
Для FT232: opkg install kmod-usb-serial-ftdi
Далі встановлюємо утиліту для роботи з 1-wire датчиками - DigiTemp: opkg install digitemp

Підключаємо USB-UART адаптер в USB-порт роутера, з'єднуємо разом висновки Rx і Tx адаптера і підключаємо до них лінію DATA 1-wire датчика, наприклад DS18B20. В якості з'єднувального дроту цілком підійде Типовий 4х-жильний телефонний провід, але при значних відстанях рекомендується вита пара. На висновок VCC датчиків DS18 слід подати + 5v від адаптера USB-UART.

Закачуємо скрипт usbuart.sh на роутер в /root/usbuart.sh і встановлюємо для нього права на виконання 0755.
Для перевірки працездатності запустіть цей скрипт і в проекті автоматично зареєструється ваш роутер з підключеними до нього датчиками.
Для регулярної передачі показань необхідно створити файл /etc/crontabs/root на роутері з рядком:
*/5 * * * * /root/usbuart.sh
При зазначених параметрах роутер буде передавати показання кожні 5 хвилин.
Для передачі показань відразу ж після включення роутера, необхідно додати в файл /etc/rc.local рядок
/root/usbuart.sh перед exit 0.

+ OpenWRT. USB-термометр MP707, RODOS-5/6

Після успішної установки прошивки OpenWRT на роутер і оновлення списку пакетів командою opkg update в консолі (telnet/ssh) роутера, закачуємо на нього пакет, відповідний чіпу вашого роутера (для MR3020(WR703N) це bmtemp_2_ar71xx.ipk), за допомогою scp або winscp в каталог /tmp.
Далі оновлюємо список пакетів opkg update в консолі (telnet/ssh) роутера і встановлюємо необхідний пакет opkg install /tmp/[пакет].
Всі необхідні пакети повинні завантажитися автоматично з репозитарію прошивки. Вихідний код bmtemp на гітхабі.

Підключаємо зовнішні датчики DS18 до MP707(R) або до RODOS-5/6 згідно малюнку, MP707 підключаємо в usb-хаб, а usb-хаб в usb-порт роутера.
В якості з'єднувального дроту цілком підійде типовий 4х-жильний телефонний провід, але при значних відстанях рекомендується вита пара.

Закачуємо скрипт bmtemp.sh на роутер в /root/bmtemp.sh і встановлюємо для нього права на виконання 0755.
Для перевірки працездатності запустіть цей скрипт і в проекті автоматично зареєструється Ваш роутер з підключеними до нього датчиками.
Для регулярної передачі показань необхідно створити файл /etc/crontabs/root на роутері з рядком:
*/5 * * * * /root/bmtemp.sh
При зазначених параметрах роутер буде передавати показання кожні 5 хвилин.
Для передачі показань відразу ж після включення роутера, необхідно додати в файл /etc/rc.local рядок /root/bmtemp.sh перед exit 0.

+ OpenWRT. Моніторинг стану ДБЖ фірми APC

Для моніторингу електромережі, навантаження та заряду батареї ДБЖ фірми APC, після успішної установки прошивки OpenWRT на роутер і оновлення списку пакетів командою opkg update в консолі (telnet/ssh) роутера, встановлюємо драйвер USB HID і утиліту моніторингу:
opkg install kmod-usb hid apcupsd

ДБЖ підключаємо його USB-кабелем в USB-порт роутера (або через USB-хаб).
Далі слід внести зміни у файл /etc/apcupsd/apcupsd.conf
UPSNAME name # назва вашого ДБЖ на латиниці до 8 символів.
UPSCABLE usb # тип кабелю USB
UPSTYPE usb # тип кабелю USB
# DEVICE=/dev/ttyS0 # закоментувати
Інші параметри "за смаком", але можна залишити їх "як є" і зберегти файл.
Для перевірки правильності підключення та налаштування слід виконати в консолі apctest (до запуску служби apcupsd).
Якщо помилок немає, то слід поставити в автозапуск і стартанути сервіс apcupsd виконавши в консолі:
/etc/init.d/apcupsd enable
/etc/init.d/apcupsd start
Поточний стан ДБЖ і електромережі має повертатися по команді:
apcaccess status

Закачуємо скрипт apcups.sh на роутер в /root/apcups.sh і встановлюємо для нього права на виконання 0755.
Для перевірки працездатності запустіть цей скрипт і в проекті автоматично зареєструється ваш роутер з підключеними до нього датчиками.
Для регулярної передачі показань необхідно створити файл /etc/crontabs/root на роутері з рядком:
*/5 * * * * /root/apcups.sh
При зазначених параметрах роутер буде передавати показання кожні 5 хвилин.
Для передачі показань відразу ж після включення роутера, необхідно додати в файл /etc/rc.local рядок /root/apcups.sh перед: exit 0.

+ OpenWRT. Моніторинг вхідного і вихідного трафіку

Закачуємо скрипт rxtx.sh на роутер в /root/rxtx.sh і встановлюємо для нього права на виконання 0755.
Статистика по трафіку збирається з інтерфейсу eth0, який можна замінити в скрипті rxtx.sh на потрібний Вам.
Для перевірки працездатності запустіть цей скрипт і в проекті автоматично зареєструється Ваш роутер з підключеними до нього датчиками, після чого в розділі Датчики слід вибрати тип даних трафік, Rx/Tx.
Для регулярної передачі статистики трафіку необхідно створити файл /etc/crontabs/root з рядком:
*/5 * * * * /root/rxtx.sh
При вказаних параметрах роутер буде передавати статистику трафіка кожні 5 хвилин.
Для передачі показів зразу ж після увімкнення роутера, необхідно додати в файл /etc/rc.local рядок /root/rxtx.sh перед exit 0.

+ OpenWRT. Скрипт kini24 для відправки показань датчиків

Скрипт збирає дані з підключених датчиків, формує пакет для відправки і потім відправляє його. Робиться 5 спроб надсилання даних, після чого скрипт завершується для наступного виклику. Якщо в результаті однієї зі спроб сервер підтвердив прийом даних, скрипт завершує свою роботу. У випадку, якщо жодна спроба не завершилася вдало, дані накопичуються в тимчасовому файлі до моменту поки сервер не відповість "ОК". Після того, як скрипт отримує підтвердження про успішний прийом пакету, вміст тимчасового файлу стирається.
Завантажити актуальну версію з GitHub.

+ OpenWRT. Підключення і знімки з USB веб-камери + ftp

Веб-камеру вибирайте з підтримкою USB Video Class тоді до неї підійде стандартний драйвер Linux UVC kmod-video-uvc.
Ще краще, якщо веб-камера буде підтримувати апаратне стиснення MJPEG, а не тільки формат без стиснення YUYV, тому що процесор у роутера вельми слабенький і упаковка YUYV в MJPEG буде займати багато ресурсів роутера і можлива поява артефактів на зображенні у вигляді "розриву" кадру на частини.

Після установки і настройки OpenWRT на роутері, слід оновити список пакетів opkg update і для трансляції встановити драйвер UVC і утиліту захоплення opkg install kmod-video-uvc fswebcam.

Підключіть веб-камеру до роутера і виконуємо команду ls /dev/v* яка повинна вивести /dev/video0.
Якщо цього не сталося - значить ваша веб-камера не підтримує USB Video Class і треба пошукати для неї інший драйвер замість kmod-video-uvc. Далі створюємо файл конфігурації /etc/config/fswebcam

device /dev/video0
input 0
loop 60
fps 1
skip 2
background
resolution 640x480
no-banner
no-title
jpeg 90
# timestamp "%Y-%m-%d %H:%M:%S"
# palette YUYV # якщо веб-камера не підтримує MJPEG
save /www/webcam.jpg
# save /tmp/%Y%m%d%H%M%S.jpg # якщо потрібен фотоархів

При зазначених параметрах знімок з вебкамери буде оновлюватися кожні 60 секунд і доступний за адресою http://192.168.1.1/webcam.jpg.
Для автозапуску фотозйомки при включенні роутера слід додати в файл /etc/rc.local рядок fswebcam -c /etc/config/fswebcam перед рядком exit 0.

Якщо ви хочете автоматично зберігати знімки на віддаленому ftp-сервері, потрібно інсталювати пакет wput (opkg install wput), розкоментувати останній рядок /etc/config/fswebcam, а також створити скрипт завантаження знімків /usr/ftpupload.sh і дати йому права на запуск.

#!/bin/sh
cd /tmp
wput -R *.jpg ftp://логін:пароль@сервер/шлях/

Далі слід створити файл /etc/crontabs/root для завантаження знімків за розкладом кожні 10 хвилин і перезавантажити роутер.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/10 * * * * /bin/sh /usr/ftpupload.sh

+ OpenWRT. Налаштування відеотрансляції з USB веб-камери

Веб-камеру вибирайте з підтримкою USB Video Class тоді до неї підійде стандартний драйвер Linux UVC kmod-video-uvc.
Ще краще, якщо веб-камера буде підтримувати апаратне стиснення MJPEG, а не тільки формат без стиснення YUYV, тому що процесор у роутера вельми слабенький і упаковка YUYV в MJPEG буде займати багато ресурсів роутера і можлива поява артефактів на зображенні у вигляді "розриву" кадру на частини.

Після установки і настройки OpenWRT на роутері, слід оновити список пакетів opkg update і для відеотрансляції слід встановити драйвер UVC і службу відеотрансляції opkg install kmod-video-uvc mjpg-streamer.

Підключіть веб-камеру до роутера і виконуємо команду ls /dev/v* яка повинна вивести /dev/video0.
Якщо цього не сталося - значить ваша веб-камера не підтримує USB Video Class і треба пошукати для неї інший драйвер замість kmod-video-uvc.
Далі налаштовуємо параметри кодування відео у файлі /etc/config/mjpg-streamer

config mjpg-streamer core
option enabled "true"
option device "/dev/video0"
option resolution "640x480"
option fps "1"
option www "/www/webcam"
option port "8080"

При налаштуваннях за замовчуванням отримуємо:
http://192.168.1.1:8080/?action=snapshot - знімок JPEG (його слід використовувати для реєстрації веб-камери в проекті);
http://192.168.1.1:8080/?action=stream - відеопотік MJPEG.

+ OpenWRT. Першоджерела і додаткова інформація

OpenWrt Wiki:
- TP-Link TL-MR3020,
- TP-Link TL-WR703N,
- Routed Client with relayd (Pseudobridge).

Hardware solutions for OpenWrt:
- 1-Wire в OpenWrt,
- Веб-камера в OpenWrt.

RoboCraft:
- Прошивка OR-WRT wiki-опис,
- Дослідження Wi-Fi-роутера TP-LINK TL-MR3020.

Форум обговорення обладнання "Розумний будинок":
- Прошивка CyberWrt,
- Налаштування мережі OpenWrt,
- CyberWrt модуль "Термостат",
- CyberWrt модуль "Термометр",
- Збір і відправлення показань датчиків на MR3020/WR703N,
- Ставимо OpenWrt на мініатюрний WiFi роутер TP-LINK TL-MR3020.

Хабрахабр:
- Підключаємо китайську метеостанцію,
- Інтернет термометр на TP-Link MR3020,
- Покрокова прошивка OpenWRT на роутер TP-LINK TL-WR741ND i далі,
- Простий WiFi бот для моніторингу приміщень або «кухонне» роботобудування,
- Допиливание MR3020, пересборка його ядра і конфігурування інструментарію розробника,
- Відправка даних про температуру з роутера TL-MR3020 і Raspberry Pi на «Народний моніторинг».

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