Умный дом на ESP8266+MajorDoMo. Часть 4. Подключение преобразователя температуры DS18B20.

Наконец дошли до меня преобразователи температуры DS18B20.

Разбивать статью на части не буду, т.к. описание структуры ESP8266 и создание классов MajorDoMo есть в предыдущих частях.

Преобразователь DS18B20 подключен по схеме с внешним питанием к пину 1 (GPIO 5) модуля ESP8266.

Структура моей программы не изменилась — состоит из 4 файлов. Сама библиотека 1-Wire встроена в прошивку NodeMCU (помните, в конструкторе прошивки ставили галочку?).

Код файла init.lua (автозагрузка модуля):

Код файла config.lua (файл общих настроек):

Код файла main.lua (основной файл выполнения программы):

Код файла DS18B20.lua (библиотека преобразователя DS18B20. Основная функция — чтение температуры):

Опрос датчика температуры происходит каждые 5000 мс. По окончании измерения создаем соединение к серверу с установленной системой МДМ, и отправляем GET-запросом данные о температуре, где они и сохраняются. Также показания температуры выводятся в UART.

Теперь можно ввести в браузере адрес нашего чипа и увидеть показания датчика.

Теперь займемся интеграцией температуры в МДМ. В прошлых частях мы создавали основной класс для всех устройств ESP8266, и его подкласс для преобразователей движения. Теперь создадим новый подкласс для преобразователей температуры. Назовем его TemperatureSensor. Зададим время хранения данных равным 365 дней. Для такого значения рекомендую отправлять значения 1 раз в 5-10 минут (в примере выше 5 секунд). Температура в комнате ведь вещь инерционная, зачем нам каждые 5 секунд ее опрашивать и записывать? 1 раз в 10 минут вполне достаточно, а можно и реже.

В этом классе (TemperatureSensor) создаем новое свойство temperature.

Теперь создадим объект этого класса с названием temperatureKitchen — соответственно показания температуры на кухне.

Теперь почти все готово. Строка из «main.lua»:

будет устанавливать значение свойства temperature объекта temperatureKitchen равным нашей температуре, и зайдя в свойства этого объекта ее можно будет там лицезреть.

Но веселее видеть ее на главном экране. Создадим новый элемент меню управления (Панель управления -> Объекты -> Меню управления).

Значение между знаками % является значением переменной (не знаю как точно назвать). В данном случае это свойство temperature объекта temperatureKitchen, где и хранится наша температура. Сохраняемся. Вот так будет выглядеть наше меню управления:

Ну и соответственно зайдя на главную страницу сервер МДМ увидим показания температуры.

Но все показания температуры сохраняются! Было бы неплохо вывести график температуры за 1 час (день, неделю, месяц, год). Зайдем в пункт Charts (Панель управления -> Объекты -> Меню управления -> Charts). Если такой отсутствует — его нужно подключить (Система -> Маркет дополнений -> Информация -> Charts). Нажимаем кнопку добавить.

После создания графика добавим в него данные. Зайдем в редактирование созданного графика, и выбираем вверху пункт «Данные». В качестве типа графика выбираем «Area» (можете попробовать, как отображаются другие графики). В качестве связанного объекта выбираем наш созданный класс temperatureKitchen. После этого в пункте «Связанное свойство» появится список свойств объекта, у нас одно одно — temperature. И сохраняем.

Вот и все. Внизу у нас появится график, построенный из сохраненных значений температуры.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.