Всем доброго времени суток! Завелась у меня как-то жена. Нет, не так. Завелась у меня как-то девушка. Познакомились мы с ней в закрытом платном клубе для дам и господ прогрессивных мировоззрений и изысканных вкусов. И это не то, о чем вы подумали :). Девушка притащила с улицы котенка со словами "Я покормлю и отнесу обратно". "Я тебе витащю", подумал я. Полная версия анектдота про "я тебе витащю" будет в комментах, он неприличный, здесь я его процитировать не могу. То, что девушка была ведьмой, я тогда еще не знал, поэтому черному цвету котенка значения не придал. Потом девушка стала женой, а котенок - кошкой. Потом мы с женой развелись, она съехала, а кошка осталась со мной. Из цензурных кошкиных имен могу припомнить лишь Жоплин и Писюнцель и есть за что. А потом, несколько лет спустя, у меня в квартире завелся репчатый лук. Вот с этого момента и начинается наша история.
Полежал он (лук) некоторое время и начал прорастать. А я, вместо того, чтобы его съесть или выкинуть, налил в две банки воды, воткнул туда луковицы и поставил на подоконник. Лук стал из бледно-желтого темно-зеленым, а я стал ждать урожай. Но что-то пошло не по плану и в один из дней я обнаружил побеги лука обглоданными. После короткого, но серьезного разговора с кошкой, она призналась, что это она. Я понял, что животине чего-то не хватает, а поскольку я ее скорее люблю, нежели наоборот, то стал выращивать для нее на подоконнике овес.
Как меня занесло на тематические каналы ютуба, где я узнал про гидропонику, микрозелень и витграсс, я уже не помню. Но я захотел выращивать пшеницу и именно на гидропонике, без земли. Потому что к тому времени, опыт выращивания пшеницы на подоконнике в земле у меня уже был. И таки шо ви думаете? Таки стал! Но было одно "но". Эта сука такая пшеница (точнее ее зерна) покрывалась плесенью. Стал искать причину и пути решения проблемы. Большинство людей в интернете говорили и писали про зараженность зерна, циркуляцию воздуха и температуру/влажность. Зерна я и так обеззараживал на этапе замачивания, вентилятор (точнее тепловентилятор без включенного ТЭНа) поставил, влажность мне на тот момент измерить было не чем, управлять ею - тоже нечем, поэтому на влажность я пока что забил. С температурой было еще сложнее.
Мало того, рекомендуемая (допустимая) температура варьировалась (в зависимости от рекомендаций) от 15 до 36 градусов Цельсия, так я еще и не знал, какая именно сейчас у меня температура на окне. Потому что в квартире термометра у меня не было по причине отсутствия в нем необходимости. Был заказан бюджетный термометр-гигрометр Xioami с Алиэкспресс. Но когда он придет, было не известно (на момент написания этого поста это все еще остается неизвестным), а хотелось вот прям сейчас.
Тогда я вспомнил, что с крайнего раза, когда меня накрывало волной энтузиазма и хотения по отношению к автоматизации жилища, интернету вещей и всему вот этому вот, у меня должна была остаться платка Wemos D1 Mini (а точнее, её клон, могу предположить) на базе микроконтроллера ESP 8266 и цифровой датчик температуры DS18B20 в герметичном корпусе на метровом проводе. Причем микроконтроллер у меня уже был прошит NodeMCU, скрипты на Луа залиты и настроены на отправку данных в народный мониторинг, датчик с резистором припаяны. В прошлый раз я хотел разместить датчик на улице и предоставить публичный доступ к его показаниям. И себе и людям, так сказать. Ибо термометра за окном у меня не было, в подъезд (там он был и есть, но неизвестно насколько точно он показывает) не набегаешься, да и хотелось "цифру", облако, графики и вот это вот всё. Тогда у меня дело уперлось в необходимость выводить на улицу из комнаты кабель с датчиком и изготавливать будку Стивенсона. Я не знал, как это правильно сделать и мне было ссыкотно. А без правильного размещения выводить датчик в публичный доступ не было смысла.
Но это было тогда, а сейчас-то это не нужно! А все, что нужно у меня почти что уже есть и сделано. Осталось вот просто взять и запустить проект. И шо ви думаете? Таки взял и запустил! На момент написания этих строк я уже знаю, что обдув подоконника тепловентилятором с выключенным ТЭНом повышает температуру на примерно 2 градуса. Как так? А вот хрен его знает! И теперь я знаю, что днем, на солнце, температура на окне может достигать 36,5 градусов Цельсия, что неожиданно много на мой взгляд, ибо май еще и на улице прохладно - 20 - 22 градуса. Датчик DS18B20 у меня врёт, но в пределах допустимого, сравнивал с показаниями поверенного ртутного лабораторного термометра TGL 1198.
А теперь несколько слов о том, как все это устроено и работает. Схема:
Как видите, схема оочень простая. Резистор нужен номиналом 4,7 кОм. Устройству для работы необходимо питание 5 В/очень мало А, поэтому я использовал оочень старую зарядку от кнопочного телефона Sony Ericсson, доставшуюся мне по наследству от предшественника на работе. Спасибо тебе, Виталик! Общий вид:
Все это прекрасно запихнулось в распределительную коробку JBL090 от Экопласт, которая, помимо хорошего качества, имеет очень приятный ценник и в Леруа стоит всего 16 рублей.
Кишки устройства:
Сама прошивка и луа-скрипты брались отсюда, инструкции по прошивке и заливке скриптов, а также настройке устройства - там же. Общий алгоритм работы устройства следующий: 1 раз в 5 минут железка опрашивает датчики. Датчиков на 1 шину 1-wire (у меня это пин D1) можно повесить несколько штук параллельно. У меня 1 датчик потому что: а) мне пока больше не нужно б) у меня есть в наличии только 1 датчик) Далее, если все хорошо (датчики на шине нашлись, значения отдали, устройство подключено к wi-fi и имеет доступ в инет) устройство отправляет данные на сервер проекта "Народный Мониторинг". Данные отправляются парами "имя-значение". Для датчиков DS18B20 в качестве имени выступает его адрес (идентификатор) - это уникальное значение, в природе не существует двух таких датчиков с одинаковыми адресами. Таким образом, в самом простом случае, у нас будет отправляться две пары значений: адрес датчика - значение температуры и слово "heap" - значение heap. О том, что такое heap, будет чуть ниже. Итак, данные отправляются, осталось только научиться их забирать. Идем на сайт или сайт проекта "Народный Мониторинг" и создаем там аккаунт. Я реально х. з. зачем им два одинаковых сайта в разных доменных зонах. Дальнейшие действия я производил из андроид-приложения проекта. Ссылки на весь разработанный для проекта софт под разные платформы есть на сайте проекта.
Логинимся в приложении. Переходим в раздел "Мои датчики" нажимаем на "+", вводим MAC-адрес своего устройства. Если вы все сделали правильно, то через некоторое время в приложении вы увидите что-то вроде этого:
У вас вместо понятного имени датчика будет букво-цифренный набор. Это адрес датчика DS18B20 на шине 1-wire. В приложении можете переименовать датчики на свой вкус и цвет.
Параметр "Heap" - это, скажем так, размер оперативной памяти, доступный для исполнения Луа-скриптов. От версии к версии прошивка NodeMCU содержала в себе разные баги. И порой получалось так, что размер heap становился меньше, меньше, вплоть до полного исчерпания и тогда устройство или самопроизвольно перезагружалось (плохой, но не самый худший вариант) или впадало в упячку. В наши дни такое (вроде бы) редкость. Но, судя по всему, автор скриптов - старый опытный джедай и реализовал отправку размера heap для собственного спокойствия. На нормально функционирующем устройстве график размера heap должен иметь примерно такой вид:
Финальный вид устройства на подколоннике:
А вот ради этого, собственно, проект и затевался:
Технические замечания.
Ограничения бесплатного аккаунта народного мониторинга:
1) В приватный доступ можно вывести только одно устройство. Приватный доступ - это когда ваше устройство и показания его датчиков видно только вам и тем людям, которым вы предоставили. Одно приватное устройство может иметь неограниченное количество датчиков. Но. Размер передаваемых за один раз данных - не более 4 кБайт. Периодичность отправки данных на сервер - не чаще, чем 1 раз в 5 минут.
2) Срок хранения подробных показаний датчиков составляет 30 дней, среднечасовых значений - 1 год, среднесуточных - вечность.
Лично меня эти ограничения (пока что) не ограничивают. Если вам нужно больше, то вы можете сделать ребятам из проекта хорошо. И это не то, о чем вы подумали. А может быть и то, я х. з., там тоже живые люди работают. Другой путь - вывести какое-либо общественно полезное устройство (метеостанцию, камеру наружного видеонаблюдения) в публичный доступ. Но там жесткие требования к качеству и достоверности передаваемых данных. Подробности - смотрите на сайте проекта.
Мои замечания по сборке и прошивке устройства:
1) Если у вас плата типа Wemos, NodeMCU и иже с ними, т. е. со встроенным конвертером интерфейсов USB<->Serial типа CH340, то никакой переходник USB-UART отдельно вам не нужен, подключается и шьется напрямую через USB порт.
2) Для непосредственно прошивки я использовал ESP8266Flasher, брать тут (нажать на кнопку "Clone or download", выбрать "Download ZIP"), инструкция как прошить, например, здесь.
3) В файле "NarodMonFinal.lua номер пина соответствует номеру пина у Wemos D1 Mini, т. е. если желтый (Data) провод датчика припаян к пину D1, то соответсвующая строчка скрипта должна выглядеть как: local pin = 1
4) Скрипты Lua заливать через софтину ESPlorer, брать здесь
5) Лично я не понял, зачем автор скриптов подменяет MAC-адрес своего устройства на "MAC адрес от балды". Я использовал реальный MAC своего устройства. Узнать можно в ESPlorer. Его же и подставил в строчку local MACaddr = "#12-34-56-78-90-AB\n" в файле NarodMonFinal.lua.
6) Скрипты выводят результаты выполнения своих основных действий и сообщения об ошибках в консоль. Поэтому, при любых непонятках в работе устройства, подключайте его к компу, запускайте ESPlorer и читайте вывод консоли.
По цене устройства. На момент подготовки поста (25.05.2020 г. от Р. Х.): Wemos D1 Mini - 143 рубля, DS18B20 - 90 рублей. Итого - 233 рубля = примерно $3,24. Так что те, кто хотел закидать меня тапками за кликбейт, могут оставить свои тапки себе.
За сим откланиваюсь, всем бобра, вкусных печенюгов и нескрипучих половиц :)