Показаны сообщения с ярлыком полоумный дом. Показать все сообщения
Показаны сообщения с ярлыком полоумный дом. Показать все сообщения

понедельник, 13 сентября 2021 г.

Domoticz. Резервное копирование

В документации к Domoticz описаны несколько вариантов копирования, но почему-то нет самого очевидного варианта с SMB. Набросал простой скрипт для резервного копирования базы domoticz.db на общий сетевой диск. В моём случае это общая папка на роутере keenetic. Внимательно читаем официальную инструкцию как расшарить диск и правильно назначить права на шару. Скрипт размещу на самом сервере Domoticz. 

Ставим необходимые пакеты

sudo apt-get install cifs-utils

На сервере domoticz внесем изменения в fstab чтобы монтировать общий диск backup. Добавим строчку

sudo nano /etc/fstab 
//10.0.0.1/Backup /media/backup cifs username=name,password=pwd,uid=1000,gid=1000,nofail 0 0

//10.0.0.1/Backup - путь до сетевой папки

/media/backup - точка монтирования на сервере

cifs - тип файловой системы

username=name,password=pdw,uid=1000,gid=1000,nofail - параметры монтирования сетевой диска 

!РЕКОМЕНДУЮ обязательно добавлять nofail для продолжения загрузки сервера в случае ошибок при монтировании (недоступность сетевой папки)

Перезагружаемся и проверяем содержимое

ls /media/backup

Создаем новый скрипт в папке domoticz (актуальная версия)

cd domoticz\sctipts&&nano domoticz-backup.sh
#!/bin/bash
# Задаем переменные с настройками доступа к серверу Domoticz и пути к файлам
D_IP="localhost"
D_PORT="505"
D_DEST="/media/backup/Domoticz"
D_SRC="/home/pi/domoticz/"
FIND="/usr/bin/find"

# Задаем формат именования файлов для копирования
D_DATABASE="$(date '+%Y%m%d')_database.db"
D_SCRIPTS="$(date '+%Y%m%d')_scripts.tar.gz"
D_PLUGINS="$(date '+%Y%m%d')_plugins.tar.gz"

# Создаем файл и перемещаем его на примонтированный сетевой диск
/usr/bin/curl -s http://$D_IP:$D_PORT/backupdatabase.php > $D_DEST/$D_DATABASE

# Архивируем данные
gzip -9 $D_DEST/$D_DATABASE --force
tar -zcvf $D_DEST/$D_SCRIPTS $D_SRC/scripts/ --ignore-failed-read
tar -zcvf $D_DEST/$D_PLUGINS $D_SRC/plugins/ --ignore-failed-read

# Удаляем файлы бэкапов старше 14 дней
$FIND $D_DEST -name '*.gz' -mtime +14 -delete
Делаем файл исполняемым
chmod +x domoticz_backup.sh
Добавляем в cron выполняться раз в день
crontab -e
0 1 * * * /home/pi/domoticz/scripts/domoticz-backup.sh >/dev/null 2>&1

четверг, 23 апреля 2020 г.

Умный дом. Что нужно купить и сколько всё это стоит?!

Это вообще второй вопрос, который задают услышавшие про "умный дом" люди. Первый - "а нафига оно надо? свет в сартире я и так могу выключить". Сколько надо приготовить деньжат, если хочешь, чтобы за тебя всё делала автоматика. Здесь небольшая ремарка, одно дело купить всё это, и другое дело всё это настроить по сценариям, которые придут тебе в голову. В Domoticz все примитивы, вроде включения света по расписанию можно сделать при помощи Blockly-скриптов (т.е. графически). Но если вы педант, и любите извращения, к примеру - включение вытяжки в санузле, если влажность в выросла в период в 5 минут с Х% до Y% и после 2 минут после выключения душа, то тут надо изучать dzvents. А это практически программирование.
Времени на подобную автоматизацию уходит дофига. Плюс всё надо записать, чтобы не забыть через неделю как это делалось.  

вторник, 3 марта 2020 г.

Номер дома из гибких светодиодов

Закончил наконец регистрацию дома, получил официальный адрес и номер дома. Запилил оригинальный номер дома из гибких светодиодов. Светодиоды имеют пыле-влагозащиту IP68. 
В комплекте было только 2 пластиковых фиксатора для крепления ленты. Пришлось фиксировать белыми стяжками. Нет к ним доверия, буду искать ещё фиксаторов.





