Fibaro HC2: Monitoring dostupnosti internetového pripojenia

Fibaro HC2: Monitoring dostupnosti internetového pripojenia

Každému občas vypadne pripojenie k internetu a v moderných domácnostiach je rad zariadení, ktoré bez prístupu na internet nemôžu čiastočne alebo vôbec plniť svoju funkciu. Či už ide o meteorologickej stanice alebo chytré osobné váhy využívajúce server výrobcu, nositeľnú elektroniku s pripojením na expertné databázy alebo o multimediálne prehrávače využívajúce vzdialenej účty či úložisko. Na internete je závislá nielen mladá generácia, ale aj "veci". A s rozvojom internetu vecí (IoT) to nebude lepšie.

Majitelia riadiacej jednotky domácej automatizácie Fibaro Home Center 2 môžu s využitím technológie virtuálnych zariadení a s minimálnou znalosťou základov programovania v jazyku LUA ľahko kedykoľvek zistiť, či je internet v domácej sieti dostupný alebo nie, prípadne svoje pripojenie k internetu trvale monitorovať.

K čomu je to dobré? Nielen že je možné získanú informáciu o dostupnosti internetu elegantne využívať pri programovaní domácej automatizácie a zaistiť tak bezpečné spúšťanie scén "závislých" na fungujúcom pripojenie k internetu, ale tiež je napríklad možné využiť získané informácie pri reklamácii služieb u poskytovateľa pripojenia.

z vás, ktorí zažili povinnú vojenskú službu alebo sledovali film Tankový prapor si iste pamätajú notoricky známe hlásenie pri odovzdávaní služby dozorného: "Počas mojej služby sa nič zvláštne nestalo!". Okrem iného je zábavné (najmä pre návštevy), keď po príchode domov oznámi domácej automatizácie príjemným ženským hlasom: "Vitaj doma, počas tvojej neprítomnosti sa nič zvláštneho nestalo, teda okrem výpadku internetu v 9 hodín dopoludnia na dobu 32 minút.". "WOW" efekt je dokonalý.

Poznámka: Záujemca o informácie, ako donútiť Fibaro HC2 interaktívne komunikovať s obyvateľmi domu v ľubovoľnom jazyku mužským či ženským hlasom nerozoznateľným od živého človeka odkazujem na niektorý z budúcich príspevkov na tému "Fibaro HC2, SONOS a využitie internetových služieb TTS (Text To speach)".

 

Ako na to?

Základom je založenie virtuálneho zariadenia s jedným tlačidlom:

fibaro internet

… plus vyplnení niekoľkých málo údajov. Pritom je samozrejme jedno, do ktorej miestnosti virtuálne zariadenia umiestnite a ako sa volá. Dôležitá je len IP adresa, kde vyplníte iba úvodzovky a TCP port 80:

fibaro internet

Potom je potrebné do tela tlačidla č. 1 vpísať nižšie uvedený LUA kód (alebo jeho časť, viď popis fungovania 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

Vyššie uvedený programový kód v jazyku LUA je samozrejme len jedným z možných riešení a možno určite sa dá napísať aj iným spôsobom. Pre správne fungovanie tohto konkrétneho programu je ale nevyhnutné vopred založiť globálnej premennej "PingNet" s preddefinovanými hodnotami On a Off:

fibaro internet

V časti kódu s úvodným komentárom "definícia vstupných parametrov" je potrebné nahradiť server www.upc.cz serverom vášho poskytovateľa pripojenia, ale môžete v podstate použiť akýkoľvek iný server v internete, ktorý nemá zakázané odpovedať na otázku typu "ping". Časť kódu s komentárom "chybové hlásenie" je veľmi špecifická, použiť vôbec nemusíte, uviedol som ju len pre inšpiráciu. Slúži k príprave časti textu hlásenia o dobe výpadku internetového pripojenia pre hlasový výstup domácej automatizácie s využitím už spomínané technológie TTS.

Napriek tomu, že niektoré materiály výrobca Fibaro uvádza, že nie je možné z bežných LUA scén "zavolať" virtuálne zariadenia, resp. "Stlačiť tlačidlo" virtuálneho zariadenia, je to možné. V akejkoľvek scéne LUA jednoducho použijete nasledujúci príkaz:

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

ID v príkaze je číslo vášho virtuálneho zariadenia, ktoré zistíte napríklad pridržaním kurzora nad ikonou virtuálneho zariadenia, konkrétne nad symbolom servisného kľúča:

fibaro internet

... a v spodnej časti webového prehliadača sa zobrazí požadované ID virtuálneho zariadenia:

fibaro internet

Výsledkom zavolania vyššie uvedeného príkazu je naplnenie globálne premenné "PingNet" hodnotami "On" alebo "Off" podľa dostupnosti zvoleného servera na internete. Potom už len ostáva využiť obsah tejto premennej pri programovaní vašich vlastných scén, jedno či v jazyku LUA alebo v blokových scénach Fibaro HC2.

Poznámka: Riadiaca jednotka Fibaro HC2 nie je ani s poslednou verziou FW sama o sebe úplne imúnne proti výpadkom internetového pripojenia, a to napriek tomu, že výrobca tvrdí, že trvalá offline prevádzka HC2 je možná. Ide takmer určite o drobnú chybu HC2, ktorá sa prejavuje tak, že po niekoľkých dňoch offline prevádzky (niekedy po dvoch a inokedy po štyroch dňoch) prestanú fungovať niektoré časti LUA alebo skupinových scén, ktoré využívajú funkcie typu "čas svitania" alebo "súmraku" v kombinácii s globálnymi premennými. Akonáhle sa pripojenie k internetu obnoví, všetko ďalej beží bez problémov. Iste si viete predstaviť možné dôsledky tejto chyby, keď k nej dôjde v priebehu vašej zahraničnej dovolenky a nikto nie je doma.

Autor: Jiří Chábera  

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

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ď

Vyhľadávanie v blogu

Najnovšie názory

Naposledy navštívené

Žiadne produkty

Menu

Porovnať 0