Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Anbefalte innlegg

Skrevet

Siden jeg ikke kan programmere så blir det litt klipp og lim for å få ting til å funke..

 

Jeg prøver å lage ett script som beregner deltaT på den vannbårne varmen min.. 

 

Dette skriptet fungerer, men kjører da hver gang en av temperaturene får en oppdatering, mao veldig ofte:

local tur1 = 'Vaskerom-TUR'
local retur1 = 'Vaskerom-RETUR'
local deltat1_idx = 559
local tur2 = 'Gang-TUR'
local retur2 = 'Gang-RETUR'
local deltat2_idx = 560
local tur3 = 'Kjøkken N-TUR'
local retur3 = 'Kjøkken N-RETUR'
local deltat3_idx = 561
local tur4 = 'Kjøkken S-TUR'
local retur4 = 'Kjøkken S-RETUR'
local deltat4_idx = 562
local tur5 = 'TV Stue-TUR'
local retur5 = 'TV Stue-RETUR'
local deltat5_idx = 563
local tur6 = 'Bibliotek-TUR'
local retur6 = 'Bibliotek-RETUR'
local deltat6_idx = 564

commandArray = {}

if devicechanged['Vaskerom-TUR'] then

	tur1 = otherdevices_svalues['Vaskerom-TUR']
	retur1 = otherdevices_svalues['Vaskerom-RETUR']
	tur_temp1 = tonumber(tur1)
	retur_temp1 = tonumber(retur1)
	commandArray['UpdateDevice'] = deltat1_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp1 - retur_temp1)

elseif devicechanged['Gang-TUR'] then

	tur2 = otherdevices_svalues['Gang-TUR']
	retur2 = otherdevices_svalues['Gang-RETUR']
	tur_temp2 = tonumber(tur2)
	retur_temp2 = tonumber(retur2)
	commandArray['UpdateDevice'] = deltat2_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp2 - retur_temp2)

elseif devicechanged['Kjøkken N-TUR'] then

	tur3 = otherdevices_svalues['Kjøkken N-TUR']
	retur3 = otherdevices_svalues['Kjøkken N-RETUR']
	tur_temp3 = tonumber(tur3)
	retur_temp3 = tonumber(retur3)
	commandArray['UpdateDevice'] = deltat3_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp3 - retur_temp3)

elseif devicechanged['Kjøkken S-TUR'] then

	tur4 = otherdevices_svalues['Kjøkken S-TUR']
	retur4 = otherdevices_svalues['Kjøkken S-RETUR']
	tur_temp4 = tonumber(tur4)
	retur_temp4 = tonumber(retur4)
	commandArray['UpdateDevice'] = deltat4_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp4 - retur_temp4)

elseif devicechanged['TV Stue-TUR'] then

	tur5 = otherdevices_svalues['TV Stue-TUR']
	retur5 = otherdevices_svalues['TV Stue-RETUR']
	tur_temp5 = tonumber(tur5)
	retur_temp5 = tonumber(retur5)
	commandArray['UpdateDevice'] = deltat5_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp5 - retur_temp5)

elseif devicechanged['Bibliotek-TUR'] then

	tur6 = otherdevices_svalues['Bibliotek-TUR']
	retur6 = otherdevices_svalues['Bibliotek-RETUR']
	tur_temp6 = tonumber(tur6)
	retur_temp6 = tonumber(retur6)
	commandArray['UpdateDevice'] = deltat6_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp6 - retur_temp6)
end
return commandArray

Jeg prøvde å gjøre det om til ett time-script som kjøres en gang pr min, men problemet er at det kun oppdaterer "deltaT_idx6".

 

Noen som ser hva som er feil?

 

local tur1 = 'Vaskerom-TUR'
local retur1 = 'Vaskerom-RETUR'
local deltat1_idx = 559
local tur2 = 'Gang-TUR'
local retur2 = 'Gang-RETUR'
local deltat2_idx = 560
local tur3 = 'Kjøkken N-TUR'
local retur3 = 'Kjøkken N-RETUR'
local deltat3_idx = 561
local tur4 = 'Kjøkken S-TUR'
local retur4 = 'Kjøkken S-RETUR'
local deltat4_idx = 562
local tur5 = 'TV Stue-TUR'
local retur5 = 'TV Stue-RETUR'
local deltat5_idx = 563
local tur6 = 'Bibliotek-TUR'
local retur6 = 'Bibliotek-RETUR'
local deltat6_idx = 564