среда, 26 февраля 2020 г.

Domoticz. Уведомления о работах на линии РОССЕТИ

В продолжение моих изысканий на тему удобной работы с МРСК Северо-Запад (РОССЕТИ). Есть у них информационная страница с данными об плановых отключениях. Там же можно подписаться на e-mail рассылку об отключениях (UPD! 03.2020 оно не работает, появились события о работах, а электронное письмо не пришло). Между тем, добавлю эту информацию в Domoticz и настрою уведомления о будущих работах через телеграм, или как событие в гугл-календарь.

понедельник, 18 ноября 2019 г.

SSOCR. Оцифровка показаний приборов

Навеяно темой про мониторинг напряжения. А что делать, если нет таких ИБП? Покупать три штуки на каждую фазу? Бред конечно. Хотя бы для зрительного контроля, установлен РН-106, или ВР-М03-1? 

Ещё с тех времен, когда техкомната не была даже зашита гипсокартоном, уже висела малинка с вебкамерой. чтобы смотреть что там происходит. А почему бы не снимать показания РН в реальном времени, и оцифровывать их в Domoticz?! Если исхитриться, то можно захватить в кадр и текущую температуру теплоносителя, которую показывает котел!

Что надо? Собственно вебкамера, направленная на щит, по возможности сфокусированная на реле с показаниями. ffmpeg, для записи снимков в формате jpg и программа ssocr для распознавания изображений.
Снимки делаю при помощи ffmpeg, на максимальном разрешении, возможном для камеры Microsoft HD3000.
ffmpeg -f video4linux2 -input_format mjpeg -video_size 1280x720 -i /dev/video0 -vframes 1 -f mjpeg /tmp/snapshot.jpeg
Далее, с ssocr пришлось вникать.
Главное - это надёжно зафиксировать камеру, чтобы изображение было максимально статично. Иначе будет сбоить ssocr  и выкидывать фокусы.
sudo apt-get update
sudo apt-get install libx11-dev
sudo apt-get install libimlib2-dev
git clone https://github.com/auerswal/ssocr.git
cd ssocr
make
Скопируем исполняемый файл
sudo cp ./ssocr /usr/local/bin/ssocr
!!! Буду разбирать весь процесс, чтобы было яснее) И ещё будут только скриншоты, чтобы ничего не копипастили в консоль. а сами набирали)
Приступаем. Исходное изображение.
Как видите, крупноватый кадр для теста)
Ок, тут понятно, вроде ругается, что нашёл только одну цифру. Укажем параметр -d -1 чтобы показал все цифры (-d, --number-digits=# number of digits in image (-1 for auto))
Хмм, 8. Что значит 8? Добавим наконец вывод отладочной информации -D, в виде файла testbild.png (да, имя выходного файла можно не указывать, testbild.png оно по-умолчанию)
Опять "8". Посмотрим наконец testbild.png
Ага, уже повеселее. Что значат эти цветные линии?
"In this image the left border of a digit is represented by a red column, the right border as a blue column. Horizontal green lines of digit width show connected vertical digit parts."
Понятно, значит всё это изображение, ssocr расценил как одну цифру, 8. Попробуем сузить область для поиска цифр при помощи параметра crop. Нам потребуются координаты начала обрезания и ширина\высота изображения. Открываем изображение через GIMP, ставим курсор на левый угол дисплея первого РН, записываем (1320*1288).
Ставим курсор на правый нижний угол третьего РН и записываем координаты (2330*1420). Теперь вычитаем от них координаты первого измерения и получаем ширину\высоту вырезанного изображения (1010*132). Duuuhhh!
Ого! Понеслась! Сколько цифр!
Теперь появилась другая проблема. Вместо 3х цифр на первом дисплее, ssocr видит одну - 8. Дальше он не может разобраться что находится между дисплеями остальных РН. Попробуем поиграть с контрастом -t (--threshold=THRESH use THRESH (in percent) to distinguish black from white). По-умолчанию эта разница установлена в 50%. Попробуем по больше, 90.
Странно, теперь видит только "-"
Нижнюю полосу видите? Вот тут он застрял. Мне потребовалось попробовать много вариантов со всеми параметрами чтобы сдвинуться с этого места. Оказалось, что по-умолчанию, передний план - черный, задний план белый. Если указать как надо, чтобы цифры ssocr увидел белыми, то всё встает на свои места!
Осталась дерзкая ".", которую можно исключить, указав выводить только цифры (-c, --charset=KEYWORD select recognized characters use -c help for list of KEYWORDS)
Ан нет, не то)) Теперь "-" превратилась в "_". Попробуем вообще игнорировать изображения, меньше 4 пикселей. Примерно на столько выглядит эта "_"
Бинго!
Теперь можно разбить это девятизначное число при помощи fold
Есть конечно у этого варианта огромный минус, если камера дернется - всё встанет.

