Hej,
Jag har i växthuset monterat en Fibaro dörrsensor och till den anslutit en DS18B20 för temp.mätning. Båda enheterna funkar fint och levererar värden.
Nu vill jag göra en scen som skickar ett meddelande om tempen överstiger ett visst gradtal och dörren är stängd samt om tempen understiger ett visst gradtal och dörren är öppen.
Men när jag ska bygga blocken (kan inte LUA) så får jag för tempgivaren block för att ange överträdd etc lika dörrsensorn.
Hur gör jag för att få den att fungera och ange gradtal?
Värde från en DS18B20 ansluten till Fibaro dörrsensor
diStefano wrote:Ingen som har koll på hur man kan göra??
hej, nu vet ja inte om den fungerar, då jag är på semester och inte kan kontrollera detta men prova koden nedan
--[[
%% properties
%% autostart
%% globals
--]]
while true do
if fibaro:getValue(82, "value") > 0 and fibaro:getValue(84, "value") > 20
then fibaro:call(6,"sendDefinedPushNotification","3") -- byt ut 6 mot det id som gäller för din telefon
elseif fibaro:getValue(82, "value") < 1 and fibaro:getValue(84, "value") < 20
then fibaro:call(6,"sendDefinedPushNotification","4") -- byt ut 6 mot det id som gäller för din telefon
end
fibaro:sleep(30*1000)
end
bytt ut ida på telefon, puschmeddelande och enheter, samt grader du vill ha
Mvh Tobbe
Tack Tobbe, ska testa detta!Bisse90 wrote:diStefano wrote:Ingen som har koll på hur man kan göra??
hej, nu vet ja inte om den fungerar, då jag är på semester och inte kan kontrollera detta men prova koden nedan
--[[
%% properties
%% autostart
%% globals
--]]
while true do
if fibaro:getValue(82, "value") > 0 and fibaro:getValue(84, "value") > 20
then fibaro:call(6,"sendDefinedPushNotification","3") -- byt ut 6 mot det id som gäller för din telefon
elseif fibaro:getValue(82, "value") < 1 and fibaro:getValue(84, "value") < 20
then fibaro:call(6,"sendDefinedPushNotification","4") -- byt ut 6 mot det id som gäller för din telefon
end
fibaro:sleep(30*1000)
end
bytt ut ida på telefon, puschmeddelande och enheter, samt grader du vill ha
Mvh Tobbe
Får jag föreslå att scenen ifråga skrivs om till att trigga på temperaturförändring istf sleep 30 sekunder?
För många sleep samtidigt i flera scener kommer lasta ned HC2 och skapa värme....
Code: Select all
--[[
%% properties
82 value
84 value
%% autostart
%% globals
--]]
if fibaro:getValue(82, "value") > 0 and fibaro:getValue(84, "value") > 20 then
fibaro:call(6,"sendDefinedPushNotification","3") -- byt ut 6 mot det id som gäller för din telefon
elseif fibaro:getValue(82, "value") < 1 and fibaro:getValue(84, "value") < 20 then
fibaro:call(6,"sendDefinedPushNotification","4") -- byt ut 6 mot det id som gäller för din telefon
end
Jämför Home Assistant med HomeSeer 4 på generation 800 controller - here we go!
Tackar, provar denna variant istället!Bamsefar wrote:Får jag föreslå att scenen ifråga skrivs om till att trigga på temperaturförändring istf sleep 30 sekunder?
För många sleep samtidigt i flera scener kommer lasta ned HC2 och skapa värme....Code: Select all
--[[ %% properties 82 value 84 value %% autostart %% globals --]] if fibaro:getValue(82, "value") > 0 and fibaro:getValue(84, "value") > 20 then fibaro:call(6,"sendDefinedPushNotification","3") -- byt ut 6 mot det id som gäller för din telefon elseif fibaro:getValue(82, "value") < 1 and fibaro:getValue(84, "value") < 20 then fibaro:call(6,"sendDefinedPushNotification","4") -- byt ut 6 mot det id som gäller för din telefon end
Har nu testat detta och får denna error:
[ERROR] 17:04:00: line 9: attempt to compare number with string
Id 6 är min telefon
Id 38 är dörrsensorn
Id 40 är temp.sensorn
[ERROR] 17:04:00: line 9: attempt to compare number with string
Code: Select all
--[[
%% properties
38 value
40 value
%% autostart
%% globals
--]]
if fibaro:getValue(38, "value") > 0 and fibaro:getValue(40, "value") > 25 then
fibaro:call(6,"sendDefinedPushNotification","3") -- byt ut 6 mot det id som gäller för din telefon
elseif fibaro:getValue(38, "value") < 1 and fibaro:getValue(40, "value") < 17 then
fibaro:call(6,"sendDefinedPushNotification","2") -- byt ut 6 mot det id som gäller för din telefon
end
Id 38 är dörrsensorn
Id 40 är temp.sensorn
Det är för att "value" från dina sensorer returneras som strängar, jag råkade bara kopiera koden innan och tänkte inte på det. Nedan justerat, och lagt till en kill scene i början också...
OBS! Jag kan inte provköra denna kod, så min hjälp är begränsad i detta läge....
Code: Select all
--[[
%% properties
38 value
40 value
%% autostart
%% globals
--]]
--kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
if tonumber(fibaro:getValue(38, "value")) > 0 and tonumber(fibaro:getValue(40, "value")) > 25 then
fibaro:call(6,"sendDefinedPushNotification","3") -- byt ut 6 mot det id som gäller för din telefon
elseif tonumber(fibaro:getValue(38, "value")) < 1 and tonumber(fibaro:getValue(40, "value")) < 17 then
fibaro:call(6,"sendDefinedPushNotification","2") -- byt ut 6 mot det id som gäller för din telefon
end
Jämför Home Assistant med HomeSeer 4 på generation 800 controller - here we go!
Har nu testat detta lite och får det inte riktigt att funka riktigt.
Igår morse var tempen 13 grader och dörren var stängd. *När temperaturen gick över 17 grader och dörren fortfarande var stängd så skickade den meddelande Id2.
* Rättar mig lite då jag hittat rapporter under natten som skickats när tempen var under 17 och det verkar ha skickats ett par med några minuter fördröjning så det såg ut som dom skickats efter att tempen stigit.
Dock så skickades dom fast dörren var stängd.
Igår kväll öppnade jag dörren när tempen var 23 grader och under natten gick tempen ner till runt 13 grader, fortfarande med dörren öppen. Inget meddelande skickades.
När temperaturen under förmiddagen idag steg över 25 grader så skickades meddelande Id3. Trots att dörren var öppen..
Koden ser ut såhär:
Verkar som om den tolkar strängvärdena 0 och 1 tvärtom. Kan man ändra det i någon parameter för enheten? Hittar inte riktigt vilken det kan vara i så fall. Enheten är inställd på Input_NC (Normal Close).
Tacksam för förslag på ändring.
Igår morse var tempen 13 grader och dörren var stängd. *När temperaturen gick över 17 grader och dörren fortfarande var stängd så skickade den meddelande Id2.
* Rättar mig lite då jag hittat rapporter under natten som skickats när tempen var under 17 och det verkar ha skickats ett par med några minuter fördröjning så det såg ut som dom skickats efter att tempen stigit.
Dock så skickades dom fast dörren var stängd.
Igår kväll öppnade jag dörren när tempen var 23 grader och under natten gick tempen ner till runt 13 grader, fortfarande med dörren öppen. Inget meddelande skickades.
När temperaturen under förmiddagen idag steg över 25 grader så skickades meddelande Id3. Trots att dörren var öppen..
Koden ser ut såhär:
Code: Select all
%% properties
38 value
40 value
%% autostart
%% globals
--]]
--kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
if tonumber(fibaro:getValue(38, "value")) > 0 and tonumber(fibaro:getValue(40, "value")) > 25 then
fibaro:call(4,"sendDefinedEmailNotification","3") -- byt ut 6 mot det id som gäller för din telefon
elseif tonumber(fibaro:getValue(38, "value")) < 1 and tonumber(fibaro:getValue(40, "value")) < 17 then
fibaro:call(4,"sendDefinedEmailNotification","2") -- byt ut 6 mot det id som gäller för din telefon
end
Tacksam för förslag på ändring.
Byt plats på testerna bara
Jag har gjort det och kommenterat koden lite extra, se hur detta lirar - och kom ihåg, LUA bits inte så ändra på!
Jag har gjort det och kommenterat koden lite extra, se hur detta lirar - och kom ihåg, LUA bits inte så ändra på!
Code: Select all
%% properties
38 value
40 value
%% autostart
%% globals
--]]
--kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
-- Dörr öppen och temperaturen understiger ett visst värde (17 grader?)
if tonumber(fibaro:getValue(38, "value")) > 0 and tonumber(fibaro:getValue(40, "value")) < 17 then
-- Skicka meddelande om att dörren är öppen och det är för kallt i växthuset så dörren måste stängas
fibaro:call(4,"sendDefinedEmailNotification","3")
-- Dörren stängd och temperaturen överstider ett visst värde (25 grader?)
elseif tonumber(fibaro:getValue(38, "value")) < 1 and tonumber(fibaro:getValue(40, "value")) > 25 then
-- Skicka meddelande om att dörren är stängd och det är för varmt i växthuset så dörren måste öppnas
fibaro:call(4,"sendDefinedEmailNotification","2")
end
Jämför Home Assistant med HomeSeer 4 på generation 800 controller - here we go!
Stort tack Bamsefar, det fungerar utmärkt nu. Bytte bara meddelande Id då den skickade tvärtom.
Ett extra stort tack för att du kommenterade koden extra. Det gör det mycket lättare för en oinsatt i LUA, som jag, vad som gör vad och lättare att lära sig LUA också.
Som sagt, stort tack!
Ett extra stort tack för att du kommenterade koden extra. Det gör det mycket lättare för en oinsatt i LUA, som jag, vad som gör vad och lättare att lära sig LUA också.
Som sagt, stort tack!