PoolVärmare

Hjälp varandra att vara kreativa för att göra hemmet mer bekvämt.
Post Reply
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Håller på att försöka få till en liten scen som sätter på poolvärmen.
Har 2 tempgivare som ska styra det hela.
En som mäter poltempen och en som mäter värmen som kommer ut ur värmaren.

Min tanke är att om tempen i poolvärmaren är 3 grader varmare än pooltempen så ska poolvärmarepumpen starta.
Är det någon som har ett tips på hur detta ska byggas.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Inga tips?
Två variabler pooltemp och poolheat blir det iaf. Men sen då? Skulle behöva en luaexpert här :)
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

Jag har lite frågor...

Du skriver att du skall mäta två temperaturer:
- Själva vattentemperaturen i poolen, det förstår jag med - men mäter du då vid cirkulationspumpen eller?
- Vattentemperaturen vid poolvärmaren - men den är väl ändå avslagen när den inte går, så det värdet kan knappast vara vettigt i vissa lägen?

Poolheat är väl ett rätt bestämt värde också? Du bestämmer att du vill ha 25 grader i vattnet, sätter de i en global variabel, och är det lägre i cirkulationspumpens inlopp eller vart du nu mäter, så startar du värmaren tills pooltempen är okej?

Således, vad är du vill skall hända?
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
SirMaggot
Medlem
Posts: 441
Joined: 18 Aug 2013, 10:36
11

Scenen har jag hittat och modifierat efter behov, den funkar, så jag är nöjd.
Avfuktaren står i krypgrunden.
(Fuktmätaren ID19 är en virtuell enhet, som läses från Domoticz)

Code: Select all

--[[
%% autostart
%% properties
19 ui.Label1.value
%% globals
--]]
--19 value = Fuktsensorn ID

--Start och stopp avfuktare beroende på fukt i krypgrund 
--Om fukt > eller = 68.0%, Starta avfuktare
--Om fukt < eller = 66.0%, Stopp avfuktare
        
local humidity = fibaro:getValue(19, "ui.Label1.value")
local humStart = "68" -- Starta avfuktaren
local humStopp = "66" --Stoppa avfuktaren
local avfuktare = 7 --avfuktarens on/off
	
--fibaro:debug("Fukthalt: "..humidity.."%.")
if (humidity > humStart) then --Starta avfuktaren om fukt => %
fibaro:call(avfuktare, "turnOn") --Starta avfuktare
fibaro:sleep(300*1000) --Sov 5 min
end
             
if (humidity < humStopp) then --Stopp avfuktare om =< %
fibaro:call(avfuktare, "turnOff") --Stopp avfuktare
fibaro:sleep(300*1000) --Sov 5 min
end
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

PoolTemp mäts i poolen ca 3 dm ner från ytan.
PoolVärmaren är en solvärmare med 50 meter pemslang i en tät låda på 1200x2500 mm. I utloppet vid poolen så sitter en tempgivare, denna är ovan vattenytan.

Det jag vill ska hända är att om poolHeat är 2 eller 3 grader varmare än PoolTemp så ska pumpen till PoolHeat starta, och är det inte så så ska pumpen stängas av
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

Det finns nog hur många fel som helst i denna kod... Baserat på SirMaggot's kod ovan, men lite ändrad då.

OBS! Ändra xx1, xx2 till respektive tempgivares EnhetsID, och glöm inte zz1 som är EnhetsID för av/på enheten för pumpen...

Code: Select all

--[[
%% autostart
%% properties
xx1 value
xx2 value
%% globals
--]]

--xx1 value = PoolHeat
--xx2 value = PoolTemp

--Start och stopp pump om 3 graders skillnad.
local PumpHeat = tonumber(fibaro:getValue(xx1, "value"))
local PoolHeat = tonumber(fibaro:getValue(xx2, "value"))+3
local pump = zz1 -- enhetsID för enheten som styr pump av/på

if ( PumpHeat > PoolHeat ) then
	fibaro:call(pump, "turnOn") --Starta pump
elseif ( PumpHeat <= PoolHeat ) then
	fibaro:call(pump, "turnOff") --Stopp pump
