Отправка данных о температуре с роутера TL-MR3020 и Raspberry Pi на «Народный мониторинг»
Вступление
В следствии возникновения вопросов, позволю себе небольшой комментарий, немного проясняющий смысл статьи. В статье описывается два устройства, не зависящих друг от друга, и выполняющих идентичные задачи по отправке данных на сайт «Народный мониторинг»
Когда я впервые увидел статью на хабре «Народный мониторинг температуры (vs прогноз) в различных городах. Нужен ли?», посвященную мониторингу параметров среды narodmon.ru, я как-то скептически отнесся к такой затее и забыл про нее. Перед новым годом у меня появилась Raspberry Pi и какое-то время ушло на ее освоение и обзор возможностей, в итоге что-бы малинка не простаивала, да и так для общего развития по статье «История взаимодействия «чайника» и DS18B20 посредством Raspberry Pi» сделал тоже самое, но с учетом исходников первоисточника, в который уже внесены изменения по мотивам вышеприведенной статьи с ссылкой на хабр. Температура измерялась, графики строились, но как-то скучно стало за этим наблюдать, да и применение малинки в этих целях это как из пушки по воробьям, и в один прекрасный день я вспомнил про «Народный мониторинг», на котором вся отображаемая на сайте информация выводится только на основании сведений о текущих параметрах среды(температура, влажность, атм.давление и др.) передаваемых с клиентских устройств пользователей данного сервиса. Начал искать и нашел статью «Лучшая реализация реализация UART => 1-wire и I2C/SPI на базе роутеров». Тут я и загорелся идеей сделать такое устройство, правда в надежде на то, что кто-то уже это сделал, а я только повторю, благо роутер TL-MR3020 уже имелся в хозяйстве, и над ним уже ставились бесчеловечные опыты по привинчиванию его к «самокатной телеге» с камерой по мотивам статьи «Простой wifi бот для мониторинга помещений или «кухонное» роботостроение».
Итак, приступим
Начал я с опытов над роутером, на нем на тот момент была прошивка OR-WRT 0.70, основанная на OpenWRT. Подключается датчик температуры к роутеру через преходник USB-UART. Схема подключения предельно проста. Текст и фото с сайта http://cyber-place.ru
Подключить датчик к UART можно по ниже приведенному рисунку
Соеденить RX и TX вместе и подключить к ним data линию 1-Wire датчика DS18B20
VCC к VCC
GND к GND
При попытке подключения и считывания данных через родной UART роутера выяснилось, что сделать с наскока это не получится. На одном буржуйском форуме была найдена информация о том, что ограничение это аппаратное и накладывает его сам роутеровский порт, который заточен под 8 бит данных, а в digitemp (пакет для считывания данных с датчиков 1-wire) используется только 6. Решено – придется ставить переходник USB-COM на FT232 или PL2303, возможен еще вариант на CP2102, но его у меня в наличии нет, а посему буду использовать то что есть. После этого я решил попробовать силы в написании скрипта отправки полученных данных на «Народный мониторинг». На данный сервис отправка данных должна осуществляться двумя методами на выбор, либо telnet TCP/UDP (рекомендуемый), либо HTTP POST. Примеры отправки данных на PHP имеются на сайте. PHP для меня темный лес, но все же это лучше чем ничего. После первой же попытки установить PHP на роутер стало ясно, что имеющихся в нем 4МБ памяти маловато, и фокус не удастся. Тогда я начал думать об увеличении объема флеш-памяти и наткнулся на том-же cyber-place.ru на тему «Замена и восстановление Flash ROM в роутере MR3020 и WR703n». Но после некоторых раздумий пришел к выводу что это не по фэн-шую, для меня и для большинства это довольно трудоемко, плюс требуется программатор, который не у всех есть, и забил на это дело. Решил написать на bash необходимый скрипт, но советы с гуглом не принесли результата, и пара дней прошло зря. В итоге было решено поставить USB-HUB (видел в сети благополучные опыты по вживлению оных во внутренности роутера), и к нему подключить внешний накопитель и USB-UART мост. Сказано – сделано, но в будущем, после удачного завершения опытов с Raspberry Pi и PHP, а в тот момент я как раз перекинулся на эти опыты. Перенесемся в будущее, задуманные опыты над малинкой и ПХП благополучно закончены, о чем я напишу ниже, продолжим опыты с роутером. Для увеличения объема памяти используется ее перенос на внешнюю флешку, а это значит что тот роутер который у меня был настроен на работу с «самокатной телегой» будет окончательно и бесповоротно переведен на использование с дополнительной памятью, чего делать категорически не хотелось. На следующий день был куплен еще 1 роутер и самый маленький USB-HUB, так-как потерять достигнутые результаты было жалко, тем более что это все же должны быть разные устройства.
Для «термометра» я решил использовать чистую OpenWRT. Скачав ее при попытке установки в поле выбора имени файла поиском по первым буквам обнаружил что у меня там целых 3 прошивки с одинаковым размером и именем файла, отличался только порядковый номер закачки файла. Я решил что когда-то уже качал эту прошивку и выбрал на угад одну из трех. После прошивки мне не удавались ни какие первичные действия из мануала на OpenWRT. Думал уже что что-то пошло не так во время прошивки и начал изучать методы извлечения роутера из кирпича через TFTP. Весь вечер на это положил, благо до практики руки не дошли, в теории было много не понятного. И под конец вечера что-то меня дернуло попробовать выполнить первоначальные настройки как для OR-WRT 0.70. Мне повезло, оказалось что я залил именно ее. Потом при сравнивании имен скачиваемых файлов оказалось что и OpenWRT и OR-WRT имеют одинаковые названия. Далее я потратил энное количество времени на попытку расширить память на внешнюю флешку, после чего было принято решение о заливке другой прошивки OR-WRT 0.75 alpha с уже имеющейся поддержкой флешек. Без проблем прошил и настроил по инструкции свой роутер и приступил к дальнейшим действиям.
По накатанной в /etc/opkg.conf изменил адрес репозитория на downloads.openwrt.org/snapshots/trunk/ar71xx/packages, обновил список пакетов
установил пакеты digitemp-a
opkg install digitemp-usb
opkg install digitemp
После этого командой dmesg выяснил куда подключен адаптер FTDI, у меня оказался ttyUSB0. Выполняем поиск устройств 1-wire
если нашлись, то считываем показания температуры и пишем в файл
что бы посмотреть результат вводим
Все работает. Далее устанавливаем пакеты для работы PHP
opkg install php5
opkg install php5-cgi
И начинаем заниматься написанием скриптов. В этом деле я не мастак, поэтому прошу сильно не пинать за кривость кода и огромные костыли, подставленные, чтобы это все заработало. Написано было два скрипта, один на bash, другой на php. Вернее тот, что на php был сделан на основе исходников с сайта «Народный мониторинг». Первый скрипт выуживает данные полученные от пакета digitemp и записанные в файл 1wire_log, и подгоняет их в удобоваримый вид. После чего передает управление второму скрипту на php для отправки данных на сервер.
Второй скрипт берет данные из файла, подготовленного первым скриптом, и отправляет их на сервер.
По данному заданию опрос датчика и отправка данных осуществляется каждые 10 минут. Последняя строка скрипта вполне может быть вида
*/10 * * * * sh /temperatura/get_send.sh
Так как на данный момент у меня включены два устройства для отправки данных о температуре, а на сайте игнорируются данные приходящие чаще чем раз в пять минут, данные от одного из моих устройств игнорируются. По этому, для каждого из устройств было четко задано в кроне время отправки данных с интервалом между устройствами в 5 минут. Скачать скрипты и crontab можно здесь. Далее копируем crontab пользователя root в /etc/crontabs и папку temperatura в / (корень файловой системы).
Для запуска и включения cron надо выполнить в терминале
Переходим на сборочный участок
Для фиксации плат между собой использовал обычный 2х сторонний скотч. При сборке надо быть предельно осторожным, что-бы ничто нигде не коротнуло и не продавить скотч острыми паяными выводами. При приклейке хаба я использовал два слоя скотча для увеличения расстояния между платами, по 2 полоски на слой сложенные «паленицей». Для тестов использовал оставшийся хвост от того же хаба. Вот что получилось в итоге
Результат порадовал, даже места еще немного осталось, и остался неиспользуемый встроенный UART. В закромах был найден Bluetooth модуль HC-04 и примерен на возможное место установки. Встал как родной. Сразу же был припаян и приклеен на тот же скотч на USB порт роутера.
Зачем мне это? Как уже сказал выше, жалко что пропадает место и UART. Плюс роутер ничего не будет делать целых 10 минут, не порядок. Можно навешать еще каких функций. Например, первое из-за чего я это сделал – в интернете на градусник смотреть хорошо, но не всегда удобно. Вот и думаю поставить простейшую ардуину с 7-сегментным индикатором. А может и знакосинтезирующий, чтоб еще и время/дату показывать. Вообще вариантов масса.
Закрыть крышку мешал только один штырь на ней, который должен упираться в плату, а упирается в USB разъем хаба. Примерил на глаз да и срезал половину.
После чего крышка нормально встала на место. Правда так же плотно поставить ее не удалось и она немного выдается вверх. Но это нормальное явление и ей не мешают все мои доработки. Тоже самое у меня на первом не доработанном роутере. В итоге получил внешне почти девственно новый роутер, не считая следов не аккуратного вскрытия.
Для выноса датчика на улицу я использовал разборный USB разъем на кабель и шнур от комовской мышки, он мягче остальных шнуров которые у меня были, с напаянным небольшим отрезком плоского кабеля что-бы пропустить его между оконными уплотнителями при закрывании окна.
.
Цена вопроса при использовании роутера
50р.
Bluetooth модуль HC-04 из китая
7$ = 210р.
Датчик температуры DS16(x)20
Естественно Bluetooth модуль можно выкинуть, и тогда цена приблизится к планке
Варианты усовершенствования
Первое – оптимизация скриптов приведенных в статье
Второе – если удастся избавиться от скрипта на PHP и перейти на bash полностью, то получится избавиться от флешки и USB-хаба, что существенно сократит трудоемкость и стоимость конечного устройства.
Третье (просто предположение) – возможно, если почистить прошивку удалив не используемые модули, получится освободить место для PHP, достигнем тех же результатов что и во втором варианте.
Четвертое – заставить работать аппаратный UART, еще сократит стоимость, но немного повысит трудоемкость. Все что я смог найти на эту тему это непонятный мне скрипт на pastebin-е без комментариев, и ссылку на лежачий сайт, откуда идет ссылка на pastebin. Пробовал запустить этот скрипт безрезультатно.
Пятое – задействовать вывод GPIO написав соответствующий драйвер.
Отправка с Raspberry Pi
Как я уже упоминал, у меня уже была малинка настроенная должным образом на измерение температуры на двух датчиках и составление графиков. Таким образом, дело осталось за малым, выдернуть данные о температуре и отправить их на сервер.
Дальнейшее описание процесса будет с учетом того, что Вы уже настроили малинку на получение данных с датчиков и построение графиков. Однако коротко расскажу принцип действия тех скриптов, а желающие смогут скачать полностью мои скрипты для быстрой настройки. В варианте, который я повторил и предлагаю Вам повторить, имеется 3 скрипта на bash, один на perl и один файл базы данных для RRDTool. Первый скрипт на bash запускается однократно и создает файл базы данных. Второй скрипт на bash добавляется в cron и все что он делает, это запускает выполнение остальных скриптов. Первым делом он запускает скрипт get_temp.pl, который отвечает за считывание показаний с датчиков температуры и укладывание этих показаний в базу данных. Второй строкой он запускает скрипт create_graphs.sh, который берет значения температуры из базы данных и по ним строит графики. Отталкиваясь от того что моя малинка все это уже умеет делать приступаю к реализации оставшейся части задуманного. Здесь уже используется один скрипт на PHP для отправки данных на сервер. Плюс к этому добавляется несколько строк обработки полученных от датчиков данных в уже имеющийся скрипт get_temp.pl и одна строчка в скрипт get.sh.
Мой скрипт получения данных с датчиков с добавлением обработки показаний температуры выглядит так
Суть моих дополнений заключается в вылавливании данных о температуре, которые заносятся в базу данных, и записи их в отдельные файлы для каждого датчика.
После того как все это заработало можно заняться скриптом отправки данных на сервер. Для этого нам понадобится установить PHP.
sudo apt-get install php5-cgi
Скрипт отправки данных сделан из примера, представленного на сайте «Народный мониторинг». Он обращается к файлам созданным предыдущим скриптом, берет из них данные о температуре и отправляет их.
Мой скрипт send.php выглядит так
где так же как и в варианте с роутером 01-23-45-67-89-AF – mac-адрес сетевой карты wlan (Wi-Fi) или lan, если малинка подключена через него, а 0123456789ABCDEF – серийный номер датчика температуры DS16(x)20.
Затем добавляем строчку в скрипт get.sh, указывающую на исполнение скрипта send.php.
В кроне я изменил расписание на отправку данных каждые 10 минут с четкой привязкой ко времени, не пересекающимся с временем отправки данных роутером.
Задание в кроне выглядит так
После этого должно все заработать. Скачать данные скрипты можно здесь
Цена вопроса при использовании Raspberry Pi
Здесь уже посчитать так однозначно не получится. Дело в том, что стоимость самой малинки и дополнительных комплектующих к ней может сильно отличаться от человека к человеку.
Заключение
На мой взгляд при не имении ни того ни другого наиболее рациональным является использование роутера. Использование малинки имеет смысл только в том случае, если у Вас уже она есть, постоянно включена и выполняет какие либо задачи.
А в целом в полку устройств отправляющих данные на сервис «Народный мониторинг» прибыло, и это хорошо.
Совместными усилиями нам удалось избавиться от PHP скрипта и написать все на BASH, за что спасибо всем откликнувшимся. Особую благодарность хочу выразить пользователю Ssar, его подсказка оказалась решающей в написании скрипта для роутера. На данный момент остался всего один скрипт get_send.sh, и два вспомогательных файла.
Скачать архив можно здесь. Распаковать вложенную папку необходимо в корень файловой системы не забывая про crontab.
Данным скриптом выполнен второй пункт оптимизации устройства, а это ведет к удешевлению и упрощению конструкции.
Как узнать температуру процессора: 4 простых способа
Незапланированное выключение и перезагрузка ноутбука или компьютера, медленное выполнение им операций и команд может указывать на ряд проблем. Но прежде, чем паниковать и начинать удалять лишние программы, стоит проверить, не перегревается ли процессор техники. Выясним, как узнать температуру процессора на компьютере или ноутбуке с помощью стандартных сервисов системы и простых в установке сторонних программных продуктов.
Стандартные средства проверки
Температуру можно узнать двумя способами — через BIOS и с помощью Windows PowerShell (средство автоматизации). В первом случае показания температуры процессора не учитывают нагрузку. То есть выяснить перегревается ли аппаратная часть сложно. А вот разработанное Microsoft средство автоматизации системы с открытым кодом даст достоверный результат. Чтобы воспользоваться сервисом, нужно:
Цифра напротив и будет искомым параметром, но не значением фактической температуры. Чтобы получить Цельсии, нужно значение 3010 (пример с фото) разделить на 10. Затем полученную цифру уменьшить на 273С. Температура процессора — +28С.
Важно! При вводе команды средство может выдать ошибку. Нужно повторить ввод, но перед нажатием Enter заменить кавычки с использованием английской раскладки, проверить, не поставлено ли лишних пробелов. Нажать ввод. Приведенная команда может и не работать в некоторых системах.
Использование сторонних утилит
Более удобными могут показаться специальные программные продукты с широким функционалом — можно узнавать любые параметры системы. Но чтобы посмотреть температуру и нагрев процессора, их первоначально нужно скачать и инсталлировать на жесткий диск. В сети представлен широкий выбор утилит, но проверенными и безопасными для системы считаются Aida64, Open Hardware Monitor и Core Temp. Устанавливаются на жесткий диск стандартным способом. После установки программного продукта технику лучше перезагрузить.
Aida64
Утилита считается полнофункциональным продуктом, а потому бесплатно в сети не распространяется. При бесплатном скачивании приложения пользователю будет доступен лишь 30-дневный бонусный режим. Последняя русскоязычная версия программного продукта подходит для установки на Windows 10. Среди всех существующих утилит, именно Aida64 наиболее понятна и проста в управлении. После ее установки и запуска на экране появится главное меню. Здесь нужно:
Утилита показывает значения по каждому ядру.
Open Hardware Monitor
Распространяется в сети бесплатно. Наделен англоязычным интерфейсом. Для тех пользователей, которые уже работали с подобными утилитами проблем не возникнет. А новичкам лучше подыскать софт с более дружественным интерфейсом. Интересующий пользователя параметр находится в главном меню «Sensor» в разделе «Windows». Здесь потребуется раскрыть вторую вкладку (название процессора) и найти раздел «Temperatures».
Core Temp
Отличный визуализатор параметров аппаратной части. Она русскоязычная. Интерфейс разработан в стиле привычных пользователю ОС Windows тематических блоках, поэтому разобраться с утилитой будет просто даже новичку. Но главное преимущество Core Temp — трансляция данных в фоновом режиме. После установки и запуска программного продукта открывается его главное меню. В нем самый нижний блок «Процессор #0: Температура (Processor #0: Temperature)» иллюстрирует нужные параметры по каждому ядру.
Как выбрать роутер: 5 важных заметок, на которые многие не обращают внимание

