Ethernet метеостанция 2 – Продолжение…

    Приветствую всех! Долговое время не имел возможности поведать общественности о том, во что же все же превратился мой проект.
    Наконец дошли руки для написания еще одной статьи.

    В первой моей статье, «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
    1. Абсолютная точность, mbar (в лучшем/худшем случае) ±2.5 / ±4.0
    2. Относительная точность, mbar (в лучшем/худшем случае) ±0.2/±0.5
    3. Максимальное разрешение, mbar/m (давление/высота) 0.01
    4. Диапазон измеряемых температур, °С 0 — 65
    5. Абсолютная точность, °С (в лучшем/худшем случае) ±0.5/±2.0
    6. Максимальное разрешение, °С 0.1
    7. Средний ток потребления (1 семпл/с), µA (min/max) 3/12



    Отдельное слово хочется сказать о размещении внешнего датчика. Над его размещением я долго думал. Вначале датчик ютился в обычной монтажной коробке, по соседству с датчиком от «заводской» метеостанции:


    Но это было временно. Да и выглядело довольно ужасно. В итоге решение было найдено. И для размещения внешнего датчика было создано вот «это»:

    Да, и зачем так много гаек 0_о? Нет, не в качестве противовеса, а просто для вида))) Достаточно и одной было бы)

    Теперь оба датчики соседствую вот таким образом:


    Кому будет интересен процесс создания сия чуда, домашние окрестили это просто «ёлочкой», то пошаговое фото в архиве в приложении АРХИВ ФОТО. Изначально прошу прощения за качество, фото делалось в процессе.
    А еще, данная «ёлочка» ночью имеет довольно эстетичную кислотно-зеленую внутреннюю подсветку! Которую прекрасно видно с земли. Ну это так, больше «лирика», для распугивая особо впечатлительных соседей)

    В заключении:
    В итоге имеем полноценную, не очень дорогостоящую, вполне работоспособную метеостанцию.
    Которая дает данные о температуре и влажности внутри и снаружи помещения, а так же данные о давлении воздуха. Так же доступ к этим данным может быть осуществлен с любого устройства имеющего выход в интернет благодаря сервису Ninja Blocks.

    Что дальше?!?
    Сейчас есть идеи сделать проект более масштабным, написать виджет для платформы Android. Реализовать доступность данных не только мне, но и остальным жителям района и города в целом. Ведь погода с конкретной точки горазда точнее, чем погода с «gismeteo» или иных ресурсов, имеющих глобальные данные.

    Использованные материалы:
    «Ethernet погодная станция»
    «Демонстрация работы Wiren Board Smart Home»

    P.S.
    Кому интересно буду рад ответить на все вопросы. Исходники кода могу выслать.
    Метки:
    Поделиться публикацией
    Похожие публикации
    Комментарии 23
    • +2
      За елочку спасибо, интересная идея!
      • +1
        Ээээ… а он точно измеряет влажность от 0 до 100%? Обычно этот диапазон измерений доступен только путем измерения точки росы, а для датчиков влажности крайне сложно измерять в диапазонах 0..10% и 90..100%. Фактически датчики могут работать только в диапазонах 10..90%
        • 0
          Возможно Вы и правы, однако я опирался на сухие данные из datasheets используемых датчиков.
          datasheets
          Да и сами показания влажности при значениях более 90% корректы и стабильны, не скажу чтобы врали датчики. Как эталон брал находящуюся недалеко от меня метеостанцию нашего НовГУ.
        • +2
          Да, и зачем в елочке так много гаек? в качестве противовеса, или девать некуда и надо было списать 20шт гаек?
          • 0
            Просто «для вида», хватило бы и одной)
          • +1
            Столько лишнего места из-за «УНЫ». Поставили бы iBoard — все получилось бы компактнее.
            • +1
              Производитель разъема Ethernet просто зачётный!
              • +1
                Что поделаешь. У китайцев это может что-то возвышенное означать )))
                • +1
                  Лисица А Хули, например.
              • 0
                Да, но это один и моих первых эксперементов с «Уной», собирая бы сейчас, использовал что то более компактное.
                Но и ограничений по месту у меня небыло.
                • 0
                  + собиралось по модульному принципу, т.е с максимальной изменяемостью. Поэтому и поставлено два шилда + «Уна».
              • +1
                Датчики можно было купить в более защищенном виде.
                Например, датчик температуры в водонепроницаемой гильзе.
                ru.aliexpress.com/item/wholesale-DS18B20-Stainless-steel-package-1-meters-waterproof-temperature-probe-temperature-sensor-high-quality-free-shipping/1862628791.html
                Точность 0,5 градуса.

                А датчик влажности — в пластиковом кожухе
                ru.aliexpress.com/item/10PCSX-Module-AM1001-resistive-humidity-sensor-of-humidity-module-in-stock-free-shipping/1645077415.html
                Точность 5% (от 20 до 90%)
                • 0
                  Да, с DS1820 работали не мало. Это датчик подкупил комбинированностью. Ну и корпус к нему получился не плохой в итоге.
                • 0
                  Кстати, а вдруг такая елка будет неплохой антенной для GSM модемов?
                  • 0
                    Если применить пластмассу то может и да. А в таком варианте, боюсь только будет глушить сигнал.
                  • –1
                    не понятен смысл публикации! похвастаться? покажите методы реализации связи с ninja blocks, ньюансы в коде и т.д а пластмассовые ящики с ардуино у всех есть и в более смышных реализациях.
                    • 0
                      Смысл публикации в продолжении первой статьи и реализации от идеи до готового устройства.
                      А так же закончености мысли изложеной ранее.
                      Соглашусь что «вертолет не изобрел» и можно сделать и более сложную реализацию.
                      Но свою мысль реализовал. Данные исправно идут в режиме 24/7 и уже около года.
                      • –1
                        нет в ней смысла! покажите, что Ваше устройство работает на ninja blocks, а не фотки сверленого пластика.
                    • +2
                      Кстати, категорически не советую использовать стандартный клиент ninjablocks, который на nodejs. Товарищи из Ninja Blocks некоторое время назад открыли MQTT-интерфейс, так что отправлять туда данные теперь очень просто.
                      Можно посмотреть на нашу реализацию, которая теперь крутится на Wiren Board Smart Home — github.com/contactless/wb-homa-drivers/tree/master/wb-homa-ninja-bridge
                      • +1
                        скиньте код пожалуйста, особенно про ninja blocks
                        • 0
                          Код отправил + дал пояснения в статье как работать с данным сервисом.
                        • 0
                          К сожалению ссылка на перечень графиков уже не действует. Сколько их там? Чем отличаются?
                          Какие можно использовать для температуры, давления, влажности, освещенности?
                          • 0
                            Увы, да. Ссылка не доступна. И причин в блоге компании я не нашел.
                            Очень жаль, т.к. сам хотел использовать данный функционал далее.

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.