Domoticz motorvärmare till bilen

Diskussioner runt hur den tänkta funktionaliteten nås
dapersson
Wannabe
Inlägg: 12
Blev medlem: 17 dec 2014, 21:57
Ort: Ludvika

Domoticz motorvärmare till bilen

Inlägg av dapersson »

Sökte med ljus och lykta efter ett script till en temperaturstyrd motorvärmare men lyckades aldrig hitta något som passade mig. Ifall någon som jag önskar en "lagom" varm bil så tänkte jag dela med mig av det jag fick ihop. Kanske inte den snyggaste koden men den fungerar.

* Jag skapade en "dummy" switch (Avresetid_Daniel) som jag ställer in avresetiden - 2 timmar. I mitt fall 05:00 vardagar eftersom jag åker runt 07:00 till arbetet.
* D_motorv är min switch On/Off
* För att ta ut temperaturen (temp_ludvika) ute så använder jag mig av en virtuell temperatur sensor från wunderground, har ni en egen givare så får ni plocka temperaturen därifrån eller från valfri site (jag tror man ganska enkelt kan hämta temperaturen från temperatur.nu) Finns många olika guider för detta.
* Sist i scriptet så ligger det en räknare som stänger av motorvärmaren ifall man glömt av den efter 2,5h.
* Varmare än +10 grader så startar den inte, är det kallare än -15 grader så kommer motorvärmare att starta 2 timmar innan avresa (direkt på den tid som timern står inställd på)

Tid/Temperaturkurvorna är efter min smak och resultatet av de två ekvationerna är:

Kod: Markera allt

Temp	Tid
10 	20,7253
9	 20,6564
8	 21,3157
7	 22,7296
6	 24,9245
5	 27,9268
4	 31,7629
3	 36,4592
2	 42,0421
1	 48,538
0	 55,9733
-1	 62,1584
-2	 68,9194
-3	 75,2756
-4	 81,227
-5	 86,7736
-6	 91,9154
-7	 96,6524
-8	 100,9846
-9	 104,912
-10	 108,4346
-11	 111,5524
-12	 114,2654
-13	 116,5736
-14	 118,477
-15	 119,9756

La följande i lua katalogen. (Viktigt hur man döper filen t.ex i mitt fall script_time_dmotor.lua)

Kod: Markera allt

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

commandArray = {}
if (otherdevices['Avresetid_Daniel'] == 'On' and otherdevices['D_motorv'] == 'Off') then
	
	sWeatherTemp = otherdevices_svalues['temp_ludvika']:match("([^;]+)")
	sWeatherTemp = tonumber(sWeatherTemp);

	difference = timedifference(otherdevices_lastupdate['Avresetid_Daniel'])
	
    if (sWeatherTemp < -15) then
		commandArray['D_motorv']='On'
		commandArray['Avresetid_Daniel']='Off'
	end
	
	omtemp = 11 - sWeatherTemp
	x_plus = 0.0044*omtemp^3+0.3377*omtemp^2-1.1128*omtemp+21.496
	x_plus = (120-x_plus) * 60
	x_min = -0.2024*omtemp^2+11.821*omtemp-50.548
	x_min = (120-x_min) * 60
	
	if (difference < 60) then
		if (sWeatherTemp <= 0) then
		tempprint = "Beraknas starta om: " .. (x_min - difference)/60 .. "min"
		print(tempprint)
		end
		
		if (sWeatherTemp > 0) then
		tempprint = "Beraknas starta om: " .. (x_plus - difference)/60 .. "min"
		print(tempprint)
		end	
	
	end
	
	if (sWeatherTemp < 10 and sWeatherTemp > 0 and difference > x_plus) then
		commandArray['D_motorv']='On'
		commandArray['Avresetid_Daniel']='Off'
	end

	if (sWeatherTemp <= 0 and sWeatherTemp >= -15 and difference > x_min) then
		commandArray['D_motorv']='On'
		commandArray['Avresetid_Daniel']='Off'
	end
	
	
