From 17d80719b1f597daf049b6e5be58eee673e72dcc Mon Sep 17 00:00:00 2001 From: rakosi2 Date: Sat, 27 Mar 2021 16:12:46 -0700 Subject: [PATCH 01/12] Add ADC example --- adc.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 adc.py diff --git a/adc.py b/adc.py new file mode 100644 index 0000000..865081f --- /dev/null +++ b/adc.py @@ -0,0 +1,30 @@ +#!/usr/bin/python3 + +# sudo pip3 install adafruit-circuitpython-ads1x15 + +import time +import board +import busio +import adafruit_ads1x15.ads1115 as ADS +from adafruit_ads1x15.analog_in import AnalogIn + +resistor = 0.00075 + +# Create the I2C bus +i2c = busio.I2C(board.SCL, board.SDA) + +# Create the ADC object using the I2C bus +ads = ADS.ADS1115(i2c) + +# Create single-ended input on channel 0 +#chan = AnalogIn(ads, ADS.P0) + +# Create differential input between channel 0 and 1 +chan1 = AnalogIn(ads, ADS.P0, ADS.P1) +#chan2 = AnalogIn(ads, ADS.P2, ADS.P3) + +print("{:>5}\t{:>5}".format('raw', 'v', 'current')) + +while True: + print("{:>5}\t{:>5.3f}".format(chan1.value, chan1.voltage, chan1.voltage/resistor)) + time.sleep(0.5) \ No newline at end of file From 72f8ee627b73f54026e385a57cbf26a49af8a13a Mon Sep 17 00:00:00 2001 From: romilenecruz <77083923+romilenecruz@users.noreply.github.com> Date: Tue, 20 Apr 2021 16:50:48 -0700 Subject: [PATCH 02/12] CAISO Code --- works.py | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 works.py diff --git a/works.py b/works.py new file mode 100644 index 0000000..6136e50 --- /dev/null +++ b/works.py @@ -0,0 +1,87 @@ +import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET +from array import * +import requests, zipfile, io, os, glob +from datetime import datetime, timedelta + +##################################################################################################################################### +######################################## Constucting the CAISO query URL ############################################################ +##################################################################################################################################### + +previous_day = datetime.now() + timedelta(-1) #getting the date for the previous day +yesterday = previous_day.strftime('%Y%m%d') #storing the previous day in the variable 'yesterday' with the format YYYddMM (the format CAISO uses for the query) +path = "E:/As of 11.17.2020/School/2021 Spring/EE 496/Energy Management System/Project Code/" #where the file will be stored, will be different for the Raspbery Pi + +start_url = "http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&" #beginning of the URL, does not change + +start_date = "startdatetime=" #part of the URL that will tell CAISO what the start date is + +start_time = "T00:00-0000&" #start time, does not change + +end_date = "enddatetime=" #part of the URL that will tell CAISO what the end date is + +end_time = "T23:00-0000&" #end time, does not change + +end_url = "&version=1&market_run_id=DAM&node=STREAMVW_6_N001" #end of the URL, does not change unless you want to change the node + +CAISO_query = start_url + start_date + yesterday + start_time + end_date + yesterday + end_time + end_url #constucting the whole URL + +##################################################################################################################################### +######################################## Getting the .xml file from CAISO ########################################################### +##################################################################################################################################### + +r = requests.get(CAISO_query) #using python requests to access the URL, content stored in the variable 'r' +z = zipfile.ZipFile(io.BytesIO(r.content)) #get the .zip file from 'r' and store it in 'z' +z.extractall() #extract the contents of that .zip file which is an .xml file, using this method doesn't save the intial .zip file, just the .xml file that was inside + + +list_of_files = glob.glob(path + '*xml') #from our list of files in the path, only pull the files that end with .xml + +latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded + +##################################################################################################################################### +#####################################3##### Pulling the correct data from the .xml file ############################################# +##################################################################################################################################### + +tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' +root = tree.getroot() #need this to access everything in the XML file + +temp_time = [] #temp array for the time aka the itnerval hour +time = [] #new arary for the time with only the time of the LMP + +temp_cost = [] #temp array for the cost aka the value +cost = [] #new array for the cost with only the cost of the LMP +sort_cost = [] #array for the sorted LMP price + +for elm in root.findall(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}REPORT_DATA"): #go into the REPORT_DATA + + if elm.find("{http://www.caiso.com/soa/OASISReport_v1.xsd}DATA_ITEM").text == "LMP_PRC": #find the tag called DATA_ITEM and if the text inside is LMP_PRC continue + + hour = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}INTERVAL_NUM").text #go into the INTERVAL_NUM to get the hour of the day + price = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}VALUE").text #find the price of energy + + temp_time.append(hour) #put hour into list + temp_cost.append(price) #put price into list + +os.remove(latest_file) #delete the .xml file because we got the data from it already + +##################################################################################################################################### +############################################ Sorting the pulled data ################################################################ +##################################################################################################################################### + +time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time +cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called cost +sort_cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called sort_list + +sort_cost.sort() #sort the sort_cost list + +threshold = sort_cost.pop(19) #set the threshold to the the sorted cost in the 19th position + +combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list + +sorted_list = sorted(combined) #sort the combined list + +#sorted_list(time, cost) = sorted_list(t, c) +for t, c in sorted_list: #for the t, c in the sorted list + + if c >= threshold: #if c is greater than or equal to our threshold, then print out the statment + print("Threshold of", threshold, " passed at", f'Hour {t}') \ No newline at end of file From 131866a67778ba3c180b539cd9547ae65956ca48 Mon Sep 17 00:00:00 2001 From: rakosi2 Date: Wed, 21 Apr 2021 12:31:07 -0700 Subject: [PATCH 03/12] Clean the Main Directory --- Algorithim_Rev6.pdf | Bin 220784 -> 0 bytes __pycache__/controller.cpython-37.pyc | Bin 2464 -> 0 bytes caiso_api.py | 104 -------------------------- controller.py | 92 ----------------------- data.json | 1 - info.txt | 26 ------- run_caiso_api.sh | 7 -- run_test.sh | 8 -- stop_program.sh | 3 - test.py | 10 --- weather_Api_Key.txt | 1 - 11 files changed, 252 deletions(-) delete mode 100644 Algorithim_Rev6.pdf delete mode 100644 __pycache__/controller.cpython-37.pyc delete mode 100755 caiso_api.py delete mode 100755 controller.py delete mode 100644 data.json delete mode 100644 info.txt delete mode 100755 run_caiso_api.sh delete mode 100755 run_test.sh delete mode 100755 stop_program.sh delete mode 100755 test.py delete mode 100644 weather_Api_Key.txt diff --git a/Algorithim_Rev6.pdf b/Algorithim_Rev6.pdf deleted file mode 100644 index 5088d976d00f4d1164f76102f246083203f9f9c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220784 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

