Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon! 🥇🥈🥉

Vinnerliste

Populært innhold

Viser innholdet med mest poeng fra 26. aug. 2022 i alle områder

  1. Satt i gårmorges og funderte på når jeg måtte endre skalaen på strømtrendene mine som da toppet på 8... gikk bare et par timer så var morgendagens strømpris oppe i kr 8.73... Har hjulpet batterileverandøren min ut av en krise så for tiden har jeg bare halv batteribank men, til tross for litt ugunstig vær, så har jeg bare handlet strøm for kr 60.- til sammen de siste 5 dagene. Ser i alle fall en ting helt klart, solselleanlegg uten batteri er bare et halvt solselleanlegg... 12kWh batteri holder huset i gang fra solnedgang til soloppgang på denne tiden av året. Om en måneds tid blir batteribanken øket til 26.5kWh så da er jeg godt rustet til strømrasjonering i vinter.
    3 poeng
  2. Ja, det bør du egentlig være. Det kan det være. Men det er det ingen garanti for. Kineserne er ikke dumme, og det er i prinsippet to måter å tjene penger på: 1) Man selger den samme varen billigere enn vestlige land selger den. Det kan man gjøre fordi det plutselig "mangler" noen fra fabrikken, eller man jobber litt ekstra om natten. 2) Man selger en billigere kopi til langt lavere pris. Gode deler er faktisk relativt dyre, og vil stjele fra inntjeningen din. Derfor er det billigere å lage en kopi som ser lik ut men som har kjipere deler inni, så tjener du mer penger. Disse kan også selges for enda lavere pris for å være mer sikker på at de blir solgt. Hva som er situasjonen vet man dessverre ikke. Men man kan åpne opp og sjekke. Jeg liker denne videoen:
    2 poeng
  3. 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å.
    1 poeng
  4. Strømprisen er nå: {{ state_attr('sensor.electricity_price_middelthunet', 'price_level') }} Sent fra min SM-G996B via Tapatalk
    1 poeng
  5. Dette er altså esken til en "Aeotec Heavy Duty Smart Switch Gen5". Eller kanskje den burde hete "Aeotec Tung Plikt Smart Bytte om Gen5"?
    1 poeng
  6. Nei, men det krever elektriker å bytte kontakt, så da kan man like greit koble direkte til så slipper man hele problemstillingen. Industrikontakter kan heller ikke benyttes med enkle Wall Plugs, hvis det er poenget.
    1 poeng
  7. Jeg kom over en kul app som gjorde automasjonen enda mer dynamisk. Kan være flere som er klar over denne, men sikkert et par som ikke har tenkt over det Som mange andre, har vi hytte og eller på ferie nå og da. De fleste av oss har sikkert lagd automasjoner som fikser dette allerede, men ved å integrere dette med en app som automatisk leser data fra en del ics/ical - kalender, så blir det enda mer fleksibelt og dynamisk. Appen "IcalCalendar", gjør at din Homey får flytkort som kan utløses direkte basert på det du har av kalenderavtaler i en gitt kalender. Eksempel på bruk; Du legger inn at du skal på hytta fra torsdag til mandag i din kalender som du har valgt å eksponere på internett som ics/ical-kalender. Typisk har jeg lagd en egen kalender for dette, og ikke min "personlige". Deretter er det bare å konfigurere appen i Homey, for hvilken syntax den skal lete i, i hvilken ics (uri/url), og lage den automatikken du ønsker med flows. Og, det gjelder ikke bare når eventet ditt starter, men også når den feks slutter, endres eller hva det nå skulle være. Fantastisk app! Enkelt eksempel;
    1 poeng
  8. Bruker iOTlink til oversikt over Windowspc’ene hjemme, har også mulighet for overvåkning av åpne apper og restart, skru av skjerm mv. Dette er MQTT og fungerer med autodiscovery mot Home Assistant(men kan selvfølgelig implementeres i andre system via MQTT). Se nederst i tråden her for en kar som har litt automatikk ut i fra hvilke kjørende spill mv.
    1 poeng
  9. Har gjort samme "oppdagelsen" de siste ukene. Plutselig fikk jeg ny motivasjon til å energieffektivisere (bytte ut) serveren som konstant drar 160-170W
    1 poeng
  10. Jeg lagde en enkel binærsensor basert på nordpool integrasjonen som er on i de x antall billigste timene og er off i de resterende timene, eller når prisen er høyere enn en maksimalgrense. https://gist.github.com/jorgror/8e9fb54d7236bdba131931eabd90961b
    1 poeng
  11. Er egentlig det elektriske laget til panelet RS485 eller RS232? Grunnen til at jeg stusser på dette er at jeg leser i manualen til modbusadapter CI66 at maks kabellengde er 1 meter. Dette burde ikke være en begrensning når elektrisk lag er 485. I tillegg: dersom det faktisk er RS485 mellom CS60 og panelet, hva er da poenget med CI66? Da kan jo ett hvilket som helst standard RS485 SD-anlegg tilkobles direkte til CS60 uten noen konverter. Jeg har en mistanke om at CI66 rett og slett er en konvertering fra RS232 til RS485. Men er usikker på om jeg har rett? Noen meninger om dette?
    1 poeng
  12. Dette stemmer ikke, kommunikasjon mellom panel og aggregatet er modbus. Det skal absolutt være mulig å gjøre akkurat samme jobben som adapteret med egen hardware. Jeg kjøpte selv CI66, og la det sporet ligge på hylla for ei stund tilbake. En PC med RS485 kan enkelt erstatte adapteret, men den må stå å svare på meldinger fra aggregatet kontinuerlig. Den beste løsningen hadde nok vært en arduino med RS485 adapter. Jeg har nettopp tatt en offisiell fork av home-assitant med støtte for Flexit/CI66, tilgjengelig her: GitHub Planen er å legge inn en PR snart. Et ekstremt irriterende problem med CI66, som man helt sikkert kan komme rundt med egen løsning, er at varmeelementet skrus av/på med en dip-switch i kontrollpanelet (CI60) og kan derfor ikke styres via CI66. Jeg vurderer derfor å se på en løsning uten CI66. Før jeg visste om CI66, probet jeg en del på kommunikasjon mellom styringspanel (jeg har CI60 / UNi2), jeg husker ikke detaljene, men jeg har noen notater: - Aggregatet er master - Master sender write_holding_register 0x00BE-0x0113 som broadcast (skriver til alle slaver) flere ganger i sekundet, disse registrene inneholder status - Master poller "coils" 0x0000-0x0160 fra slaver. Om noen av slavene sier at en coil er True, prøver master å lese holding register med samme offset fra slaven (coil 0x0005 = 1, les holding register 0x0005). Disse registrene vil da være feks viftehastighet 0-4. Master leser "coils" fra 1-3 forskjellige slaveadresser, jeg husker ikke detaljene, men jeg tror dette har noe med det faktum at man kan ha flere paneler per aggregat (0-1 CI600, samt 0-2 CI60 paneler). Da jeg skrev disse notatene hadde jeg ikke registerbeskrivelsen til CI66, heller ikke muligheten til å sammenlikne registrene aggregatet sender som broadcast med registrene som er tilgjengelige via CI66, jeg tror nok dette blir enklere nå. Jeg fant eksempelvis ut dette i sin tid: Coils: 0x0000 ( 0): Fan speed 0x0003 ( 3): Fan speed Supply 0x0008 ( 8): Fan speed Exhaust 0x000C ( 12): Setpoint temperature 0x008C (140): Heater on/off Holding registers (Changed by the slaves, pulled by the master when coil changed) 0x0000 ( 0): Setpoint Fan speed 1,2,3 ... 0x0003 ( 3): Setpoint Fan Speed Supply 0-100 ... 0x0008 ( 8): Setpoint Fan Speed Exhaust 0-100 ... 0x0012 ( 18): Setpoint Temperature x-30 ... 0x0140 (320): Heater On/Off 0,1 Broadcasted Holding Registers: 0x00BE (190): Setpoint Supply Air Temperature 0x00BF (191): Fan speed [1,2,3] Det eneste som mangler nå er å finne korrelasjon mellom "holding" register i CI66, "coils" og "holding" i CI60/600. Om noen er interessert i dette kan jeg hjelpe med mapping.
    1 poeng
Vinnerlisten er satt til Oslo/GMT+02:00
×
×
  • 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.