Засунем эти показания в Domoticz. Создадим три датчика с типом Напряжение
Запишем его IDX, бла-бла-бла (см. как всё подготовить тут)
Делаем исполняемым, добавляем в крон и смотрим, как обновляется напряжение.

воскресенье, 10 ноября 2019 г.

Domoticz. Уведомляем РОССЕТИ о плохом напряжении

Мне сказочно повезло, я нахожусь последним на линии от ТП. А до меня живет удивительный сосед (не могу вычислить конкретно кто), который не заморачивался с распределением нагрузки по трем фазам и нахерачил все свои обогреватели на одну фазу. И теперь, с наступлением холодов, рандомно, в периоды с 6-8 утра, с 19-22 и при свете луны, у меня стабильно отщелкивают реле на низком напряжении в 198 В.
По нормативам, отклонения возможны в пределах +-10%. Итого от 198 до 242. У меня опускается до 184.
Звонил, писал, приезжали, замеряли - и ничего. Ничего не поменялось. Я понимаю, что надо искать негодяя, который 100% на 16А автомат повесил все обогреватели. А пока ищете, поставьте мне трехфазный стабилизатор напряжения на 15КВт)
Это всё нервы. Бесит когда гаснет свет, или вырубается микроволновка.

среда, 9 января 2019 г.

Маркировка для проводов

Перешёл к прокладке силовых проводов. До этого, на али попались на глаза интересные и недорогие стяжки с флажками для надписей. Довольно удобная штука. 
по одной на каждый конец

Стяжки держатся хорошо, никуда не сползают. Пластик качественный, ни она не проскочила. Но, разумеется - одноразовые)

среда, 26 декабря 2018 г.

Когда алюминий встречает медь

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




воскресенье, 9 декабря 2018 г.

Domoticz. Управление КИВ-125

Добавим возможность удаленного управления клапаном КИВ-125 для автоматизации простой и не дорогой вентиляции.
По моим расчетам, в двухэтажном доме будет стоять по одному клапану на комнату итого 6-7 КИВов. Это ж сколько раз надо вставать и дёргать за шнурок, если кому-то "задуло"?!

Есть два варианта подключения
На каждый КИВ вешать по Wemos D1 mini (или любой другой ESP8266) и сервопривод SG90. Потребуется всего один провод питания, но увеличится количество подключений по Wifi, так как у каждого ESP8266 свой IP-адрес.
Сделать центральный узел с Wemos D1 mini и подключить к нему расширительную плату PCA9685. От каждого КИВа тянуть по одному 3х жильному кабелю для коммутации сервопривода SG90 к PCA9685.

Так как провода тянуть придётся по-любому, выбрал второй вариант с центральным Wemos. 

Программная подготовка.
При прошивке Wemos D1 mini, надо добавить поддержку драйвера PCA9685 в my_user_config.h
Будем считать, что сервер MQTT уже установлен и настроен. Прописываем настройки сервера либо в my_user_config.h сразу, либо через веб-морду управлением Wemos позже.
После прошивки, подключаем Wemos к PCA9685 по схеме
5V -> VCC
G-> GND
D1 -> SCL
D2 -> SDA

Через веб-морду, правим настройки портов D1 и D2
Осталось подключить сервопривод SG90 к плате PCA9685 к одному из 15 портов и подключаем питание 5V2A к PCA9685 и 5V2A к Wemos. 
Внимание! В документации к PCA9685 указано, что ёмкость конденсатора должна выбираться из расчета 100мкф на 1 SG90. В моём случае, мне пришлось перепаять штатный конденсатор 10V 470мкф на более ёмкий 10V 1000мкф, так как я планирую подключить до 10 сервоприводов.

