create testbed file
This commit is contained in:
84
testbed.py
Normal file
84
testbed.py
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
from farmOS import farmOS
|
||||||
|
|
||||||
|
hostname = "farmos.wagframe.duckdns.org"
|
||||||
|
username = "matze"
|
||||||
|
password = "m6ChEHx5gMqgctr8dpb3fhATZbQS8hv4"
|
||||||
|
|
||||||
|
# Create the client.
|
||||||
|
farm_client = farmOS(
|
||||||
|
hostname=hostname,
|
||||||
|
client_id = "jupyter", # Optional. The default oauth client_id "farm" is enabled on all farmOS servers.
|
||||||
|
)
|
||||||
|
import json
|
||||||
|
# Authorize the client, save the token.
|
||||||
|
# A scope can be specified, but will default to the default scope set when initializing the client.
|
||||||
|
token = farm_client.authorize(username, password)
|
||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
|
||||||
|
def get_related_logs_of_type(asset, type):
|
||||||
|
response = farm_client.resource.get('log', type)
|
||||||
|
ret = []
|
||||||
|
for log in response['data']:
|
||||||
|
assets = log['relationships']['asset']['data']
|
||||||
|
for asset in assets:
|
||||||
|
if asset['id'] == id:
|
||||||
|
ret.append(log)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def get_related_quantities_of_measure(log, measure):
|
||||||
|
quantities = log['relationships']['quantity']['data']
|
||||||
|
ret = []
|
||||||
|
for quant_ref in quantities:
|
||||||
|
quant_id = quant_ref['id']
|
||||||
|
quant = farm_client.resource.get_id('quantity', 'standard', quant_id)
|
||||||
|
if quant['data']['attributes']['measure'] == measure:
|
||||||
|
ret.append(quant)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
# Beispiel für eine API-Abfrage mit farm_client
|
||||||
|
response = farm_client.resource.get('log', 'harvest')
|
||||||
|
|
||||||
|
logs = []
|
||||||
|
for item in response['data']:
|
||||||
|
# plant name und fläche holen
|
||||||
|
assets = item['relationships']['asset']['data']
|
||||||
|
plant_name = ''
|
||||||
|
plant_area = 0.0
|
||||||
|
for asset in assets:
|
||||||
|
if asset['type'] == 'asset--plant':
|
||||||
|
plant_id = asset['id']
|
||||||
|
seedings = get_related_logs_of_type(plant_id, 'seeding')
|
||||||
|
for seeding in seedings:
|
||||||
|
area_quants = get_related_quantities_of_measure(seeding, 'area')
|
||||||
|
for area_quant in area_quants:
|
||||||
|
plant_area += float(area_quant['data']['attributes']['value']['decimal'])
|
||||||
|
plant = farm_client.asset.get_id('plant', plant_id)
|
||||||
|
plant_name = plant['data']['attributes']['name']
|
||||||
|
|
||||||
|
|
||||||
|
# log aufbauen
|
||||||
|
log = {
|
||||||
|
'ID': item['id'],
|
||||||
|
'Name': item['attributes']['name'],
|
||||||
|
'Timestamp': item['attributes']['timestamp'],
|
||||||
|
'Plant': plant_name,
|
||||||
|
'Area': plant_area,
|
||||||
|
'Status': item['attributes']['status'],
|
||||||
|
'Revision Created': item['attributes']['revision_created'],
|
||||||
|
'Link': item['links']['self']['href']
|
||||||
|
}
|
||||||
|
logs.append(log)
|
||||||
|
|
||||||
|
# Erstelle ein DataFrame aus den Harvest Logs
|
||||||
|
df = pd.DataFrame(logs)
|
||||||
|
|
||||||
|
# Zeige die Tabelle an
|
||||||
|
print(df)
|
||||||
|
|
||||||
|
# Speichere die Tabelle in einer CSV-Datei
|
||||||
|
csv_file_path = 'resources/harvest_logs.csv'
|
||||||
|
df.to_csv(csv_file_path, index=False)
|
||||||
|
|
||||||
|
print(f"Die Tabelle wurde erfolgreich in der Datei '{csv_file_path}' gespeichert.")
|
||||||
Reference in New Issue
Block a user