Мониторинг отключения электричества в доме.

08 мая 2018, 09:50

Часто, возникает вопрос. Как отслеживать отключение электричества в доме?

Нам понадобится Raspberry pi 3 (Orange pi), контроллер Vera и UPS (на примере Powercom wow700)

Подключимся через Putty по SSH к  Raspberry pi 3 (Orange pi) и устанавливаем плагин nut     

sudo apt-get install nut       

Подключаем UPS к Raspberry pi и смотрим определился ли он.

lsusb   

Видим Powercom, это наш UPS. Если не определился то делаем reboot и смотрим снова

Далее настроим конфиг ups.conf

sudo nano /etc/nut/ups.conf 

добавляем строки 

[ups]

        driver = usbhid-ups

        port = auto

        desc = "Powercom wow700"

и убираем maxretry=3

сохраняем Ctrl+O и ENTER затем Ctrl+X

Далее настроим конфиг nut.conf

sudo nano /etc/nut/nut.conf   

Прописываем MODE=standalone и сохраняем Ctrl+O и ENTER затем Ctrl+X

Отправляем в рестарт и снова подключаемся по SSH

sudo reboot

Проверим загрузку драйвера

sudo upsdrvctl start

И настроим  upsd.conf

sudo nano /etc/nut/upsd.conf

где вторая строка IP нашей малинки или апельсинки.

Далее настроим доступ (юзеров)

sudo nano /etc/nut/upsd.users

Пропишем

сохраняем Ctrl+O и ENTER затем Ctrl+X

Проверим статус сервера:

sudo service nut-server status

Посмотрим какие данные с UPS

upsc ups

Далее вводи команды:

sudo chown nut:nut /etc/nut/*
sudo chmod 640 /etc/nut/upsd.users /etc/nut/upsmon.conf
sudo reboot
sudo systemctl status nut-server.service

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

Тестировал на Orange pi Ubuntu server, на Dietpi автозагрузка не работает.

А теперь поработаем с контроллером Vera

Устанавливаем UPS Monitor на Vera

Прописываем IP малинки + порт 3493

Заходим в Apps-Develop apps-Edit lua и нажимаем GO

тем самым перезагружаем LUA

Получаем:

Где уровень заряда 100% - уровень нашей батареи UPS. При отключении питания появляется авария, которую можно прокинуть в HomeKit.

Отключаем UPS от питания и получаем аварию и статус батареи

Разработчик плагина установил большое время poll. Поэтому происходит значительная задержка обновления датчика.

Можно скачать файл I_UPSSensor1.xml из Веры

Открыть его блокнотом и поменять время обновления

-- Poll the UPS Status report and update plugin status

    function refreshCache()

        debug("refreshCache called")

        -- Get polling period

        local period = tonumber(varGet("PollSettings", SIDS.ZW_DEV))

        if ((period ~= 0 and period < 10) or period > 70) then period = 60 end

        if (period ~=0) then luup.call_delay("refreshCache", period) end

          -- Get status details

          local stat, ups_data = UPSCapture()

          if stat then

                debug("Successful status read from " .. DATA.ip)

                varSet("LastUpdate", os.time(), SIDS.HA_DEV)

                local pc = tonumber(varGet("PollOk", SIDS.ZW_DEV)) + 1

                varSet("PollOk", pc, SIDS.ZW_DEV)

          else

                local pc = tonumber(varGet("PollNoReply", SIDS.ZW_DEV)) + 1

                varSet("PollNoReply", pc, SIDS.ZW_DEV)

                varSet("Status", "UPS read failed.")

                log("refreshCache failed",3)

          end

    end

    function startup(parentDevice)

          -- See if plugin is disabled

          local isDisabled = luup.attr_get("disabled", parentDevice)

          if ((isDisabled == 1) or (isDisabled == "1")) then

                log("Init: Plug-in - DISABLED",2)

                DATA.Disabled = true

                varSet("Status", "Plug-in disabled")

                -- Now we are done. Mark device as disabled

                return true, "Plug-in Disabled.", DATA.Description

          end

          DATA.Device = parentDevice

        -- Set defaults for varaibles.

        defVar("Version", DATA.Version)

        defVar("UPSName", 'ups')

        defVar("PollSettings", "60", SIDS.ZW_DEV)

        defVar("PollOk", "0", SIDS.ZW_DEV)

        defVar("PollNoReply", "0", SIDS.ZW_DEV)

        defVar("Status", "Waiting first poll")

          defVar("Tripped", "0", SIDS.SEC)

          defVar("Armed", "0", SIDS.SEC)

          defVar("ArmedTripped", "0", SIDS.SEC)

Затем сохранить и залить файл в Веру

Заходим в Apps-Develop apps-Edit lua и нажимаем GO

тем самым перезагружаем LUA и проверяем время срабатывания.


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

  1. Олег Челбаев (sprut)
    Олег Челбаев (sprut) отредактировано год назад

    Круто, но хочется простоты ;)

  2. Илья Гитлин (iGitlin)
    Илья Гитлин (iGitlin) отредактировано год назад

    Кстати в качестве простоты, если есть Synology то можно вообще одним плагом обойтись.

    Подключаем к Synology  UPS, в настройках включаем галки как на фото и прописываем ip адрес малины

    2000x2000x_image.png?1525974400


    ставим в бридж плагин

    homebridge-nut  и в конфиге вписываем

    {


    "platform": "Nut",
    "name": "Nut",
    "host": "ip Synology",
    "port": "3493",
    "search_time_delay": "1",

    "acc_delay": "100",

    "low_batt_threshold": "40",

    "polling": "120"
    }
    Так же можно поступить если есть постоянно работающий комп и на него поставить NUT сервер.

К списку статей

Похожие статьи

15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
14 ноября 2018, 06:43
Плагин для интеграции в Athom Homey дочерних zigbee-устройств, подключенных на координаторы deCONZ - RaspBee или ConBee.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
30 июня 2018, 12:17
Добавляем устройства управляемые по ИК через Broadlink RM3 Mini на примере кондиционера.
25 сентября 2018, 07:06
Делаем умный замок с интеграцией в HomeKit