Управление поворотом сервопривода осуществляется через http-запрос, MQTT или через консоль с веб-морды Wemos. Я назначил устройству статический IP-адрес, и буду посылать команды через http. Список команд описан на вики Tasmota
Нас интересуют 
http://ip-address/cm?cmnd=driver15%20pwm,1,400
Где 1 - это номер порта PCA9685, к которому подключен сервопривод
А 400 - длина импульса.
Подбирать длину импульса (читай угол поворота привода) пока бесполезно, так как все положения изменятся после установки привода в КИВ.

Теперь поработаем руками.
Потребуется жёсткая пластина ~140*35мм в которой будет возможно сделать посадочное отверстие для SG90. Мне попалась текстолитовая пластина, толщиной 3мм. Отрезаем шпильку и прикручиваем по центру к шестеренкам пластиковую лопасть из комплекта SG90 чтобы сервопривод был ровно по центру. Закрепляем сервопривод на пластине, и шпильками прикручиваем к корпусу КИВа.

После того, как всё ровно и крепко держится - переходим к настройкам поворота лопастей. Подбираем параметр xxx и записываем, при каких лопасти полностью закрыты, открыты и приоткрыты.
http://ip-address/cm?cmnd=driver15%20pwm,1,xxx
Осталось добавить все это в Domoticz. Создадим новое устройство Настройка > Оборудование > Тип Dummy
Жмём Создать виртуальные датчики
Тип датчика Переключатель селекторный
Переходим в Переключатели, ищем свой КИВ-125 и жмём Редактировать.
Создаём 3 уровня переключателя и 3 действия в зависимости от подобранных параметров.
Тесты показали, что при длине витой пары около 5 метров, сигнал на сервопривод не теряется, и задержки никакой нет. Я переживал что из-за просадки напряжения на длинном проводе, сервы будут отваливаться.

!!!UPD 10.2019
Режим отладки. Никак не могу придумать как красиво подключить к витухе
Запустил наконец в продакшн в детской КИВ-125 и подключил по витой паре. Расстояние до сервера wemos примерно 8-9 метров. Выскочил неприятный момент. После отправки команды на любое действие (pwm 300, pwm 500 или любой другой), действие совершается, но затем SG90 начинает мерзко дёргаться (см. видео).

Вероятно потому, что сервопривод не навсегда удерживает свое положение, импульсы позиционирования должны повторяться, информируя сервопривод о сохранении положения. Если отправить pwm 4096, то серв замирает. Поэтому после отправки команды на любое действие, следом тут же следует отправлять 4096. В Меню Domoticz'a "Действия переключателя" не возможно отправить несколько команд следом и мне пришлось набросать по одному простенькому скрипту на каждое действие следующего содержания:
#!/bin/bash
# Control your KIV-125 over weemos d1 with ip 10.0.0.205.
# Current script - send OPEN command to kiv and poweroff
curl -i --silent http://10.0.0.205/cm?cmnd=driver15%20pwm,7,320
sleep 0.5
curl -i --silent http://10.0.0.205/cm?cmnd=driver15%20pwm,7,4096
Скачать три скрипта можно тут. ИМЕЙТЕ ввиду, что значение PWM для каждого уникально (зависит от того, в каком положении зафиксирован SG90 и шестерня клапана КИВа). Да, и IP адрес wemos-сервера тоже.
Кладём все в папку domoticz/scripts и делаем их исполняемыми
chmod +x kiv-*.sh
Демонстрация корректной работы

Взял в руки клеевой пистолет, монтажную коробку, 4 монтажных разъема RJ45 и собрал наконец wemos-сервер с PCA9685 в одну коробку. Замудохался припаивать по 3 проводульки к RJ45, но зато теперь можно быстро подключить\отключить КИВ. Ничего не выпадает. Остальные 5 проводов можно использовать под датчики температуры\влажности, если их примастить у КИВа, или рядом с ним. Мне показалось это излишним, но возможность я эту оставил.


суббота, 8 декабря 2018 г.

Sonoff 4CH R2. Подключение датчика температуры и влажности DHT21 (AM2301)

После подключения датчика DHT21 к Sonoff 4CH, решил добавить аналогичный функционал и к версии Sonoff 4CH R2.

Главное отличие в том, что на плате рядом с разъёмом PJ218A появились дорожки для транзистора J3Y(?) и диода. (Не нашёл схемы, может кто знает для чего они там?!)
Так вот, питание 3.3В получаем с этих разорванных дорог.
 Сперва я кинул маленькую "соплю" чтобы соединить цепь
