Öka en dimmers satta värde med ett bestämt värde.

Diskussioner runt hur den tänkta funktionaliteten nås
Perjkp
Wannabe
Inlägg: 9
Blev medlem: 19 maj 2016, 10:26
Ort: Jönköping

Öka en dimmers satta värde med ett bestämt värde.

Inlägg av Perjkp »

Hej på er!

Är själv helt novis på LUA och programmering så jag önskar hjälp från den samlade expertis som verkar finnas här :)

Jag har sen ett par år automatiserat olika delar av mitt hem och använder till största delen fibaro och en HC2 och nu har turen kommit till en motordriven ventil som styrs av 0-10v. Min tanke är att styra ventilen med Qubinos dimmer (0-10v) genom att öka eller minska värdet på dimmern och på så sätt öppna respektive stänga ventilen beroende på om uppmätt temperatur är högre eller lägre än önskad temperatur.

Ex. den uppmätta temperaturen är 2grader lägre än önskad temperatur, dimmerns nuvarande värde (ex 53%) ökas då med 3 och omvänt om temperaturen är för låg.

Riktigt lyxigt hade det vart om dimmerns värde ändrats med 10 om differensen i temperaturen vart mer än 3grader i stället. Dvs. vid större differens ändras justeringen med större steg.

Är detta möjligt och har någon nån ide på hur en sådan kod skulle kunna se ut?

Tack på förhand.
ovenystas
Wannabe
Inlägg: 9
Blev medlem: 20 nov 2015, 00:49
Ort: Lerum

Re: Öka en dimmers satta värde med ett bestämt värde.

Inlägg av ovenystas »

Det låter som att det är en P-regulator du är ute efter. Där ställer du in önskad temperatur som du vill uppnå (setPoint) och förstärkningsfaktor (Kp). Du kan behöva justera Kp tills du hittar ett värde som ger bra reglering. I ditt exempel då du vill att ett fel på 2 grader ska ge en förändring på 3% på ventilen så blir Kp = 3/2 = 1.5. Regulatorn mäter temperaturen. Beräknar felet från önskad temperatur. Multiplicerar felet med förstärkningsfaktorn och adderar eventuell nollpunktsförskjutning (bias). I ditt fall verkar det bra att börja med att sätta nollpunktsförskjutningen mitt i reglerområdet, d.v.s på 50%. Sedan sätter regulatorn aktören med det beräknade värdet.

Jag skrev ihop en scen för en P-regulator som du kan testa.
Du får ändra id-numret under %% properties och sensorId till id för din temperatur sensor, och ändra actorId till id för din Qubino dimmer.

Kod: Markera allt

--[[
%% properties
13 value
%% events
%% globals
--]]

-- User configurable parameters.
local debug = true     -- Set to true/false to enable/disable debug messages.
local sensorId = 13    -- Id of sensor. For example a temperature sensor
local actorId = 26     -- Id of actor. For example a 0-10V output controling a valve.
local setPoint = 20.0  -- The wanted value.
local outMin = 0       -- Minimum output value to actor.
local outMax = 100     -- Maximum output value to actor.
local Kp = 1.5         -- Proportional factor in regulator. P-value.
local bias = 50        -- Zero offset. Output value when error is zero.

-- Function for rounding a value to no decimal places.
function round(num) 
  if (num >= 0) then
    return math.floor(num + 0.5) 
  else
    return math.ceil(num - 0.5)
  end
end

-- Read sensor value.
local actual = tonumber(fibaro:getValue(sensorId, "value"))

-- P-regulator algorithm.
local err = setPoint - actual  -- Calculate error.
local out = err * Kp + bias    -- Calculate output value.

-- Limit output range.
if (out < outMin) then
  out = outMin
end
if (out > outMax) then
  out = outMax
end

-- Round to remove decimals.
out = round(out)

-- Set value on output actor.
fibaro:call(actorId, "setValue", out)

-- Debug.
if debug then
  fibaro:debug("actual="..actual.." setPoint="..setPoint.." error="..err.." out="..out)
end
Perjkp
Wannabe
Inlägg: 9
Blev medlem: 19 maj 2016, 10:26
Ort: Jönköping

Re: Öka en dimmers satta värde med ett bestämt värde.

Inlägg av Perjkp »

Tusen tack!!

Ska testa detta, har precis gjort färdigt rördragningen och dimmer är beställd så detta ska bli kul att testa. återkommer med resultat.
Åter igen tack!
Perjkp
Wannabe
Inlägg: 9
Blev medlem: 19 maj 2016, 10:26
Ort: Jönköping

