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