О ресурсе САМОПАЛ.PRO

О ресурсе СМОПАЛ.PRO

Этот ресурс для тех, кому интересно делать вещи своими руками.

В основном речь пойдет о:

Arduino, AVR и разных самоделках на них

«Умном доме» своими руками

Самодельном свете с использованием светодиодов

Покупке всего что нужно для самоделок в интернете

 

 

Создание своего класса устройств в MajorDoMo

001Итак я наклепал кучу контроллеров с MySensors и подключил их к MajorDoMo через шлюз. Данная статья о том как с этим жить дальше. Ведь для подключения к MajorDoMo с каждым устройством приходится выполнять немало действий: создание объектов и подключение их к сенсорам Mysensors, настройка обработки приходящих значений, отображение показаний на экранных формах (планах, сценах), формирования отчетов по показаниям датчиков.

 

Для подключения устройств Mysensor к MajorDoMo я вижу два пути:

  1. Максимально воспользоваться тем что есть. То есть прицепить все сенсоры, которые подключились к системе, к существующим классам системы, а далее цеплять их к сценам, формам, графикам и сценариям.
  2. Создать свою иерархию классов , соответствующих моим устройствам, максимально заложить в них логику работы и отображения данных и уже цеплять все подключившиеся сенсоры к ним.

До сих пор я максимально шел по первому пути, разве что немного расширял существующие классы. В результате я получил огромное количество однотипных объектов (ведь каждому сенсору моего устройства, которых у меня получается от 2 до 10, нужно создать отдельный объект соответствующего класса)

Кончилось все это переустановкой MajorDoMo (почему то при вызове сцен стал подвисать Apache c 100% загрузкой процессора), и вместе с этим я решил навести порядок в классах.

Универсальный сторожевой таймер на ATtiny13

3d-3Внешний сторожевой таймер это костыль для плохих разработчиков, которые не могут разработать нормально работающую программу для микроконтроллеров или стабильно работающую схему.

Тем более встроенный WDT имеется у большинства современных микроконтроллеров.

Но бывают случаи, когда приходится иметь дело с готовой платой или модулем с определенными проблемами. Свой первый WDT я сделал для борьбы с редкими, но все же иногда происходящими зависаниями ESP8266. Причем софтовый ресет тогда не спасал и ESP-шка не хотела переподключаться к WiFi. Передергивание питания внешним WDT решило проблему.

Вторая проблема возникла с GSM контроллером Elecrow ATMEGA 32u4 A9G. Здесь имели место быть очень редко случающиеся зависание SIM-карты. (Кстати эта же проблема бывает и с USB-модемами 3G и 4G). Для борьбы с таким зависанием нужно передернуть питание на SIM-ке. И вроде даже вывод у GSM модема для этого есть, но в схемотехнику устройства данная возможность не заложена. И для достижения максимальной надежность пришлось снова обращаться к внешней сторожевой собаке.

Octoprint на Orange PI с сенсорным экраном 3.5″

303После покупки нового 3D принтера я задумался над сервером удаленной печати. В наличии имелись апельсиновые  ПК Orange PI PCOrange PI PC+ и Orange PI ZERO — вполне годные микрокомпьютеры для того чтобы установить Octoprint с камерой. Захотелось сразу еще и маленький сенсорный экран. HDMI экраны с USB тачем показались дороговатыми и слишком громоздкими. Приглянулся  для данного проекта сенсорный экран 3.5″ для Raspberry PI.

Подключение датчиков влажности почвы к MajorDoMo

000
Недавно я разработал партию резистивных  сенсоров влажности почвы
. В этой статье я расскажу, как подключить эти сенсоры к системе умного лома MajorDoMo и сделать информацию по влажности почвы комнатных растений удобной для использования.

Перед тем как перейти к настройке MajorDoMo я немного конкретизирую свои требования:

  • Сервер должен делать пересчет показаний сервера в калиброванное значение влажности почвы, а также в упрощенные понятия «сухо», «влажно», «срочно полить».
  • Подключение однотипных сенсоров к системе должно быть как можно менее трудозатратным.
  • Показания всех сенсоров (влажности и состояния батареи) должны отображаться на одной экранной форме.
  • Должна быть настроена система оповещений с конкретными рекомендациями и проблемами для всей системы контроля влажности почвы.
  • При необходимости нужен отчет по частоте полива, дате последнего полива и прогнозу даты следующего полива