end
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Ett fel ser det ut som iaf, detta kommer i loggen

[ERROR] 14:55:17: line 17: attempt to perform arithmetic on local 'PoolHeat' (a nil value)

Får kolla lite mer senare, har 8 kids här nu, måste ge dom lite tid :)
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

Ändrade lite i koden ovan, kanske inte går att göra beräkningar i if strukturen? Känns udda men okej, de e en fibaro implementation...
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Jag ändrade lite jag med så det stämmer med mina variabler.
Men fortfarande errror,

[ERROR] 18:03:28: line 14: attempt to perform arithmetic on a nil value

Code: Select all

--[[
%% autostart
%% properties
PoolHeater
PoolTemp
%% globals
--]]

--88value = PoolHeater
--89value = PoolTemp

--Start och stopp pump om 3 graders skillnad.
local PoolHeater = tonumber(fibaro:getValue(89, "value"))
local PoolTemp = tonumber(fibaro:getValue(88, "value"))+3
local pump = 85 -- enhetsID för enheten som styr pump av/på

if ( PoolHeater > PoolTemp ) then
   fibaro:call(pump, "pressButton", "1") --Starta pump
elseif ( PumpHeater <= PoolTemp ) then
   fibaro:call(pump, "pressButton", "2") --Stopp pump
end
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

Njaäe sådär kan du inte skriv ;-)

Code: Select all

--[[
%% autostart
%% properties
88 value
89 value
%% globals
--]]

-- 88 value = PoolHeater
-- 89 value = PoolTemp

--Start och stopp pump om 3 graders skillnad.
local PoolHeater = tonumber(fibaro:getValue(89, "value"))
local PoolTemp = tonumber(fibaro:getValue(88, "value"))
PoolTemp = PoolTemp + 3

local pump = 85 -- enhetsID för enheten som styr pump av/på

if ( PoolHeater > PoolTemp ) then
	fibaro:call(pump, "pressButton", "1") --Starta pump
elseif ( PumpHeater <= PoolTemp ) then
	fibaro:call(pump, "pressButton", "2") --Stopp pump
end
Fortfarande tveksam på varför inte vanlig matte fungerar... Men då jag inte kan prova din kod på min HC2... Så blir det try and crash
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Opps :oops:
Nu kom detta i loggen

[ERROR] 20:18:24: line 15: attempt to perform arithmetic on local 'PoolTemp' (a nil value)

Är det nå fel på min variabel eftersom dett kommer arithmetic ??
Men i variabelpanelen så syns rätt väde iaf.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

Eh?

Du behöver INGA globala variabler för denna scen. Så radera dom...
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Nu har jag raderat variablerna och koden ser ut så här men får fortfarande samma fel på rad 14

[ERROR] 11:10:28: line 14: attempt to perform arithmetic on a nil value

Code: Select all

--[[
%% autostart
%% properties
88 value
89 value
%% globals
--]]

--88 value = PoolHeat
--89 value = PoolTemp

--Start och stopp pump om 3 graders skillnad.
local PumpHeat = tonumber(fibaro:getValue(88, "value"))
local PoolHeat = tonumber(fibaro:getValue(89, "value"))+3
local pump = 85 -- enhetsID för enheten som styr pump av/på

if ( PumpHeat > PoolHeat ) then
   fibaro:call(pump, "pressButton", "1") --Starta pump
elseif ( PumpHeat <= PoolHeat ) then
   fibaro:call(pump, "pressButton", "2") --Stopp pump
end
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

Okej, då tar vi den långa vägen:

Code: Select all

--[[
%% autostart
%% properties
88 value
89 value
%% globals
--]]

-- 88 value = PoolHeater
-- 89 value = PoolTemp

--Start och stopp pump om 3 graders skillnad.
local PoolHeater = tonumber(fibaro:getValue(88, "value"))
local PoolTemp = tonumber(fibaro:getValue(89, "value"))

fibaro:debug("PoolHeater " .. PoolHeater)
fibaro:debug("PoolTemp " .. PoolTemp)

PoolTemp = PoolTemp + 3

