Приветствую всех! Долговое время не имел возможности поведать общественности о том, во что же все же превратился мой проект.
Наконец дошли руки для написания еще одной статьи.
В первой моей статье, «Ethernet погодная станция», было поведано о проекте создания домашней метеостанции с определенным заделом на расширение функционала в будущем. На текущий же момент из проекта данное изделие перешло в раздел полноценного устройства. Работающего по принципу 24/7 и добросовестно сообщающего мне и моему семейству о состоянии погоды. Сразу скажу, что многое было изменено.
Изначально была идея использовать домашний сервер, но в дальнейшем, я все же пришел к тому, что будет более функционально и доступно использовать облачные сервисы для отображения и хранения данных. И тут я наткнулся на статью одного из читателей «Хабра» Евгения Богера evgeny_boger «Демонстрация работы Wiren Board Smart Home», где описывалось применение замечательного сервиса Ninja Blocks. На нем я и решил реализовать отображение данных.
На текущий момент это выглядит так:
Сразу сделаю оговорку, на графиках видна небольшая нелинейность данных, нечто вроде «дребезга». Пока данную проблему мне устранить не удалось, возможно это либо из за большого промежутка логирования данных (раз в 60 сек.). Или просто определенная погрешность датчиков. Если кто подскажет решение, буду признателен. А для особо внимательных можно увидеть что измерение давления идет в «КВтч», это потому, что как ни странно, я ни нашел в Ninja Blocks графика для отображения данных о давлении. Поэтому для «цветовой» дифференциации и попросту визуального восприятия я использовал график отображения потребляемой мощности. Так же видно два графики внутренней температуры. Это обусловлено тем, что BMP085 так же имеет возможность измерения температуры, и я использовал его как контрольный датчик.
Скажем несколько слов о самом коде:
Работать с самим сервисом Ninja Blocks с точки зрения кода очень просто и удобно.
Для начала необходимо создать аккаунт на самом облаке. Для этого идем по адресу: «Ninja Blocks»
Создаем аккаунт.
Теперь у нас есть уникальный код, «токен», для использования в самом коде, чтобы идентифицировать наше устройство.
Стоит добавить что нам необходим для Arduino Virtual Block Token.
Теперь переходим к написанию кода.
Изначально указываем нужную библиотеку, при написании скетча:
Далее прописываем соединение с сервером самого облака Ninja Blocks:
А потом указываем какие данные отправлять и какой график использовать для их отображения.
На примере температуры это выглядит так:
Полный перечень возможных графиков и их описание можно найти здесь «Перечень графиков». Увы, но графической подсказки отображения нет. Я лично, искал требуемый, методом перебора нужных.
Еще надо сказать, что указанный в коде график появляется автоматический в разделе «Dashboard»:
Вот вкратце как работать с данным сервисом.
Итоговый код приводить я не стал, т.к. он не отличается чем то оригинальным. Если кому то будет интересно, вышлю.
Само же изделие, на текущий момент, имеет вот такой вид:
Станция оформлена в полноценный корпус, снабжена внешним БП в 5В. Как видно из фото имеет два индикатора, для оценки работы, «зеленый» — питание, «красный» — передача данных. Сразу скажу что собиралось все не по принципу «заводского» изделия, а по старому русскому принципу «я тебя слепила из того что было!». Но, однако, все же была попыткаслепить из... сделать «как надо».
Немного о параметрах измерения самих метеоданных
Это все же метеостанция и было бы не верно не упомянуть о диапазонах измерямых ее параметров.
Измерение параметров внутри помещения:
• Диапазон измерения влажности 0%..100%
• Диапазон измерения температуры -40 ~ +80℃
Измерение параметров снаружи помещения:
• Диапазон измерения влажности 0%..100%
• Диапазон измерения температуры -40 ~ +80℃
Измерение параметров давления воздуха:
• Диапазон измеряемых давлений, mbar 300 — 1100
Отдельное слово хочется сказать о размещении внешнего датчика. Над его размещением я долго думал. Вначале датчик ютился в обычной монтажной коробке, по соседству с датчиком от «заводской» метеостанции:
Но это было временно. Да и выглядело довольно ужасно. В итоге решение было найдено. И для размещения внешнего датчика было создано вот «это»:
Да, и зачем так много гаек 0_о? Нет, не в качестве противовеса, а просто для вида))) Достаточно и одной было бы)
Теперь оба датчики соседствую вот таким образом:
Кому будет интересен процесс создания сия чуда, домашние окрестили это просто «ёлочкой», то пошаговое фото в архиве в приложении АРХИВ ФОТО. Изначально прошу прощения за качество, фото делалось в процессе.
А еще, данная «ёлочка» ночью имеет довольно эстетичную кислотно-зеленую внутреннюю подсветку! Которую прекрасно видно с земли. Ну это так, больше «лирика», для распугивая особо впечатлительных соседей)
В заключении:
В итоге имеем полноценную, не очень дорогостоящую, вполне работоспособную метеостанцию.
Которая дает данные о температуре и влажности внутри и снаружи помещения, а так же данные о давлении воздуха. Так же доступ к этим данным может быть осуществлен с любого устройства имеющего выход в интернет благодаря сервису Ninja Blocks.
Что дальше?!?
Сейчас есть идеи сделать проект более масштабным, написать виджет для платформы Android. Реализовать доступность данных не только мне, но и остальным жителям района и города в целом. Ведь погода с конкретной точки горазда точнее, чем погода с «gismeteo» или иных ресурсов, имеющих глобальные данные.
Использованные материалы:
«Ethernet погодная станция»
«Демонстрация работы Wiren Board Smart Home»
P.S.
Кому интересно буду рад ответить на все вопросы. Исходники кода могу выслать.
Наконец дошли руки для написания еще одной статьи.
В первой моей статье, «Ethernet погодная станция», было поведано о проекте создания домашней метеостанции с определенным заделом на расширение функционала в будущем. На текущий же момент из проекта данное изделие перешло в раздел полноценного устройства. Работающего по принципу 24/7 и добросовестно сообщающего мне и моему семейству о состоянии погоды. Сразу скажу, что многое было изменено.
Изначально была идея использовать домашний сервер, но в дальнейшем, я все же пришел к тому, что будет более функционально и доступно использовать облачные сервисы для отображения и хранения данных. И тут я наткнулся на статью одного из читателей «Хабра» Евгения Богера evgeny_boger «Демонстрация работы Wiren Board Smart Home», где описывалось применение замечательного сервиса Ninja Blocks. На нем я и решил реализовать отображение данных.
На текущий момент это выглядит так:
Сразу сделаю оговорку, на графиках видна небольшая нелинейность данных, нечто вроде «дребезга». Пока данную проблему мне устранить не удалось, возможно это либо из за большого промежутка логирования данных (раз в 60 сек.). Или просто определенная погрешность датчиков. Если кто подскажет решение, буду признателен. А для особо внимательных можно увидеть что измерение давления идет в «КВтч», это потому, что как ни странно, я ни нашел в Ninja Blocks графика для отображения данных о давлении. Поэтому для «цветовой» дифференциации и попросту визуального восприятия я использовал график отображения потребляемой мощности. Так же видно два графики внутренней температуры. Это обусловлено тем, что BMP085 так же имеет возможность измерения температуры, и я использовал его как контрольный датчик.
Скажем несколько слов о самом коде:
Работать с самим сервисом Ninja Blocks с точки зрения кода очень просто и удобно.
Для начала необходимо создать аккаунт на самом облаке. Для этого идем по адресу: «Ninja Blocks»
Создаем аккаунт.
Теперь у нас есть уникальный код, «токен», для использования в самом коде, чтобы идентифицировать наше устройство.
Стоит добавить что нам необходим для Arduino Virtual Block Token.
Теперь переходим к написанию кода.
Изначально указываем нужную библиотеку, при написании скетча:
#include <NinjaBlockEthernet.h>
Далее прописываем соединение с сервером самого облака Ninja Blocks:
NinjaBlock.host = "api.ninja.is";
NinjaBlock.port = 80;
NinjaBlock.nodeID = "ETHERSHIELDBLOCK"; // - Уникальное имя вашего устройства;
NinjaBlock.token = "уникальный код";// - Уникальный код вашего устройства получаемый при регистрации;
NinjaBlock.guid = "0";
А потом указываем какие данные отправлять и какой график использовать для их отображения.
На примере температуры это выглядит так:
void loop()
{
float t1 = dht.readTemperature();
{
NinjaBlock.deviceID=(31); // - Указание используемого графика;
NinjaBlock.send(t1);
}
Полный перечень возможных графиков и их описание можно найти здесь «Перечень графиков». Увы, но графической подсказки отображения нет. Я лично, искал требуемый, методом перебора нужных.
Еще надо сказать, что указанный в коде график появляется автоматический в разделе «Dashboard»:
Вот вкратце как работать с данным сервисом.
Итоговый код приводить я не стал, т.к. он не отличается чем то оригинальным. Если кому то будет интересно, вышлю.
Само же изделие, на текущий момент, имеет вот такой вид:
Станция оформлена в полноценный корпус, снабжена внешним БП в 5В. Как видно из фото имеет два индикатора, для оценки работы, «зеленый» — питание, «красный» — передача данных. Сразу скажу что собиралось все не по принципу «заводского» изделия, а по старому русскому принципу «я тебя слепила из того что было!». Но, однако, все же была попытка
Немного о параметрах измерения самих метеоданных
Это все же метеостанция и было бы не верно не упомянуть о диапазонах измерямых ее параметров.
Измерение параметров внутри помещения:
• Диапазон измерения влажности 0%..100%
• Диапазон измерения температуры -40 ~ +80℃
Измерение параметров снаружи помещения:
• Диапазон измерения влажности 0%..100%
• Диапазон измерения температуры -40 ~ +80℃
Измерение параметров давления воздуха:
• Диапазон измеряемых давлений, mbar 300 — 1100
Более точные параметры BMP085
- Абсолютная точность, mbar (в лучшем/худшем случае) ±2.5 / ±4.0
- Относительная точность, mbar (в лучшем/худшем случае) ±0.2/±0.5
- Максимальное разрешение, mbar/m (давление/высота) 0.01
- Диапазон измеряемых температур, °С 0 — 65
- Абсолютная точность, °С (в лучшем/худшем случае) ±0.5/±2.0
- Максимальное разрешение, °С 0.1
- Средний ток потребления (1 семпл/с), µA (min/max) 3/12
Отдельное слово хочется сказать о размещении внешнего датчика. Над его размещением я долго думал. Вначале датчик ютился в обычной монтажной коробке, по соседству с датчиком от «заводской» метеостанции:
Но это было временно. Да и выглядело довольно ужасно. В итоге решение было найдено. И для размещения внешнего датчика было создано вот «это»:
Да, и зачем так много гаек 0_о? Нет, не в качестве противовеса, а просто для вида))) Достаточно и одной было бы)
Теперь оба датчики соседствую вот таким образом:
Кому будет интересен процесс создания сия чуда, домашние окрестили это просто «ёлочкой», то пошаговое фото в архиве в приложении АРХИВ ФОТО. Изначально прошу прощения за качество, фото делалось в процессе.
А еще, данная «ёлочка» ночью имеет довольно эстетичную кислотно-зеленую внутреннюю подсветку! Которую прекрасно видно с земли. Ну это так, больше «лирика», для распугивая особо впечатлительных соседей)
В заключении:
В итоге имеем полноценную, не очень дорогостоящую, вполне работоспособную метеостанцию.
Которая дает данные о температуре и влажности внутри и снаружи помещения, а так же данные о давлении воздуха. Так же доступ к этим данным может быть осуществлен с любого устройства имеющего выход в интернет благодаря сервису Ninja Blocks.
Что дальше?!?
Сейчас есть идеи сделать проект более масштабным, написать виджет для платформы Android. Реализовать доступность данных не только мне, но и остальным жителям района и города в целом. Ведь погода с конкретной точки горазда точнее, чем погода с «gismeteo» или иных ресурсов, имеющих глобальные данные.
Использованные материалы:
«Ethernet погодная станция»
«Демонстрация работы Wiren Board Smart Home»
P.S.
Кому интересно буду рад ответить на все вопросы. Исходники кода могу выслать.