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.
PoolVärmare
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?
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
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)
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
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
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
Fw 4.600
BeyondMeasure 1.10
EventRunner
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...
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
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
[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
Fw 4.600
BeyondMeasure 1.10
EventRunner
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
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
Fw 4.600
BeyondMeasure 1.10
EventRunner
Njaäe sådär kan du inte skriv
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
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
Kör Home Assistant efter totalt nederlag för HomeSeer
Opps
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.
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
Fw 4.600
BeyondMeasure 1.10
EventRunner
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
[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
Fw 4.600
BeyondMeasure 1.10
EventRunner
Okej, då tar vi den långa vägen:
Vad kommer ut från exakt den ovanstående koden, ändra INGET!!
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
Kör Home Assistant efter totalt nederlag för HomeSeer
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
Exakt. Dom har helt andra egenskaper inne i HC2's LUA kod - det är som att blanda äpplen med gråstensonnyboy wrote:mina virtuella termometrar så går det inte.
Kör Home Assistant efter totalt nederlag för HomeSeer
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.
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
Fw 4.600
BeyondMeasure 1.10
EventRunner