pcarlsen Skrevet 16. oktober 2017 Skrevet 16. oktober 2017 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 } Siter
SK951 Skrevet 22. oktober 2017 Skrevet 22. oktober 2017 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. Siter
jhenrikb Skrevet 26. oktober 2017 Skrevet 26. oktober 2017 (endret) 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¶m=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 26. oktober 2017 av jhenrikb 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.