Интеграция в Fibaro Home Center 2 · Невотон
Главная / Интеграция в Fibaro Home Center 2

Интеграция в 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.