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

Hvordan angi ønsket temperatur i Domoticz


pcarlsen

Anbefalte innlegg

Hei.

 

Jeg har nå satt opp litt enkelt styring av panelovner.

Enhentene i bruk er fibaro  z-wave wall-plugs koblet mellom stikkontakt og panelovner og et par 433Mhz temperatursensorer fra Claes koblet til via RfxCom. Har knotet litt med LUA(eller "dzVents") scripting og fått til en ganske grei styring på grunnleggende nivå.

 

Men, for å ta det videre fra  utprøvingsfasen og rulle ut i hele huset må jeg finne en måte å gjøre "måltemperatur" til et parameter jeg kan sette i GUI på en enkel måte. Jeg ser også for meg at jeg skal ha en grunnleggende "hjemme/borte" switch som jeg kan flippe og dermed endre på de grunnleggende nivået slik at alle temperatur targets blir vesentlig lavere når jeg har switchet på "borte" switchen. "Hjemme/Borte" lar seg enkelt løse ved å bruke en virtuell switch, så det er greit. Problemet mitt blir da å finne en løsning på hvordan jeg setter mål-temperatur. Jeg vil jo ikke gå inn og redigere i LUA scripts hvis jeg kommer frem til at "nei, måltemperatur bør være 23 og ikke 22 grader". Hvordan løser man dette på en enkel måte i Domoticz? Er den noen form for enhet som lar meg redigere på en verdi via gui? Prøvde på å legge til virtuell temperatur sensor, men den får jeg ikke satt noen verdi på fra gui så vidt jeg kan se. 

 

For moro skyld legger jeg inn det ene skriptet som styrer panelovner i stua. Jeg vil altså fjerne hardkoding av terskelverdi for temperatur, det er jo fy-fy og gjør vedlikehold helt håpløst når dette vokser litt. 

return {
	active = true, -- set to false to disable this script
     logging = { level = domoticz.LOG_INFO, marker = "SpisestueTemperatur"},
	on = {		
	        devices = {'StueTemperatur',},	
	     },

	execute = function(domoticz, device)
		
		domoticz.log('Detaljer om hendelse; Sensor navn: '.. device.name ..' temperatur:' .. device.temperature, domoticz.LOG_INFO)
		--device.dump()
		local panelKjokken = domoticz.devices('KjøkkenWP-Switch')
		local panelKarnapp = domoticz.devices('StueWP-Switch')
	
		domoticz.log('Panelovn på kjøkken er: ' ..panelKjokken.state, domoticz.LOG_INFO)
		domoticz.log('Panelovn i stue er: ' ..panelKarnapp.state, domoticz.LOG_INFO)
		
		if(device.temperature > 22 ) then
		    domoticz.log('Varmt nok, temperatur er ' .. device.temperature .. ' grensen er 22 grader', domoticz.LOG_INFO)
            if(panelKjokken.state == 'On') then	    
		        panelKjokken.switchOff()
		        domoticz.log('Skrudd av panelovn på kjøkken.', domoticz.LOG_INFO)
		      else   
		          domoticz.log('Panelovn på kjøkken var av, forblir av.', domoticz.LOG_INFO)
		      end
		      if(panelKarnapp.state == 'On') then	    
		        panelKarnapp.switchOff()
		        domoticz.log('Skrudd av panelovn i karnapp.', domoticz.LOG_INFO)
		      else   
		          domoticz.log('Panelovn i karnapp var av, forblir av.', domoticz.LOG_INFO)
		      end
		elseif(device.temperature <= 21 ) then
		    domoticz.log('Begynner å bli kaldt, temperatur er ' .. device.temperature .. ' grensen er 21 grader' , domoticz.LOG_INFO)
		    if(panelKjokken.state == 'Off') then	    
		        panelKjokken.switchOn()
		        domoticz.log('Skrudd på panelovn på kjøkken.', domoticz.LOG_INFO)
		      else   
		          domoticz.log('Panelovn på kjøkken var på, forblir på.', domoticz.LOG_INFO)
		      end
		      if(panelKarnapp.state == 'Off') then	    
		        panelKarnapp.switchOn()
		        domoticz.log('Skrudd på panelovn i karnapp.', domoticz.LOG_INFO)
		      else   
		          domoticz.log('Panelovn i karnapp var på, forblir på.', domoticz.LOG_INFO)
		      end
		end
	end
}

 