Aht&5)m%Bc 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%0AZ7!dodOvEFPdz74q{2fO0^EUxC-z1C~ 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 Date: Wed, 21 Apr 2021 13:14:20 -0700 Subject: [PATCH 04/12] CAISO + Weather.gov API Implemented --- works.py | 73 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 64 insertions(+), 9 deletions(-) diff --git a/works.py b/works.py index 6136e50..419c318 100644 --- a/works.py +++ b/works.py @@ -1,6 +1,6 @@ import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET from array import * -import requests, zipfile, io, os, glob +import requests, zipfile, io, os, glob, pprint from datetime import datetime, timedelta ##################################################################################################################################### @@ -39,13 +39,38 @@ latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded ##################################################################################################################################### -#####################################3##### Pulling the correct data from the .xml file ############################################# +######################################## Pulling data from the weather API ########################################################## +##################################################################################################################################### + +s = requests.get('https://api.weather.gov/gridpoints/SGX/59,15/forecast') + +clouds = "Mostly Cloudy" +rain = "Chance Rain Showers" + +weather_day = [] +weather_type = [] + +x = 0 + +while x < 14: + + day = s.json()['properties']['periods'][x]['name'] + expected = s.json()['properties']['periods'][x]['shortForecast'] + weather_day.append(day) + weather_type.append(expected) + #print() + x += 1 + +zipped = list(zip(weather_day, weather_type)) + +##################################################################################################################################### +########################################### Pulling the correct data from the CAISO .xml file ####################################### ##################################################################################################################################### tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' root = tree.getroot() #need this to access everything in the XML file -temp_time = [] #temp array for the time aka the itnerval hour +temp_time = [] #temp array for the time aka the interval hour time = [] #new arary for the time with only the time of the LMP temp_cost = [] #temp array for the cost aka the value @@ -62,10 +87,11 @@ temp_time.append(hour) #put hour into list temp_cost.append(price) #put price into list + os.remove(latest_file) #delete the .xml file because we got the data from it already ##################################################################################################################################### -############################################ Sorting the pulled data ################################################################ +############################################ Sorting the pulled data from CAISO ##################################################### ##################################################################################################################################### time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time @@ -74,14 +100,43 @@ sort_cost.sort() #sort the sort_cost list -threshold = sort_cost.pop(19) #set the threshold to the the sorted cost in the 19th position +high_threshold = sort_cost.pop(19) #set the high threshold to the sorted cost in the 19th position + +low_threshold = sort_cost.pop(4) #set the low threshold to the sorted cost in the 4th position combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list sorted_list = sorted(combined) #sort the combined list -#sorted_list(time, cost) = sorted_list(t, c) -for t, c in sorted_list: #for the t, c in the sorted list +##################################################################################################################################### +############################################ Using all the data for the EMS algorithm ############################################### +##################################################################################################################################### + +if clouds or rain in zipped.pop(1): # if there are clouds or rain in the forecast + + print("Not a lot of solar production today") #wont be a lot of solar production + + for t, c in sorted_list: #for the t, c in the sorted list + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("High threshold of", high_threshold, " passed at", f'Hour {t}', "use batteries to power load") + + elif c <= low_threshold: + print("Low threshold of", low_threshold, " not passed at", f'Hour {t}', "charge the batteries") + + else: + print("Grid is powering house at", f'Hour {t}') + + +else: + + for t, c in sorted_list: #for the t, c in the sorted list + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("High threshold of", high_threshold, " passed at", f'Hour {t}', "use batteries to power load") + + elif c <= low_threshold: + print("Low threshold of", low_threshold, " not passed at", f'Hour {t}', "charge the batteries") - if c >= threshold: #if c is greater than or equal to our threshold, then print out the statment - print("Threshold of", threshold, " passed at", f'Hour {t}') \ No newline at end of file + else: + print("Grid is powering house at", f'Hour {t}') \ No newline at end of file From e1520db8f91435bf20a7bb963a2e31f90ecc1b87 Mon Sep 17 00:00:00 2001 From: romilenecruz <77083923+romilenecruz@users.noreply.github.com> Date: Sat, 1 May 2021 19:58:43 -0700 Subject: [PATCH 05/12] Code --- works2.py | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 works2.py diff --git a/works2.py b/works2.py new file mode 100644 index 0000000..7537050 --- /dev/null +++ b/works2.py @@ -0,0 +1,144 @@ +import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET +from array import * +import requests, zipfile, io, os, glob, pprint +from datetime import datetime, timedelta + +##################################################################################################################################### +######################################## Constucting the CAISO query URL ############################################################ +##################################################################################################################################### + +next_day = datetime.now() + timedelta(+1) #getting the date for the previous day +tomorrow = next_day.strftime('%Y%m%d') #storing the previous day in the variable 'yesterday' with the format YYYddMM (the format CAISO uses for the query) +path = "E:/As of 11.17.2020/School/2021 Spring/EE 496/Energy Management System/Project Code/" #where the file will be stored, will be different for the Raspbery Pi + +start_url = "http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&" #beginning of the URL, does not change + +start_date = "startdatetime=" #part of the URL that will tell CAISO what the start date is + +start_time = "T00:00-0000&" #start time, does not change + +end_date = "enddatetime=" #part of the URL that will tell CAISO what the end date is + +end_time = "T23:00-0000&" #end time, does not change + +end_url = "&version=1&market_run_id=DAM&node=STREAMVW_6_N001" #end of the URL, does not change unless you want to change the node + +CAISO_query = start_url + start_date + tomorrow + start_time + end_date + tomorrow + end_time + end_url #constucting the whole URL + +##################################################################################################################################### +######################################## Getting the .xml file from CAISO ########################################################### +##################################################################################################################################### + +r = requests.get(CAISO_query) #using python requests to access the URL, content stored in the variable 'r' +z = zipfile.ZipFile(io.BytesIO(r.content)) #get the .zip file from 'r' and store it in 'z' +z.extractall() #extract the contents of that .zip file which is an .xml file, using this method doesn't save the intial .zip file, just the .xml file that was inside + + +list_of_files = glob.glob(path + '*xml') #from our list of files in the path, only pull the files that end with .xml + +latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded + +##################################################################################################################################### +######################################## Pulling data from the weather API ########################################################## +##################################################################################################################################### + +s = requests.get('https://api.weather.gov/gridpoints/SGX/59,15/forecast') + +clouds = "Mostly Cloudy" +rain = "Chance Rain Showers" + +weather_day = [] +weather_type = [] + +x = 0 + +while x < 14: + + day = s.json()['properties']['periods'][x]['name'] + expected = s.json()['properties']['periods'][x]['shortForecast'] + weather_day.append(day) + weather_type.append(expected) + #print() + x += 1 + +zipped = list(zip(weather_day, weather_type)) + +##################################################################################################################################### +########################################### Pulling the correct data from the CAISO .xml file ####################################### +##################################################################################################################################### + +tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' +root = tree.getroot() #need this to access everything in the XML file + +temp_time = [] #temp array for the time aka the interval hour +time = [] #new arary for the time with only the time of the LMP + +temp_cost = [] #temp array for the cost aka the value +cost = [] #new array for the cost with only the cost of the LMP +sort_cost = [] #array for the sorted LMP price + +for elm in root.findall(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}REPORT_DATA"): #go into the REPORT_DATA + + if elm.find("{http://www.caiso.com/soa/OASISReport_v1.xsd}DATA_ITEM").text == "LMP_PRC": #find the tag called DATA_ITEM and if the text inside is LMP_PRC continue + + hour = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}INTERVAL_NUM").text #go into the INTERVAL_NUM to get the hour of the day + price = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}VALUE").text #find the price of energy + + temp_time.append(hour) #put hour into list + temp_cost.append(price) #put price into list + + +os.remove(latest_file) #delete the .xml file because we got the data from it already + +##################################################################################################################################### +############################################ Sorting the pulled data from CAISO ##################################################### +##################################################################################################################################### + +time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time +cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called cost +sort_cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called sort_list + +sort_cost.sort() #sort the sort_cost list + +high_threshold = sort_cost.pop(19) #set the high threshold to the sorted cost in the 19th position + +low_threshold = sort_cost.pop(4) #set the low threshold to the sorted cost in the 4th position + +combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list + +sorted_list = sorted(combined) #sort the combined list + +##################################################################################################################################### +############################################ Using all the data for the EMS algorithm ############################################### +##################################################################################################################################### + +if clouds or rain in zipped.pop(1): # if there are clouds or rain in the forecast + print("Today is " + next_day.strftime('%m/%d/%Y')) + print("There will not be a lot of solar production today") #wont be a lot of solar production + print() + print("Hour by hour breakdown: ") + + for t, c in sorted_list: #for the t, c in the sorted list + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("- High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") + + elif c <= low_threshold: + print("- Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") + + else: + print("- Grid is powering house at", f'Hour {t}') + + +else: + + for t, c in sorted_list: #for the t, c in the sorted list + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") + + elif c <= low_threshold: + print("Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") + + else: + print("Grid is powering house at", f'Hour {t}') \ No newline at end of file From 8a8d70f7fcfa9e3c64fe54159a1da2b80725f5ca Mon Sep 17 00:00:00 2001 From: Attila Date: Sat, 1 May 2021 20:00:35 -0700 Subject: [PATCH 06/12] Delete works.py --- works.py | 142 ------------------------------------------------------- 1 file changed, 142 deletions(-) delete mode 100644 works.py diff --git a/works.py b/works.py deleted file mode 100644 index 419c318..0000000 --- a/works.py +++ /dev/null @@ -1,142 +0,0 @@ -import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET -from array import * -import requests, zipfile, io, os, glob, pprint -from datetime import datetime, timedelta - -##################################################################################################################################### -######################################## Constucting the CAISO query URL ############################################################ -##################################################################################################################################### - -previous_day = datetime.now() + timedelta(-1) #getting the date for the previous day -yesterday = previous_day.strftime('%Y%m%d') #storing the previous day in the variable 'yesterday' with the format YYYddMM (the format CAISO uses for the query) -path = "E:/As of 11.17.2020/School/2021 Spring/EE 496/Energy Management System/Project Code/" #where the file will be stored, will be different for the Raspbery Pi - -start_url = "http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&" #beginning of the URL, does not change - -start_date = "startdatetime=" #part of the URL that will tell CAISO what the start date is - -start_time = "T00:00-0000&" #start time, does not change - -end_date = "enddatetime=" #part of the URL that will tell CAISO what the end date is - -end_time = "T23:00-0000&" #end time, does not change - -end_url = "&version=1&market_run_id=DAM&node=STREAMVW_6_N001" #end of the URL, does not change unless you want to change the node - -CAISO_query = start_url + start_date + yesterday + start_time + end_date + yesterday + end_time + end_url #constucting the whole URL - -##################################################################################################################################### -######################################## Getting the .xml file from CAISO ########################################################### -##################################################################################################################################### - -r = requests.get(CAISO_query) #using python requests to access the URL, content stored in the variable 'r' -z = zipfile.ZipFile(io.BytesIO(r.content)) #get the .zip file from 'r' and store it in 'z' -z.extractall() #extract the contents of that .zip file which is an .xml file, using this method doesn't save the intial .zip file, just the .xml file that was inside - - -list_of_files = glob.glob(path + '*xml') #from our list of files in the path, only pull the files that end with .xml - -latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded - -##################################################################################################################################### -######################################## Pulling data from the weather API ########################################################## -##################################################################################################################################### - -s = requests.get('https://api.weather.gov/gridpoints/SGX/59,15/forecast') - -clouds = "Mostly Cloudy" -rain = "Chance Rain Showers" - -weather_day = [] -weather_type = [] - -x = 0 - -while x < 14: - - day = s.json()['properties']['periods'][x]['name'] - expected = s.json()['properties']['periods'][x]['shortForecast'] - weather_day.append(day) - weather_type.append(expected) - #print() - x += 1 - -zipped = list(zip(weather_day, weather_type)) - -##################################################################################################################################### -########################################### Pulling the correct data from the CAISO .xml file ####################################### -##################################################################################################################################### - -tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' -root = tree.getroot() #need this to access everything in the XML file - -temp_time = [] #temp array for the time aka the interval hour -time = [] #new arary for the time with only the time of the LMP - -temp_cost = [] #temp array for the cost aka the value -cost = [] #new array for the cost with only the cost of the LMP -sort_cost = [] #array for the sorted LMP price - -for elm in root.findall(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}REPORT_DATA"): #go into the REPORT_DATA - - if elm.find("{http://www.caiso.com/soa/OASISReport_v1.xsd}DATA_ITEM").text == "LMP_PRC": #find the tag called DATA_ITEM and if the text inside is LMP_PRC continue - - hour = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}INTERVAL_NUM").text #go into the INTERVAL_NUM to get the hour of the day - price = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}VALUE").text #find the price of energy - - temp_time.append(hour) #put hour into list - temp_cost.append(price) #put price into list - - -os.remove(latest_file) #delete the .xml file because we got the data from it already - -##################################################################################################################################### -############################################ Sorting the pulled data from CAISO ##################################################### -##################################################################################################################################### - -time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time -cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called cost -sort_cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called sort_list - -sort_cost.sort() #sort the sort_cost list - -high_threshold = sort_cost.pop(19) #set the high threshold to the sorted cost in the 19th position - -low_threshold = sort_cost.pop(4) #set the low threshold to the sorted cost in the 4th position - -combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list - -sorted_list = sorted(combined) #sort the combined list - -##################################################################################################################################### -############################################ Using all the data for the EMS algorithm ############################################### -##################################################################################################################################### - -if clouds or rain in zipped.pop(1): # if there are clouds or rain in the forecast - - print("Not a lot of solar production today") #wont be a lot of solar production - - for t, c in sorted_list: #for the t, c in the sorted list - - if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment - print("High threshold of", high_threshold, " passed at", f'Hour {t}', "use batteries to power load") - - elif c <= low_threshold: - print("Low threshold of", low_threshold, " not passed at", f'Hour {t}', "charge the batteries") - - else: - print("Grid is powering house at", f'Hour {t}') - - -else: - - for t, c in sorted_list: #for the t, c in the sorted list - - if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment - print("High threshold of", high_threshold, " passed at", f'Hour {t}', "use batteries to power load") - - elif c <= low_threshold: - print("Low threshold of", low_threshold, " not passed at", f'Hour {t}', "charge the batteries") - - else: - print("Grid is powering house at", f'Hour {t}') \ No newline at end of file From bf0476e37cd79c23959062bc45ee77a2ef35c21f Mon Sep 17 00:00:00 2001 From: romilenecruz <77083923+romilenecruz@users.noreply.github.com> Date: Mon, 3 May 2021 18:19:40 -0700 Subject: [PATCH 07/12] Raspberry Pi Code --- helios.py | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 helios.py diff --git a/helios.py b/helios.py new file mode 100644 index 0000000..57ade8a --- /dev/null +++ b/helios.py @@ -0,0 +1,153 @@ +import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET +from array import * +import requests, zipfile, io, os, glob, pprint +from datetime import datetime, timedelta + +##################################################################################################################################### +######################################## Constucting the CAISO query URL ############################################################ +##################################################################################################################################### + +next_day = datetime.now() + timedelta(+1) #getting the date for the previous day +tomorrow = next_day.strftime('%Y%m%d') #storing the previous day in the variable 'yesterday' with the format YYYddMM (the format CAISO uses for the query) +path = "/home/pi/Code/" #where the file will be stored, will be different for the Raspbery Pi + +start_url = "http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&" #beginning of the URL, does not change + +start_date = "startdatetime=" #part of the URL that will tell CAISO what the start date is + +start_time = "T00:00-0000&" #start time, does not change + +end_date = "enddatetime=" #part of the URL that will tell CAISO what the end date is + +end_time = "T23:00-0000&" #end time, does not change + +end_url = "&version=1&market_run_id=DAM&node=STREAMVW_6_N001" #end of the URL, does not change unless you want to change the node + +CAISO_query = start_url + start_date + tomorrow + start_time + end_date + tomorrow + end_time + end_url #constucting the whole URL + +##################################################################################################################################### +######################################## Getting the .xml file from CAISO ########################################################### +##################################################################################################################################### + +r = requests.get(CAISO_query) #using python requests to access the URL, content stored in the variable 'r' +z = zipfile.ZipFile(io.BytesIO(r.content)) #get the .zip file from 'r' and store it in 'z' +z.extractall() #extract the contents of that .zip file which is an .xml file, using this method doesn't save the intial .zip file, just the .xml file that was inside + + +list_of_files = glob.glob(path + '*xml') #from our list of files in the path, only pull the files that end with .xml + +latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded + +##################################################################################################################################### +######################################## Pulling data from the weather API ########################################################## +##################################################################################################################################### + +s = requests.get('https://api.weather.gov/gridpoints/SGX/59,15/forecast') + +clouds = "Mostly Cloudy" +rain = "Chance Rain Showers" + +weather_day = [] +weather_type = [] + +x = 0 + +while x < 14: + + day = s.json()['properties']['periods'][x]['name'] + expected = s.json()['properties']['periods'][x]['shortForecast'] + weather_day.append(day) + weather_type.append(expected) + #print() + x += 1 + +zipped = list(zip(weather_day, weather_type)) + +##################################################################################################################################### +########################################### Pulling the correct data from the CAISO .xml file ####################################### +##################################################################################################################################### + +tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' +root = tree.getroot() #need this to access everything in the XML file + +temp_time = [] #temp array for the time aka the interval hour +time = [] #new arary for the time with only the time of the LMP + +temp_cost = [] #temp array for the cost aka the value +cost = [] #new array for the cost with only the cost of the LMP +sort_cost = [] #array for the sorted LMP price + +for elm in root.findall(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}REPORT_DATA"): #go into the REPORT_DATA + + if elm.find("{http://www.caiso.com/soa/OASISReport_v1.xsd}DATA_ITEM").text == "LMP_PRC": #find the tag called DATA_ITEM and if the text inside is LMP_PRC continue + + hour = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}INTERVAL_NUM").text #go into the INTERVAL_NUM to get the hour of the day + price = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}VALUE").text #find the price of energy + + temp_time.append(hour) #put hour into list + temp_cost.append(price) #put price into list + + +os.remove(latest_file) #delete the .xml file because we got the data from it already + +##################################################################################################################################### +############################################ Sorting the pulled data from CAISO ##################################################### +##################################################################################################################################### + +time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time +cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called cost +sort_cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called sort_list + +sort_cost.sort() #sort the sort_cost list + +high_threshold = sort_cost.pop(19) #set the high threshold to the sorted cost in the 19th position + +low_threshold = sort_cost.pop(4) #set the low threshold to the sorted cost in the 4th position + +combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list + +sorted_list = sorted(combined) #sort the combined list + +##################################################################################################################################### +############################################ Using all the data for the EMS algorithm ############################################### +##################################################################################################################################### + +if clouds or rain in zipped.pop(1): # if there are clouds or rain in the forecast + print("Today is " + next_day.strftime('%m/%d/%Y')) + print("There will not be a lot of solar production today.\n") #wont be a lot of solar production + print("Hour by hour breakdown: ") + + for t, c in sorted_list: #for the t, c in the sorted list + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("- High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") + print("- Contacts 1, 3, 4 open and Contact 2 shut\n") + + elif c <= low_threshold: + print("- Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") + print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") + + else: + print("- Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') + print("- Contacts 1, 2, 4 open and Contact 3 shut\n") + + +else: + print("Today is " + next_day.strftime('%m/%d/%Y')) + print("There will be a lot of solar production today") #wont be a lot of solar production + print() + print("Hour by hour breakdown: ") + + for t, c in sorted_list: #for the t, c in the sorted list + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") + print("- Contacts 1, 3, 4 open and Contact 2 shut\n") + + elif c <= low_threshold: + print("Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") + print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") + + else: + print("Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') + print("- Contacts 1, 2, 4 open and Contact 3 shut\n") \ No newline at end of file From e78fb30c1d3bf84e926db4748c79af911a9bc24e Mon Sep 17 00:00:00 2001 From: romilenecruz <77083923+romilenecruz@users.noreply.github.com> Date: Mon, 3 May 2021 18:23:17 -0700 Subject: [PATCH 08/12] GPIO Tester --- gpio_test.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 gpio_test.py diff --git a/gpio_test.py b/gpio_test.py new file mode 100644 index 0000000..7a7f63a --- /dev/null +++ b/gpio_test.py @@ -0,0 +1,40 @@ +import RPi.GPIO as GPIO +import time + +GPIO.setmode(GPIO.BCM) + +GPIO.setup(16, GPIO.OUT) +GPIO.setup(20, GPIO.OUT) +GPIO.setup(21, GPIO.OUT) +GPIO.setup(26, GPIO.OUT) +time.sleep(2) + +GPIO.output(16, GPIO.HIGH) +print("Pin 16 HIGH") +time.sleep(2) +GPIO.output(16, GPIO.LOW) +print("Pin 16 LOW") +time.sleep(2) + +GPIO.output(20, GPIO.HIGH) +print("Pin 20 HIGH") +time.sleep(2) +GPIO.output(20, GPIO.LOW) +print("Pin 20 LOW") +time.sleep(2) + +GPIO.output(21, GPIO.HIGH) +print("Pin 21 HIGH") +time.sleep(2) +GPIO.output(21, GPIO.LOW) +print("Pin 21 LOW") +time.sleep(2) + +GPIO.output(26, GPIO.HIGH) +print("Pin 26 HIGH") +time.sleep(2) +GPIO.output(26, GPIO.LOW) +print("Pin 26 LOW") +time.sleep(2) + +GPIO.cleanup() \ No newline at end of file From 0313619f14d0d10dcf86a605de6fd970905cb300 Mon Sep 17 00:00:00 2001 From: romilenecruz <77083923+romilenecruz@users.noreply.github.com> Date: Mon, 3 May 2021 18:41:26 -0700 Subject: [PATCH 09/12] Delete helios.py --- helios.py | 153 ------------------------------------------------------ 1 file changed, 153 deletions(-) delete mode 100644 helios.py diff --git a/helios.py b/helios.py deleted file mode 100644 index 57ade8a..0000000 --- a/helios.py +++ /dev/null @@ -1,153 +0,0 @@ -import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET -from array import * -import requests, zipfile, io, os, glob, pprint -from datetime import datetime, timedelta - -##################################################################################################################################### -######################################## Constucting the CAISO query URL ############################################################ -##################################################################################################################################### - -next_day = datetime.now() + timedelta(+1) #getting the date for the previous day -tomorrow = next_day.strftime('%Y%m%d') #storing the previous day in the variable 'yesterday' with the format YYYddMM (the format CAISO uses for the query) -path = "/home/pi/Code/" #where the file will be stored, will be different for the Raspbery Pi - -start_url = "http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&" #beginning of the URL, does not change - -start_date = "startdatetime=" #part of the URL that will tell CAISO what the start date is - -start_time = "T00:00-0000&" #start time, does not change - -end_date = "enddatetime=" #part of the URL that will tell CAISO what the end date is - -end_time = "T23:00-0000&" #end time, does not change - -end_url = "&version=1&market_run_id=DAM&node=STREAMVW_6_N001" #end of the URL, does not change unless you want to change the node - -CAISO_query = start_url + start_date + tomorrow + start_time + end_date + tomorrow + end_time + end_url #constucting the whole URL - -##################################################################################################################################### -######################################## Getting the .xml file from CAISO ########################################################### -##################################################################################################################################### - -r = requests.get(CAISO_query) #using python requests to access the URL, content stored in the variable 'r' -z = zipfile.ZipFile(io.BytesIO(r.content)) #get the .zip file from 'r' and store it in 'z' -z.extractall() #extract the contents of that .zip file which is an .xml file, using this method doesn't save the intial .zip file, just the .xml file that was inside - - -list_of_files = glob.glob(path + '*xml') #from our list of files in the path, only pull the files that end with .xml - -latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded - -##################################################################################################################################### -######################################## Pulling data from the weather API ########################################################## -##################################################################################################################################### - -s = requests.get('https://api.weather.gov/gridpoints/SGX/59,15/forecast') - -clouds = "Mostly Cloudy" -rain = "Chance Rain Showers" - -weather_day = [] -weather_type = [] - -x = 0 - -while x < 14: - - day = s.json()['properties']['periods'][x]['name'] - expected = s.json()['properties']['periods'][x]['shortForecast'] - weather_day.append(day) - weather_type.append(expected) - #print() - x += 1 - -zipped = list(zip(weather_day, weather_type)) - -##################################################################################################################################### -########################################### Pulling the correct data from the CAISO .xml file ####################################### -##################################################################################################################################### - -tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' -root = tree.getroot() #need this to access everything in the XML file - -temp_time = [] #temp array for the time aka the interval hour -time = [] #new arary for the time with only the time of the LMP - -temp_cost = [] #temp array for the cost aka the value -cost = [] #new array for the cost with only the cost of the LMP -sort_cost = [] #array for the sorted LMP price - -for elm in root.findall(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}REPORT_DATA"): #go into the REPORT_DATA - - if elm.find("{http://www.caiso.com/soa/OASISReport_v1.xsd}DATA_ITEM").text == "LMP_PRC": #find the tag called DATA_ITEM and if the text inside is LMP_PRC continue - - hour = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}INTERVAL_NUM").text #go into the INTERVAL_NUM to get the hour of the day - price = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}VALUE").text #find the price of energy - - temp_time.append(hour) #put hour into list - temp_cost.append(price) #put price into list - - -os.remove(latest_file) #delete the .xml file because we got the data from it already - -##################################################################################################################################### -############################################ Sorting the pulled data from CAISO ##################################################### -##################################################################################################################################### - -time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time -cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called cost -sort_cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called sort_list - -sort_cost.sort() #sort the sort_cost list - -high_threshold = sort_cost.pop(19) #set the high threshold to the sorted cost in the 19th position - -low_threshold = sort_cost.pop(4) #set the low threshold to the sorted cost in the 4th position - -combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list - -sorted_list = sorted(combined) #sort the combined list - -##################################################################################################################################### -############################################ Using all the data for the EMS algorithm ############################################### -##################################################################################################################################### - -if clouds or rain in zipped.pop(1): # if there are clouds or rain in the forecast - print("Today is " + next_day.strftime('%m/%d/%Y')) - print("There will not be a lot of solar production today.\n") #wont be a lot of solar production - print("Hour by hour breakdown: ") - - for t, c in sorted_list: #for the t, c in the sorted list - - if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment - print("- High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") - print("- Contacts 1, 3, 4 open and Contact 2 shut\n") - - elif c <= low_threshold: - print("- Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") - print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") - - else: - print("- Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') - print("- Contacts 1, 2, 4 open and Contact 3 shut\n") - - -else: - print("Today is " + next_day.strftime('%m/%d/%Y')) - print("There will be a lot of solar production today") #wont be a lot of solar production - print() - print("Hour by hour breakdown: ") - - for t, c in sorted_list: #for the t, c in the sorted list - - if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment - print("High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") - print("- Contacts 1, 3, 4 open and Contact 2 shut\n") - - elif c <= low_threshold: - print("Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") - print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") - - else: - print("Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') - print("- Contacts 1, 2, 4 open and Contact 3 shut\n") \ No newline at end of file From 4a2d099c94ab799aca34f098a7cd49c495e92cfb Mon Sep 17 00:00:00 2001 From: romilenecruz <77083923+romilenecruz@users.noreply.github.com> Date: Mon, 3 May 2021 18:41:50 -0700 Subject: [PATCH 10/12] Raspberry Pi code --- helios.py | 177 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 helios.py diff --git a/helios.py b/helios.py new file mode 100644 index 0000000..fc7d242 --- /dev/null +++ b/helios.py @@ -0,0 +1,177 @@ +import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET +from array import * +import requests, zipfile, io, os, glob, pprint +from datetime import datetime, timedelta +import RPi.GPIO as GPIO +from time import sleep + + +##################################################################################################################################### +######################################## Setting up Raspberry Pi GPiOS ############################################################## +##################################################################################################################################### + +GPIO.setmode(GPIO.BCM) +GPIO.setwarnings(False) +GPIO.setup(16, GPIO.OUT) +GPIO.setup(20, GPIO.OUT) +GPIO.setup(21, GPIO.OUT) +GPIO.setup(26, GPIO.OUT) + + + +##################################################################################################################################### +######################################## Constucting the CAISO query URL ############################################################ +##################################################################################################################################### + +next_day = datetime.now() + timedelta(+1) #getting the date for the previous day +tomorrow = next_day.strftime('%Y%m%d') #storing the previous day in the variable 'yesterday' with the format YYYddMM (the format CAISO uses for the query) +path = "/home/pi/Code/" #where the file will be stored, will be different for the Raspbery Pi + +start_url = "http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&" #beginning of the URL, does not change + +start_date = "startdatetime=" #part of the URL that will tell CAISO what the start date is + +start_time = "T00:00-0000&" #start time, does not change + +end_date = "enddatetime=" #part of the URL that will tell CAISO what the end date is + +end_time = "T23:00-0000&" #end time, does not change + +end_url = "&version=1&market_run_id=DAM&node=STREAMVW_6_N001" #end of the URL, does not change unless you want to change the node + +CAISO_query = start_url + start_date + tomorrow + start_time + end_date + tomorrow + end_time + end_url #constucting the whole URL + +##################################################################################################################################### +######################################## Getting the .xml file from CAISO ########################################################### +##################################################################################################################################### + +r = requests.get(CAISO_query) #using python requests to access the URL, content stored in the variable 'r' +z = zipfile.ZipFile(io.BytesIO(r.content)) #get the .zip file from 'r' and store it in 'z' +z.extractall() #extract the contents of that .zip file which is an .xml file, using this method doesn't save the intial .zip file, just the .xml file that was inside + + +list_of_files = glob.glob(path + '*xml') #from our list of files in the path, only pull the files that end with .xml + +latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded + +##################################################################################################################################### +######################################## Pulling data from the weather API ########################################################## +##################################################################################################################################### + +s = requests.get('https://api.weather.gov/gridpoints/SGX/59,15/forecast') + +clouds = "Mostly Cloudy" +rain = "Chance Rain Showers" + +weather_day = [] +weather_type = [] + +x = 0 + +while x < 14: + + day = s.json()['properties']['periods'][x]['name'] + expected = s.json()['properties']['periods'][x]['shortForecast'] + weather_day.append(day) + weather_type.append(expected) + #print() + x += 1 + +zipped = list(zip(weather_day, weather_type)) + +##################################################################################################################################### +########################################### Pulling the correct data from the CAISO .xml file ####################################### +##################################################################################################################################### + +tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' +root = tree.getroot() #need this to access everything in the XML file + +temp_time = [] #temp array for the time aka the interval hour +time = [] #new arary for the time with only the time of the LMP + +temp_cost = [] #temp array for the cost aka the value +cost = [] #new array for the cost with only the cost of the LMP +sort_cost = [] #array for the sorted LMP price + +for elm in root.findall(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}REPORT_DATA"): #go into the REPORT_DATA + + if elm.find("{http://www.caiso.com/soa/OASISReport_v1.xsd}DATA_ITEM").text == "LMP_PRC": #find the tag called DATA_ITEM and if the text inside is LMP_PRC continue + + hour = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}INTERVAL_NUM").text #go into the INTERVAL_NUM to get the hour of the day + price = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}VALUE").text #find the price of energy + + temp_time.append(hour) #put hour into list + temp_cost.append(price) #put price into list + + +os.remove(latest_file) #delete the .xml file because we got the data from it already + +##################################################################################################################################### +############################################ Sorting the pulled data from CAISO ##################################################### +##################################################################################################################################### + +time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time +cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called cost +sort_cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called sort_list + +sort_cost.sort() #sort the sort_cost list + +high_threshold = sort_cost.pop(19) #set the high threshold to the sorted cost in the 19th position + +low_threshold = sort_cost.pop(4) #set the low threshold to the sorted cost in the 4th position + +combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list + +sorted_list = sorted(combined) #sort the combined list + +##################################################################################################################################### +############################################ Using all the data for the EMS algorithm ############################################### +##################################################################################################################################### + +if clouds or rain in zipped.pop(1): # if there are clouds or rain in the forecast + print("Today is " + next_day.strftime('%m/%d/%Y')) + print("There will not be a lot of solar production today.\n") #wont be a lot of solar production + print("Hour by hour breakdown: ") + + + for t, c in sorted_list: #for the t, c in the sorted list + + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("- High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") + print("- Contacts 1, 3, 4 open and Contact 2 shut\n") + sleep(2) + + elif c <= low_threshold: + print("- Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") + print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") + sleep(2) + + else: + print("- Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') + print("- Contacts 1, 2, 4 open and Contact 3 shut\n") + sleep(2) + + +else: + print("Today is " + next_day.strftime('%m/%d/%Y')) + print("There will be a lot of solar production today") #wont be a lot of solar production + print() + print("Hour by hour breakdown: ") + + for t, c in sorted_list: #for the t, c in the sorted list + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") + print("- Contacts 1, 3, 4 open and Contact 2 shut\n") + sleep(2) + + elif c <= low_threshold: + print("Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") + print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") + sleep(2) + + else: + print("Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') + print("- Contacts 1, 2, 4 open and Contact 3 shut\n") + sleep(2) \ No newline at end of file From 342ca3c036cab8d7cefba01980e9661d71fa1a49 Mon Sep 17 00:00:00 2001 From: romilenecruz <77083923+romilenecruz@users.noreply.github.com> Date: Mon, 3 May 2021 18:46:41 -0700 Subject: [PATCH 11/12] Delete helios.py --- helios.py | 177 ------------------------------------------------------ 1 file changed, 177 deletions(-) delete mode 100644 helios.py diff --git a/helios.py b/helios.py deleted file mode 100644 index fc7d242..0000000 --- a/helios.py +++ /dev/null @@ -1,177 +0,0 @@ -import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET -from array import * -import requests, zipfile, io, os, glob, pprint -from datetime import datetime, timedelta -import RPi.GPIO as GPIO -from time import sleep - - -##################################################################################################################################### -######################################## Setting up Raspberry Pi GPiOS ############################################################## -##################################################################################################################################### - -GPIO.setmode(GPIO.BCM) -GPIO.setwarnings(False) -GPIO.setup(16, GPIO.OUT) -GPIO.setup(20, GPIO.OUT) -GPIO.setup(21, GPIO.OUT) -GPIO.setup(26, GPIO.OUT) - - - -##################################################################################################################################### -######################################## Constucting the CAISO query URL ############################################################ -##################################################################################################################################### - -next_day = datetime.now() + timedelta(+1) #getting the date for the previous day -tomorrow = next_day.strftime('%Y%m%d') #storing the previous day in the variable 'yesterday' with the format YYYddMM (the format CAISO uses for the query) -path = "/home/pi/Code/" #where the file will be stored, will be different for the Raspbery Pi - -start_url = "http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&" #beginning of the URL, does not change - -start_date = "startdatetime=" #part of the URL that will tell CAISO what the start date is - -start_time = "T00:00-0000&" #start time, does not change - -end_date = "enddatetime=" #part of the URL that will tell CAISO what the end date is - -end_time = "T23:00-0000&" #end time, does not change - -end_url = "&version=1&market_run_id=DAM&node=STREAMVW_6_N001" #end of the URL, does not change unless you want to change the node - -CAISO_query = start_url + start_date + tomorrow + start_time + end_date + tomorrow + end_time + end_url #constucting the whole URL - -##################################################################################################################################### -######################################## Getting the .xml file from CAISO ########################################################### -##################################################################################################################################### - -r = requests.get(CAISO_query) #using python requests to access the URL, content stored in the variable 'r' -z = zipfile.ZipFile(io.BytesIO(r.content)) #get the .zip file from 'r' and store it in 'z' -z.extractall() #extract the contents of that .zip file which is an .xml file, using this method doesn't save the intial .zip file, just the .xml file that was inside - - -list_of_files = glob.glob(path + '*xml') #from our list of files in the path, only pull the files that end with .xml - -latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded - -##################################################################################################################################### -######################################## Pulling data from the weather API ########################################################## -##################################################################################################################################### - -s = requests.get('https://api.weather.gov/gridpoints/SGX/59,15/forecast') - -clouds = "Mostly Cloudy" -rain = "Chance Rain Showers" - -weather_day = [] -weather_type = [] - -x = 0 - -while x < 14: - - day = s.json()['properties']['periods'][x]['name'] - expected = s.json()['properties']['periods'][x]['shortForecast'] - weather_day.append(day) - weather_type.append(expected) - #print() - x += 1 - -zipped = list(zip(weather_day, weather_type)) - -##################################################################################################################################### -########################################### Pulling the correct data from the CAISO .xml file ####################################### -##################################################################################################################################### - -tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' -root = tree.getroot() #need this to access everything in the XML file - -temp_time = [] #temp array for the time aka the interval hour -time = [] #new arary for the time with only the time of the LMP - -temp_cost = [] #temp array for the cost aka the value -cost = [] #new array for the cost with only the cost of the LMP -sort_cost = [] #array for the sorted LMP price - -for elm in root.findall(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}REPORT_DATA"): #go into the REPORT_DATA - - if elm.find("{http://www.caiso.com/soa/OASISReport_v1.xsd}DATA_ITEM").text == "LMP_PRC": #find the tag called DATA_ITEM and if the text inside is LMP_PRC continue - - hour = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}INTERVAL_NUM").text #go into the INTERVAL_NUM to get the hour of the day - price = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}VALUE").text #find the price of energy - - temp_time.append(hour) #put hour into list - temp_cost.append(price) #put price into list - - -os.remove(latest_file) #delete the .xml file because we got the data from it already - -##################################################################################################################################### -############################################ Sorting the pulled data from CAISO ##################################################### -##################################################################################################################################### - -time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time -cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called cost -sort_cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called sort_list - -sort_cost.sort() #sort the sort_cost list - -high_threshold = sort_cost.pop(19) #set the high threshold to the sorted cost in the 19th position - -low_threshold = sort_cost.pop(4) #set the low threshold to the sorted cost in the 4th position - -combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list - -sorted_list = sorted(combined) #sort the combined list - -##################################################################################################################################### -############################################ Using all the data for the EMS algorithm ############################################### -##################################################################################################################################### - -if clouds or rain in zipped.pop(1): # if there are clouds or rain in the forecast - print("Today is " + next_day.strftime('%m/%d/%Y')) - print("There will not be a lot of solar production today.\n") #wont be a lot of solar production - print("Hour by hour breakdown: ") - - - for t, c in sorted_list: #for the t, c in the sorted list - - - if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment - print("- High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") - print("- Contacts 1, 3, 4 open and Contact 2 shut\n") - sleep(2) - - elif c <= low_threshold: - print("- Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") - print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") - sleep(2) - - else: - print("- Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') - print("- Contacts 1, 2, 4 open and Contact 3 shut\n") - sleep(2) - - -else: - print("Today is " + next_day.strftime('%m/%d/%Y')) - print("There will be a lot of solar production today") #wont be a lot of solar production - print() - print("Hour by hour breakdown: ") - - for t, c in sorted_list: #for the t, c in the sorted list - - if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment - print("High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") - print("- Contacts 1, 3, 4 open and Contact 2 shut\n") - sleep(2) - - elif c <= low_threshold: - print("Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") - print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") - sleep(2) - - else: - print("Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') - print("- Contacts 1, 2, 4 open and Contact 3 shut\n") - sleep(2) \ No newline at end of file From a3097de26b84d2193d3ef06b8900710909a321b3 Mon Sep 17 00:00:00 2001 From: romilenecruz <77083923+romilenecruz@users.noreply.github.com> Date: Mon, 3 May 2021 18:47:01 -0700 Subject: [PATCH 12/12] Raspberry Pi Code --- helios.py | 203 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 helios.py diff --git a/helios.py b/helios.py new file mode 100644 index 0000000..c5be71d --- /dev/null +++ b/helios.py @@ -0,0 +1,203 @@ +import xml.etree.ElementTree as ET #importing the parsing tool ElementTree as the variable ET +from array import * +import requests, zipfile, io, os, glob, pprint +from datetime import datetime, timedelta +import RPi.GPIO as GPIO +from time import sleep + + +##################################################################################################################################### +######################################## Setting up Raspberry Pi GPiOS ############################################################## +##################################################################################################################################### + +GPIO.setmode(GPIO.BCM) +GPIO.setwarnings(False) +GPIO.setup(16, GPIO.OUT) +GPIO.setup(20, GPIO.OUT) +GPIO.setup(21, GPIO.OUT) +GPIO.setup(26, GPIO.OUT) + +##################################################################################################################################### +######################################## Constucting the CAISO query URL ############################################################ +##################################################################################################################################### + +next_day = datetime.now() + timedelta(+1) #getting the date for the previous day +tomorrow = next_day.strftime('%Y%m%d') #storing the previous day in the variable 'yesterday' with the format YYYddMM (the format CAISO uses for the query) +path = "/home/pi/Code/" #where the file will be stored, will be different for the Raspbery Pi + +start_url = "http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&" #beginning of the URL, does not change + +start_date = "startdatetime=" #part of the URL that will tell CAISO what the start date is + +start_time = "T00:00-0000&" #start time, does not change + +end_date = "enddatetime=" #part of the URL that will tell CAISO what the end date is + +end_time = "T23:00-0000&" #end time, does not change + +end_url = "&version=1&market_run_id=DAM&node=STREAMVW_6_N001" #end of the URL, does not change unless you want to change the node + +CAISO_query = start_url + start_date + tomorrow + start_time + end_date + tomorrow + end_time + end_url #constucting the whole URL + +##################################################################################################################################### +######################################## Getting the .xml file from CAISO ########################################################### +##################################################################################################################################### + +r = requests.get(CAISO_query) #using python requests to access the URL, content stored in the variable 'r' +z = zipfile.ZipFile(io.BytesIO(r.content)) #get the .zip file from 'r' and store it in 'z' +z.extractall() #extract the contents of that .zip file which is an .xml file, using this method doesn't save the intial .zip file, just the .xml file that was inside + + +list_of_files = glob.glob(path + '*xml') #from our list of files in the path, only pull the files that end with .xml + +latest_file = max(list_of_files, key=os.path.getctime) #pull that latest .xml file we downloaded + +##################################################################################################################################### +######################################## Pulling data from the weather API ########################################################## +##################################################################################################################################### + +s = requests.get('https://api.weather.gov/gridpoints/SGX/59,15/forecast') + +clouds = "Mostly Cloudy" +rain = "Chance Rain Showers" + +weather_day = [] +weather_type = [] + +x = 0 + +while x < 14: + + day = s.json()['properties']['periods'][x]['name'] + expected = s.json()['properties']['periods'][x]['shortForecast'] + weather_day.append(day) + weather_type.append(expected) + #print() + x += 1 + +zipped = list(zip(weather_day, weather_type)) + +##################################################################################################################################### +########################################### Pulling the correct data from the CAISO .xml file ####################################### +##################################################################################################################################### + +tree = ET.parse(latest_file) #pulling the .xml file and storing it in 'tree' +root = tree.getroot() #need this to access everything in the XML file + +temp_time = [] #temp array for the time aka the interval hour +time = [] #new arary for the time with only the time of the LMP + +temp_cost = [] #temp array for the cost aka the value +cost = [] #new array for the cost with only the cost of the LMP +sort_cost = [] #array for the sorted LMP price + +for elm in root.findall(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}REPORT_DATA"): #go into the REPORT_DATA + + if elm.find("{http://www.caiso.com/soa/OASISReport_v1.xsd}DATA_ITEM").text == "LMP_PRC": #find the tag called DATA_ITEM and if the text inside is LMP_PRC continue + + hour = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}INTERVAL_NUM").text #go into the INTERVAL_NUM to get the hour of the day + price = elm.find(".//{http://www.caiso.com/soa/OASISReport_v1.xsd}VALUE").text #find the price of energy + + temp_time.append(hour) #put hour into list + temp_cost.append(price) #put price into list + + +os.remove(latest_file) #delete the .xml file because we got the data from it already + +##################################################################################################################################### +############################################ Sorting the pulled data from CAISO ##################################################### +##################################################################################################################################### + +time = [int(x) for x in temp_time] #casting the time into an int whilst putting it into a new list called time +cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called cost +sort_cost = [float(x) for x in temp_cost] #casting the cost into a float whilst putting it into a new list called sort_list + +sort_cost.sort() #sort the sort_cost list + +high_threshold = sort_cost.pop(19) #set the high threshold to the sorted cost in the 19th position + +low_threshold = sort_cost.pop(4) #set the low threshold to the sorted cost in the 4th position + +combined = list(zip(time, cost)) #combine the time and cost lists into a 2D list + +sorted_list = sorted(combined) #sort the combined list + +##################################################################################################################################### +############################################ Using all the data for the EMS algorithm ############################################### +##################################################################################################################################### + +if clouds or rain in zipped.pop(1): # if there are clouds or rain in the forecast + print("Today is " + next_day.strftime('%m/%d/%Y')) + print("There will not be a lot of solar production today.\n") #wont be a lot of solar production + print("Hour by hour breakdown: ") + + + for t, c in sorted_list: #for the t, c in the sorted list + + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("- High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") + print("- Contacts 1, 3, 4 open and Contact 2 shut\n") + GPIO.output(26, GPIO.LOW) + GPIO.output(20, GPIO.LOW) + GPIO.output(21, GPIO.LOW) + GPIO.output(16, GPIO.HIGH) + sleep(2) + + elif c <= low_threshold: + print("- Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") + print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") + GPIO.output(16, GPIO.LOW) + GPIO.output(20, GPIO.LOW) + GPIO.output(26, GPIO.HIGH) + GPIO.output(21, GPIO.HIGH) + sleep(2) + + else: + print("- Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') + print("- Contacts 1, 2, 4 open and Contact 3 shut\n") + GPIO.output(21, GPIO.LOW) + GPIO.output(16, GPIO.LOW) + GPIO.output(21, GPIO.LOW) + GPIO.output(20, GPIO.HIGH) + sleep(2) + + GPIO.cleanup() + + +else: + print("Today is " + next_day.strftime('%m/%d/%Y')) + print("There will be a lot of solar production today") #wont be a lot of solar production + print() + print("Hour by hour breakdown: ") + + for t, c in sorted_list: #for the t, c in the sorted list + + if c >= high_threshold: #if c is greater than or equal to our threshold, then print out the statment + print("High threshold of", high_threshold, "passed at", f'Hour {t}', "use batteries to power load") + print("- Contacts 1, 3, 4 open and Contact 2 shut\n") + GPIO.output(26, GPIO.LOW) + GPIO.output(20, GPIO.LOW) + GPIO.output(21, GPIO.LOW) + GPIO.output(16, GPIO.HIGH) + sleep(2) + + elif c <= low_threshold: + print("Low threshold of", low_threshold, "not passed at", f'Hour {t}', "charge the batteries") + print("- Contacts 2, 3 open and Contacts 1, 4 shut\n") + GPIO.output(16, GPIO.LOW) + GPIO.output(20, GPIO.LOW) + GPIO.output(26, GPIO.HIGH) + GPIO.output(21, GPIO.HIGH) + sleep(2) + + else: + print("Solar panels generating energy if sun is available and grid is powering house at", f'Hour {t}') + print("- Contacts 1, 2, 4 open and Contact 3 shut\n") + GPIO.output(21, GPIO.LOW) + GPIO.output(16, GPIO.LOW) + GPIO.output(21, GPIO.LOW) + GPIO.output(20, GPIO.HIGH) + sleep(2) + + GPIO.cleanup() \ No newline at end of file