Page 1 of 1
LUA kod ?
Posted: 16 Jun 2018, 11:52
by Texan
Hej!
Jag skulle vilja ha hjälp med lua kod för att styra 2 pluggar.
Plugg1 ska trigga plugg2 att sätta på när plugg 1 överstiger XX-watt, och plugg1 ska stänga av plugg2 efter Xmin när plugg1 är understiger XX-watt.
Re: LUA kod ?
Posted: 16 Jun 2018, 16:25
by RH_Dreambox
Så här skulle man kunna göra. Power-värdet på plugg 1 triggar en körning av skriptet så skriptet skall inte autostartas.
Byt ut mina enhetsvärden samt sätt rätt effekt då Plugg 2 skall slås på och av.
Code: Select all
--[[
%% properties
75 power
%% weather
%% events
%% globals
--]]
-- Glöm inte att sätta enhets-ID för "Plugg_1 power" ovan
if fibaro:countScenes() > 1 then fibaro:abort() end -- Förhindra multipla scener
local startSource = fibaro:getSourceTrigger();
local Plugg_1 = 75 -- Enhets ID för Plugg_1
local Plugg_2 = 15 -- Enhets ID för Plugg_2
local Power_High = 2000 -- Värde då Plugg_2 skall sättas på
local Power_Low = 1000 -- Värde då Plugg_ skall stängas av
if (
( tonumber(fibaro:getValue(Plugg_1, "power")) >= Power_High )
)
then
fibaro:call(Plugg_2, "turnOn");
fibaro:debug("Satte på Plugg 2");
elseif (
( tonumber(fibaro:getValue(Plugg_1, "power")) < Power_Low )
)
then
fibaro:call(Plugg_2, "turnOff");
fibaro:debug("Stängde av Plugg 2");
end
Re: LUA kod ?
Posted: 17 Jun 2018, 11:58
by Texan
RH_Dreambox wrote: ↑16 Jun 2018, 16:25
Så här skulle man kunna göra. Power-värdet på plugg 1 triggar en körning av skriptet så skriptet skall inte autostartas.
Byt ut mina enhetsvärden samt sätt rätt effekt då Plugg 2 skall slås på och av.
Code: Select all
--[[
%% properties
75 power
%% weather
%% events
%% globals
--]]
-- Glöm inte att sätta enhets-ID för "Plugg_1 power" ovan
if fibaro:countScenes() > 1 then fibaro:abort() end -- Förhindra multipla scener
local startSource = fibaro:getSourceTrigger();
local Plugg_1 = 75 -- Enhets ID för Plugg_1
local Plugg_2 = 15 -- Enhets ID för Plugg_2
local Power_High = 2000 -- Värde då Plugg_2 skall sättas på
local Power_Low = 1000 -- Värde då Plugg_ skall stängas av
if (
( tonumber(fibaro:getValue(Plugg_1, "power")) >= Power_High )
)
then
fibaro:call(Plugg_2, "turnOn");
fibaro:debug("Satte på Plugg 2");
elseif (
( tonumber(fibaro:getValue(Plugg_1, "power")) < Power_Low )
)
then
fibaro:call(Plugg_2, "turnOff");
fibaro:debug("Stängde av Plugg 2");
end
Hej,
Tack - går det att addera in en tid när den ska stänga av plugg_2?
Vill att den ska stänga av om värdet på plugg_1 har varit under XXX i 1min, då stäng av plugg_2.
Re: LUA kod ?
Posted: 18 Jun 2018, 10:48
by jang
en sån här variant borde funka (har inte haft tid att testa själv)
Code: Select all
--[[
%% properties
75 power
%% weather
%% events
%% globals
--]]
-- Glöm inte att sätta enhets-ID för "Plugg_1 power" ovan
local Plugg_1 = 75 -- Enhets ID för Plugg_1
local Plugg_2 = 15 -- Enhets ID för Plugg_2
local Power_High = 2000 -- Värde då Plugg_2 skall sättas på
local Power_Low = 1000 -- Värde då Plugg_2 skall stängas av
local Sleep = 60 -- Sekunder Plugg_1 ska vara mindre än Power_Low
local Power_1 = tonumber(fibaro:getValue(Plugg_1, "power"))
local Plugg_2_on = tonumber(fibaro:getValue(Plugg_2, "value")) > 0
if Power_1 >= Power_High and not Plug_2_on then -- Slå på plugg
fibaro:call(Plugg_2, "turnOn")
fibaro:debug("Satte på Plugg 2")
elseif Power_1 < Power_Low and Plug_2_on and fibaro:countScenes() == 1 then
-- Värde lågt och plugg_2 på och väntar inte redan på att släcka...
fibaro:sleep(1000*Sleep) -- Vänta x sekunder och stäng av Plugg_2, om inte ngn annan trigger tar död på oss innan...
fibaro:call(Plugg_2, "turnOff");
fibaro:debug("Stängde av Plugg 2");
end
if Power_1 >= Power_Low then -- Ta död på eventuell 'sovande/väntande' instans...
fibaro:killScenes(__fibaroSceneId)
end
Re: LUA kod ?
Posted: 20 Jun 2018, 23:02
by Texan
Vet inte ifall jag gör fel eller ifall koden inte fungerar, men jag får den inte att stänga av Plugg_2 efter 30 sekunder.
Code: Select all
--[[
%% properties
281 power
%% weather
%% events
%% globals
--]]
-- Glöm inte att sätta enhets-ID för "Plugg_1 power" ovan
local Plugg_1 = 281 -- Enhets ID för Plugg_1
local Plugg_2 = 283 -- Enhets ID för Plugg_2
local Power_High = 50 -- Värde då Plugg_2 skall sättas på
local Power_Low = 10 -- Värde då Plugg_2 skall stängas av
local Sleep = 30 -- Sekunder Plugg_1 ska vara mindre än Power_Low
local Power_1 = tonumber(fibaro:getValue(Plugg_1, "power"))
local Plugg_2_on = tonumber(fibaro:getValue(Plugg_2, "value")) > 0
if Power_1 >= Power_High and not Plug_2_on then -- Slå på plugg
fibaro:call(Plugg_2, "turnOn")
fibaro:debug("Satte på Plugg 2")
elseif Power_1 < Power_Low and Plug_2_on and fibaro:countScenes() == 1 then
-- Värde lågt och plugg_2 på och väntar inte redan på att släcka...
fibaro:sleep(60*Sleep) -- Vänta x sekunder och stäng av Plugg_2, om inte ngn annan trigger tar död på oss innan...
fibaro:call(Plugg_2, "turnOff");
fibaro:debug("Stängde av Plugg 2");
end
if Power_1 >= Power_Low then -- Ta död på eventuell 'sovande/väntande' instans...
fibaro:killScenes(__fibaroSceneId)
end
Re: LUA kod ?
Posted: 21 Jun 2018, 06:48
by jang
Well, jag kan inte stava till Plugg/Plug
Dessutom, fibaro:sleep tar tid i millisekunder så det ska stå fibaro:sleep(1000*Sleep). Blir 30sekunder som det står i koden nu.
Lagt till en rad som skriver ut Plugg_1 power och om Plugg_2 är på.
Nytt försök
Code: Select all
--[[
%% properties
281 power
%% weather
%% events
%% globals
--]]
-- Glöm inte att sätta enhets-ID för "Plugg_1 power" ovan
local Plugg_1 = 281 -- Enhets ID för Plugg_1
local Plugg_2 = 283 -- Enhets ID för Plugg_2
local Power_High = 50 -- Värde då Plugg_2 skall sättas på
local Power_Low = 10 -- Värde då Plugg_2 skall stängas av
local Sleep = 30 -- Sekunder Plugg_1 ska vara mindre än Power_Low
local Power_1 = tonumber(fibaro:getValue(Plugg_1, "power"))
local Plugg_2_on = tonumber(fibaro:getValue(Plugg_2, "value")) > 0
fibaro:debug(string.format("Power_1=%s, Plugg_2_on=%s",Power_1,Plugg_2_on))
if Power_1 >= Power_High and not Plugg_2_on then -- Slå på plugg
fibaro:call(Plugg_2, "turnOn")
fibaro:debug("Satte på Plugg 2")
elseif Power_1 < Power_Low and Plugg_2_on and fibaro:countScenes() == 1 then
-- Värde lågt och plugg_2 på och väntar inte redan på att släcka...
fibaro:sleep(1000*Sleep) -- Vänta x sekunder och stäng av Plugg_2, om inte ngn annan trigger tar död på oss innan...
fibaro:call(Plugg_2, "turnOff");
fibaro:debug("Stängde av Plugg 2");
end
if Power_1 >= Power_Low then -- Ta död på eventuell 'sovande/väntande' instans...
fibaro:killScenes(__fibaroSceneId)
end
Re: LUA kod ?
Posted: 21 Jun 2018, 22:51
by Texan
Nu fungerar det - Tack!
Tyvärr så kommer detta upp i "Notification center", går det att lösa på något sätt?
Re: LUA kod ?
Posted: 22 Jun 2018, 03:26
by jang
Ja, i HC2:ans web portal där du definerar scenen, i ”General” fliken - där finns ett ”Max. running instances:” fält. Sätt det till 4.
Re: LUA kod ?
Posted: 24 Jun 2018, 15:24
by Texan
Tack för all hjälp med koden - den fungerar perfekt - super.
Re: LUA kod ?
Posted: 28 Nov 2018, 23:35
by Texan
När jag kör scenen i 4.520 så blir allt trögt med fördröjning på upp till 30sek när man gör on/off på pluggar/dimmrar i systemet, vad kan vara fel?
Code: Select all
--[[
%% properties
281 power
%% weather
%% events
%% globals
--]]
-- Glöm inte att sätta enhets-ID för "Plugg_1 power" ovan
local Plugg_1 = 281 -- Enhets ID för Plugg_1
local Plugg_2 = 283 -- Enhets ID för Plugg_2
local Power_High = 7 -- Värde då Plugg_2 skall sättas på
local Power_Low = 4 -- Värde då Plugg_2 skall stängas av
local Sleep = 10 -- Sekunder Plugg_1 ska vara mindre än Power_Low
local Power_1 = tonumber(fibaro:getValue(Plugg_1, "power"))
local Plugg_2_on = tonumber(fibaro:getValue(Plugg_2, "value")) > 0
fibaro:debug(string.format("Power_1=%s, Plugg_2_on=%s",Power_1,Plugg_2_on))
if Power_1 >= Power_High and not Plugg_2_on then -- Slå på plugg
fibaro:call(Plugg_2, "turnOn")
fibaro:debug("Satte på Plugg 2")
elseif Power_1 < Power_Low and Plugg_2_on and fibaro:countScenes() == 1 then
-- Värde lågt och plugg_2 på och väntar inte redan på att släcka...
fibaro:sleep(1000*Sleep) -- Vänta x sekunder och stäng av Plugg_2, om inte ngn annan trigger tar död på oss innan...
fibaro:call(Plugg_2, "turnOff");
fibaro:debug("Stängde av Plugg 2");
end
if Power_1 >= Power_Low then -- Ta död på eventuell 'sovande/väntande' instans...
fibaro:killScenes(__fibaroSceneId)
end
Re: LUA kod ?
Posted: 29 Nov 2018, 08:00
by jang
Intressant. Får du många triggers från 281? Dvs, många (och ofta) logg utskrifter?
Eftersom det är en plugg med energimätning involverad, har du provat det här ?
https://forum.fibaro.com/topic/32080-sc ... ent=162204