import requests import io import logging import xarray as xr from datetime import date, timedelta import json with open('credentials.txt') as f: pwd = f.readlines() response = requests.post( "https://api.ombreapp.fr/api/v1.0/links/token/", data={"email": "seliakim@ombrea.fr", "password": pwd, "permission": True}, ) token = response.json()["access"] def get_air_sensors_data(plot_id, position,date_from = False, date_to= False, night=False): if not date_from: # Get Yesterday data by default if night : date_from = (date.today() - timedelta(2)).strftime("%Y-%m-%dT%H:%M:%S")[0:11] + "12:00:00" date_to = (date.today() - timedelta(1)).strftime("%Y-%m-%dT%H:%M:%S")[0:11] + "11:50:00" else : date_from = (date.today() - timedelta(1)).strftime("%Y-%m-%dT%H:%M:%S") date_to = date_from[0:11] + "23:50:00" headers = {'Authorization': f"Bearer {token}", "Accept": "application/x-netcdf"} # Get Climatic dataset as netcdf file response = requests.get( f"https://api.ombreapp.fr/api/v2.0/plots/{plot_id}/climatic_dataset/", params={ "start_time": date_from, "end_time": date_to, "position": position }, headers=headers ) if response.status_code == 200: # Open Dataset ds_out = xr.open_dataset(io.BytesIO(response.content)) else: logging.error(f"Error {response.status_code}: {response.content}") ds_out df_air = ds_out[['air_temperature','relative_humidity','photon_flux_density','wind_speed']].to_dataframe() return df_air def get_lat_lon(plot_id): headers = {'Authorization': f"Bearer {token}"} response = requests.get( "https://api.ombreapp.fr/api/v2.0/plots/", headers=headers ) plots = json.loads(response.content) plot = [plots[i] for i in range(len(plots)) if plots[i]['id'] == plot_id][0] return (plot['zone']['coordinates'][0][0][1],plot['zone']['coordinates'][0][0][0])