else if (otherdevices['D_motorv'] == 'On') then
	difference = timedifference(otherdevices_lastupdate['D_motorv'])
		if (difference > (150 * 60)) then
			commandArray['D_motorv']='Off'
		end
	end
end
return commandArray
Lycka till!


En uppdaterad kod finns --> viewtopic.php?f=65&t=3969&start=15#p39898 för användning i dzvents (domoticz) fast då går det att använda sig av den faktiska avresetiden.
Senast redigerad av dapersson den 25 sep 2020, 15:28, redigerad totalt 1 gånger.
TheeDude
Wannabe
Inlägg: 19
Blev medlem: 04 okt 2015, 23:14
Ort: Boden

Re: Domoticz motorvärmare till bilen

Inlägg av TheeDude »

Hej!

Kanonbra tips, då det börjar bli kallt snart och vinter så börjar man ju såklart börja fundera i dessa banor nu.
Jag har inte införskaffat någon utrustning, står lite och velar om jag ska ha RFXcom 433mhz, eller Z-wave, men det luter åt RFX, och Nexa brytare, framförallt p.ga. priset.

Det jag funderar på angående detta med motorvärmarstyrning är främst för att jag jobbar skift.
Och ställer sällan in tiden likadant varje vecka.
Går det att göra någon form av 5-veckorsperiod på detta, då jag jobbar 5-skift?
Jag har försökt integrera Google kalendern i Domoticz, jag tror att jag har lyckats, men det känns ändå lite sådär omodernt, då inget av detta verkar synas i Domoticz Webgui, utan jag får logga in via ssh och kontrollera att mina tider har importerats till en .txt fil och på så vis triggar igång en brytare eller liknande.

Finns det inget bättre sätt?

Tips mottages gärna om du har koll på det, eller någon annan?

Kanske skulle starta en ny tråd men jag provar så här.
Har försökt söka utan att hitta just det jag söker.
Användarvisningsbild
supportM
Moderator
Inlägg: 1010
Blev medlem: 20 aug 2014, 10:27
Ort: Linköping
Kontakt:

Re: Domoticz motorvärmare till bilen

Inlägg av supportM »

Om du jobbar samma ordning på skiften borde du väl kunna lösa det med en variabel bara? Typ att den räknar upp varje dag när skriptet startas och beroende på värdet så antar den vilket skift du arbetar härnäst (och sen kör du modulo på det antal dagar det är i en cykel så nollställs den automatiskt).

//Jonas, m.nu
// Officiellt supportkonto för m.nu
TheeDude
Wannabe
Inlägg: 19
Blev medlem: 04 okt 2015, 23:14
Ort: Boden

Re: Domoticz motorvärmare till bilen

Inlägg av TheeDude »

supportM skrev:Om du jobbar samma ordning på skiften borde du väl kunna lösa det med en variabel bara? Typ att den räknar upp varje dag när skriptet startas och beroende på värdet så antar den vilket skift du arbetar härnäst (och sen kör du modulo på det antal dagar det är i en cykel så nollställs den automatiskt).

//Jonas, m.nu
Tack för svar!
Det stämmer, jag jobbar 5-skift, så normalt sett jobbar jag alltid likadant i en 5-veckors period.
Är dock så pass ny på domoticz, så att jag inte riktigt fattade vad du sa här.
Men, jag ska försöka ta reda på det, jag är med på ett ungefär.

Edit:
Ska försöka hänga med på vad den här killen gör för något också.
Det kan bli intressant.

http://www.domoticz.com/forum/viewtopic.php?f=38&t=8333
TXC
Inlägg: 1
Blev medlem: 14 okt 2015, 19:20
Ort: Växjö

Re: Domoticz motorvärmare till bilen

Inlägg av TXC »

Jag gjorde följande med "Blockly" (Events under Inställningar), istället för att hålla på med Lua grejen.
Vilket fungerar bra för min del.