commandArray = {}

	tur1 = otherdevices_svalues['Vaskerom-TUR']
	retur1 = otherdevices_svalues['Vaskerom-RETUR']
	tur_temp1 = tonumber(tur1)
	retur_temp1 = tonumber(retur1)
	tur2 = otherdevices_svalues['Gang-TUR']
	retur2 = otherdevices_svalues['Gang-RETUR']
	tur_temp2 = tonumber(tur2)
	retur_temp2 = tonumber(retur2)
	tur3 = otherdevices_svalues['Kjøkken N-TUR']
	retur3 = otherdevices_svalues['Kjøkken N-RETUR']
	tur_temp3 = tonumber(tur3)
	retur_temp3 = tonumber(retur3)
	tur4 = otherdevices_svalues['Kjøkken S-TUR']
	retur4 = otherdevices_svalues['Kjøkken S-RETUR']
	tur_temp4 = tonumber(tur4)
	retur_temp4 = tonumber(retur4)
	tur5 = otherdevices_svalues['TV Stue-TUR']
	retur5 = otherdevices_svalues['TV Stue-RETUR']
	tur_temp5 = tonumber(tur5)
	retur_temp5 = tonumber(retur5)
	tur6 = otherdevices_svalues['Bibliotek-TUR']
	retur6 = otherdevices_svalues['Bibliotek-RETUR']
	tur_temp6 = tonumber(tur6)
	retur_temp6 = tonumber(retur6)
	commandArray['UpdateDevice'] = deltat1_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp1 - retur_temp1)
	commandArray['UpdateDevice'] = deltat2_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp2 - retur_temp2)
	commandArray['UpdateDevice'] = deltat3_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp3 - retur_temp3)
	commandArray['UpdateDevice'] = deltat4_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp4 - retur_temp4)
	commandArray['UpdateDevice'] = deltat5_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp5 - retur_temp5)
	commandArray['UpdateDevice'] = deltat6_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp6 - retur_temp6)

return commandArray

 

  • 2 uker senere...
Skrevet

Jeg har bare såvidt begynt å kikke på lua, men det som slår meg er at du muligens gjør en klassisk overskrivning.

commandArray['UpdateDevice'] blir satt 6 ganger og det er kun siste gang som blir utført.

 

Mulig du bør endre det slik at du har flere UpdateDevice.

    ...
	commandArray['UpdateDevice1'] = deltat1_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp1 - retur_temp1)
	commandArray['UpdateDevice2'] = deltat2_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp2 - retur_temp2)
	commandArray['UpdateDevice3'] = deltat3_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp3 - retur_temp3)
	commandArray['UpdateDevice4'] = deltat4_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp4 - retur_temp4)
	commandArray['UpdateDevice5'] = deltat5_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp5 - retur_temp5)
	commandArray['UpdateDevice6'] = deltat6_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp6 - retur_temp6)
Skrevet

Google is my friend, og her er løsningen:

 

commandArray[#commandArray+1] = {['UpdateDevice'] = deltat1_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp1 - retur_temp1)}
commandArray[#commandArray+1] = {['UpdateDevice'] = deltat2_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp2 - retur_temp2)}
commandArray[#commandArray+1] = {['UpdateDevice'] = deltat3_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp3 - retur_temp3)}
commandArray[#commandArray+1] = {['UpdateDevice'] = deltat4_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp4 - retur_temp4)}
commandArray[#commandArray+1] = {['UpdateDevice'] = deltat5_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp5 - retur_temp5)}
commandArray[#commandArray+1] = {['UpdateDevice'] = deltat6_idx .. '|0|' .. string.format("%." .. 1 .. "f", tur_temp6 - retur_temp6)}

 

Skrevet

Så flott. Takk for at du la ut løsningen. 

 

Etter hva jeg har fått med meg er #commandArray lengden på array. Det du gjør er nå å legge til en ekstra for hver kommando. 

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.