Fibaro HC2: Monitoring dostupnosti internetového připojení

Fibaro HC2: Monitoring dostupnosti internetového připojení

Každému občas vypadne připojení k internetu a v moderních domácnostech je řada zařízení, která bez přístupu na internet nemohou částečně nebo vůbec plnit svoji funkci. Ať už jde o meteorologické stanice nebo chytré osobní váhy využívající server výrobce, nositelnou elektroniku s připojením na expertní databáze nebo o multimediální přehrávače využívající vzdálené účty či úložiště. Na internetu je závislá nejen mladá generace, ale také „věci“. A s rozvojem internetu věcí (IoT) to nebude lepší.

Majitelé řídící jednotky domácí automatizace Fibaro Home Center 2 mohou s využitím technologie virtuálních zařízení a s minimální znalostí základů programování v jazyce LUA snadno kdykoli zjistit, zda je internet v domácí síti dostupný či nikoli, případně své připojení k internetu trvale monitorovat.

K čemu je to dobré? Nejen že je možné získanou informaci o dostupnosti internetu elegantně využívat při programování domácí automatizace a zajistit tak bezpečné spouštění scén „závislých“ na fungujícím připojení k internetu, ale také je například možné využít získané informace při reklamaci služeb u poskytovatele připojení.

Ti z vás, kteří zažili povinnou základní vojenskou službu nebo sledovali film Tankový prapor si jistě pamatují notoricky známé hlášení při předávání služby dozorčího: „Během mé služby se nic zvláštního nestalo!“. Kromě jiného je zábavné (zejména pro návštěvy), když po příchodu domů oznámí domácí automatizace příjemným ženským hlasem: „Vítej doma, během tvé nepřítomnosti se nic zvláštního nestalo, tedy kromě výpadku internetu v 9 hodin dopoledne na dobu 32 minut.“. „WOW“ efekt je dokonalý.

Poznámka: Zájemce o informace, jak donutit Fibaro HC2 interaktivně komunikovat s obyvateli domu v libovolném jazyce mužským či ženským hlasem nerozeznatelným od živého člověka odkazuji na některý z budoucích příspěvků na téma „Fibaro HC2, SONOS a využití internetových služeb TTS (Text To Speach)“.

 

Jak na to?

Základem je založení virtuálního zařízení s jedním tlačítkem:

fibaro internet

… plus vyplnění několika málo údajů. Přitom je samozřejmě jedno, do které místnosti virtuální zařízení umístíte a jak se jmenuje. Důležitá je pouze IP adresa, kde vyplníte pouze uvozovky a TCP port 80:

fibaro internet

Pak je potřebné do těla tlačítka č. 1 vepsat níže uvedený LUA kód (nebo jeho část, viz popis fungování programu):

fibaro internet

-- definice funkce, která vrací hodnotu "On" nebo "Off"
local function testNet(testIP, testPort)
  tcpSocket = Net.FTcpSocket(testIP, testPort)
  tcpSocket:setReadTimeout(250)
  fibaro:sleep(250)
  bytes, errorCode = tcpSocket:write("ping")
  if errorCode == 0 then return "On"
  else return "Off"
  end
end
-- definice vstupních parametrů a volání funkce
local testIP = "www.upc.cz" -- optimálně webový server poskytovatele připojení
local testPort = 80 -- číslo TCP portu
local pingNet = testNet(testIP, testPort)
-- nastavení globální proměnné
local currentDate = os.date("*t")
fibaro:setGlobal("PingNet", pingNet)

if (pingNet == "Off") then -- jen v případě chyby
  fibaro:debug(currentDate.day .. "." .. currentDate.month .. "." .. currentDate.year .. ", " .. "PingNet = " .. pingNet)
end
-- chybové hlášení
local number
local errorLog = fibaro:getGlobalValue("ErrorLog")
if (pingNet == "Off") then
  if (string.sub(errorLog,1,17) ~= "došlo k výpadku") then -- jiné chybové hlášení
    fibaro:setGlobal("ErrorLog", "došlo k výpadku připojení k internetu na 1 min")
  else -- správné chybové hlášení
    number = tonumber(string.sub(errorLog,46,47)) + 1 -- zvýšení o minutu
    errorLog = "došlo k výpadku připojení k internetu na %d min"
    fibaro:setGlobal("ErrorLog", string.format(errorLog, number))
  end
