Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 28. mars 2018 i alle områder
-
3 poeng
-
Her er et "install script" og en liten snutt som sjekker om Homeseer kjører og hvis den ikke kjører starter den på nytt. Begge i Powershell. Install scriptet setter opp sjekken til å kjøre hvert 5. minutt. Mulig man må editere litt for at ting skal fungere korrekt. Jeg la scriptene mine i en underfolder til Homeseer som jeg har kalt PSScripts. Hvis du skal "installere" fra ett annet sted må du editere i filen CreateRecurringJobRestartHS.ps1 før du kjører den. https://github.com/oesolberg/RestartHomeseer2 poeng
-
Ved hjelp av TibberSeer og en Aeotec HD switch har jeg satt opp styring av elbil lading. Hvis prisen er høyere enn High, og forskjell på High og Average er mer enn 15 øre, så slår den av uttaket. Slås på igjen når prisen er under High. Kan overstyres med en trykknapp ute på kontakten, koblet til en arduino. Da er automatisk utkobling deaktivert frem til kl 01 på natten. Pushmelding sendes meg på telefon ved utkobling2 poeng
-
Å vite om det er helg eller ikke er ganske praktisk for hjemmeautomasjon. De aller fleste har andre rutiner i helgene enn de har i ukedagene. Hos oss er derimot rutinene for fridager omtrent prikk lik dager i helgen, så det hadde jo vært praktisk om man istedenfor å sjekke om det er helg, kunne sjekke om det er en fridag. Og nå kan vi det. Basert på @xibriz sitt glimrende PHP-script for å sjekke for offentlige høytider (og omskrevet til VB.NET) har jeg lagt til en rutine ekstra, som bl.a. sjekke om det faktisk er helg eller om det er noen andre unntak lagt inn. Du trenger en virtuell device med "Control Use" for Off og On definert (under Status Grapics -> Status-kolonne). Her er min: Device Ref til denne brukes som parameter i scriptet. Scriptet trigges ved midnatt hver dag for å sjekke om dagen i dager en fridag eller ei. Fridager.vb Sub Main(ByVal deviceReference As String) 'Moskus 2017 Dim devRef As Integer = Integer.Parse(deviceReference.ToString) Dim isCurrentDateHoliday As Boolean = False If Not isCurrentDateHoliday Then isCurrentDateHoliday = IsOfficialHoliday(Now) 'Sjekker offisielle helligdager If Not isCurrentDateHoliday Then isCurrentDateHoliday = IsCustomHoliday(Now) 'Sjekker egen-spesifiserte dager If isCurrentDateHoliday Then hs.CAPIControlHandler(hs.CAPIGetSingleControlByUse(devRef, HomeSeerAPI.ePairControlUse._On)) Else hs.CAPIControlHandler(hs.CAPIGetSingleControlByUse(devRef, HomeSeerAPI.ePairControlUse._Off)) End If End Sub Public Function IsCustomHoliday(ByVal _date As Date) As Boolean _date = _date.Date 'In case time was added 'For eksempel sjekkeom det er en lørdag eller søndag If _date.DayOfWeek = DayOfWeek.Saturday Then Return True If _date.DayOfWeek = DayOfWeek.Sunday Then Return True 'Jeg har alltid fri i romjulen If _date.Month = 12 Then If _date.Day >= 27 AndAlso _date.Day <= 31 Then Return True End If End If 'Andre spesifikke dager kan legges i listen, f.eks. har barnehagen planleggingsdager Dim dateList As New System.Collections.Generic.List(Of Date) dateList.Add(New Date(2017, 4, 18)) If dateList.Contains(_date) Then Return True 'Har vi kommet så langt er det ingen fridager, returner "False" Return False End Function Public Function IsOfficialHoliday(ByVal _date As Date) As Boolean 'translated php script form xibriz: https://www.diskusjon.no/index.php?showtopic=1084239 _date = _date.Date 'in case time was added Dim easterDate As Date = GetEasterDate(_date.Year) 'Sjekker om datoen er 1. Januar If _date = New Date(_date.Year, 1, 1) Then Return True 'Sjekker om datoen er pamlesøndag (1. påskedag - 7 dager) If _date = easterDate.AddDays(-7) Then Return True 'Sjekker om datoen er skjærtorsdag (1. påskedag - 3 dager) If _date = easterDate.AddDays(-3) Then Return True 'Sjekker om datoen er langfredag (1. påskedag - 2 dager) If _date = easterDate.AddDays(-2) Then Return True 'Sjekker om datoen er 1. påskedag If _date = easterDate Then Return True 'Sjekker om datoen er 2. påskedag (1. påskedag + 1 dag) If _date = easterDate.AddDays(1) Then Return True 'Sjekker om datoen er 1. mai (offentlig høytidsdag) If _date = New Date(_date.Year, 5, 1) Then Return True 'Sjekker om datoen er 17. mai (grunnlovsdag) If _date = New Date(_date.Year, 5, 17) Then Return True 'Sjekker om datoen er kristi himmelfartsdag (40. påskedag) If _date = easterDate.AddDays(39) Then Return True 'Sjekker om datoen er 1. pinsedag (50. påskedag) If _date = easterDate.AddDays(49) Then Return True 'Sjekker om datoen er 2 pinsedag (51. påskedag) If _date = easterDate.AddDays(50) Then Return True 'Sjekker om datoen er 1. juledag (25. desember) If _date = New Date(_date.Year, 12, 25) Then Return True 'Sjekker om datoen er 2 juledag (26. desember) If _date = New Date(_date.Year, 12, 26) Then Return True Return False End Function Public Function GetEasterDate(ByVal Year As Integer) As Date 'Originally taken from: http://www.thoughtproject.com/Snippets/Easter/Easter.vb.txt Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer Dim e As Integer Dim f As Integer Dim g As Integer Dim h As Integer Dim i As Integer Dim k As Integer Dim l As Integer Dim m As Integer Dim n As Integer Dim p As Integer If Year < 1583 Then Return Nothing Else ' Step 1: Divide the year by 19 and store the ' remainder in variable A. Example: If the year ' is 2000, then A is initialized to 5. a = Year Mod 19 ' Step 2: Divide the year by 100. Store the integer ' result in B and the remainder in C. b = Year \ 100 c = Year Mod 100 ' Step 3: Divide B (calculated above). Store the ' integer result in D and the remainder in E. d = b \ 4 e = b Mod 4 ' Step 4: Divide (b+8)/25 and store the integer ' portion of the result in F. f = (b + 8) \ 25 ' Step 5: Divide (b-f+1)/3 and store the integer ' portion of the result in G. g = (b - f + 1) \ 3 ' Step 6: Divide (19a+b-d-g+15)/30 and store the ' remainder of the result in H. h = (19 * a + b - d - g + 15) Mod 30 ' Step 7: Divide C by 4. Store the integer result ' in I and the remainder in K. i = c \ 4 k = c Mod 4 ' Step 8: Divide (32+2e+2i-h-k) by 7. Store the ' remainder of the result in L. l = (32 + 2 * e + 2 * i - h - k) Mod 7 ' Step 9: Divide (a + 11h + 22l) by 451 and ' store the integer portion of the result in M. m = (a + 11 * h + 22 * l) \ 451 ' Step 10: Divide (h + l - 7m + 114) by 31. Store ' the integer portion of the result in N and the ' remainder in P. n = (h + l - 7 * m + 114) \ 31 p = (h + l - 7 * m + 114) Mod 31 ' At this point p+1 is the day on which Easter falls. ' n is 3 for March or 4 for April. Return DateSerial(Year, n, p + 1) End If End Function Merk: Det kan være du vil fjerne noen linjer i scriptet eller i det minste kommentere dem ut. Det er f.eks. ikke sikkert at du har fri uka etter påske: dateList.Add(New Date(2017, 4, 18)) ... og hvis ikke, kan du fjerne denne linjen. Det er heller ikke sikkert du har fri romjulen, så da bør du fjerne dette: If _date.Month = 12 Then If _date.Day >= 27 AndAlso _date.Day <= 31 Then Return True End If End If Du kan også selvfølgelig legge til dine egne unntak for arbeidsdager hvis du ønsker det. Har du fri hver fredag, så kan du jo bare legge det til. Jeg har nå byttet ut alle sjekker på om det er helg eller ikke til å sjekke om "Fridag" er på eller ikke. Når jeg tenker meg om tror jeg at jeg skal sette "On" til å være "Fridag" og "Off" til å være "Arbeidsdag". Som sagt; så gjort: ... som da blir slik: EDIT: 17. mai var satt til å være 17.01 istedenfor 17.05. Korrigert. Versjon med to devicer, en for dagen i dag og en for dagen i morgen:1 poeng
-
Jeg laget for to uker siden en liten(?) kode for å optimalisere strømforbruket med tanke på strømutgifter (ikke strømforbruk) for å ta hensyn til varierende pris gjennom døgnet (og siden jeg for et par uker siden fikk timesavlesning gjennom ny måler fra BKK og strømregning hos Tibber). Grunntanken er å forvarme huset når prisen er billig. For å kunne gjøre dette må man ha en modell av huset som beskriver strømforbruk som funksjon av husets tilstand (temperatur) og hvilken temperatur man ønsker. Jeg har i et halvt år samlet strømforbruk hvert 5. minutt og samtidig logget temperatur. Ved å se på midlere strømforbruk for hver time og sammenligne det med temperaturer og temperaturendring over hver time så kan man bygge en modell på dette (hvis jeg gjentar denne analysebiten kontinuerlig, så kan det kalles maskinlæring). Jeg bruker da sklearn i Python til å lage en (multi)lineær modell som predikerer strømforbruk utifra temperaturendring og differanse mellom ute og innetemperatur. Det er betydelig med støy i denne modellen, se plott av alle dataene mine her: Som en bilineær modell i Python, så implementerer jeg den slik, dette blir nesten analogt med de rette linjene i plottet over: def hourly_power_usage(tmpincrease, insideoutsidediff): """This function could do multlinear regression on the dataset or use finished regression coefficients. It answers what power (in KwH) is needed for the whole house to reach the delta temperature in one hour. """ # from sklearn import linear_model # model = lm.fit(X, y) # X = [inne_diff, inne_diff_ute], y=Smappee5minavg(hour)] coef = [2.150, 0.189] # beware W vs KW intercept = 0.5735 return coef[0] * tmpincrease + coef[1] * insideoutsidediff + intercept Her er det tallene 2.150 og 0.189 kW som man kan tolke: 2150 er ekstraeffekten som kreves for å øke temperaturen med en grad i løpet av en time, samt at man må legge på 189W for hver grad differanse det er på ute og inne, og blir et mål på hvor godt huset er isolert. Kaldere utetemperatur gir høyere pådrag på 189-koeffisienten. I tillegg passer det modellen å legge på 573 watt uansett hvordan temperaturforholdene er. Når denne modellen er på plass, så kan man ved å kjenne framtidas strømpris, framtidas temperaturbehov (ønsket termostatinnstilling) og framtidas utetemperatur (yr) estimere strømforbruk og tilhørende kostnad. I tillegg kan man få tilpasset start av oppvarming for å møte et framtid temperaturønske. Jeg har delt "optimaliseringen" i to deler. Først en kodesnutt som flytter oppvarming tidligere i tid i tilfelle estimert effektpådrag blir for stort. Hvis man skal hoppe fra 18 grader til 25 grader i ett jafs, så tilsier modellen et effektuttak på omtrent 14KW. Jeg har ikke nok variabel effekt (Multireg x 5 (snart 10) + varmepumpe) til å klare dette, så det betyr at jeg må starte en eller to timer tidligere. Koden er enkel brute-force som øker termostatverdien timen forut for høyt estimert effektuttak og gjør dette omigjen helt til effektuttaket går under en viss grenseverdi. Resultatet av det steget ligger i den blåe linja i plottene lenger nede, kalt 'Kwh-adjusted'. Neste steg er optimalisering - her gjør jeg det med hjemmelaget brute-force (jeg tror optimaliseringsteknikken kalles 'simulated annealing'). Jeg øker temperaturen med 0.5 grader på tilfeldige tidspunkt (untatt i nedkjøliingsperioder) og rekalkulerer kostnad. Hvis en viss temperaturøkning resulterer i redusert kostnad, bevares forslaget, ellers forkastes det. Dette gjøres iterativt, og endel ganger omigjen for å øke sannsynligheten for at man ender opp på et globalt minimum. Resultatet blir som man kan se i plottet under. Optimaliseringen gjentas hver time, og jeg har justert antall iterasjoner slik at det tar ca 1 minutt å kjøre. Her kan man se blå kurve som startpunkt, og rød kurve som ferdig produkt. I natt har altså huset tenkt å begynne med forsiktig oppvarming allerede klokka ett for å på billigst mulige måte klare holde 25 grader mellom 7 og 8 i morgen tidlig når prisen er 80 øre (25 grader er 'master-termostat', faktiske termostater har en viss delta i forhold til denne utifra rommets behov). Det regnes også ut hvor mye man sparer på optimaliseringen, akkurat i denne perioden er det hele 2.37 kr (det er mye i forhold til det jeg har sett de i ukene dette har vært i drift..). (i plottet ser man at jeg også skrur av varmtvannstank i døgnets tre-fire dyreste timer) Så, virker det? Vel, jeg har ikke kontroll på alt effektuttak ennå (venter på 5 stk multireg som skal monteres av elektriker), men jeg er ihvertfall i stand til å observere historisk strømforbruk og pris som ser slik ut: og gjetter på at akkurat her har jeg spart noen titalls øre1 poeng
-
Kommer vel mest an på hva man er vant med Yaml er enkelt er man først vant med det. Er støtte for enkel config av automasjoner i gui men det kommer bedre støtte etterhvert. Home assistant har utviklet seg ganske mye de siste 6 månedene. Ikke alle som gidder betale lisenspenger for noe som ser ut som sitter fast i slutten av 1990 tallet når det kommer til gui/frontend slik som Homeseer ?1 poeng
-
1 poeng
-
Ny versjon ute med endel oppdateringer: * Alle enheter har nå ikon * Man skal kunne oppdatere enheter hvis de allerede er lagt til slik at man får manglende ikoner (eller off-knapp for smokealert) Alle store ting når det gjelder mottak av data er nå rimelig ferdig. Det er sikkert endel småjusteringer som mangler (f.eks. hvilke enheter som man default skal slå av "Do not update device last change time if device value does not change") Etterhvert blir det å jobbe med utsending av data, men jeg er usikker på når jeg kan gjøre noe slikt siden jeg bør kjøpe meg noen enheter og teste dette med som ikke er røykvarslere. Hvis jeg bare tester med røykvarsler så regner jeg med at kone og barn kommer til å bli lei av meg. Og muligens ikke lenger ta en røykvarslingsalarm for det den faktisk er. Takk til Hr Kotelett for testing!1 poeng
-
Han er vel medlem av Facebook-gruppa "Vanskeligere liv"... ?1 poeng
-
Bytter du fra HS til HA? Isf, på hvilket grunnlag1 poeng
-
Etter litt videre tukling ser det ut til at fjernkontroll via app kjøres på ett web-grensesnitt her: https://app.rikstv.no/app/use/remote Jeg kan faktisk styre dekoderen min rett fra dette grensesnittet i nettleseren så jeg føler at jeg er ett steg nærmere her Ser ut som det er OAuth 2 som ligger som autentisering og det sendes GET requests like den nedenfor: curl 'https://www.google-analytics.com/r/collect?v=1&_v=j66&a=1338806764&t=event&ni=0&_s=1&dl=https%3A%2F%2Fapp.rikstv.no%2Fapp%2Fuse%2Fremote&dp=%2Fapp%2Fuse%2Fremote&ul=en-us&de=UTF-8&dt=RiksTV%20App%20-%20Styr%20din%20smartboks&sd=24-bit&sr=1792x438&vp=1792x438&je=0&ec=Fjernkontroll%20klassisk&ea=Trykk%20p%C3%A5%20knapp&el=INFO&_u=SACAAEAB~&jid=1199338602&gjid=1309829752&cid=400005654.1000468952&uid=fb5892a9c624be144b21bf3433fsdlkg8345690230ba&tid=UA-2513164-9&_gid=199000279.1522009809&_r=1>m=G3kPCBXDR&cd1=yes&cd7=BarnasFavoritter%2CCMoreFilm%2CCMoreSport%2CRiksPakken%2CTV2SportPremium&cd13=desktop%20app&cd14=yes&cd18=true&cd20=fb5892a9c624be144b21bf3433fef3f14f9290ba&cd10=428105654.1519468952&z=1711564863' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-US,en;q=0.9,nb-NO;q=0.8,nb;q=0.7' -H 'user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Mobile Safari/537.36' -H 'accept: image/webp,image/apng,image/*,*/*;q=0.8' -H 'referer: https://app.rikstv.no/app/use/remote' -H 'authority: www.google-analytics.com' --compressed Og i den ekstra lange url'en ovenfor har man da el=info som tilsvarer infoknappen. Skal taste litt videre og se om jeg får til å autentisere og få kjørt noen kall rett fra postman. I mellomtiden er jeg fremdeles interessert i om det er noen der ute som har litt kunnskap om dette og kan komme med hints og forslag1 poeng
-
Har noen ekstra liggende om det er noen på forumet som trenger :). Bruk lenken her https://www.intin.no/produkt/mbus-leser-for-ams/ og passord: hjemmeautomasjon. Dette er kun HW1 poeng
-
Det ser ut som det har sneket seg inn en liten bug når jeg fikset koden i forhold til noen PEP8 regler de bruker i Home-Assistant. Jeg har rettet opp i den nå, men får dessverre ikke testet den før i kveld.1 poeng
-
Hei! Jeg bruker også HA; og har Nobø Hub. Dersom du tenker å gjøre en jobb for å integrere dette så si fra, så kanskje vi kan hjelpe hverandre.1 poeng
Vinnerlisten er satt til Oslo/GMT+01:00