Статья

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

Часто, возникает вопрос. Как отслеживать отключение электричества в доме?Нам понадобится Raspberry pi 3 (Orange pi), контроллер Vera и UPS (на примере Powercom wow700)Подключимся через Putty по SSH к  Raspberry pi 3 (Orange pi) и устанавливаем плагин nut     

bash
Копировать
sudo apt-get install nut       

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

auto
Копировать
lsusb   

Видим Powercom, это наш UPS. Если не определился то делаем reboot и смотрим сноваДалее настроим конфиг ups.conf

bash
Копировать
sudo nano /etc/nut/ups.conf 

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

bash
Копировать
[ups]

        driver = usbhid-ups

        port = auto

        desc = "Powercom wow700"

и убираем maxretry=3

сохраняем Ctrl O и ENTER затем Ctrl XДалее настроим конфиг nut.conf

bash
Копировать
sudo nano /etc/nut/nut.conf 

Прописываем MODE=standalone и сохраняем Ctrl O и ENTER затем Ctrl XОтправляем в рестарт и снова подключаемся по SSH

bash
Копировать
sudo reboot

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

bash
Копировать
sudo upsdrvctl start

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

bash
Копировать
sudo nano /etc/nut/upsd.conf

где вторая строка IP нашей малинки или апельсинки.Далее настроим доступ (юзеров)

bash
Копировать
sudo nano /etc/nut/upsd.users

Пропишем

сохраняем Ctrl O и ENTER затем Ctrl XПроверим статус сервера:

bash
Копировать
sudo service nut-server status

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

bash
Копировать
upsc ups

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

bash
Копировать
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 из Веры

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

bash
Копировать
-- 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 и проверяем время срабатывания.


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



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


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


2000x2000x_image.png?1525974400


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


https://www.npmjs.com/package/homebridge-nut">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 сервер.

Добрый день, следовал инструкции, сервер подключился к UPS, данные передавались но после перезагрузки малины не запускается выдает ошибку, не могли бы подсказать в чем причина и как исправить


ut-server.service - Network UPS Tools - power devices information server


   Loaded: loaded (/lib/systemd/system/nut-server.service; enabled; vendor preset: enabled)


   Active: failed (Result: exit-code) since Thu 2021-02-25 18:29:59 GMT; 54min ago


  Process: 505 ExecStart=/sbin/upsd (code=exited, status=1/FAILURE)

Драйвер определяется UPS видит подклчюенным


Вернуться назад
Вернуться назад