Можно ли в 5-6 тезисах рассказать о основных моментах при выборе роутера (так, чтобы не перегрузить голову объемной информацией)? 👀
Так как периодически вопросы на эту тематику поступают, я решил «набросать» самое основное на что следует обратить внимание, если вы решили приобрести роутер.
Сразу отмечу, советы касаются Wi-Fi роутера для домашнего использования! (т.е. под самые основные и распространенные задачи: раздать интернет от провайдера на все устройства, и дать возможность загружать файлы, играть, и просматривать веб-сайты).
Если вам нужно что-то специфическое (в офис, на производство и т.д.) — проконсультируйтесь со специалистом (чтобы найти решение именно под свою задачу) 😊
Итак, теперь к сути.
На что обратить внимание при выборе роутера
Антенны (их расположение, количество)
Пожалуй, начать нужно с антенн (точнее с их «видимого» количества).
Если вы планируете раздавать Wi-Fi по всей квартире (дому), а не в одной ее комнате — рекомендую выбирать роутер как минимум с 3-4-ю антеннами (которые «торчат» в разные стороны как «рога» 👀)!
См. пример на картинке ниже. 👇
2 разные модели роутеров
Тут дело в том, что коэффициент усиления у внешней антенны (как правило) значительно выше, чем у внутренней. А благодаря этому, радиус (зона) работы вашей раздаваемой Wi-Fi сети будет значительно больше (а скорость передачи данных в ней — выше и стабильнее!).
К тому же, внешнюю антенну легко снять и заменить на более мощную (например). В этом плане устройство более универсальное.
Частоты работы (2,4 и 5 ГГц)
Большинство роутеров работает на частоте 2,4 ГГц (по крайней мере тех, что были выпущены до 2016-2017 г.). Разумеется, в каждом многоквартирном доме создано и раздается десятки (сотни) Wi-Fi сетей на этой частоте.
И очевидно, что в некоторых случаях несколько сетей могут создавать «помехи» друг для друга (особенно при совпадении каналов). См. на картинку ниже: в моем окружении как минимум десятка 2 сетей. 😒
На корпусе роутера вместо частоты 5 ГГц может стоять обозначение поддержки стандарта 802.11ac (этот стандарт как раз и обеспечивает 5 ГГц).
👉 Краткие тезисы насчет частоты 5 ГГц:
Т.е. на текущий день разница в стоимости между обычным роутером и двух-диапазонным не такая уж и большая, а поддержка 5 ГГц поможет настроить более стабильную работу сети.
Тип WAN-порта (порт под интернет-кабель)
У каждого Интернет-провайдера свой тип подключения. Разумеется, WAN-порт на роутере (для подключения к кабелю Интернет-провайдера) — в каждом случае может быть разным, и на это стоит обращать внимание.
На текущий день есть три наиболее популярных варианта:
Типы WAN-портов на разных роутерах
Также стоит отметить о наличии 3G/4G/LTE роутеров. Такие маршрутизаторы используются для подключения к сети интернет с помощью сотовых операторов. WAN-порта у них нет (что логично).
Наличие USB-порта
На мой взгляд, наличие USB-порта на современном роутере — очень желательно! Почему:
USB-порт на корпусе роутера
Пару слов о отзывах и производителях
Во-вторых, сразу хочу сказать, что идеального ничего в нашем Мире нет, и у всех производителей есть как хорошие модели, так и плохие.
1. D-link — один из самых популярных производителей роутеров (возможно благодаря линейке очень дешевых устройств). Все бюджетные и средне-бюджетные модели — крайне глючные: постоянно могут слетать пароли от Wi-Fi сети, перезагружаются, зависают.
Также заводская прошивка оставляет желать лучшего, часто ее приходится 👉 менять на прошивку от «народных» умельцев (разумеется, гарантия в этом случае «слетает»). Примерно до 2013-2014 — среди бюджетных вариантов выбор был невелик и приходилось «смиряться», сейчас же — лично я не вижу смысла.
2. TRENDnet — средний производитель по соотношению цена/качество. Бюджетные модели мало чем отличаются от D-Link (разве базовые прошивки чуть лучше).
Отметил бы, что многие модели этой марки сильно греются (что нередко приводит к поломке устройства). Также при активной загрузке роутера (например, при скачивании файлов) — возможны перезагрузки устройства.
3. TP-link — недорогие роутеры этой марки значительно превосходят по качеству устройства от D-Link и TRENDnet. Правда серии 740-е и 840-е — несколько «режут» скорость как по Wi-Fi, так и кабелю (однако не перезагружаются и не зависают). Т.е. все достаточно стабильно. Неплохой выбор для дома и офиса.
4. Tenda — на мой скромный взгляд, один из лучших в плане цена/скорость/стабильность. Нагрузку держат хорошо, не перезагружаются, базовая прошивка позволяет выполнить все необходимые действия: родительский контроль, проброс портов, расписание работы, мощность передатчика Wi-Fi и многое другое.
5. ASUS — роутеры этой марки стоят несколько дороже вышеперечисленных. Однако, работают они, как правило, очень стабильно и долго (у меня на полке «валяется» роутер аж с 2009г., который отработал лет 6-7 в очень активном режиме 😊).
Единственный недостаток: не очень продуманный интерфейс прошивки (приходится «повозится», пока настроишь все тонкости работы Wi-Fi).
6. Zyxel — недорогие роутеры этой марки такие же как у TRENDnet и D-Link. Что касается средне-ценового диапазона (и выше) — то роутеры отличные. Скорость не режут, работают стабильно, прошивки от производителя обеспечивают весь необходимый набор опций.
Минус: роутеры этой марки стоят в 1,5-2 раза дороже, чем тот же TP-Link или Tenda.


























