Ibland dyker det upp frågor om kodning som kanske inte alltid är så lätt i den grafiska versionen av scener, eller som någon av ren nyfikenhet helt enkelt vill lära sig LUA. Denna "guide" är på intet sätt fullständig - snarare tvärt om, det finns nog flera hål än tillgångar Men det är i alla fall början...
Börja med att skapa en scen:
Döp om den och flytta den till något lämpligt rum (jag har ett som kallas Diverse där udda saker hamnar):
Tryck SAVE!
Under fliken avancerat så finns ett val, här markerat i rött - byt till LUA baserad scenredigering - OK:
Godkänn bytet även på nästa bild - OK:
Och bara för att vara överjävligt säker, så godkänn igen - OK:
Du kommer nu till ett rått startläge:
Under de första raderna LUA kod så finns två (ibland 3, har med autostart att göra) "rubriker" där man definierar vilka "triggers" som skall användas:
En trigger är vad som startar en given scen. I mitt exempel nedan kommer vi nyttja en temperatursensor som är integrerad i en Aeon 4-in-1 sensor.
För att hitta vilken sensor som nyttjas i detta exempel så väljer man t.ex. att gå från listan till vänster "Enhetslistan", väljer rum "Arbetsrum", väljer den sensor jag döpt till "Temperatur" och då kommer dels ID värdet upp - det som brukar refereras till EnhetsID, alla "Egenskaper" och alla "Actions" denna enhet har:
Som ni ser har jag markerat (med muspekaren, som försvinner när man gör skärmdumpar...) ordet "value" - dvs värdet som temperatursensor har i detta fallet. Jag klickar på vänster musknapp och då kommer korrekt syntax för att läsa av denna "Egenskap" att skapas i LUA kodfönstret:
Men sådär kan inte koden se ut, vi fick dock reda på det viktigaste, det EnhetsID som skall trigga denna testscen: 52. Så vi ändrar lite i koden:
Det jag ändrat är alltså:
Code: Select all
52 value
Det kan ju vara kul att vet vilket värde som lästs in och då finns en funktion inbyggt i HC2 som kan vara lämplig:
Code: Select all
fibaro:debug("text att skriva ut i debug fönster")
Nu kommer vi till vad vi nu skall göra med temperaturen, och i detta fallet, lätt inspirerat av sonnyboy's pooltemp utmaning, så tänder eller släcker jag en lampa i arbetsrummet - en helt normal automatisering alltså *garv*.
Börja med att ta reda på all information om den lampan som är aktuell:
Som synes finns flera "Egenskaper" som vi kan läsa av, men på denna lampa har vi även två "Actions" - dvs tända och släcka lampan.
Vi kompletterar således vår scenkod med lite lämpliga variabler:
Och om man väljer enligt bilden ovan med Actions, att klicka på "turnOn" så kan man också få hela syntaxen för hur man i detta fallet slår på en lampa eller av då, och med en lämplig "if" struktur (dvs test "om" någon tillstånd är si eller så) så blir lite mera kod i denna form:
Jag la även till en fibaro:debug för att få med lite debugtext - ifall lampan nu var trasig... typ...
Men då vi skapat en local variabel som heter "Lampa" så byter vi ut 45 mot just "Lampa" i det anropet och får kanske en snyggare kod eller något...
Vi är nu nästan klara, och jag snabbkodar lite till:
Nu har vi alltså en komplett scen, med all kod:
Code: Select all
--[[
%% properties
52 value
%% globals
--]]
local ArbetsrumTemp = tonumber(fibaro:getValue(52, "value"))
fibaro:debug("Arbetsrum Temperatur: " .. ArbetsrumTemp)
local Lampa = 45 -- EnhetsID för lampan som skall styras
local Varmt = 32 -- Gradtal som motsvarar värmenivån vi vill testa på
if ( ArbetsrumTemp > Varmt ) then
fibaro:call(Lampa, "turnOn")
fibaro:debug("Tänd Lampa, det är för varmt")
elseif ( ArbetsrumTemp <= Varmt ) then
fibaro:call(Lampa, "turnOff")
fibaro:debug("Släck Lampa, det är för kallt")
end