Ute är en Fibaro Motion Sensor och gruppen Motorvärmare innehåller en Aeotec SES G5 plugg i garaget.
Bilagor
Skärmavbild 2015-10-14 kl. 19.22.52.png
Skärmavbild 2015-10-14 kl. 19.22.52.png (173.66 KiB) Visad 13500 gånger
TheeDude
Wannabe
Inlägg: 19
Blev medlem: 04 okt 2015, 23:14
Ort: Boden

Re: Domoticz motorvärmare till bilen

Inlägg av TheeDude »

Nu har jag provat få igång BGCD scriptet som det skrivs om i länken som jag länkade ovan.
dvs denna, https://www.domoticz.com/forum/viewtopi ... =38&t=8333

Jag har fått det att fungera på det viset som det ska, det ser ut som på bilden jag bifogade.
Jag lägger till ett event i min Google Kalender, "GcalCheck Preheater" brytaren kollar min kalender var 180e minut efter nya events och startar "GCal Preheater" när tiden på Text devicen "Status Preheater" infaller.
Och det fungerar precis som det ska.
Däremot skulle jag ju vilja få till en tempstyrning på det här också, men det är där skon klämmer.
I min google kalender är det inställt nu tiden då jag ska börja mitt skift och när jag ska sluta, men dessa tider får jag ju ställa om då till en vettigare tid då värmaren egentligen ska starta.
Men som sagt, jag förstår inte riktigt hur jag ska scripta ihop en temperaturstyrning av detta, jag har försökt litegranna med lua scriptet här ovanför men det vill sig inte riktigt.
Någon som har några tips på det?
Annars "duger" ju en kalender helt okej, men varför stoppa nu? :)

Tacksam för hjälp!
Bilagor
domoticz.png
dapersson
Wannabe
Inlägg: 12
Blev medlem: 17 dec 2014, 21:57
Ort: Ludvika

Re: Domoticz motorvärmare till bilen

Inlägg av dapersson »

Ekvation för över 0 grader
x_plus = 0.0044*omtemp^3+0.3377*omtemp^2-1.1128*omtemp+21.496

Ekvation för under 0 grader
x_min = -0.2024*omtemp^2+11.821*omtemp-50.548

Ekvationerna går ganska lätt att ta fram med hjälp av Excel. Jag ville inte ha en linjär tidskurva då jag tror behovet ökar kraftigt när man passerar minus men sen när det börjar bli allt för kallt så eldar man mest för kråkorna så då ville jag att det "planar ut lite".

Edit - Hade helt missat möjligheten att bifoga filer så här kommer en enklare mall för att ta ut kurvorna
Bilagor
motorvärmare.xlsx
(14.42 KiB) Nerladdad 340 gånger
Senast redigerad av dapersson den 30 nov 2015, 22:18, redigerad totalt 1 gånger.
Erik-NA
Tar hemautomation på allvar
Inlägg: 90
Blev medlem: 24 feb 2010, 22:19
Ort: Täby
Kontakt:

Re: Domoticz motorvärmare till bilen

Inlägg av Erik-NA »

Har spunnit vidare på dapersson utmärkta inlägg och skrivit två skript som styr min motorvärmare.

Det enda skriptet, "script_device_engineheater.lua" hanterar när man manuellt trycker på on eller off-knappen på motorvärmaren i Domoticz.
Det andra skriptet, "script_time_engineheater.lua" körs varje minut och hanterar olika fall som motorvärmaren hamnar i.

Skriptet kräver dessutom att man skapar två user varibles i Domoticz, två strängar -"EngHeat_Mode" och "EngHeat_LeaveTime". Annars kommer det inte att fungera.

Vill man se hur skriptet arbetar, kolla i loggen.

