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

berland

Medlemmer
  • Innlegg

    552
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    24

berland vant dagen sist 4. februar 2023

berland hadde mest likt innhold!

Hjemmeautomasjon

  • System
    openHAB

Nylige profilbesøk

Blokken for nylige besøkende er slått av og vises ikke for andre medlemmer.

berland sine prestasjoner

Loddebolt

Loddebolt (10/16)

  • Samarbeidspartner
  • Postmaskin Sjeldent
  • Første innlegg
  • Reagerer godt
  • Veldig populær Sjeldent

Nylige merker

301

Nettsamfunnsomdømme

  1. Thanks a lot, your websocket code worked straight away for me. I will merge your GPL3 code into mine GPL code 👌
  2. Every tenth second here 😎 But I will try out hansrunes websocket code, an then maybe that often is not that relevant
  3. Jeg lagde selv en liten integrasjon mot mitt OpenHAB-hus i fjor høst, og ser ut til å ha kommet like langt som deg. Ingen websocket som fungerte, selv etter kontakt med kundeservice og mye testing i Postman. Savner status på dørlås via API, den fikk jeg aldri, men hadde kanskje fått tak i den hvis jeg fikk websocket til å fungere. Min lille bit med kildekode ligger på https://github.com/berland/pyrotun/blob/master/pyrotun/connections/homely.py, denne har tuslet og gått i det minste siden oktober.
  4. Min modbus-konfigurasjon (som jeg fant på nettet en gang, og som virker på OpenHAB2 (og tidligere)) konfigurer Modbus som under. Mulig du kan plukke ut noe relevant derfra for å bruke på ditt system? pi@loftspi:/etc/openhab2 $ cat services/modbus.cfg poll=5000 writemultiperegisters=true serial.vvfan.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvfan.id=1 serial.vvfan.start=100 serial.vvfan.length=38 serial.vvfan.type=holding serial.vvfan.valuetype=int16 serial.vvhc.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvhc.id=1 serial.vvhc.start=200 serial.vvhc.length=21 serial.vvhc.type=holding serial.vvhc.valuetype=int16 serial.vvrot.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvrot.id=1 serial.vvrot.start=350 serial.vvrot.length=2 serial.vvrot.type=holding serial.vvrot.valuetype=int16 serial.vvsys.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvsys.id=1 serial.vvsys.start=500 serial.vvsys.length=7 serial.vvsys.type=holding serial.vvsys.valuetype=int16 serial.vvnvm.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvnvm.id=1 serial.vvnvm.start=548 serial.vvnvm.length=1 serial.vvnvm.type=holding serial.vvnvm.valuetype=int16 serial.vvclock.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvclock.id=1 serial.vvclock.start=550 serial.vvclock.length=7 serial.vvclock.type=holding serial.vvclock.valuetype=int16 serial.vvfilter.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvfilter.id=1 serial.vvfilter.start=600 serial.vvfilter.length=2 serial.vvfilter.type=holding serial.vvfilter.valuetype=int16 serial.vvdefr.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvdefr.id=1 serial.vvdefr.start=670 serial.vvdefr.length=2 serial.vvdefr.type=holding serial.vvdefr.valuetype=int16 serial.vvdig.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvdig.id=1 serial.vvdig.start=700 serial.vvdig.length=9 serial.vvdig.type=holding serial.vvdig.valuetype=int16 serial.vvtsf.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvtsf.id=1 serial.vvtsf.start=3488 serial.vvtsf.length=5 serial.vvtsf.type=coil serial.vvtsf.valuetype=bit serial.vvdi.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvdi.id=1 serial.vvdi.start=11200 serial.vvdi.length=7 serial.vvdi.type=coil serial.vvdi.valuetype=bit serial.vvpcu.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vvpcu.id=1 serial.vvpcu.start=12000 serial.vvpcu.length=3 serial.vvpcu.type=coil serial.vvpcu.valuetype=bit serial.vval.connection=/dev/ttyUSB0:19200:8:none:1:rtu:35:5000 serial.vval.id=1 serial.vval.start=12800 serial.vval.length=9 serial.vval.type=coil serial.vval.valuetype=bit # sets refresh interval to Modbus polling service. # Value in milliseconds (optional, defaults to 200) ## Example of Modbus TCP slave # Connection parameters to Modbus TCP server ("slave"), values separated by colon (:) # - host or ip of the modbus server ("slave"), mandatory # - port, optional, default 502 # - interTransactionDelayMillis, optional, in milliseconds, default 60 # - reconnectAfterMillis, optional, in milliseconds, default 0 # - interConnectDelayMillis, optional, in milliseconds, default 0 # - connectMaxTries, optional, default 3 # - connectTimeout, optional, in milliseconds, default 0 (=infinite or OS default) # # As a general rule, usually only host needs to be specified. Parameters other than host # and port should be overridden only in cases when extreme performance is required, or when there are # errors with the default parameter values. # # See wiki for more details. # # # # (slave name) (host or IP) # | | (port) # | | | (interTransactionDelayMillis, in milliseconds) # | | | | (reconnectAfterMillis, in milliseconds) # | | | | | (interConnectDelayMillis, in milliseconds) # | | | | | | (connectMaxTries) # | | | | | | | (connectTimeout) # | | | | | | | | #tcp.slave1.connection=192.168.1.100:502:60:0:0:3:100 # The data type, can be "coil" "discrete" "holding" "input". See wiki for more details. #tcp.slave1.type= # The slave id (optional, defaults to '1') #tcp.slave1.id= # The slave start address (optional, defaults to '0') #tcp.slave1.start= # The number of data item to read # (optional, defaults to '0' - but set it to something meaningful) #tcp.slave1.length= # Value type, required for combined registers (details: http://www.simplymodbus.ca/FAQ.htm#Types) # Can be "bit", "int8", "uint8", "int16", "uint16", "int32", "uint32", "float32" # (optional, defaults to 'uint16') #tcp.slave1.valuetype= # For other slave parameters, consult the wiki. ## Example of Modbus Serial slave # Connection parameters to Modbus Serial server ("slave"), values separated by colon (:) # - serial port, mandatory. Example: /dev/ttyS0 (linux) or COM3 (windows) # - baudRate, optional, default 9600 # - dataBits, optional, in milliseconds, default 8 # - parity, optional, default none # - stopBits, optional, default 1 # - encoding, optional, default rtu # - interTransactionDelayMillis, optional, in milliseconds, default 35 # - receiveTimeoutMillis, optional, in milliseconds, default 1500 # - flowControlIn, optional, default none # - flowControlOut, optional, default none # # As a general rule, usually one needs to specify serial port, baudRate, dataBits, parity, stopBits, and encoding. Other parameters # should be overriden only in cases when extreme performance is required, or when there are # errors with the default parameter values. # # See wiki for more details. # # # # (slave name) (host or IP) # | | (baud) # | | | (dataBits) # | | | | (parity) # | | | | | (stopBits) # | | | | | | (encoding) # | | | | | | | (interTransactionDelayMillis) # | | | | | | | | (receiveTimeoutMillis) # | | | | | | | | | (flowControlIn) # | | | | | | | | | | (flowControlOut) # | | | | | | | | | | | # | | | | | | | | | | | #serial.slave1.connection=/dev/ttyS0:38400:8:none:1:rtu:35:1500:none:none # The data type, can be "coil" "discrete" "holding" "input". See wiki for more details. #serial.slave1.type= # The slave id (optional, defaults to '1') #serial.slave1.id= # The slave start address (optional, defaults to '0') #serial.slave1.start= # The number of data item to read # (optional, defaults to '0' - but set it to something meaningful) #serial.slave1.length= # Value type, required for combined registers (details: http://www.simplymodbus.ca/FAQ.htm#Types) # Can be "bit", "int8", "uint8", "int16", "uint16", "int32", "uint32", "float32" # (optional, defaults to 'uint16') #serial.slave1.valuetype= # For other slave parameters, consult the wiki.
  5. Equinor får neppe mer penger til å elektrifisere sokkelen direkte av situasjonen, men siden hovedårsaken til dagens strømpriser er høye gasspriser, så tjener Equinor likevel milliarder på milliarder av situasjonen. Denne inntjeningen går først og fremst til skatt til staten (da snakker vi rundt 80%), og så deles resten på eierene til Equinor (og der finner vi jammen staten Norge igjen med 2/3 eierskap). Hvis man ikke stoler på egne myndigheter, så oppleves det selvsagt problematisk at myndighetene håver inn i bøtter og spann. Jeg har tillit til at norske myndigheter bruker disse pengene fornuftig (det store byråkratiet fungerer som en sikkerhetsbarriere mot ufornuftig pengebruk), enten inntektene kommer fra stømsalg eller hydrokarbon-salg. Å selge deler av dette til underpris i lokalt marked er eksempel på slik ufornuftig pengebruk, med tullete energisløsing som konsekvens. Det taper miljøet på. Miljøet har tapt nok allerede på manglende insentiver til investeringer i isolerte hus pga lave strømpriser de siste årene.
  6. Beklager, der traff du ikke
  7. Tenk på om vi hadde forvaltet oljeressursene på en slik måte, dvs. solgt den med intensjon om billigst mulig pris innenlands og solgt minst mulig til utlandet for å verne om lave priser innenlands. Hvor stort hadde oljefondet vært da? Null? Jeg vil påstå at det utvilsomt er det beste for almennheten (både økonomisk og miljømessig) å selge strømmen til høystbydende. Vi har mange muligheter til omfordeling av pengene i etterkant, det dummeste stedet man kan subsidiere strøm på er ved struping av prisen. Ja til flere kabler. Helst en til Island også.
  8. Jeg har kode som skal gjøre det samme, håper å ha koden klar til 1. januar Det blir en ren Python-løsning, som snakker med OpenHAB (men forsåvidt ikke avhengig av OpenHAB på noen måte). En utvidelse av koden som ligger på https://github.com/berland/pyrotun Så lenge utetemperaturen her i Bergen ikke kommer under 6-8 minusgrader (døgnsnitt), så tilsier statistikken her i huset at det skal gå an å holde seg under 5 kilowatt. Men strømprisvariasjonene nå til dags gjør at den lastflyttingen jeg gjør allerede (floors.py og waterheater.py i kode-repoet over) er i stand til å tjene inn over 100 kr pr måned. Det er helt umulig å vite 1. januar 2022 om det er mest økonomisk å ligge under 5 kW, eller mellom 5 og 10 kW, akkurat det er irriterende.
  9. Noen måneder har gått med denne algoritmen kjørende, så det er på tide å analysere litt. Første plott her viser hva jeg estimerer til å være kostnadsbesparelse pr. døgn på grunn av lastflytting. Estimatet er laget ved å anta at totalforbruk gjennom døgnet hadde vært det samme, men hvis forbruket hadde fulgt en gjennomsnittlig døgnprofil for norske forbrukere. Gjennomsnittet av dagsbeløpet i disse 3 mnd er 1.8 NOK, som innebærer 1-2% av strømregningen. Variasjon i daglig sparebeløp kommer av akkurat hvordan prisprofilen er de relevante dagene, og når på døgnet lavpunktet kommer. Den viktige antakelsen for besparelsen estimert over er at jeg ikke bruker mer strøm enn ellers. Dette er uansett en sannhet med modifikasjoner, for fyring av varmekabler når man ellers kunne nattsenket vil nødvendigvis gjøre at huset risikerer å holde en høyere gjennomsnittstemperatur enn ellers, som medfører mer varmetap. Dette er ikke til å unngå, så spørsmålet er om lastflyttingen sparer så mange kroner at denne effekten overskygges. Varmtvannstank er inkludert i besparelsen over, og der gjelder ikke denne effekten like mye. Enn så lenge, så er det heller ingen elbil-lading inkludert. Jeg bruker et scatter-plott for døgnforbruk mot utetemperatur for å avgjøre dette. Her er alle grå punktene data for de siste 2 år, og punkter med farge er de hvor algoritmen har vært aktiv, og fargeskalaen er den estimerte besparelsen (samme tall som i plottet over): Antakelsen om at strømforbruket ikke endrer seg ville stemt hvis alle de fargene punktene lå "midt" i den gråe skya. Dette ser bare ut til å stemme for de dagene der besparelsen er opp til 3-4 kr (som forsåvidt er en helt grei besparelse!). Når besparelsen er oppi 10 kr og over, så ser det ut som om algoritmen blir for aggressiv, og gjør at huset er litt for varmt, kanskje 500-1000W for mye forbruk, noe som forsåvidt er tilsvarende besparelsen de aktuelle dagene i kroner og øre. For enkelhets skyld og med litt godvilje, vil jeg da påstå at oppnåelig besparelse for meg tilsvarer 1% av strømregningen. Jeg skal si meg fornøyd nok med det og kommer ikke til å skru av algoritmen. Jeg trenger ikke lenger se strømprisprofilen på en skjerm, jeg tråkker bare inn på baderomsgolvet, er det varmt, så vet jeg at strømmen akkurat har vært billig og snart er dyr
  10. Jeg lager det den dagen jeg kan spare mer enn ett øre dagen på det. Men først må effekttariff vedtas og komme, jeg har gitt opp å vente på det.
  11. Takker for omtale som 100% løsning! Ser fortsatt noen bugs som er tunge å rette opp i, men det kommer kanskje. Det er klart det vil kreve kunnskap å ta dette i bruk hos andre. Jeg har tenkt mye på hvordan jeg skulle gjøre dette enklere (på lite viktige rom som garasje og "verksted" mellom garasje og hus har jeg en slik enkel løsning som gjør at termostaten bare er aktiv de 5 billigste timene i døgnet f.eks), men ikke klart å finne noen enkle triks som jeg anser som gode nok (og kanskje også som utfordrende nok, her er det snev av akademiske øvelser) Med fare for å bli mer opphengt i kronene enn kompleksiteten: Hvis min løsning er 100%, så betyr det at det var maksimalt 36 kr å spare (hos meg) i går. Hvor mange kr hadde en enklere algoritme klart å spare, uten å gå på bekostning av komfort? (tør jeg gjette på at din 90% løsning ikke klarer spare 32.4 kr?)
  12. Jeg tenker at et badegulv må tåle å oscillere mellom 20 og si 33 grader, det får være innenfor (men makstemperatur er en separat innstilling hos meg pr. kurs). For parketten hos meg har oscilleringene skapt av luftsensor på Heatit vært mye verre (men dette jeg ha fikset med mye mindre programmering, det er bare å skaffe seg en ekstra sensor som jeg nå har gjort)
  13. Noen lenker til kildekode (GPLv3), det kan hende det er gjenbrukbart for noen med Python-kunnskaper, men tut og kjør er det neppe.. Kjøres hvert 10. minutt og optimaliserer hvert av gulvene mine, og setter ny termostatverdi: https://github.com/berland/pyrotun/blob/master/pyrotun/floors.py Estimat av besparelse: https://github.com/berland/pyrotun/blob/master/pyrotun/poweranalysis.py#L41 CSV-fil med "normal" forbruksprofil: https://github.com/berland/pyrotun/blob/master/pyrotun/daypowerprofile.csv
  14. Dette er Heatit Z-THRM1, som jeg styrer som termostater (ikke som effektregulator). Noen av varmekabelkursene mangler gulvføler, og Heat-it på luftsensor fungerer egentlig ekstremt dårlig. Det jeg da har gjort er å kjøpe flere Ruuvi-sensorer (https://www.hjemmeautomasjon.no/forums/topic/5829-ruuvi/) som jeg har lagt direkte på gulvet med noe isolasjon over seg (under seng/skap etc) og bruker dette som gulvsensor i stedet. Python-koden sender da f.eks 30 grader til termostaten hvis den skal på, og 10 grader hvis den skal være av, basert på gulvsensoren. Bonus for dette er at jeg for første gang har kontroll på parkett-temperaturen på noen kjellergulv. Med luft-sensoren har den sikkert vært langt over 30 grader av og til.
  15. For kjellergulv så vil det medføre noe større varmetap å gå høyere enn ønsketemperatur. Hvis gulvet ikke er isolert, vil man se dette på at gulvtemperaturen faller mye raskere når temperaturen er høy (ikke-lineært). Jeg vet ikke hvor mange cm isopor jeg har under kjelleren (gammelt hus), men jeg konstaterer at temperaturene mine faller linært nok til at dette ikke bekymrer meg. Det er åpenbart at varmetapet fra gulv til lufta over er mye større, og det er hensikten. Jeg har også sett på temperaturprofilen til et bad i 1. etasje (kjeller under), og det faller like raskt som et kjellergulv, altså er det temperaturtap til luft som er hovedfaktoren. Hele huset derimot har høyere varmetap når huset er varmere, dette ligger på 160W pr grad for differanse ute vs inne hos meg. Men det er varmetap gjennom vegger og tak, og jeg har ikke signifikant høyere lufttemperatur pga. de varme gulvene (men masse ekstra WAF for kjempevarmt gulv på badet kl 07: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.