Evelen Skrevet 11. november 2016 Skrevet 11. november 2016 Tenker lage en samletråd hvor man kan poste nyttige hendelser som man kan se for seg at andre også kan ha brukt for. Regler jeg ønsker skal følges: - En hendelse per post, med mindre flere hendelser henger sammen på en logisk måte. - Dokumenter hendelsen skikkelig slik at folk skjønner hva den gjør og hvordan. Det finnes en tilsvarende tråd for blockly her: http://www.hjemmeautomasjon.no/forums/topic/485-eksempler-p%C3%A5-hendelser-blockly/ 2 Siter
Evelen Skrevet 11. november 2016 Forfatter Skrevet 11. november 2016 Loggføre effekt hvor gang en effektmåler endrer status I og med at den normale loggførignsoppløsningen er på 5 minutter er den ikke veldig egnet til å lage logger som kan brukes til å kartlegge hvordan f.eks vaskemaskinen eller andre enheter med ganske variabel effekt oppfører seg, har derfor utformet dette scriptet som skriver wattforbruk hver gang wattforbruket endrer seg: Dette settes opp som LUA/All local wattmeter = 'Navn på enhet som viser effekt' --Enhet som måler effekt (Watt) -- forbruk = tonumber(sWatt) forbruk = tonumber(otherdevices_svalues[wattmeter]) commandArray = {} if (devicechanged[wattmeter]) then print('Enheten "' ..wattmeter.. '" forbruker ' ..forbruk.. 'W for øyeblikket') end return commandArray Loggeksempel: 2016-11-12 00:42:12.151 LUA: Enheten "28 - Vaskemaskin" forbruker 43.9W for øyeblikket 2016-11-12 00:42:15.150 LUA: Enheten "28 - Vaskemaskin" forbruker 38.4W for øyeblikket 2016-11-12 00:42:19.150 LUA: Enheten "28 - Vaskemaskin" forbruker 34W for øyeblikket 2016-11-12 00:42:25.152 LUA: Enheten "28 - Vaskemaskin" forbruker 29.4W for øyeblikket 2016-11-12 00:42:28.150 LUA: Enheten "28 - Vaskemaskin" forbruker 1628.1W for øyeblikket 2016-11-12 00:43:23.149 LUA: Enheten "28 - Vaskemaskin" forbruker 23.4W for øyeblikket 1 Siter
deve87 Skrevet 20. februar 2018 Skrevet 20. februar 2018 function timedifference(s) year = string.sub(s, 1, 4) month = string.sub(s, 6, 7) day = string.sub(s, 9, 10) hour = string.sub(s, 12, 13) minutes = string.sub(s, 15, 16) seconds = string.sub(s, 18, 19) t1 = os.time() t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds} difference = os.difftime (t1, t2) return difference end function trim1(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end commandArray = {} debuglevel = 0 local function update(idx, value1, value2) local cmd = idx.."|"..value1.."|"..value2 --local cmd = string.format("%d|0|%f;%f", idx, value1, value2) table.insert (commandArray, { ['UpdateDevice'] = cmd } ) end for i, v in pairs(otherdevices) do timeon = 240 tc = tostring(i) --v = i:sub(1,4) v = string.sub(i, -5) if (v == '(VOS)') then if (debuglevel > 0) then print("Timer Device Detected:".. i) end tc2 = string.len(i) --print("Len:".. tc2) vname = trim1(tostring(string.sub(i,1,tc2-5))) if (otherdevices[vname] == 'On') then if (debuglevel > 0) then print("Timed Device:".. vname) end print("Timed Device Detected ON:" ..vname) if (debuglevel > 0) then print("Timer Dev Idx:".. otherdevices_idx[i]) end if (debuglevel > 0) then print("Timed Dev Idx:".. otherdevices_idx[vname]) end if (debuglevel > 0) then print("Current Value:".. otherdevices[i]) end newvalue = otherdevices[i] +25 --newvalue = 1 if (debuglevel > 0) then print("New Value:".. newvalue) end --commandArray['UpdateDevice'] = otherdevices_idx[i]..'|1|'..newvalue update (otherdevices_idx[i], 1, newvalue) end end if (v == 'PIR----') then difference = timedifference(otherdevices_lastupdate[tc]) if (difference > timeon and difference < (timeon + 60)) then tempdiff = tostring(difference) c = i:sub(4) tempmessage = c.." Light Off - after at least " .. (timeon+1) .. "secs up - actually - " .. tempdiff .. "seconds" print(tempmessage) commandArray[c] = 'Off' end end end return commandArray Skulle finne et script som beregnet effekt ved å ta tiden på hvor lenge en bryter var inne med fast ohms last. Som varmtvannstank, varmekabler, varmovner, etc.. Fant da skriptet over. Dette fungerer ved at en lager en dummy kWh teller. Telleren må hete nøyaktig det samme som den bryteren en skal måle. Bare med 3 blokkbokstaver i parentes. Den kan endres her if (v == '(VOS)') then Scriptet må settes som Time. Da kjøres det en gang i minuttet. Dummy kWh teller legger til en kWh verdi hvert minutt så lenge bryter en måler ligger inne. For å endre den effekten en legger til dummy devicen. Må en endre på newvalue = otherdevices[i] +25 Her måler jeg en varmeovn på 1500W. Verdien 25 finner jeg da på følgende måte: 1500W / 60 = 25 Siter
deve87 Skrevet 3. mai 2019 Skrevet 3. mai 2019 (endret) Virtuell termostat. Måtte lage en script for det da jeg ikke kunne finne noe steder annet en "Smart Virtual Thermostat" som ikke passet for meg. Setpoint = 'WC 1etg' -- Dummy Setpoint device Temp = 'WC 1.etg' -- Temperature sensor Switch = 'Varmeovn WC 1etg' -- Navnet på brytermodul for varmeovnen (ikke bruk symboler som . , - etc og bruk stor forbokstav for hvert ord som 'Varme Stue') Hysteresis = 0.5 -- Stop / start punktet for setpoint commandArray = {} if tonumber(otherdevices_svalues[Temp]) - Hysteresis >= tonumber(otherdevices_svalues[Setpoint]) and otherdevices[Switch] == 'On' then commandArray[Switch] = 'Off' elseif tonumber(otherdevices_svalues[Temp]) + Hysteresis <= tonumber(otherdevices_svalues[Setpoint]) and otherdevices[Switch] == 'Off' then commandArray[Switch] = 'On' end return commandArray Endret 3. mai 2019 av deve87 1 Siter
Anbefalte innlegg
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.