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

Moskus

Administrator
  • Innlegg

    16 845
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    799

Alt skrevet av Moskus

  1. Oppdatering tilgjengelig nå! Se scriptingmuligheter:
  2. Fra og med versjon 0.0.3.0 kan du scripte med data fra TibberSeer! Det gir flere muligheter for smartere strømstyring. Litt historie TibberSeer har alltid kunnet finne deg de N laveste timene med strømpriser, og brukt det som en trigger i et event. Hvis du f.eks. bare skal ha et eller annet på de 4 billigste timene, kan du bruke denne triggeren: Det er et forholdsvis brutalt event, og hvis en eller flere av de N billigste timene kommer etter hverandre, så skrur man mye av og på igjen som over tid sliter på utstyret. Det har vi jo ikke noen glede av, så vi kan legge inn et event som skrur på hvis strømprisen er dyrere enn (24 - 4 - 1 = ) 19 billigste timer. Da får vi et på-event som dette: og et av-event som dette: Dette er jo fint og flott, men jeg vil gjerne at VVB skal gjøre seg ferdig med å varme vannet. Vi er 4 i husholdningen, det trenes en del så det brukes en del varmtvann i løpet av et døgn, og ingenting er verre enn å ikke ha varmtvann når man ønsker det. Jeg har observert (dvs. sjekket statistikken) at at vår VVB etter dusjing om morgenen går på i ca. 2,5 timer før den går av. Av og til kortere og en sjelden gang lenger. I tillegg dusjes det om kvelden som gir igjen 2-2,5 timers oppvarming, eller boblebadet er i bruk som gir rundt 4 timers oppvarming. Vi har da to perioder i døgnet som jeg er veldig interessert i å finne de billigste timene for, spesielt når strømprisene varierer en del... Hvordan gjør jeg det? Nye scripting-funksjoner TibberSeer har nå fått flere nye funksjoner som kan brukes med scripting. Det høres skummelt ut, men det er det ikke. Dette er signaturen på de nye funksjonene: Public Function GetPrices(Optional ByVal startHour As Integer = 0, Optional ByVal endHour As Integer = 0) As List(Of Double) Public Function GetPricesAsDictionary(Optional ByVal startHour As Integer = 0, Optional ByVal hourCount As Integer = 0) As Dictionary(Of Integer, Double) Public Function GetCheapestNhours(ByVal N As Integer, Optional ByVal startHour As Integer = 0, Optional ByVal endHour As Integer = 0) As Tuple(Of Date, Double) Public Function GetCheapestNhoursTime(ByVal N As Integer, Optional ByVal startHour As Integer = 0, Optional ByVal endHour As Integer = 0) As Date Public Function GetCheapestNhoursPrice(ByVal N As Integer, Optional ByVal startHour As Integer = 0, Optional ByVal endHour As Integer = 0) As Double Public Function GetCheapestDhours(ByVal D As Double, Optional ByVal startHour As Integer = 0, Optional ByVal endHour As Integer = 0) As Tuple(Of Date, Double) Public Function GetCheapestDhoursTime(ByVal D As Double, Optional ByVal startHour As Integer = 0, Optional ByVal endHour As Integer = 0) As Date Public Function GetCheapestDhoursPrice(ByVal D As Double, Optional ByVal startHour As Integer = 0, Optional ByVal endHour As Integer = 0) As Double Alle digger VB! startHour og endHour er valgfrie variabler du kan bruke til å begrense søket ditt. Som standard vil de starte med å gi deg priser fra og med kl. 00:00 fra dagen i dag, og så mange timer som er tilgjengelige. 24 timer hvis funksjonen kjøres før kl 13 og 48 timer etter kl. 13. GetPrices() og GetPricesAsDictionary() er to sider av samme sak. De gir hhv. en liste eller en dictionary over dagens og morgendagens strømpriser (hvis de finnes når funksjonen kjøres). De har litt forskjellig bruk og den varierer litt med hva du har tenkt å gjøre. GetCheapestNhours() gir deg altså klokkeslett og gjennomsnittspris for de N billigste timene sammenhengende. Hvis du bruker GetCheapestNhours(3) så får du en Tuple med to verdier. Item1 er klokkeslett (og dato) for den timen som starter de tre sammenhengende timen, og Item2 er gjennomsnittsprisen for de 3 timene. GetCheapestNhoursTime() gir kun tidspunktet, og GetCheapestNhoursPrice() gir kun gjennomsnittsprisen. GetCheapestDhours() er den samme som GetCheapestNhours() men med den forskjellen at den første kan ha desimaltall, mens den siste tar kun heltall. Hvorfor to stykker? Fordi desimaltall-versjonen krever bittelitt mer beregning (et par doble for-løkker for å iterere seg gjennom hvert minutt i et døgn eller to) isteden for heltall-versjonen som bruker LINQ (dvs spørringer). Desimaltallsversjonen kan selvfølgelig også ta heltall hvis du ønsker. Jeg skrev heltallsversjonen først, og beholder begge. Eksempel En normal hverdag er jeg i dusjen ganske nøyaktig kl. 07:00, og VVB vil begynne oppvarmingen omtrent da hvis man ikke styrer det. Dette er et dyrt tidspunkt å varme vann på, og det vil jeg gjøre noe med. Jeg vil altså ha de 2,5 billigste timene fra kl. 6-7 og til kl. 18. Dette gjør jeg i et script som skal kjøre kl. 06:00. 'Henter pris-info fra TibberSeer Dim hours As Double = 2.5 'antall timer som sammenhengende skal ha lavest snittpris Dim hourStart As Integer = Now.Hour 'Vi er ikke interessert i data som har vært. Dim hourEnd As Integer = 18 '"Look ahead". 0 tilsier alle tilgjengelige data Dim D As Tuple(Of Date, Double) = hs.PluginFunction("TibberSeer", "", "GetCheapestDhours", New Object() {hours, hourStart, hourEnd}) I variabelen D har jeg da D.Item1 som er klokkeslettet som har de billigste neste 2.5 timene, og D.Item2 inneholder snittprisen for disse 2.5 timene. Dette kan jeg bruke til å lage et event som skrur på VVB på det ønskete tidspunktet: 'DeviceRef til VVB switch Dim devRef As Integer = 3071 'Finner CAPI-kommando for "On" for VVB-devicen Dim onCC As HomeSeerAPI.CAPI.CAPIControl = hs.CAPIGetSingleControl(devRef, True, "On", False, False) 'Lager et nytt event med "VVB på" kommando eventRef = hs.NewEventGetRef("VVB På (pris-trigger)", "Automatisk (strømstyring)", String.Empty) hs.EventSetTimeTrigger(eventRef, New Date(D.Item1.Year, D.Item1.Month, D.Item1.Day, D.Item1.Hour, D.Item1.Minute, 0)) hs.AddDeviceActionToEvent(eventRef, onCC) hs.DeleteAfterTrigger_Set(eventRef) hs.SaveEventsDevices() hs.WriteLog("Tibber VVB", "Lagde nytt VVB på trigger-event") I sin enkleste form kan da scriptet se slik ut. Lagre som TibberVVB.vb og kjør det hver dag kl. 06:00. Sub Main(ByVal input As Object) 'Moskus 2022 'DeviceRev til VVB switch Dim devRef As Integer = 3071 'Henter pris-info fra TibberSeer Dim hours As Double = 2.5 'antall timer som sammenhengende skal ha lavest snittpris Dim hourStart As Integer = Now.Hour 'Vi er ikke interessert i data som har vært. Dim hourEnd As Integer = 18 '"Look ahead". 0 tilsier alle tilgjengelige data 'Henter billigste timer og snittpris fra TibberSeer Dim D As Tuple(Of Date, Double) = hs.PluginFunction("TibberSeer", "", "GetCheapestDhours", New Object() {hours, hourStart, hourEnd}) 'Finner CAPI-kommando for "On" for VVB-devicen Dim onCC As HomeSeerAPI.CAPI.CAPIControl = hs.CAPIGetSingleControl(devRef, True, "On", False, False) 'Lager et nytt event med "VVB på" kommando Dim eventRef As Integer = hs.NewEventGetRef("VVB På (pris-trigger)", "Automatisk (strømstyring)", String.Empty) hs.EventSetTimeTrigger(eventRef, New Date(D.Item1.Year, D.Item1.Month, D.Item1.Day, D.Item1.Hour, D.Item1.Minute, 0)) hs.AddDeviceActionToEvent(eventRef, onCC) hs.DeleteAfterTrigger_Set(eventRef) hs.SaveEventsDevices() hs.WriteLog("Tibber VVB", "Lagde nytt VVB på trigger-event") End Sub Avansert eksempel Jeg sa jo at vi kjører VVB to ganger i døgnet. Samtidig er jeg interessert i å finne ut hvor mye penger man sparer på å f.eks. flytte strømforbruket fra kll. 7 til kl. 13 (hvis det er tidspunktet som er billigst). Et varsel på mobilen når funksjonen er kjørt er selvfølgelig nyttig, og en failsafe slik at vi får varmtvann selv om Tibber skulle være nede kan være greit for å sikre husfreden. Et større, mer avansert script vil da kunne se slik ut: Sub Main(ByVal parm As Object) Dim devRef As Integer = 3071 'Device til VVB ON/OFF Dim vvb_kW As Double = 2.6 'kW 'Henter pris-info fra TibberSeer Dim hours As Double = 2.5 'antall timer som sammenhengende skal ha lavest snittpris Dim hourStart As Integer = Now.Hour 'Vi er ikke interessert i data som har vært. Dim hourEnd As Integer = 18 '"Look ahead". 0 tilsier alle tilgjengelige data (dvs vi har 24 timer med data før ca. kl. 13 og 48 timer med data etter) Dim hourNormalStart As Integer = 7 Dim hourNormalEnd As Integer = Math.Ceiling(hourNormalStart + hours) If Now.Hour > 16 Then 'Fra kl. 17:00 og utover hours = 4.5 hourEnd = 24 + 7 'Kl. 07:00 i morgen hourNormalStart = 19 hourNormalEnd = Math.Ceiling(hourNormalStart + hours) End If Dim D As Tuple(Of Date, Double) = hs.PluginFunction("TibberSeer", "", "GetCheapestDhours", New Object() {hours, hourStart, hourEnd}) Dim startOn As Date = D.Item1 If D.Item2 > 0 Then 'Tibber har data 'Finner hva strømkostnaden hadde vært Dim D_normalt As Tuple(Of Date, Double) = hs.PluginFunction("TibberSeer", "", "GetCheapestDhours", New Object() {hours, hourNormalStart, hourNormalEnd}) 'Beregner besparelse Dim pris_nå As Double = D.Item2 * vvb_kW / 100 * hours Dim pris_normalt As Double = D_normalt.Item2 * vvb_kW / 100 * hours Dim besparelse As Double = pris_normalt - pris_nå 'Skriver til log og Pushover Dim msg As String = "Billigste " & hours & " deltimer starter " & D.Item1.ToString & " med snittpris: " & D.Item2 & " øre (normal besparelse: " & besparelse.ToString("f2") & " kr, eller " & (1 - pris_nå / pris_normalt).ToString("P1") & ")" hs.WriteLog("Tibber VVB", msg) hs.PluginFunction("Pushover 3P", "", "Pushscript", New Object() {"All Clients", msg, "VVB", "Low", "none", Nothing, Nothing, Nothing, Nothing}) My.Computer.FileSystem.WriteAllText(hs.GetAppPath & "\Logs\VVB_" & devRef & ".txt", D.Item1.ToString & vbTab & D.Item2 & " øre" & vbTab & besparelse.ToString("f2") & " kr (" & (1 - pris_nå / pris_normalt).ToString("P1") & ")" & vbNewLine, True) Else 'Failsafe i tilfelle vi ikke har Tibber-data If Now.Hour < 16 Then startOn = Now.Date.AddHours(13).AddMinutes(5) 'Dvs kl. 13:05 i dag Else startOn = Now.Date.AddDays(1).AddHours(2) 'Dvs kl. 02:00 i morgen End If hs.WriteLog("Tibber VVB Warning", "Tibber-data ikke gyldig, VVB skrus på :" & startOn.ToString) End If 'Sletter eksisterende event hvis det finnes, for da har det ikke kjørt som det skulle Dim eventRef As Integer = hs.GetEventRefByName("VVB På (pris-trigger)") If eventRef > 0 Then hs.DeleteEventByRef(eventRef) 'hs.WriteLog("Tibber VVB", "Trigger På-event eksisterde, men det er nå slettet...") End If 'Finner CAPI-kommando for "On" for VVB-devicen Dim onCC As HomeSeerAPI.CAPI.CAPIControl = hs.CAPIGetSingleControl(devRef, True, "On", False, False) 'Lager et nytt event med "VVB på" kommando eventRef = hs.NewEventGetRef("VVB På (pris-trigger)", "Automatisk (strømstyring)", String.Empty) hs.EventSetTimeTrigger(eventRef, New Date(startOn.Year, startOn.Month, startOn.Day, startOn.Hour, startOn.Minute, 0)) hs.AddDeviceActionToEvent(eventRef, onCC) hs.DeleteAfterTrigger_Set(eventRef) hs.SaveEventsDevices() hs.WriteLog("Tibber VVB", "Lagde nytt VVB på trigger-event") End Sub ... og det overlatas til lesaren sjølv at tolka innhaldet. Men spør hvis noe er uklart. Det er gøy å få beskjed om "Billigste 2,5 timer starter kl. 13:30 med en snittpris på 119,3 øre (normal besparelse 9,34 kr (89,7%)". En siste sak: Jeg har et event som slår av VVB hvis effekten har vært 0 over 10 minutter. Ellers må du finne en annen måte å å slå av VVB på, f.eks. 3 timer etter at den ble skrud på.
  3. ... og du har timersverdier for strømpris og temperaturer de neste 24 timer i Homey? Hvis ikke, så er det der vi må begynne.
  4. Ja, motoriserte Luxaflex selges jo bare via forhandlere. Regn fort 8-10.000 kr pr vindu. Hvis det kun er 6.000 kr forskjell på Ikea og noe som faktisk er tilpasset, så gå for det siste. Alltid.
  5. Du vil ha 6 timer sammenhengende, da? Eller er det vilkårlige 6 timer?
  6. Jeg hadde helt garantert valgt noe annet, også om jeg ikke hadde vært en stor hjemmeautomasjons-nerd. Eaton er xComfort, så ja, alt utstyret må byttes. Du får også et system som ikke er kompatibelt med noe annet enn seg selv. Hvis Lyse hadde tatt regningen (som de burde gjøre), så kunne de foreslått noe, men jeg ser ingen grunn til å ikke prøve FutureHome først. Om det faktisk fungerer med SE-devicene er jo et åpent spørsmål, de har vært så dyre at ingen har kjøpt dem for å teste... Men dette vet nok FH-folkene.
  7. Du kan brukea HeatIt uansett. Forskjellen er bare om du styrer strømmen som går til varmekablene, eller om du assosierer termostaten til en utgang på Z-WATER. Skal innrømme at dette innlegget var litt "wall of text", og mye går meg hus forbi. Jeg hadde valgt en så åpne protokoll som mulig, så kan du bytte ut utstyr etter eller smarthushjernen etter hvert..
  8. Det ser ut som en tilkoblingsfeil, f.eks. at det går for seint eller noe... Rart!
  9. Delbilde 11 og 12 er tilkobling til bryter. Det kan se ut som om du må finne strøm til Smart Implant et annet sted. Jeg har tegnet et koblingsskjema, riktignok for en annen port, men det burde kunne bli forholdsvis likt (selv om du muligens ikke får strøm fra motoren slik jeg gjør).
  10. Du kan legge en Fibaro Dimmer 2 bak den eksisterende lysbryteren, eller du kan bytte ut bryteren med Z-Dim. Ingen av delene vil normalt kreve at det byttes ledninger.
  11. Har Luxaflex og Ikea. Ikea er billigst. Luxaflex (dobbel-plissé) er absolutt best kvalitet. Og kulest.
  12. Men de er Zigbee, ikke Z-wave. Kan være greit å være klar over.
  13. Er det noen som har den, så må det vel være nettopp nettselskapene. Om de har lov til å bruke den er muligens en annen sak, men problematisk å få til burde det ikke være. Jeg snakket med en annen netteier enn den vi har for et par uker siden, og de hadde iallfall denne informasjonen så vidt jeg forstod.
  14. Programmeringsspråket. Jeg nesten kjører alle disse utenom MelCloud og BLLAN, men andre her kjører jo disse uten problemer. Får du opp en JSON fil hvis du går til http://din_homeseer_adresse/JSON?request=getstatus ?
  15. Har ikke NSCFString noe med C å gjøre? Hvilke plugins har du kjørende?
  16. NVE har selv lagt opp til dette, og konsekvensen er jo så åpenbar at alle, inkludert NVE, kunne se det på forhånd. Det var jo hele NVEs motivasjon for å innføre AMS-målerene: "Hele Norge skal bli overdrevet interessert i sitt eget strømforbruk, og dermed får vi bort forbrukstoppene mellom 07-09 og 17-19." Det som skjedde var imidlertid at strømprisene flatet helt ut gjennom hele døgnet. Dermed trengte folk et annet insentiv for å lade utenfor forbrukstoppene, og da tipper jeg noen kloke hoder kom på den lysende ideen i den nye nettleien. Og det er jo vel og bra, hvis den da bare faktisk hadde løst oppgaven. Vi har nå en modell som skal sikre at selve husstanden ikke overdriver sitt strømforbruk i løpet av døgnet. Det er muligens en god tanke, som gjør at vi som har smarthus ikke lader elbil, lager mat, vasker klær og varmer opp varmtvann samtidig, men jeg synes egentlig det skurrer. Det minner litt om oljeselskapenes mange kampanjer for å få lagt miljøbyrden over fra seg selv til oss enkeltindivider. Klart enkeltindividets holdninger betyr noe i den store sammenhengen, iallfall hvis det er mange av oss. Selvfølgelig skal vi resirkulere alt som kan resirkuleres, ikke kjøre bil bare fordi vi kan, ikke kaste søppel i naturen og så videre. Det er bare at det er en dråpe i havet sammenlignet med hva bedrifter gjør. Hvis bedrifter hadde styrt etter de samme prinsippene som vi er oppfordret til å gjøre, så hadde det nok effekten blitt betydelig større.
  17. Flyttet til et mer egnet forum.
  18. Du kan banne på at noen har regnet på dette så detaljert de kan og funnet en middelvei som er godt overlevelig (eller grenser til nesten ikke merbkart) for de aller fleste, samtidig som at det gir økt inntekt.
  19. Jeg har brukt Android-skjermer og Raspberry Pi touch-screens. Fungerer fint, men hvert til sitt bruk. Synes sistnevnte var enklere å styre fra andre steder fra.
  20. Det er sant, men det er kun et problem hvis man bruker fjernkontrollen. Den har jeg imidlertid bare brukt én gang, og det var da jeg lærte IR-kodene. Etter det har den ligget i en skuff.
  21. Hvor mye koster en Sense? Skulle nesten åpnet dem og sjekket om det var mulig å flashe med en custom firmware, hvis de kjører på ESP32 som ovnene deres gjør (iallfall gjorde tidligere).
  22. Jeg har handlet litt på "måfå" til min Prusa MK3+, og og så lenge man kjøper fra en OK butikk så går det bra. Sist jeg handlet var det hos e3printable.no,og det har et godt utvalg.
  23. Det finnes sikkert flere muligheter, og om ikke annet kan man styre dem med IR. Det har fungert utmerket i over 10 år nå.
  24. Jeg har lest så mye negativt om Mill-ovnene at jeg ikke orket å teste engang. Jeg styrer dem med plugin-moduler.
  25. Da jeg spurte for noen år siden var det ikke nødvendig med mer "for GraphQL er selvdokumenterende". Det kan det vel være delte meninger om...
×
×
  • 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.