Post
Topic
Board Mining (Deutsch)
Re: Solo Pool Miner Race
by
willi9974
on 15/04/2024, 08:22:51 UTC
Da ich die daten aber historisiere, hier mal ein Blick auf deinen Miner in meinem Graphana Dashboard

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.
Ne Anleitung hab ich nicht. Aber hier mal das Crontab Skrpt das mir die Daten jede Minute in meine Influx Datenbank lädt.
Schau mal das du das hinbekommst und wenn das geht, meld dich dann schicke ich dir gerne mein Dasboard.

Code:
cat /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()