Jump to content
  • Sign Up

Recommended Posts

Posted

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 weeks later...
Posted

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)
Posted

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)}

 

Posted

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. 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.