· 4 years ago · May 11, 2021, 09:56 AM
1# -*- coding: utf-8 -*-
2"""
3Created on Wed Apr 28 13:11:12 2021
4
5@author: le_fo
6"""
7
8#Importerer nødvendige bibliotek
9import requests
10import json
11from schedule import every, repeat, run_pending
12import time
13
14#-------------------------------------------------------------------------------------------------
15
16key = "16218"
17token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1MTQwIn0.5j6lIMAj2KmCFYyW0OvDGG4Sion2EhhuaIfatC3OBM0"
18
19#Repeterer funksjonen hvert 60. minutt.
20@repeat(every(60).minutes)
21def dataskydekke():
22# Url til meteorologisk institutt, med program og koordinater, Hente skydata som er lastet opp i CoT
23 met_url_loc = "https://api.met.no/weatherapi/locationforecast/2.0/complete?lat=63.4197&lon=10.3989"
24 met_response = requests.get(met_url_loc,headers = {"User-Agent": "/weatherapi/nowcast/2.0 , api version: 2.0 aasmun2901@gmail.com"})
25 met_data = met_response.text
26 met_data_dict = json.loads(met_data)
27 skydekke = met_data_dict["properties"]["timeseries"][0]["data"]["instant"]["details"]["cloud_area_fraction"]
28 value = skydekke
29 CoT_data = {"Key": key, "Value": value, "Token": token}
30 CoT_temp = requests.put("https://circusofthings.com/WriteValue",
31 data = json.dumps(CoT_data),
32 headers = {"Content-Type": "application/json"})
33 return skydekke
34
35# --------------------------------------------------------------------------------------------------
36# Regne strømforbruk hvert 60 min
37# Solcelleproduksjon = (100% skydekke - skydekke akkurat nå) * 450kWh (Panelets ytelse)
38# Returnerer strom fordi den skal brukes i neste funksjon, hvor opplastingen tll CoT skjer.
39@repeat(every(60).minutes)
40def regnestrom():
41 print('Det er', dataskydekke(), '% skydekke akkurat nå')
42 strom = (100 - dataskydekke()) * 450
43 print('Det blir produsert' , strom , 'kWh akkurat nå!')
44 return strom
45
46# ----------------------------------------------
47# Laste opp til CoT
48key1 = "14161"
49token1 = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1MTY5In0.Dijufo1imcD0D02cbQHl-07VVDNheGzV8bd8mSnTJao"
50value1 = regnestrom()
51
52# Laster opp strømproduksjonen til CoT
53@repeat(every(60).minutes)
54def lastoppcot():
55 data1={'Key':'0','Value':0,'Token':'0'}
56 data1['Key']=key1
57 data1['Value']=value1
58 data1['Token']=token1
59 response=requests.put('https://circusofthings.com/WriteValue',
60 data=json.dumps(data1),headers={'Content-Type':'application/json'})
61
62# Kjører "Schedule" til enhver tid.
63while True:
64 run_pending()
65 time.sleep(1)