jTable som håller hemmets samtliga device ID

Post Reply
sycorax
Ny medlem
Posts: 11
Joined: 04 Jan 2017, 22:05

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
Bamsefar
Z-Wave Kung
Posts: 1085
Joined: 25 Nov 2013, 15:06
Location: Stockholm

14 Oct 2018, 00:46

Hur hanteras triggers genom denna lösning? För om du triggar på att lampan i hallen tänds, eller rörelse sensorn i köket - det kräver såvitt jag vet det riktiga device ID värdet och ingen slagning i tabeller?
Använder HomeSeer 3 på Linux - attans så här bra har det aldrig varit!

Lua för nybörjare
jompa68
Proffsmedlem
Posts: 721
Joined: 12 Aug 2012, 08:53
Location: Hofors

15 Oct 2018, 12:49

Man måste ha device id i headern.
--------------------------------------------------
http://jonnylarsson.se
Post Reply