И всё бы хорошо, но даже такое незначительное вмешательство помешало закрыть крышку. Вот интересно, на плате всё готово чтобы подключить разъем PJ218A, а крышка не закрывается. В Sonoff 4CH такой проблемы не было, всё встало без напильника.
Пришлось кинуть "соплю" на точку VCC в месте, где стоит коммутационная гребенка.
И поработать напильником, убрать 3 мм чтобы нормально опустился PJ218A.
Дальше в настройках Sonoff выставляем GPIO2>02 AM2301

пятница, 7 декабря 2018 г.

Sonoff 4CH. Подключение датчика температуры и влажности DHT21 (AM2301)

Вздумалось подключить один из складских запасов датчиков влажности и температуры AM2301, он же DHT21 к четырехканальному реле Sonoff 4CH
Важной особенность будет подключение датчика через разъем Jack 2,5mm. Чтобы была возможность оперативно подключить\отключить его от реле.
На вики к прошивке Tasmota, нашёл очерки парня, который подключал датчик температуры DS18b20. На основе этой инфы я замутил свою схему. Отличия лишь в резисторе на 10кОм. Очень много времени потратил на поиски небольшой партии PJ218A.

Добираемся до платы реле, припаиваем на место J5 разъём PJ218A.
Судя по дорожкам на плате, питание 3.3В (VCC) идёт к 3 контакту, земля (GND) ко 2му. Остается протянуть провод до IO2 для данных (DATA). Если приглянуться чуть пристальнее, то можно увидеть, что дорога от не распаянного резистора R35 ведёт к контакту 5. 
Переворачиваем плату, припаиваем резистор на 10кОм к контактам IO2 и VCC3.3 и кидаем "соплю" от IO2 до резистора R35.
Я использовал оранжевый гибкий макетный провод. 
Осталось самое сложное, припаять к штырю jack 2.5. Скажу честно, один из двух я запорол. Ко второму удалось нормально припаяться только при помощи аспирина, который к слову воняет при нагреве хоть беги. Вышло примерно так
По-порядку сверху-вниз. 1 - питание (VCC3.3), 2 - земля (GND), 3 - пустой, 4 - данные (DATA)

Вставляем джек в разъём, подключаем к реле и подаем питание. Если ещё не прошились на Tasmota, смотрим тут. Через веб-морду задаём настройки IO2 на "02 AM2301" 
Смотрим на главной странице показания
Снаружи выглядит вот так

Sonoff 4CH R2. Подключение датчика температуры и влажности DHT21 (AM2301)

вторник, 6 ноября 2018 г.

Sonoff 4CH. Установка прошивки Tasmota при помощи PlatformIO

Пришёл наконец Sonoff 4CH для управления фасадными силовыми розетками. Взял не R2, так как эта версия дешевле в 1,5 раза. Для не частных включений уличной гирлянды, мойки  и подогрева двигателя по расписанию сгодится. 
Установка полностью идентична Sonoff 4CH R2.  В отличие от Sonoff 4CH R2, гребенка для подключения USBtoTTL уже распаяна, можно подключаться без паяльника. Только вот обратите внимание, что на плате перепутаны TX - RX (!).
Тут можно почитать, как просто установить и подготовить для сборки прошивки Visual Studio Code.
Качаем Source Code.zip последней версии. Распаковываем в любую директорию. Запускаем Visual Studio Code, открываем директорию с распакованным архивом и переходим к редактированию файлов конфигурации platformio.ini в корне директории.
Меняем upload_port на тот, что у нас определился в диспетчере устройств
Начиная с версии Sonoff-Tasmota 6.3, пользовательские настройки подключения к беспроводной сети, сервера MQTT, временной зоны и прочего - находятся в файле my_user_config.h До этого, настройки были в user_config.h. Не теряйтесь.
Сперва-наперво меняем параметр #define module на SONOFF_4CH
Затем пробегаемся по секциям WiFi, MQTT и прочим необходимым параметрам.

Выставляем настройки платформы для компиляции в правом углу окна Visual Studio Code
Приводим всё к виду, как на скриншоте
Далее жмём Build и Upload в левом нижнем углу.
Не забываем перевести плату в режим программирования!
Для загрузки в режиме программирования отключаемся от USB-порта, зажимаем кнопку L1 (IO0 на плате) и подключаем снова к USB. Отпускать кнопку через 2-3 секунды.

Sonoff 4CH. Подключение датчика температуры и влажности DHT21 (AM2301)