Lenke til kommentar
Del på andre sider

Sitat

Hvordan løser man dette på en enkel måte i Domoticz? Er den noen form for enhet som lar meg redigere på en verdi via gui? Prøvde på å legge til virtuell temperatur sensor, men den får jeg ikke satt noen verdi på fra gui så vidt jeg kan se. 

 

Du kan lage en virtuell termostat (Create new virtual Sensor -> Thermostat Setpoint). Selv har jeg laget et blocky 'script' som styrer panelovnene, hvor verdien av termostaten kan brukes rett i scriptet. Da kan man endre temperaturen direkte fra GUI. 

 

Borte, natt og 'hjemme' temperaturer har jeg løst følgende: 

 

Har to termostater: en for "borte" og "hjemme". Hjemme termostaten styres videre av en timer (funksjon direkte i termostaten) som oppdaterer verdiene fire ganger i døgnet (23 grader på dagtid, 19 på natt). Om jeg endrer verdien i GUI-en i løpet av dagen overskriver denne timeren, men går til standardverdier ved nattmodus. Disse er videre kontrollerte av en "hjemme/borte" virtuell knapp. Er vi ikke hjemme følger systemet "borte" termostaten. 

Lenke til kommentar
Del på andre sider

hey. Jeg har gjort det slik for å styre varmen. Gjelder panelovner og switc til varmekabler.

Temperaturmåling får jeg fra mine Motion sensorer.

Bruker Virtuelle termostater som jeg forander i appen eller imperihome. 

Det er mye lettere å programmere dette i blockly, men på Raspberry pi3 kan det skje en bug som suger opp alt minne og da blir den skikkelig treig. Så varme-algoritmen måtte være i script. 

commandArray = {}
if devicechanged['Gang-Temp-Sensor'] and otherdevices['Hus-Varme-Hovedbryter'] == 'On' then
   if tonumber(devicechanged['Gang-Temp-Sensor_Temperature']) < tonumber(otherdevices['Gang-Varme-Termostat']) then 
      commandArray['Gang-Varmekabler'] ='On'
    
   elseif tonumber(devicechanged['Gang-Temp-Sensor_Temperature']) > tonumber(otherdevices['Gang-Varme-Termostat'] + 0.1) then
      commandArray['Gang-Varmekabler'] ='Off' 
    end
end
if devicechanged['Stue-Temp-Sensor'] and otherdevices['Hus-Varme-Hovedbryter'] == 'On' then
   if tonumber(devicechanged['Stue-Temp-Sensor_Temperature']) < tonumber(otherdevices['Stue-Varme-Termostat'] - 0.1) then
      commandArray['Stue-OvnTV'] ='On'
      commandArray['Stue-OvnVindu'] ='On'
     
  elseif tonumber(devicechanged['Stue-Temp-Sensor_Temperature']) > tonumber(otherdevices['Stue-Varme-Termostat'] + 0.2) then
      commandArray['Stue-OvnTV'] ='Off'
      commandArray['Stue-OvnVindu'] ='Off' 
   end
end
return commandArray
--errormessage if set to "all" and not "device".
--"Error: EventSystem: in Varme-Hus-LUA2: [string " ..."]:10: attempt to index global 'commandArray' (a nil value)"

 

 

Jeg bruker også Hjemme/borte bryter. Disse gjør forandringer i "scene" som styrer lys på av, og en virtuell varme knapp For å justere termostaten. Her laget jeg et blocklyscript:

IF varme = on

DO openurl >http://username:[email protected]:8080/json.htm?type=command&param=udevice&idx=38&nvalue=0&svalue=22

der IDX er iden på devicen, og 22 er temperaturen.

 

også da likt med "Else if Varme = off" bare lavere temp. 

Endret av jhenrikb
Lenke til kommentar
Del på andre sider

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.