· 4 years ago · May 13, 2021, 01:14 PM
1#Importerer nødvendige bibliotek
2import requests
3import json
4import schedule
5from schedule import run_pending
6import time
7
8#-------------------------------------------------------------------------------------------------
9
10
11# Henter skydekke i % fra meteorologisk institutt.
12# Returnerer skydekket fordi det skal brukes til å regne strømproduksjon
13def dataskydekke():
14# Url til meteorologisk institutt, med program og koordinater, Hente skydata som er lastet opp i CoT
15 met_url_loc = "https://api.met.no/weatherapi/locationforecast/2.0/complete?lat=63.4197&lon=10.3989"
16 met_response = requests.get(met_url_loc,headers = {"User-Agent": "/weatherapi/nowcast/2.0 , api version: 2.0 aasmun2901@gmail.com"})
17 met_data = met_response.text
18 met_data_dict = json.loads(met_data)
19 skydekke = met_data_dict["properties"]["timeseries"][0]["data"]["instant"]["details"]["cloud_area_fraction"]
20 value = skydekke
21 return skydekke
22
23schedule.every(30).minutes.do(dataskydekke)
24
25# --------------------------------------------------------------------------------------------------
26# Regne strømforbruk hvert 10. min
27# Solcelleproduksjon = (100% skydekke - skydekke akkurat nå) * 0.45(Panelets ytelse)*25(antall panel)
28# Returnerer strom fordi den skal brukes i neste funksjon, hvor opplastingen tll CoT skjer.
29def regnestrom():
30 strom = round((100 - dataskydekke()) * 0.45*25,2)
31 print(dataskydekke())
32 return strom
33schedule.every(30).minutes.do(regnestrom)
34# ----------------------------------------------
35# Laste opp til CoT, definerer hvilket signal det skal sendes til
36key1 = "14161"
37token1 = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1MTY5In0.Dijufo1imcD0D02cbQHl-07VVDNheGzV8bd8mSnTJao"
38value1 = regnestrom()
39
40
41# Funksjon som laster opp strømproduksjonen til CoT hvert 30. minutt
42def lastoppcot():
43 data1 = {'Key':'0','Value':0,'Token':'0'}
44 data1['Key'] = key1
45 data1['Value'] = value1
46 data1['Token'] = token1
47 laste_opp=requests.put('https://circusofthings.com/WriteValue',
48 data=json.dumps(data1),headers={'Content-Type':'application/json'})
49 print("Laster opp til CoT...",value1)
50
51schedule.every(30).minutes.do(lastoppcot)
52
53# Kjører "Schedule" til enhver tid.
54while True:
55 run_pending()
56 time.sleep(1)