Re: Öka en dimmers satta värde med ett bestämt värde.

Inlägg av Perjkp »

En tanke som kom upp nu efter att ha tittat lite.

Om jag fattat det rätt så körs denna scenen en gång och sätter därmed ett justerat värde? Om så är fallet, kan jag loopa scenen låt säg varannan minut för att kontrollera att justerat värde räckte för att uppnå önskad temperatur?
ovenystas
Wannabe
Inlägg: 9
Blev medlem: 20 nov 2015, 00:49
Ort: Lerum

Re: Öka en dimmers satta värde med ett bestämt värde.

Inlägg av ovenystas »

Scenen kommer köra varje gång du får in ett nytt värde till HC2 från din temperatursensor så den behöver inte loopas. I början av scenen hittar du raderna:

Kod: Markera allt

%% properties
13 value
Det är de som triggar scenen varje gång property "value" på sensor med id 13 ändras. 13 måste du ändra till det id som din temperatursensor har.

Om utstyrt värde inte räcker till för att uppnå önskad temperatur tyder det på att värdet på Kp är för lågt och behöver höjas.
Perjkp
Wannabe
Inlägg: 9
Blev medlem: 19 maj 2016, 10:26
Ort: Jönköping

Re: Öka en dimmers satta värde med ett bestämt värde.

Inlägg av Perjkp »

Aha! Tackar då klarnar det. Är som sagt väldigt novis avseende programering. :)
Perjkp
Wannabe
Inlägg: 9
Blev medlem: 19 maj 2016, 10:26
Ort: Jönköping

Re: Öka en dimmers satta värde med ett bestämt värde.

Inlägg av Perjkp »

Nu är dimmern och shunten monterad och allt visar sig fungera perfekt. :D

1. Dimmern styr shuntmotorn precis så som jag hoppats, dvs dimmar jag ner så stänger motorn och dimmar jag upp så öppnar den. Möjligtvis att det går att justera spänningen något så utgående volt på dimmern stämmer bättre, max ligger nu på ca 9,6V.

2. Scenen tillhandahållen av `ovenystas´(tusen tack!!) jobbar så som jag önskat, korrigerar dimmern i steg beroende på avvikelse mot önskat värde.

Jag undrar dock (ovenystas) om det går att justera [quote]local setPoint = 20.0 -- The wanted value.quote] utifrån värded justerat på en termostat och på så vis ha nytta av Heatingpanel?



Lägger upp lite bilder på installationen för de som är intresserade.
Bilagor
IMG_9255.JPG
Shuntmotorn nere i bilden styrs av Qubino dimmer 1-10V som är monterad i kopplingsdosan under elcentralen
Shuntmotorn nere i bilden styrs av Qubino dimmer 1-10V som är monterad i kopplingsdosan under elcentralen
ovenystas
Wannabe
Inlägg: 9
Blev medlem: 20 nov 2015, 00:49
Ort: Lerum

Re: Öka en dimmers satta värde med ett bestämt värde.

Inlägg av ovenystas »

Vad roligt att det fungerar.

Angånde din fråga om att hämta setPoint från en "Heating panel". Ja det ser ut som att det kan gå.

Jag använder inte själv någon "Heating panel" så jag fick testa lite innan jag kom på hur man kan göra. Man behöver gå via HC2:ans API för att hämta värdet. Skapa först en heating panel. Kolla sedan i adressfältet på webbläsaren för att se vad den fick för id, alternativt kan du se det genom att skriva in adressen "<ip to your HC2>/api/panels/heating" i webbläsaren. I scenen byter du sedan ut raden...

Kod: Markera allt

local setPoint = 20.0  -- The wanted value.
...mot följande tre rader där du byter ut 309 mot det id som din heating panel har.

Kod: Markera allt

local panelID = 309 -- Can be found with <ip to your HC2>/api/panels/heating.
local panel, status = api.get("/panels/heating/"..panelID) -- Get panel info from API.
local setPoint = panel.properties.currentTemperature -- Get current set temperature.
Perjkp
Wannabe
Inlägg: 9
Blev medlem: 19 maj 2016, 10:26
Ort: Jönköping

Re: Öka en dimmers satta värde med ett bestämt värde.

Inlägg av Perjkp »

Hej igen. Har gått lite tid nu sen senast men har nu fått tummen ur och gjort färdigt scenen och den styr nu tilluftstemperaturen i ventilationen via en shunt och allt regleras med en zon i Heatpanel i fibaron. Fungerar kanon.

Tusen tack för hjälpen "ovenystas"!!
Skriv svar