Интеграция в Fibaro Home Center 2
Интеграция в Fibaro Home Center 2
Для использования данных с модуля PCR-6.0.1-E в системе домашней автоматики на базе контроллера Fibaro Home Center 2 (Fibaro HC2) надо добавить виртуальное устройство VD_Счетчики. Это виртуальное устройство обращается за данными к модулю PCR-6.0.1-E с помощью API HTTP-GET запросов, обрабатывает ответы модуля в JSON-формате, и записывает показания счетчиков в глобальные переменные контроллера Fibaro HC2.
Рассмотрим формат API HTTP-GET запроса чтения значений счетчиков и датчиков.
http://ip_address/get/m2m/inputs?type=input_type&number=input_channel&hash=HASH
-
- ip_address – IP-адрес модуля в локальной сети
- input_type:
- analog
- digital
- oneWire
- specific
- input_channel: (0..N-1, где N — количество каналов данного типа) или ‘All’
- HASH — дайджест (результат) хэширования пароля пользователя алгоритмом MD5 (может быть получен, например, на online-ресурсе http://www.sha1-online.com
Полный список и формат поддерживаемых модулем запросов можно посмотреть на вкладке API в WEB-интерфейсе модуля и на сайте производителя.
На запрос вида (запрашивается телеметрическая информация со счетчика электроэнергии):
http://192.168.XXX.YYY/get/m2m/inputs?type=specific&number=All&hash=21232f297a57a5a743894a0e4a801fc3
Модуль PCR-6.0.1-E отвечает в JSON-формате:
{
«inputs»:
{
«type»:»specific»,
«total_numbers»:1,
«data»:[{
«type»:»Mercury»,
«phaseQnty»:1,
«connect»:1,
«addr»:35618596,
«sn»:35618596,
«manufacture»:»12.08.18″,
«version»:»1.0″,
«Vbat»:3.6,
«lastRestore»:»16.01.19 (12:38:02)»,
«lastFail»:»15.01.19 (10:20:20)»,
«tarifQnty»:2,
«values»:{
«U»:231,
«I»:0,
«W»:1,
«F»:49.99,
«energy»:{
«T1»:1.67,
«T2»:0.06,
«sum»:1.73},
«energyBeginMonth»:{
«Jan»:»1.49/0.06/0.00/0.00″,
«Feb»:»1.67/0.06/0.00/0.00″,
«Mar»:»0.00/0.00/0.00/0.00″,
«Apr»:»0.00/0.00/0.00/0.00″,
«May»:»0.00/0.00/0.00/0.00″,
«Jun»:»0.00/0.00/0.00/0.00″,
«Jul»:»0.00/0.00/0.00/0.00″,
«Aug»:»0.00/0.00/0.00/0.00″,
«Sep»:»0.59/0.00/0.00/0.00″,
«Oct»:»0.59/0.00/0.00/0.00″,
«Nov»:»0.59/0.00/0.00/0.00″,
«Dec»:»1.47/0.06/0.00/0.00″},
«T»:1}
}
]},
«error_device»:0
}
В главном цикле VD_Счетчики вначале производится настройка параметров TCP соединения
local thisDevice = fibaro:getSelfId();
local ip = fibaro:getValue(thisDevice, ‘IPAddress’);
local port = fibaro:getValue(thisDevice, ‘TCPPort’);
local hash = «21232f297a57a5a743894a0e4a801fc3»
Обращение к модулю PCR-6.0.1-E выполняется в функции processDevice():
function processDevice()
HC2 = Net.FHttp(ip, port);
response = HC2:GET(«/get/m2m/inputs?type=specific&number=All&hash=»..hash)
meterJSON = processJSON(response)
if meterJSON ~= nil then
processMeter(meterJSON)
end
response = HC2:GET(«/get/m2m/inputs?type=digital&number=All&hash=»..hash)
digitalJSON = processJSON(response)
if digitalJSON ~= nil then
processDigital(digitalJSON)
end
response = HC2:GET(«/get/m2m/inputs?type=analog&number=All&hash=»..hash)
analogJSON = processJSON(response)
if analogJSON ~= nil then
processAnalog(analogJSON)
end
response = HC2:GET(«/get/m2m/inputs?type=oneWire&number=All&hash=»..hash)
oneWireJSON = processJSON(response)
if oneWireJSON ~= nil then
processOneWire(oneWireJSON)
end
end
А обработка JSON-ответов модуля реализована в функции processJSON(responseJSON):
function processJSON(responseJSON)
if #responseJSON == 0 then
fibaro:debug(«Empty response from API. Check ID.»)
return nil
end
local jsonTbl= json.decode(responseJSON)
if jsonTbl==nil then
— Oeps… Decode is empty…
if #responseJSON == 0 then
fibaro:debug(«HC2 response is valid, but empty»)
return nil
end
fibaro:debug(«JSON decode failed for: «..responseJSON)
return nil
end
return jsonTbl
end
Скачать готовое виртуальное устройство VD_Счетчики для Fibaro HC2 можно в разделе «Документация» на устройство
После установки виртуального устройства в контроллер Fibaro HC2 надо в настройках этого виртуального устройства задать IP-адрес модуля PCR-6.0.1-E, порт 80, а в тексте главного цикла программы локальной переменной hash присвоить значение реального hash от установленного пароля пользователя. После сохранения модифицированного виртуального устройства оно начнет получение данных от модуля и отображение их в WEB-интерфейсе автоматики Fibaro HC2, а так же в мобильных приложениях для iOS и Android.