end

Výše uvedený programový kód v jazyce LUA je samozřejmě jen jedním z možných řešení a lze jistě napsat i jiným způsobem. Pro správné fungování tohoto konkrétního programu je ale nezbytné předem založit globální proměnnou „PingNet“ s předdefinovanými hodnotami On a Off:

fibaro internet4.png

V části kódu s úvodním komentářem „definice vstupních parametrů“ je potřebné nahradit server www.upc.cz serverem vašeho poskytovatele připojení, ale můžete v podstatě použít jakýkoli jiný server v internetu, který nemá zakázáno odpovídat na dotaz typu „ping“. Část kódu s komentářem „chybové hlášení“ je velmi specifická, tu použít vůbec nemusíte, uvedl jsem ji pouze pro inspiraci. Slouží k přípravě části textu hlášení o době výpadku internetového připojení pro hlasový výstup domácí automatizace s využitím již zmíněné technologie TTS.

Přesto, že některé materiály výrobce Fibaro uvádí, že není možné z běžných LUA scén „zavolat“ virtuální zařízení, resp. „zmáčknout tlačítko“ virtuálního zařízení, je to možné. V jakékoli scéně LUA jednoduše použijete následující příkaz:

fibaro:call(ID, "pressButton", "1") -- VD test internetu

ID v příkazu je číslo vašeho virtuálního zařízení, které zjistíte například přidržením kurzoru nad ikonou virtuálního zařízení, konkrétně nad symbolem servisního klíče:

fibaro internet

… a ve spodní částí webového prohlížeče se zobrazí požadované ID virtuálního zařízení:

fibaro internet

Výsledkem zavolání výše uvedeného příkazu je naplnění globální proměnné „PingNet“ hodnotami „On“ nebo „Off“ podle dostupnosti zvoleného serveru na internetu. Pak už jen zbývá využít obsah této proměnné při programování vašich vlastních scén, lhostejno zda v jazyce LUA nebo v blokových scénách Fibaro HC2.

Poznámka: Řídící jednotka Fibaro HC2 není ani s poslední verzí FW sama o sobě zcela imunní proti výpadkům internetového připojení, a to přesto, že výrobce tvrdí, že trvalý offline provoz HC2 je možný. Jde téměř jistě o drobnou chybu HC2, která se projevuje tak, že po několika dnech offline provozu (někdy po dvou a jindy po čtyřech dnech) přestanou fungovat některé části LUA nebo blokových scén, které využívají funkce typu „čas svítání“ nebo „soumraku“ v kombinaci s globálními proměnnými. Jakmile se připojení k internetu obnoví, vše dále běží bez problémů. Jistě si dovedete představit možné důsledky této chyby, když k ní dojde v průběhu vaší zahraniční dovolené a nikdo není doma .

 

Autor: Jiří Chábera    

Autor 23.02.2018 dna Jiří Chábera Návody a tipy, FIBARO, FIBARO HC2 3 11660

3 Komentáre

  • Tipo

    Tipo 18.07.2019 Odpovedať

    Zdravim mam HC2 a kedze sa mi neustale odpaja aj ked ine zariadenia idu normalne a trvalo na nete tak som pridal tuto LUA scenu a vsak po staceni tlacidla Ping to nic nespravy. Viete mi prosim poradit?
    • SmarterHOME

      SmarterHOME 19.07.2019 Odpovedať

      Dobrý deň,

      IP adresu na HC2 máte zadanú manuálne alebo je pridelovaná cez DHCP?
      Ak sa vám HC2 "odpája"m skúste napevno zadať IP adresu na HC2 a z DHCP servera (domáceho routera) túto ale označte aby ju DHCP server neprideloval iných zariadeniam.
  • RiderX

    RiderX 15.03.2018 Odpovedať

    Už se těším na zmíněný článek :)

Zanechajte nám Váš názorZanechajte odpoveď

Vyhledávání v blogu

Najnovšie názory

Naposledy prohlížené

Žádné produkty

Menu

Porovnat 0