fibaro:debug("PoolHeater " .. PoolHeater)
fibaro:debug("PoolTemp " .. PoolTemp)

local pump = 85 -- enhetsID för enheten som styr pump av/på

if ( PoolHeater > PoolTemp ) then
--   fibaro:call(pump, "pressButton", "1") --Starta pump
	fibaro:debug("Slå på pumpen!")
elseif ( PoolHeater <= PoolTemp ) then
--   fibaro:call(pump, "pressButton", "2") --Stopp pump
	fibaro:debug("Slå av pumpen!")
end
Vad kommer ut från exakt den ovanstående koden, ändra INGET!! :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

då kommer detta

[ERROR] 14:10:17: line 16: attempt to concatenate local 'PoolHeater' (a nil value)
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

Jag vet inte varför du får det felmeddelandet, när jag kör samma kod så får jag inga som helst problem. Okej jag har iofs bytt 88 resp 89 till 118 resp 115 (några väl valda tempsensorer), men några andra felkoder har jag inte helt enkelt:

Code: Select all

--[[
%% autostart
%% properties
118 value
115 value
%% globals
--]]

-- 88 value = PoolHeater
-- 89 value = PoolTemp

--Start och stopp pump om 3 graders skillnad.
local PoolHeater = tonumber(fibaro:getValue(118, "value"))
local PoolTemp = tonumber(fibaro:getValue(115, "value"))

fibaro:debug("PoolHeater " .. PoolHeater)
fibaro:debug("PoolTemp " .. PoolTemp)

PoolTemp = PoolTemp + 3

fibaro:debug("PoolHeater " .. PoolHeater)
fibaro:debug("PoolTemp " .. PoolTemp)

local pump = 85 -- enhetsID för enheten som styr pump av/på

if ( PoolHeater > PoolTemp ) then
--   fibaro:call(pump, "pressButton", "1") --Starta pump
	fibaro:debug("Slå på pumpen!")
elseif ( PoolHeater <= PoolTemp ) then
--   fibaro:call(pump, "pressButton", "2") --Stopp pump
	fibaro:debug("Slå av pumpen!")
end
[DEBUG] 14:31:16: PoolHeater 29.3
[DEBUG] 14:31:16: PoolTemp 30
[DEBUG] 14:31:16: PoolHeater 29.3
[DEBUG] 14:31:16: PoolTemp 33
[DEBUG] 14:31:16: Slå av pumpen!
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Nu fick jag det att funka, böt mina termometrar till 2 andra.
men när jag kör med mina virtuella termometrar så går det inte.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

sonnyboy wrote:mina virtuella termometrar så går det inte.
Exakt. Dom har helt andra egenskaper inne i HC2's LUA kod - det är som att blanda äpplen med gråsten ;-)
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Nu fick jag till det med mina virituella enheter :)
Tack för hjälpen.

Edit: har suttit och kollat på hur den beter sig och den funkar över förväntan :) när solen går i moln så stänger den av.

Code: Select all

--[[
%% autostart
%% properties
88 ui.lblTemp.value
89 ui.lblTemp.value
%% globals
--]]

-- 89 value = PoolHeater
-- 88 value = PoolTemp

--Start och stopp pump om 3 graders skillnad.
local PoolHeater = tonumber(fibaro:getValue(89, "ui.lblTemp.value"))
local PoolTemp = tonumber(fibaro:getValue(88, "ui.lblTemp.value"))

fibaro:debug("PoolHeater " .. PoolHeater)
fibaro:debug("PoolTemp " .. PoolTemp)

PoolTemp = PoolTemp + 3

fibaro:debug("PoolHeater " .. PoolHeater)
fibaro:debug("PoolTemp " .. PoolTemp)

local pump = 85 -- enhetsID för enheten som styr pump av/på

if ( PoolHeater > PoolTemp ) then
   fibaro:call(pump, "pressButton", "1") --Starta pump
   fibaro:debug("Slå på pumpen!")
elseif ( PoolHeater <= PoolTemp ) then
   fibaro:call(pump, "pressButton", "2") --Stopp pump
   fibaro:debug("Slå av pumpen!")
end
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
Post Reply