Часто, возникает вопрос. Как отслеживать отключение электричества в доме?Нам понадобится 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 и проверяем время срабатывания.
Круто, но хочется простоты ;)
Кстати в качестве простоты, если есть Synology то можно вообще одним плагом обойтись.
Подключаем к Synology UPS, в настройках включаем галки как на фото и прописываем ip адрес малины
ставим в бридж плагин
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 видит подклчюенным