Funktioner (2015-12-10)
  • Stänger av motorvärmaren om påtid (runtime) passerat en konfigurerbar tid, oavsett hur värmaren är startad (manuellt eller automatiskt). Den är 3 timmar, givetvis ändringsbar i skriptet
  • Om man har en switch som mäter energiförbrukning, stängs elen av efter att man har dragit ur motorvärmarkontakten i bilen. Har man ingen switch som mäter effektförbrukning utgår denna funktion.
  • Det går manuellt att starta värmaren via Domoticz.
  • Det går att programmera (just nu, i skriptet) vilka tider man avser åka iväg (leave time). (Nu fungerar det att ange fler tider på samma veckodag.) Skriptet räknar själv ut hur långt i förväg värmaren ska starta beroende på utetemperaturen (Tack för formlerna dapersson)
  • Just nu hanteras endast lokal utetemperaturgivare
  • Infört felhantering om motorvärmaren drar effekt även fast den ska vara avstängd.
På att-göra-listan
  • Fixa stöd för att hämta utetemperatur via nätet, dels om lokal utetempsensor saknas eller om den lokala sensorn inte levererar temperatur
  • Skapa en webbsida (inte via Domoticz) där man kan styra motorvärmarskriptet "utifrån".
  • Eventuell avlusning
Bilagor
script_device_engineheater.lua.txt
(1.21 KiB) Nerladdad 347 gånger
script_time_engineheater.lua.txt
(15.98 KiB) Nerladdad 336 gånger
Senast redigerad av Erik-NA den 10 dec 2015, 21:03, redigerad totalt 8 gång.
Home Assistant och z-wave
rodak
Wannabe
Inlägg: 12
Blev medlem: 11 okt 2013, 13:05
Ort: Asmundtorp

Re: Domoticz motorvärmare till bilen

Inlägg av rodak »

TheeDude skrev:Nu har jag provat få igång BGCD scriptet som det skrivs om i länken som jag länkade ovan.
dvs denna, https://www.domoticz.com/forum/viewtopi ... =38&t=8333

Jag har fått det att fungera på det viset som det ska, det ser ut som på bilden jag bifogade.
Jag lägger till ett event i min Google Kalender, "GcalCheck Preheater" brytaren kollar min kalender var 180e minut efter nya events och startar "GCal Preheater" när tiden på Text devicen "Status Preheater" infaller.
Och det fungerar precis som det ska.
Däremot skulle jag ju vilja få till en tempstyrning på det här också, men det är där skon klämmer.
I min google kalender är det inställt nu tiden då jag ska börja mitt skift och när jag ska sluta, men dessa tider får jag ju ställa om då till en vettigare tid då värmaren egentligen ska starta.
Men som sagt, jag förstår inte riktigt hur jag ska scripta ihop en temperaturstyrning av detta, jag har försökt litegranna med lua scriptet här ovanför men det vill sig inte riktigt.
Någon som har några tips på det?
Annars "duger" ju en kalender helt okej, men varför stoppa nu? :)

Tacksam för hjälp!
Har du Android mobil så kan jag varmt rekommendera tasker.
Jag styr min värmare med mitt alarm.
Tasker kollar när mitt alarm är inställt och triggar igång x minuter innan och kollar tempen ute.
Därefter sparar den en tid som blivit uträknad och startar och stänger värmaren därefter.

Skickat från min LG-H815 via Tapatalk
Erik-NA
Tar hemautomation på allvar
Inlägg: 90
Blev medlem: 24 feb 2010, 22:19
Ort: Täby
Kontakt:

Re: Domoticz motorvärmare till bilen

Inlägg av Erik-NA »

Har uppdaterat skriptet script_time_engineheater.lua ovan. Lite refaktoring och en del avlusning är gjord.
Home Assistant och z-wave
TheeDude
Wannabe
Inlägg: 19
Blev medlem: 04 okt 2015, 23:14
Ort: Boden

Re: Domoticz motorvärmare till bilen

Inlägg av TheeDude »

rodak skrev: Har du Android mobil så kan jag varmt rekommendera tasker.
Jag styr min värmare med mitt alarm.
Tasker kollar när mitt alarm är inställt och triggar igång x minuter innan och kollar tempen ute.
Därefter sparar den en tid som blivit uträknad och startar och stänger värmaren därefter.

