Initial commit
This commit is contained in:
commit
3fdaf913e3
6
IneraScraper.conf
Normal file
6
IneraScraper.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[General]
|
||||||
|
endpoint = https://portail.inera.ch/data/getData.php
|
||||||
|
|
||||||
|
[Cookies]
|
||||||
|
# Add your cookie 'selfcare' cookie here
|
||||||
|
auth =
|
||||||
71
main.py
Normal file
71
main.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import configparser
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
def get_timestamps(hours_ago=1):
|
||||||
|
"""
|
||||||
|
Calculate debut and fin timestamps for the specified number of hours ago.
|
||||||
|
Returns timestamps in milliseconds as strings.
|
||||||
|
fin = current time
|
||||||
|
debut = current time - hours_ago
|
||||||
|
"""
|
||||||
|
end_time = datetime.now()
|
||||||
|
start_time = end_time - timedelta(hours=hours_ago)
|
||||||
|
|
||||||
|
# Convert to milliseconds timestamp strings
|
||||||
|
debut = str(int(start_time.timestamp() * 1000))
|
||||||
|
fin = str(int(end_time.timestamp() * 1000))
|
||||||
|
|
||||||
|
return debut, fin
|
||||||
|
|
||||||
|
def read_latest_data(jsonData):
|
||||||
|
"""
|
||||||
|
Gets the latest data points from the json
|
||||||
|
"""
|
||||||
|
return jsonData['dataProvider'][-1] # Get the last entry
|
||||||
|
|
||||||
|
def get_data(time_range=1):
|
||||||
|
"""
|
||||||
|
Get the data
|
||||||
|
time_range is used to determine the time range from which data is being requested. The time range is the current time - time_range
|
||||||
|
"""
|
||||||
|
url = config['General']['endpoint']
|
||||||
|
|
||||||
|
cookies = {
|
||||||
|
"selfcare": config['Cookies']['auth']
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get timestamps for last 24 hours
|
||||||
|
debut, fin = get_timestamps(time_range)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"data": "courbeDeCharge",
|
||||||
|
"communaute": "5213",
|
||||||
|
"appartement": "4783",
|
||||||
|
"debut": debut,
|
||||||
|
"fin": fin
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.post(
|
||||||
|
url,
|
||||||
|
cookies=cookies,
|
||||||
|
data=data,
|
||||||
|
verify=True # SSL verification
|
||||||
|
)
|
||||||
|
|
||||||
|
# Get the latest value from the response
|
||||||
|
response_data = response.json()
|
||||||
|
|
||||||
|
return response_data
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
# Read configuration
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read('IneraScraper.conf')
|
||||||
|
|
||||||
|
# Get data and latest value
|
||||||
|
latest = read_latest_data(get_data())
|
||||||
|
|
||||||
|
print(f"Latest reading - Time: {latest['date']}, PV: {latest['pv']}kW, Grid: {latest['grd']}kW, Total: {latest['total']}kW, Autoconso: {latest['autoconso']}%")
|
||||||
Loading…
x
Reference in New Issue
Block a user