jTable som håller hemmets samtliga device ID
Posted: 13 Oct 2018, 11:44
Hej,
Vill dela med mig av en sak som jag hittade på YouTube som verkligen förenklar hanteringen av device ID. Varje gång man blir tvungen att ta bort en enhet och vill lägga till denna igen så får den ett nytt device ID. Detta innebär att ändringar måste göras på samtliga ställen som den förekommer i olika scener mm. Med denna lösning så slipper man detta problem (ändring av ID sker på endast ett ställe).
Jag dök på detta YouTube klipp från Yorkshire Automation:
https://www.youtube.com/watch?v=_8GLG-LKeJ0
Kortfattat så skapar man en variable som håller alla device ID i hela hemmet. Därefter skapar man en scene som fyller variable:n med alla device ID. Slutligen anropar man istället denna variabel och slår upp device ID som skall användas.
Detta innebär att du endast behöver göra en ändring på ett ställe istället för på alla ställen som denna enhet förekommer.
Ett tips är att alla som införskaffar en HC2 eller HCL borde göra detta redan från start vid inköpet. Lite arbete som förenklar mycket vid senare tillfälle när det strular.
Gör så här -->
1. Gå till Panels-->Variables Panel. Skapa en ny global variabel under "Predefined Variables" med namnet "jTable" som håller endast ett värde "Value 1".
2. Skapa en ny lua scene och ge den namnet "My JSON Home". Här lägger du in alla enheters id som du har i hemmet. Koden nedan ändrar du till dina namn och id:n. Namnen väljer du själv. ID:n styrs av enheternas ID. Skriv in din lua-kod, min ser ut så här:
--[[
%% properties
%% events
%% globals
--]]
jsonHome = {
hall={motion=11,temp=12,lumen=13,wallplugnetwork=21,spot=142,idlock=168},
outside={sunuppdown=17,lightout=54,infra=59,weather=107,infratimer=123},
vardagsrum={spot=44,ceiling=115,wallplugl=170, wallplugr=125},
kok={coffeetimer=32,spot=103,wallplugcoffee=106,bench_light=151,wall_light=152},
matsal={ceiling=84,windowtempsensor=136,windowheatsensor=137,windowopensensor=157},
allrum={spot=64},
vd={yr=3,sunupdown=17,coffeetimer=32,multiremotelights=87,wuweather=107,infratimer=123},
scenes={timerkaffe=26,timerinfravarmare=54},
garage={garageport=153,temp=154,light_1=158,light_2=159,lightout=160,qubino=165},
}
fibaro:setGlobal("jTable", json.encode(jsonHome))
3. Kör scenen "My JSON Home" för att den globala variablen "JTable" skall få värdena. Denna skall köras varje gång du ändrar något i scenen!
4. Här är ett exempel på att anropa och tända matsal ceiling med ID 84:
--[[
%% properties
%% events
%% globals
--]]
local jT = json.decode(fibaro:getGlobalValue("jTable"))
fibaro:call(jT.matsal.ceiling, 'turnOn')
Som du ser så är den enda skillnaden två rader. Du hämtar den globala variablen "jTable" som tilldelas till din locala variabel "jT". Därefter använder du jT.matsal.ceiling för att hämta ut ID:t som i detta fallet är 84.
Normalt hade du skrivit:
fibaro:call(84, "turnOn");
Lycka till
/Sycorax
Vill dela med mig av en sak som jag hittade på YouTube som verkligen förenklar hanteringen av device ID. Varje gång man blir tvungen att ta bort en enhet och vill lägga till denna igen så får den ett nytt device ID. Detta innebär att ändringar måste göras på samtliga ställen som den förekommer i olika scener mm. Med denna lösning så slipper man detta problem (ändring av ID sker på endast ett ställe).
Jag dök på detta YouTube klipp från Yorkshire Automation:
https://www.youtube.com/watch?v=_8GLG-LKeJ0
Kortfattat så skapar man en variable som håller alla device ID i hela hemmet. Därefter skapar man en scene som fyller variable:n med alla device ID. Slutligen anropar man istället denna variabel och slår upp device ID som skall användas.
Detta innebär att du endast behöver göra en ändring på ett ställe istället för på alla ställen som denna enhet förekommer.
Ett tips är att alla som införskaffar en HC2 eller HCL borde göra detta redan från start vid inköpet. Lite arbete som förenklar mycket vid senare tillfälle när det strular.
Gör så här -->
1. Gå till Panels-->Variables Panel. Skapa en ny global variabel under "Predefined Variables" med namnet "jTable" som håller endast ett värde "Value 1".
2. Skapa en ny lua scene och ge den namnet "My JSON Home". Här lägger du in alla enheters id som du har i hemmet. Koden nedan ändrar du till dina namn och id:n. Namnen väljer du själv. ID:n styrs av enheternas ID. Skriv in din lua-kod, min ser ut så här:
--[[
%% properties
%% events
%% globals
--]]
jsonHome = {
hall={motion=11,temp=12,lumen=13,wallplugnetwork=21,spot=142,idlock=168},
outside={sunuppdown=17,lightout=54,infra=59,weather=107,infratimer=123},
vardagsrum={spot=44,ceiling=115,wallplugl=170, wallplugr=125},
kok={coffeetimer=32,spot=103,wallplugcoffee=106,bench_light=151,wall_light=152},
matsal={ceiling=84,windowtempsensor=136,windowheatsensor=137,windowopensensor=157},
allrum={spot=64},
vd={yr=3,sunupdown=17,coffeetimer=32,multiremotelights=87,wuweather=107,infratimer=123},
scenes={timerkaffe=26,timerinfravarmare=54},
garage={garageport=153,temp=154,light_1=158,light_2=159,lightout=160,qubino=165},
}
fibaro:setGlobal("jTable", json.encode(jsonHome))
3. Kör scenen "My JSON Home" för att den globala variablen "JTable" skall få värdena. Denna skall köras varje gång du ändrar något i scenen!
4. Här är ett exempel på att anropa och tända matsal ceiling med ID 84:
--[[
%% properties
%% events
%% globals
--]]
local jT = json.decode(fibaro:getGlobalValue("jTable"))
fibaro:call(jT.matsal.ceiling, 'turnOn')
Som du ser så är den enda skillnaden två rader. Du hämtar den globala variablen "jTable" som tilldelas till din locala variabel "jT". Därefter använder du jT.matsal.ceiling för att hämta ut ID:t som i detta fallet är 84.
Normalt hade du skrivit:
fibaro:call(84, "turnOn");
Lycka till
/Sycorax