Примеры решений для Интернет вещей в 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.ru / ESP8266
- Метеостанция на Ардуино (OREGON EDITION)
- Мониторинг температуры в ульях на Wemos D1
- Погодная станция с часами (за полчаса) / Devicter.ru
- Отправка температуры на Народный мониторинг / Амперка.ru
- Cвязка 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)
- Weather Station 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.ru (или 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.ru (или 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. Дешевый адаптер USB-UART, например: PL2303 или CP2101 или FT232.
2. USB-термометр MP707(R), RODOS-5/6 + любой USB-хаб для согласования уровней USB 1.1 и 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 и далее,
- Простой WiFi бот для мониторинга помещений или «кухонное» роботостроение,
- Допиливание MR3020, пересборка его ядра и конфигурирование инструментария разработчика,
- Отправка данных о температуре с роутера TL-MR3020 и Raspberry Pi на «Народный мониторинг».

Если Ваша станция может передавать показания в Интернет, но вы не нашли ее в списке поддерживаемых в проекте, то сообщите в техподдержку модель станции и приложите скрин страницы настроек передачи данных для добавления в список поддерживаемых.