Värde från en DS18B20 ansluten till Fibaro dörrsensor

Hjälp varandra att vara kreativa för att göra hemmet mer bekvämt.
Post Reply
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

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?
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Fått till detta eller behöver du hjälp?


Skickat från min iPhone med Tapatalk
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

Tar tacksamt emot hjälp...
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

Ingen som har koll på hur man kan göra??
Bisse90
Medlem
Posts: 96
Joined: 01 Dec 2013, 17:43
10

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
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

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
Tack Tobbe, ska testa detta!
User avatar
Bamsefar
Z-Wave Kung
Posts: 1258
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Får jag föreslå att scenen ifråga skrivs om till att trigga på temperaturförändring istf sleep 30 sekunder?

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
För många sleep samtidigt i flera scener kommer lasta ned HC2 och skapa värme....
Jämför Home Assistant med HomeSeer 4 på generation 800 controller - here we go! :mrgreen:
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

Bamsefar wrote:Får jag föreslå att scenen ifråga skrivs om till att trigga på temperaturförändring istf sleep 30 sekunder?

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
För många sleep samtidigt i flera scener kommer lasta ned HC2 och skapa värme....
Tackar, provar denna variant istället!
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

Har nu testat detta och får denna error:
[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 6 är min telefon
Id 38 är dörrsensorn
Id 40 är temp.sensorn
User avatar
Bamsefar
Z-Wave Kung
Posts: 1258
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

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å...

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
OBS! Jag kan inte provköra denna kod, så min hjälp är begränsad i detta läge....
Jämför Home Assistant med HomeSeer 4 på generation 800 controller - here we go! :mrgreen:
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

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:

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
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.
User avatar
Bamsefar
Z-Wave Kung
Posts: 1258
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

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å!

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! :mrgreen:
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

Tackar! Jo, jag var inne på att kasta om det själv men så poppade det gamla citatet upp i huvet " Det går att göra så men det är inte rätt" så jag tänkte att det är bäst att fråga ;)
diStefano
Medlem
Posts: 105
Joined: 31 Aug 2013, 21:39
11

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!
Post Reply