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

AMelbye

Medlemmer
  • Innlegg

    5
  • Ble med

  • Besøkte siden sist

Hjemmeautomasjon

  • System
    Domoticz

AMelbye sine prestasjoner

Smartplugger

Smartplugger (4/16)

  • Første innlegg
  • Reagerer godt
  • Uke én ferdig
  • En måned senere
  • Ett år inn

Nylige merker

0

Nettsamfunnsomdømme

  1. import DomoticzEvents as DE import json from datetime import datetime from datetime import date import sys if '/usr/lib/python3/dist-packages/' not in sys.path : #sjekker at path nødvendig for requests-modulen er tilstede og oppretter hvis nødvendig DE.Log('Path not found') sys.path.append('/usr/lib/python3/dist-packages/') DE.Log('Path added') #else: #DE.Log('Pathfound') import requests currentDate = date.today() currentTime = datetime.now() currentHour = datetime.now().hour priceLimit=1.4 #hvor du setter grensa mellom dyr og "billig" strøm DE.Log("\nStrømpris-script kjørt\n") #-------------SETUP COMPLETE------------- def fetchPrices(): DE.Log("FETCHING PRICES FROM SERVER - current price will be updated on next pass") response = requests.get(f"https://norway-power.ffail.win/?zone=NO1&date={currentDate}&key=SETT INN NØKKEL HER") priceList=[] for i in response.json(): priceContainer=response.json()[i] priceList.append(priceContainer['NOK_per_kWh']) #henter ut den verdien jeg er interessert i og legger til lista priceList.append(datetime.now().isoformat()) #legger nedlastingstidspunkt til slutten av prislista with open("pricelist.json", 'w') as f: json.dump(priceList, f, indent=2) #lagrer prislista til json-fil #fetchPrices() #denne linja må kjøres kun én gang for å opprette json-fil, deretter kommenteres bort. VIKTIG at den kjøres kun én gang, ellers blir du fort blokkert fra serveren. ###------------Oppdater timepris fra lagret liste-------------------------- with open("pricelist.json", 'r') as f: #henter lagrede priser fra lokal json-fil loadedPrices = json.load(f) #DE.Log("loaded Prices:\n") #DE.Log(loadedPrices) hourPrice = loadedPrices[currentHour] timeDelta= currentTime - datetime.fromisoformat(loadedPrices[24]) minutesDelta = round(timeDelta.total_seconds()/ 60) DE.Log("Prisliste sist oppdatert") DE.Log(str(minutesDelta)) DE.Log("minutter siden, det var nøyaktig:") DE.Log(str(loadedPrices[24])) DE.Log("\nPrisen denne timen er:") DE.Log(str(hourPrice)) if currentHour == 0 and minutesDelta > 61 : fetchPrices() if hourPrice < priceLimit: DE.Log("strømmen er relativt billig") DE.Command( 'Billig', "On") elif hourPrice > priceLimit: DE.Log("strømmen er pissdyr, skru av ovnene") DE.Command( 'Billig', "Off") else: DE.Log("her har det skjedd noe rart") Koden til @alge gikk meg langt over hodet, så jeg laget min egen som jeg forstår. Sikkert veldig tungvint og barnslig kode, men det virker. Denne må lagres som en fil (for eksempel script_time_strømpris.py) og legges i domoticz/scripts/python - også må det opprettes en virtuell bryter som heter Billig. Den skrues av/på ut ifra om strømmen er billig eller dyr, og kan dermed brukes til å kontrollere andre ting uten å måtte surre noe mer med dette scriptet eller python om du ikke vil. Knappen billig må opprettes, scriptet lagres på rett sted, legg inn din egen passkey, deretter må du fjerne en # foran første fetchprice() for at lokal json-fil skal opprettes. Viktig! Når skriptet er kjørt én gang må du sette # tilbake igjen å lagre, ellers vil den laste ned fra API en gang pr minutt - ikke bra. Alternativt kan du opprette filen manuelt, men jeg aner ikke hvor den skal ligge eller hvor filen blir opprettet.... Nye priser lastes ned hver dag rett over midnatt. Det første minuttet etter midnatt vil den kjøre på feil (gårsdagens) verdi - det kan jeg leve med. Hvis den ikke får svar eller noe galt skjer rundt nedlasting er jeg ikke sikker på hva som skjer. Mulig lokal json-fil blir korrupt og scriptet kræsjer. Eller kanskje den prøver igjen én gang pr minutt den første timen, for så å vente til neste dag. Dette er ikke helt som jeg skulle ønske (burde vært progressivt økende delay, men jeg har ikke kommet helt dit), men gitt at APIet virker henter den bare ut data én gang i døgnet. Implementeringen/dokumentasjon av python for domoticz viste seg veldig mangelfull. Jeg har ikke klart å finne ut hvordan man sjekker status til en bryter, dermed blir "billig" skrevet til hvert minutt uansett status. Jeg ville normalt sjekket hvor den sto og bare flyttet den hvis i feil posisjon, men jeg har ikke klart å finne ut av det. Null problem om man bruker lua eller dzevents, men i python har jeg ikke klart å finne kommandoen for det. Også irriterende at kommandoen for å skrive til loggen ikke fungerer på samme måte som print. Den vil bare ha string og bare én om gangen. Så det blir noen ekstra linjeskift her og der, men det får gå. Jeg deler den her tilfelle det kan være til hjelp for noen.
  2. uffda! Det er jo ikke sikkert det er en registrert bruker - jeg kom over denne tråden på google og registerte meg deretter på forumet Og jeg har dessverre ikke kommet noe videre - rakk akkurat å ta en titt på koden til @alge før jeg klarte å pådra meg hjernerystelse på en skitur og har vært satt ut av spill siden da... Om du må gjøre dette litt mer lukket - er det mulig å få en nøkkel tilsendt på PM? 😇
  3. Tusen takk @alge og @Vuevu ! Jeg har vært bortreist noen dager og ikke fått sett på det, men skal sjekkes ut i løpet av romjula! :)
  4. Hei, jeg skulle gjerne ha benyttet meg av dette. Jeg har akkurat satt opp varmestyrings-systemene igjen etter at de har ligget ubrukt et par år - motivert av de økte strømprisene. Sist jeg gjorde dette programmerte jeg alt i Lua men har siden da blitt mye flinkere i python kombinert med at alt av Lua er glemt, så tenker å programmere i hvertfall delvis i python denne gangen. Men uansett hvilket språk så stopper det litt opp når det kommer til å hente ned data fra nettet. @funny0frank hvordan bør jeg gå frem for å hente ned denne informasjonen fra siden din? Å få koden til å skifte dato hver dag og bare laste ned én gang i døgnet, det fikser jeg, men jeg er litt usikker på hvordan jeg skriver selve koden for å hente ned dataene? Bør jeg skrive en kode som går til nettsiden og lagrer det som står der eller er det mer hensitsmessig å laste ned noe av koden du postet på github og kjøre den i domoticz? I såfall hvilken del av koden? Og takk for at du delte dette - det hadde vært kult om jeg kunne benyttet meg av dette for å styre oppvarming i disse tider da timesprisene er så forskjellige fra dag til dag og uke til uke! (ja jeg vet man kan bytte til Tibber og få hjelp, men jeg liker å være uavhengig)
×
×
  • 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.