Резистивные датчики влажности почвы с Mysensors

402В прошлый раз я разрабатывал сенсор влажности почвы.

Но проект пошел довольно туго. Тут и нестабильность показаний и сложность с программной частью и потеря пакетов при передаче 433 МГц. Как оказалось, медный электрод в почве, да еще и под током дико окисляется.

И вот новая версия резистивного (пока) датчика влажности почвы

Небольшой сверлильный станок

105Для сверления печатных плат я использую самодельный станок ЧПУ. Но бывает, что ради маленькой платы с десятком, другим отверстий настраивать станок просто лень нецелесообразно.  А сверлить ручной дрелью отверстия 0.5 — 1.0 мм — прямой перевод сверл. Вот и решил я изготовить свой маленький станок, благо есть 3D-принтер для изготовления конструкционных элементов.

Сервер MajorDoMo из старого нетбука

MajorDoMo — бесплатная платформа для создания умного дома, мощная и гибкая, поддерживающая самое разное оборудование. Платформа написана на PHP, работает через веб сервер и хранит данные на сервере MySQL. Все это подразумевает работу на выделенном сервере.

Первым делом поднял  MajorDoMo на одноплатном компьютере Orange PI PC.  Для запуска шлюзов с различными устройствами заказал изготовление платки шилда.

000

В стандартном образе MajorDoMo для Orane PI и Raspberry PI с целью уменьшения количества операций записи на карту памяти и увеличения времени ее жизни БД запускалась на RAMDISK с сохранением дампа на карту памяти раз в несколько минут.

Китайский клон Ultimaker 2 CL260 в виде набора конструктора

001В ноябре прошлого года я купил на Алиэкспресс неплохой клон Пруши I3 со стальной рамой
За 7 месяцев я извел почти 5 км пластика и с ужасом вспоминал те времена, когда жизнь жалко влачилась без 3Д принтера. Все мелкие улучшения этого принтера я сделал и думал уже о крупном апгрейде.
Но жизнь распорядилась иначе — старый принтер удалось пристроить в хорошие руки. И вот опять — муки выбора. Бюджет установил себе в $300 и совсем уже было решил остановиться на «летающем медведе» Flyingbear P905, но гуру с 3DTODAY посоветовали обратить свой взор на китайский Ultimaket 2 CL-206. Обратил, понравилось, купил, о том и обзор.

Контроллер управления вентилятором Mysensors + MajorDoMo

200Год эксплуатации контроллера управления вентилятора в ванной на ESP8266  выявил массу недочетов в эксплуатации. И хотя интеграция в MajorDoMo этого устройства прошла на ура, основные из них создавали проблемы

  1. «Подвисание» контроллера при отсутствии сервера или вайфая, связанные с таймаутами в протоколе TCP/IP
  2. Перезагрузки контроллера при интенсивном обмене информацией с сервером
  3. Удаленная кнопка включения вентилятора из туалета постоянно ловила помехи, вызывая ложные включения выключения

Эксперимент с протоколами MQTT/HTTP и прочими особо ничего не изменил. 100% надежности работы так и не получилось. Рассматривая пути решения проблемы — вернуть все назад на Atmega328, перейти на ESP32 или поискать более менее стабильную прошивку ESP8266 типа BLYNK, остановился на первом, но с дополнением радиомодуля NRF24L01 и библиотеки Mysensors.

Вот что из этого получилось:

Погодный сенсор для умного дома Mysensors + Majordomo

201Погодная станция с NRF24L01 работает у меня уже несколько лет. Проблем с сенсором особо не было. Несколько раз в сильный дождь сенсор переставал передавать данные, но потом все восстанавливалось. В последнее время перестал показывать индикатор. Скорее всего окислились контакты. Или проводок где-то отпал. Все таки навесной монтаж — не самая надежная в мире штука. Основной недостаток существующего решения — отсутствие нормальной серверной части. Хотелось бы иметь возможность свеcти все данные в единую систему с возможностью отображения и использования этой информации для других  компонентов умного дома.

Заканчиваю длинную преамбулу. Далее будет статья про новый погодный сенсор на базе модуля с BME280, NRF24L01 и библиотекой Mysensors, подключенный к Majordomo серверу.