Skickat från min LG-H815 via Tapatalk
Det hade ju helt klart varit ett alternativ, nu dock min Sambo iPhone, så det hade inte funkat hos oss.
Har däremot fått "BGCD" att lira så pass bra, så jag är supernöjd med den lösningen.
Vi kör bägge två varsin kalender, i varsin telefon/dator eller vad som helst, och jag då med 5 veckors intervall på mitt schema och det funkar superbra.
Med andra ord BGCD i grunden som i sin tur använder dapersson´s script, med lite modifierade tider då jag tyckte att 2 timmar var lite lite speciellt då temperaturen går ner mot -25, -30 grader och ibland även ner mot -35, inte så ofta det är så, men det händer väl.

Så, det kan jag varmt rekommendera om det är fler som jobbar skift här.

Erik-NA´s script är nog jättebra om man jobbar dagtid eller liknande, men för mig passar det inte (eller så har jag fattat det fel?), dock får jag tänka lite extra då jag sätter avresetid i kalendern, får sätta avresetid -4 timmar, men det funkar det också!
När man berättar för folk om den här lösningen så blir folk rätt så imponerande ändå, och framförallt väldigt skönt att slippa den lösa timern hemma i uttaget. ;)
Erik-NA
Tar hemautomation på allvar
Inlägg: 90
Blev medlem: 24 feb 2010, 22:19
Ort: Täby
Kontakt:

Re: Domoticz motorvärmare till bilen

Inlägg av Erik-NA »

Erik-NA skrev:Har uppdaterat skriptet script_time_engineheater.lua ovan. Lite refaktoring och en del avlusning är gjord.
Har fixat felfallet då motorvärmaren ska vara avslagen i Domoticz, men uppenbarligen inte är det då den drar watt. Se inlägget ovan
Senast redigerad av Erik-NA den 10 dec 2015, 20:27, redigerad totalt 1 gånger.
Home Assistant och z-wave
Erik-NA
Tar hemautomation på allvar
Inlägg: 90
Blev medlem: 24 feb 2010, 22:19
Ort: Täby
Kontakt:

Re: Domoticz motorvärmare till bilen

Inlägg av Erik-NA »

TheeDude skrev: Erik-NA´s script är nog jättebra om man jobbar dagtid eller liknande, men för mig passar det inte (eller så har jag fattat det fel?), dock får jag tänka lite extra då jag sätter avresetid i kalendern, får sätta avresetid -4 timmar, men det funkar det också!
När man berättar för folk om den här lösningen så blir folk rätt så imponerande ändå, och framförallt väldigt skönt att slippa den lösa timern hemma i uttaget. ;)
Syftet med skriptet är att man ställer in avresetid. Skriptet beräknar mha utetemperaturen när motorvärmaren ska starta innan avresetiden infaller.
Home Assistant och z-wave
TheeDude
Wannabe
Inlägg: 19
Blev medlem: 04 okt 2015, 23:14
Ort: Boden

Re: Domoticz motorvärmare till bilen

Inlägg av TheeDude »

Erik-NA: Det är jag med på.
Men man är väl "bunden" till att använda tiderna man sätter i lua scriptet?
Det strular till det för mig i alla fall, det var så jag tänkte.

Skickat från min E6553 via Tapatalk
Erik-NA
Tar hemautomation på allvar
Inlägg: 90
Blev medlem: 24 feb 2010, 22:19
Ort: Täby
Kontakt:

Re: Domoticz motorvärmare till bilen

Inlägg av Erik-NA »

Ja, man är bunden såvida du menar schemalagd avresetid. Vill du ändra avresetid måste du pilla i skriptet (än så länge).
Manuellt kan du ju alltid starta motorvärmaren genom att klicka igång den i Domoticz webbgui och då går motorvärmaren tills max gångtid har passerats, vilket är 3 timmar (inställningsbart).

Du kan givetvis också stänga av motorvärmaren genom att "klicka av" den i Domoticz webbgui. Detta oavsett om den har startats automatiskt eller manuellt.
Senast redigerad av Erik-NA den 10 dec 2015, 21:04, redigerad totalt 1 gånger.
Home Assistant och z-wave
Skriv svar