Gibts dafür eigentlich ein Tutorial? Oder wie greifst du die Daten ab?
Ich würde mir die Daten auch gerne in mein HA holen. Hab da im Forum auch schon ein paar Ansätze gefunden, aber leider keine vollständige Anleitung für Dummies.
Bei mir laufen InfluxDB und Grafana.
Schau mal das du das hinbekommst und wenn das geht, meld dich dann schicke ich dir gerne mein Dasboard.
Script: /home/pi/willipool/load_data.py
import requests
from influxdb import InfluxDBClient
from datetime import datetime
import pytz
# Funktion zum Parsen der Hashrate-Einheiten
def parse_hashrate(hashrate_str):
if "G" in hashrate_str:
return float(hashrate_str.replace("G", ""))
elif "T" in hashrate_str:
return float(hashrate_str.replace("T", "")) * 1000 # Umrechnung von Tera zu Giga
elif "M" in hashrate_str:
return float(hashrate_str.replace("M", "")) / 1000 # Umrechnung von Mega zu Giga
elif "P" in hashrate_str:
return float(hashrate_str.replace("P", "")) * 1000000 # Umrechnung von Peta zu Giga
else:
return 0.0
# URL und Datenbankinformationen
url = "https://solo.ckpool.org/users/bc1qeuupt2tgerfum8jclt8aklu9cdmzzkwml9lg7c"
database_name = "willipool"
influxdb_host = "localhost" # Ändere dies entsprechend deiner InfluxDB-Installation
# JSON von der URL abrufen
response = requests.get(url)
data = response.json()
# Zeitzone für die Umrechnung
local_tz = pytz.timezone("Europe/Berlin") # Ändere dies entsprechend deiner Zeitzone
# InfluxDB-Client initialisieren
client = InfluxDBClient(host=influxdb_host, port=8086, database=database_name)
# InfluxDB-Daten vorbereiten
influx_data = [
{
"measurement": "pool_stats",
"tags": {},
"time": datetime.utcfromtimestamp(data["lastshare"]).replace(tzinfo=pytz.utc).astimezone(local_tz),
"fields": {
"hashrate1m": parse_hashrate(data["hashrate1m"]),
"hashrate5m": parse_hashrate(data["hashrate5m"]),
"hashrate1hr": parse_hashrate(data["hashrate1hr"]),
"hashrate1d": parse_hashrate(data["hashrate1d"]),
"hashrate7d": parse_hashrate(data["hashrate7d"]),
"workers": data["workers"],
"shares": data["shares"],
"bestshare": data["bestshare"],
"bestever": data["bestever"],
},
}
]
# Worker-Daten hinzufügen
for worker in data["worker"]:
influx_data.append(
{
"measurement": "worker_stats",
"tags": {"workername": worker["workername"]},
"time": datetime.utcfromtimestamp(worker["lastshare"]).replace(tzinfo=pytz.utc).astimezone(local_tz),
"fields": {
"hashrate1m": parse_hashrate(worker["hashrate1m"]),
"hashrate5m": parse_hashrate(worker["hashrate5m"]),
"hashrate1hr": parse_hashrate(worker["hashrate1hr"]),
"hashrate1d": parse_hashrate(worker["hashrate1d"]),
"hashrate7d": parse_hashrate(worker["hashrate7d"]),
"lastshare": worker["lastshare"],
"shares": worker["shares"],
"bestshare": worker["bestshare"],
"bestever": worker["bestever"],
},
}
)
# Debugging-Ausgaben
#print("InfluxDB-Daten:")
#for data_point in influx_data:
# print(data_point)
# Daten in die InfluxDB schreiben
client.write_points(influx_data)
# Verbindung schließen
client.close()