#BitaxeGamma
Explore tagged Tumblr posts
Text
Bitaxe Gamma: Datenzugriff von überall – ein Leitfaden
In diesem ausführlichen Beitrag zeige ich dir, wie du die Weboberfläche AxeOS deines Bitaxe Gamma von überall aus – egal, wo du dich befindest – erreichen kannst, solange du Zugang zum Internet hast. Alles, was du dazu brauchst, ist ein kostenloser DynDNS-Account und eine Portfreigabe in deinem Router. Keine Sorge, es klingt komplizierter, als es tatsächlich ist. Lies weiter und erfahre, wie du das in wenigen einfachen Schritten einrichtest. https://youtu.be/GI-bxnaSgno Disclaimer: Für diese Anleitung verwende ich die Fritz!Box 7590 mit dem aktuellen Fritz!OS 8.00 sowie den kostenfreien DynDNS-Service von no-ip.com. Es gibt natürlich auch viele andere kostenfreie DynDNS-Dienste, die ebenfalls geeignet sind. Ich habe mich jedoch für no-ip entschieden, da der Service einfach einzurichten ist und sich daher ideal für diesen Beitrag eignet. Bitte beachte, dass die Schritte bei anderen Routern oder DynDNS-Anbietern leicht abweichen können. Hinweis: Alle Daten, die in diesem Beitrag und im dazugehörigen YouTube-Video gezeigt werden, wie z. B. IP-Adressen, DynDNS-Einstellungen oder Portfreigaben, werden nach Fertigstellung des Beitrags vollständig gelöscht oder geändert. Dies dient der Sicherheit meines persönlichen Netzwerks. Ich empfehle dir ebenfalls, keine sensiblen Daten öffentlich zu teilen – insbesondere, weil AxeOS auf dem Bitaxe derzeit keine Benutzerauthentifizierung bietet. Um dein Netzwerk zu schützen, solltest du stets vorsichtig mit der Veröffentlichung solcher Informationen umgehen und zusätzliche Sicherheitsmaßnahmen wie VPNs in Betracht ziehen.
Einrichten eines Accounts bei no-ip.com
Im ersten Schritt legen wir uns einen Account bei no-ip.com ein. Wir haben hier die Möglichkeit über die Eingabe von Benutzername & Passwort oder wir wählen den einfachen Weg über ein vorhandenen Google Account. In meinem Fall nutze ich mein Google Account, da ich mir hier kein zusätzliches Passwort merken muss.
Anmelden / Registrieren an no-ip.com
Dashboard von no-ip.com Wenn wir erfolgreich angemeldet wurden, dann sehen wir zunächst ein leeres Dashboard. Im nächsten Schritt erstellen wir uns eine Subdomain, von welcher wir später aus unser AxeOS aufrufen möchten.
Erstellen einer Subdomain
Klicken wir im Dashboard zunächst auf "Hostname used", um anschließend einen Host einzurichten. Die angezeigte Meldung können wir zunächst erstmal vernachlässigen, diesen DDNSKey erstellen wir in einem späteren Schritt, da wir diesen für die Authentifizierung benötigen.
Einrichten einer Subdomain / eines Hosts
Konfiguration des neuen Hosts Wenn auf die Schaltfläche "Hostnamen erstellen" klicken, dann öffnet sich ein Dialog, in welchem wir diesen neuen Host konfigurieren können. Hostname: der Name der Subdomain Domain: die Adresse des Host IPv4Adresse: erkannte IP-Adresse des Clients (wird später aktualisiert) Die spätere Adresse des Bitaxe setzt sich aus dem Hostname sowie der Domain zusammen, in meinem Fall mybitaxe.webhop.me.
Aufbau der Adresse für das Gerät Wenn der Host erfolgreich angelegt wurde, dann wird dieser aufgeführt und man sieht zunächst die folgenden Daten: - Hostname - die Adresse des Gerätes - Last Update - letzte Aktualisierung der IP-Adresse - IP / Ziel - aktuell gesetzte IP-Adresse - DDNS Key - ein Link zum Erstellen eines DDNS Keys zur Authentifizierung
Konfiguration des neuen Hosts in no-ip.com
DDNS Key für die Authentifizierung anlegen
Wenn du auf den Link „Create DDNS Key“ (1) klickst, öffnet sich ein Dialogfenster. Dort kannst du mit einem weiteren Klick auf „Generate DDNS Key“ (2) deinen Schlüssel erstellen. Anschließend werden dir die benötigten Zugangsdaten angezeigt, die wir später in der Fritz!Box eintragen werden. Notiere dir unbedingt den Benutzernamen (3) und das Passwort (4) oder speichere diese in einer Textdatei. Beachte, dass das Passwort nach dem Schließen des Dialogs nicht erneut angezeigt wird!
Einrichten von DynDNS auf der Fritz!Box für den Bitaxe Gamma
Jeder Router erhält spätestens nach 24h eine neue IP-Adresse vom Provider. Über DynDNS können wir über einen selbst definierten Hostname auf den Bitaxe zugreifen und somit sind wir unabhängig von der IP-Adresse des Routers. Ermitteln der IP-Adresse des Bitaxe Gamma Damit wir auf die Weboberfläche AxeOS des Bitaxe zugreifen können, müssen wir die IP-Adresse sowie den Port freigeben. Die IP-Adresse kann man entweder aus dem Display des Bitaxe ablesen oder auch aus der Fritz!Box herausfinden.
Für die Ermittlung über die Fritz!Box navigieren wir über Heimnetz > Netzwerk und scrollen in der Tabelle zum Gerät.
Den Gerätenamen wiederum können wir über AxeOS ermitteln. Einrichten einer Portfreigabe in der Fritz!Box Das Webfrontent AxeOS arbeitet über den "normalen" HTTP Port 80, daher können wir dieses recht einfach über die Adresse http:// aufrufen. Für die Portfreigabe navigieren wir in der Fritz!Box über Internet → Freigaben.
Im geöffneten Fenster klicken wir auf die Schaltfläche „Gerät für Freigaben hinzufügen“ (2) und wählen anschließend das gewünschte Gerät (3) aus. In den ausgegrauten Feldern werden dabei automatisch die IPv4- und IPv6-Adressen des Geräts angezeigt. Danach scrollen wir nach unten und klicken auf die Schaltfläche „Neue Freigabe“, um den Port freizugeben. Als Anwendung wählen wir „HTTP-Server“ (5) aus. Dadurch werden die relevanten Felder automatisch mit dem Port 80 (6) vorbelegt. Abschließend schließen wir dieses Fenster mit einem Klick auf „OK“ (7).
Wichtiger Sicherheitshinweis: Das Öffnen von Port 80 (HTTP) ist äußerst gefährlich, da dieser Port unverschlüsselten Datenverkehr ermöglicht und ein beliebtes Ziel für Angreifer ist. Durch eine offene Verbindung über Port 80 wird dein Gerät potenziellen Angriffen wie Brute-Force-Attacken oder Exploits ausgesetzt. Ich rate dringend davon ab, diesen Port zu verwenden, insbesondere da AxeOS auf dem Bitaxe keine Benutzerauthentifizierung bietet. Testen der Portfreigabe Wenn die Portfreigabe eingerichtet wurde, können wir diese bereits testen, dazu benötigen wir die IP-Adresse der Fritz!Box welche wir unter Internet → Online-Monitor im Reiter Verbindungsdetails.
Diese IP-Adresse geben wir im Browser ein und sollten automatisch an den AxeOS vom Bitaxe weitergeleitet werden. Am einfachsten lässt sich dieses am Handy testen, indem die Verbindung zum lokalen WiFi Netzwerk getrennt wird.
Einrichten von DynDNS in der Fritz!Box
Abschließend richten wir nun DynDNS in der Fritz!Box ein, um später über diese auf den Bitaxe zugreifen zu können. Dazu benötigen wir die zuvor eingerichteten Zugangsdaten zu no-ip.com. Als Erstes navigieren wir über Internet → Freigaben zum Reiter "DynDNS". In meinem Fall werden bereits in den deaktivierten Feldern Daten angezeigt, da ich für die Vorbereitung des Beitrages das ganze ausprobiert habe.
Um die Daten einzugeben, aktivieren wir die Checkbox "DynDNS benutzen" und geben die Daten wie folgt ein: - Update-URL* - Domainname > DDNS Key Hostname - Benutzername > Username vom DDNS Key - Kennwort > Passwort vom DDNS Key
*Die Update-URL lautet wie folgt: https://dynupdate.no-ip.com/nic/update?hostname=&myip=, Diese enthält die Platzhalter für Domain und IP-Adresse, welche automatisch von der Fritz!Box ergänzt werden! Über die Schaltfläche "Übernehmen" werden die Daten gespeichert und eine Verbindung aufgebaut. Du solltest jetzt im Menü "Hostname" bei no-ip.com die aktualisierte IP-Adresse deiner Fritz!Box finden.
Testen der Freigabe des Bitaxe über DynDNS
Wenn alle Schritte ausgeführt wurden, dann solltest du jetzt über die Adresse auf deinem Handy auf dein AxeOS zugreifen können.
Zugriff auf AxeOS via Freigabe über DynDNS
Troubleshooting
Logging in der Fritz!Box Sollte die IP-Adresse nicht automatisch aktualisiert werden, so kann man in das Log der Fritz!Box schauen, welches unter System → Ereignisse zu finden ist.
Read the full article
0 notes
Text
API-Daten des Bitaxe Gamma mit ESP32 und E-Paper-Display visualisieren
Der Bitaxe Gamma v601 verfügt über eine leistungsstarke API-Schnittstelle, die es ermöglicht, aktuelle Daten wie Hashrate, Stromverbrauch und Temperatur als JSON abzurufen. In diesem Beitrag zeige ich dir Schritt für Schritt, wie du diese Daten abfragen und weiterverarbeiten kannst. https://youtu.be/sxCrJ0skcAQ Alle wichtigen Informationen zu den verfügbaren API-Endpunkten findest du in der offiziellen englischen Wiki-Seite. Dort wird beschrieben, wie du die Schnittstelle einrichtest und optimal nutzt. Am Ende des Beitrags wirst du wissen, wie du die Daten regelmäßig abrufst und beispielsweise auf einem E-Paper-Display anzeigen kannst.
Bitaxe Gamma v601 mit E-Paper-Display von Soldered Disclaimer: Für diesen Beitrag verwende ich den Bitaxe Gamma v601 von Bitcoinmerch.com sowie das 7-Zoll E-Paper-Display mit ESP32-Chip von Soldered. Beide Geräte wurden mir von den jeweiligen Unternehmen kostenfrei für Review-Zwecke zur Verfügung gestellt. Ich habe die Geräte bereits in separaten Beiträgen vorgestellt und ausführlich getestet. Da ich sie für dieses Projekt als ideal geeignet empfinde, zeige ich hier, wie sich ihre Funktionen optimal kombinieren lassen. Dieser Beitrag spiegelt ausschließlich meine persönliche Meinung wider, und es besteht keine Verpflichtung gegenüber den Herstellern.
Abrufen der Daten via Postman
Zunächst rufen wir die Daten einmal mittels Postman ab. Der Vorteil an Postman ist, dass die empfangenen Daten vernünftig angezeigt werden und man diese von dort auch speichern kann (sowie die gesendeten und empfangenen Daten). Postman ist ein kostenfreies Tool, mit welchem du HTTP & HTTPS Anfragen an Server senden und die Antwort auswerten kannst. Auf diesem Blog habe ich dieses Tool bereits öfters verwendet und verwende dieses ebenso auch in meinem Hauptberuf als Softwareentwickler für diverse Schnittstellen. Aufbau von Postman Postman dient wie erwähnt zum Absenden von HTTP / HTTPS Anfragen (1) dabei kannst du die Anfragemethode (2) frei wählen (GET, POST, PUT, ...). Zusätzlich kannst du noch Header Informationen und Daten für die Autorisierung mitgeben (dieses entfällt bei der Bitaxe API). Über die Schaltfläche "Send" (3) wird die URL inkl. aller Daten abgesendet und wir empfangen im Erfolgsfall die Antwort (5) der Datentyp wird über den übermittelten Content-Typ automatisch erkannt, kann aber auch umgestellt werden (4).
Postman - Bitaxe API Request
Entpoints der Bitaxe API
Die Bitaxe API bietet nachfolgende Endpoints zum Abrufen der Daten: - GET - Datenabfragen - http:///api/system/info - POST - Daten senden, Aktionen ausführen - http:///api/system/restart - http:///api/system/OTA - http:///api/system/OTAWWW - PATCH - Daten ändern - http:///api/system/ Möchtest du mehr über die HTTP Anfragemethoden erfahren, so empfehle ich dir die Seite https://wiki.selfhtml.org/wiki/HTTP/Anfragemethoden wo diese ausführlich behandelt und erläutert werden. Für diesen Beitrag benötigen wir lediglich die Daten, welche über http:///api/system/info abgerufen werden können. Wenn du in nachfolgenden Adressen und Bildern eine IP-Adresse wie 192.168.178.44 findest, so musst du diese gegen deine ersetzen.
E-Paper-Display mit ESP32
Für diesen Beitrag verwende ich das farbige E-Paper-Display mit ESP32 von Soldered welches ich dir bereits im Beitrag Erfahrungsbericht: Wie gut sind die neuen E-Paper Displays von Soldered? vorgestellt habe.
Warum ausgerechnet ein E-Paper-Display? Ein E-Paper-Display ist für dieses Projekt besonders geeignet, da es extrem stromsparend ist. Der entscheidende Vorteil liegt darin, dass das Display nur Energie benötigt, wenn es aktualisiert wird. Nach der Aktualisierung behält es das angezeigte Bild ohne weiteren Stromverbrauch, was es ideal für Anwendungen macht, bei denen die Daten nur in regelmäßigen Abständen aktualisiert werden müssen. Dank dieser Eigenschaft kann der ESP32-Mikrocontroller zwischen den Updates in den Deep-Sleep-Modus versetzt werden, wodurch der Energieverbrauch des gesamten Systems erheblich reduziert wird. Dies macht das Setup perfekt für den Einsatz in Umgebungen, in denen Effizienz und geringe Betriebskosten im Vordergrund stehen, wie beispielsweise bei der Anzeige von Miner-Daten in Echtzeit. Technische Daten des 6 Zoll 7-Farben E-Paper-Display von Soldered Nachfolgend die technischen Daten des verwendeten 6" - 7-Farben E-Paper-Display von Soldered: SchlüsselmerkmaleDetailsDisplaygröße5,85 Zoll (ca. 15 cm)Auflösung600 x 448 PixelFarbunterstützung7 FarbenBildaktualisierungTeilweise Updates, schnelle InhaltsveränderungMikrocontrollerESP32 mit eingebettetem WiFi und Bluetooth 4.0 (BLE)StromverbrauchSehr gering, 18 µA im Deep-Sleep-ModusStromversorgungLithium-Akku oder USB, integriertes LadegerätSpeicherkartenleserMicroSD KartenleserSchnittstellenZusätzliche GPIO Linien, easyC/Qwiic Kompatibilität, Unterstützung für I²C und SPISoftwareFertige Arduino Bibliothek (100 % kompatibel mit Adafruit GFX) und MicroPythonGehäuseoptionenOptional 3D-gedrucktes GehäuseAkkuoptionenOptional 1200mAh AkkuAbmessungen131,5 x 105,5 x 10 mmAbmessungen mit Gehäuse140 x 119,3 x 13,6 mm
Programmieren des E-Paper-Displays in der Arduino IDE
Um das E-Paper-Display mit dem ESP32 zu programmieren, nutzen wir die Arduino IDE. In diesem Abschnitt zeige ich dir, wie du Schritt für Schritt die Steuerung des Displays implementierst, die API-Daten des Bitaxe Gamma v 601 abrufst und diese visuell ansprechend darstellst.
Bitaxe - Dashboard Nachfolgend das fertige Projekt zum Download. Du musst lediglich in der Datei statics.h die IP-Adresse auf deinen Bitaxe anpassen! Programm: Dashboard eines Bitaxe auf einem E-Paper-DisplayHerunterladen kompletter Quellcode des Projektes Hier nun der komplette Quellcode für dieses Projekt. Was dir noch zusätzlich fehlt sind die Schriftarten welche du unter libslibrariesInkplateLibraryFonts findest. #include #include "HTTPClient.h" #include "Inkplate.h" #include "WiFi.h" #include "statics.h" #include "FreeMono9pt7b.h" #include "FreeMonoBoldOblique24pt7b.h" #include "FreeSansOblique9pt7b.h" #include "FreeSansOblique12pt7b.h" HTTPClient sender; WiFiClient wifiClient; Inkplate display; struct HashRate { double hashRate; String bestDiff; String bestSessionDiff; }; struct Power { double powerConsumption; double voltage; }; struct Temperature { double asicTemp; double voltageRegulatorTemp; }; struct PoolData { String stratumUrl; int stratumPort; String stratumUser; }; struct WiFiConnection { String ssid; String macAddr; String status; String hostname; }; struct AsicData { int frequenz; double coreVoltage; String model; int asicCount; }; struct BitaxeData { HashRate hashRate; Power power; Temperature temperature; PoolData poolData; WiFiConnection wiFiConnection; AsicData asicData; long timestamp; }; BitaxeData bitaxeData; long lastUpdate = -900000L; const long PAUSE = 900000; void setup() { Serial.begin(115200); WiFi.mode(WIFI_MODE_STA); WiFi.begin(WIFI_SSID, WIFI_PWD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.print("IP-Adresse lautet: "); Serial.println(WiFi.localIP()); display.begin(); //Einmaliges setzen der Uhrzeit / des Datums an der RTC. //Dieser Wert wird durch eine Pufferbatterie gehalten! display.rtcReset(); display.rtcSetTime(20, 13, 0); display.rtcSetDate(1, 16, 12, 2024); } String readRTC() { display.rtcGetRtcData(); int minutes = display.rtcGetMinute(); int hour = display.rtcGetHour(); int day = display.rtcGetDay(); int weekday = display.rtcGetWeekday(); int month = display.rtcGetMonth(); int year = display.rtcGetYear(); char buffer; sprintf(buffer, "d.d.%d - d:d Uhr", day, month, year, hour, minutes); return buffer; } void setText(String text, int coord_x, int coord_y, int color, int textSize) { display.setTextColor(color); display.setCursor(coord_x, coord_y); display.setTextSize(textSize); display.print(text); } void displayHashRate() { display.drawRect(5, 100, 135, 75, INKPLATE_GREEN); display.setFont(&FreeSansOblique12pt7b); setText("HashRate", 20, 120, INKPLATE_GREEN, 1); display.setFont(&FreeMono9pt7b); setText(((String)bitaxeData.hashRate.hashRate) + " GH/s", 10, 140, INKPLATE_BLACK, 1); setText(bitaxeData.hashRate.bestDiff, 10, 160, INKPLATE_BLACK, 1); } void displayPower() { int offsetX = 185; int offsetY = 100; display.drawRect(offsetX, offsetY, 135, 75, INKPLATE_ORANGE); display.setFont(&FreeSansOblique12pt7b); setText("Power", offsetX + 35, offsetY + 20, INKPLATE_ORANGE, 1); display.setFont(&FreeMono9pt7b); setText(((String)bitaxeData.power.powerConsumption) + " W", offsetX + 10, offsetY + 40, INKPLATE_BLACK, 1); double voltage = bitaxeData.power.voltage / 1000; setText(((String)voltage) + " V", offsetX + 10, offsetY + 60, INKPLATE_BLACK, 1); } void displayTemperature() { int offsetX = 370; int offsetY = 100; display.drawRect(offsetX, offsetY, 185, 75, INKPLATE_BLUE); display.setFont(&FreeSansOblique12pt7b); setText("Temperature", offsetX + 20, offsetY + 20, INKPLATE_BLUE, 1); display.setFont(&FreeMono9pt7b); setText("ASIC: " + ((String)bitaxeData.temperature.asicTemp) + " °C", offsetX + 10, offsetY + 40, INKPLATE_BLACK, 1); setText("VR: " + ((String)bitaxeData.temperature.voltageRegulatorTemp) + " °C", offsetX + 10, offsetY + 60, INKPLATE_BLACK, 1); } void displayAsicData() { int offsetX = 5; int offsetY = 185; display.drawRect(offsetX, offsetY, 185, 100, INKPLATE_BLACK); display.setFont(&FreeSansOblique12pt7b); setText("ASIC Data", offsetX + 20, offsetY + 20, INKPLATE_BLACK, 1); display.setFont(&FreeMono9pt7b); setText("Model: " + ((String)bitaxeData.asicData.model), offsetX + 10, offsetY + 40, INKPLATE_BLACK, 1); setText("Freq.: " + ((String)bitaxeData.asicData.frequenz) + " MHz", offsetX + 10, offsetY + 60, INKPLATE_BLACK, 1); double voltage = bitaxeData.asicData.coreVoltage / 1000; setText("Voltage: " + ((String)voltage) + " V", offsetX + 10, offsetY + 80, INKPLATE_BLACK, 1); } void displayWiFiConnection() { int offsetX = 205; int offsetY = 185; display.drawRect(offsetX, offsetY, 350, 100, INKPLATE_RED); display.setFont(&FreeSansOblique12pt7b); setText("WiFi Connection", offsetX + 100, offsetY + 20, INKPLATE_RED, 1); display.setFont(&FreeMono9pt7b); setText("Hostname: " + ((String)bitaxeData.wiFiConnection.hostname), offsetX + 10, offsetY + 40, INKPLATE_BLACK, 1); setText("SSID: " + ((String)bitaxeData.wiFiConnection.ssid), offsetX + 10, offsetY + 60, INKPLATE_BLACK, 1); setText("MAC-Address: " + (String)bitaxeData.wiFiConnection.macAddr, offsetX + 10, offsetY + 80, INKPLATE_BLACK, 1); } void loop() { long currentMillis = millis(); if (currentMillis > (lastUpdate + PAUSE)) { lastUpdate = currentMillis; display.clearDisplay(); display.display(); display.fillScreen(INKPLATE_WHITE); display.drawImage(LOGO_URL, 10, 0, true, false); display.setFont(&FreeMonoBoldOblique24pt7b); setText("Gamma v601", 195, 50, INKPLATE_BLACK, 1); display.setFont(&FreeSansOblique12pt7b); setText(readRTC(), 205, 80, INKPLATE_BLACK, 1); if ((WiFi.status() == WL_CONNECTED)) { WiFiClient client; HTTPClient http; String apiRequest = API_URL; Serial.println(apiRequest); http.begin(client, apiRequest.c_str()); int httpCode = http.GET(); String httpResponse = http.getString(); parseBitaxeJson(httpResponse); http.end(); } else { Serial.println("Keiner WiFi Verbindung!"); } displayHashRate(); displayPower(); displayTemperature(); displayAsicData(); displayWiFiConnection(); //einen Text in den Footerbereich schreiben display.setTextColor(INKPLATE_BLACK); display.setCursor(80, 440); display.setTextSize(1); display.setFont(&FreeMono9pt7b); display.print("Stefan Draeger - https://draeger-it.blog"); display.display(); } } void parseBitaxeJson(String httpResponse) { int contentLength = httpResponse.length() + 1; char json; httpResponse.toCharArray(json, contentLength); StaticJsonDocument doc; DeserializationError error = deserializeJson(doc, json); if (error) { Serial.print(F("deserializeJson() failed: ")); Serial.println(error.f_str()); return; } HashRate hashRate; hashRate.hashRate = (double)doc; String bestDiff = doc; hashRate.bestDiff = bestDiff; String bestSessionDiff = doc; hashRate.bestSessionDiff = bestSessionDiff; bitaxeData.hashRate = hashRate; Power power; power.powerConsumption = (double)doc; power.voltage = (double)doc; bitaxeData.power = power; Temperature temperature; temperature.asicTemp = (double)doc; temperature.voltageRegulatorTemp = (double)doc; bitaxeData.temperature = temperature; PoolData poolData; poolData.stratumPort = (int)doc; String stratumUrl = doc; poolData.stratumUrl = stratumUrl; String stratumUser = doc; poolData.stratumUser = stratumUser; bitaxeData.poolData = poolData; WiFiConnection wiFiConnection; String hostname = doc; wiFiConnection.hostname = hostname; String macAddr = doc; wiFiConnection.macAddr = macAddr; String ssid = doc; wiFiConnection.ssid = ssid; String status = doc; wiFiConnection.status = status; bitaxeData.wiFiConnection = wiFiConnection; AsicData asicData; asicData.frequenz = (int)doc; asicData.coreVoltage = (double)doc; String model = doc; asicData.model = model; asicData.asicCount = (int)doc; bitaxeData.asicData = asicData; } In der Datei statics.h. werden die Verbindungsdaten zum Router, die Adresse zum Bitaxe Logo und die API URL gespeichert. #define WIFI_SSID "abc" #define WIFI_PWD "1234567890" #define LOGO_URL "https://draeger-it.blog/wp-content/uploads/2024/12/bitaxe_logo_klein.bmp" #define API_URL "http://192.168.178.44/api/system/info" Das Programmieren umfasst mehrere wichtige Schritte: von der Einrichtung der benötigten Bibliotheken und Konfiguration des ESP32 über die Verarbeitung der API-Daten bis hin zur grafischen Darstellung auf dem E-Paper-Display. Mit der Arduino IDE kannst du den Code einfach anpassen und erweitern, um das Projekt deinen Anforderungen entsprechend zu optimieren. Wir gehen dabei strukturiert vor, sodass am Ende des Abschnitts dein Display die Miner-Daten korrekt anzeigt und regelmäßig aktualisiert. Schritt 1 - Installieren des Boardtreibers für das E-Paper-Display Damit wir das E-Paper-Display in der Arduino IDE programmieren können, müssen wir zunächst den Boardtreiber installieren. Zuvor müssen wir die nachfolgende URL zu den zusätzlichen Boardverwalter URLs hinzufügen. https://raw.githubusercontent.com/SolderedElectronics/Dasduino-Board-Definitions-for-Arduino-IDE/master/package_Dasduino_Boards_index.json Im Boardbverwalter (1) suchen wir nun nach Inkplate (2) und wählen am Eintrag "Inkplate Boards von Soldered" die Schaltfläche INSTALLIEREN (3).
Schritt 2 - Installieren der benötigten Bibliotheken Schritt 2.1 Inkplate für das E-Paper-Display Damit wir Text, Bilder und geometrische Figuren auf dem Display anzeigen lassen können, benötigen wir dazu noch eine Bibliothek. Diese können wir ebenso einfach wie den Boardtreiber installieren. Öffnen wir zunächst dne Bibliotheksverwalter (1) und suchen nach Inkplate (2) am Eintrag "InkplateLibrary von e-radionica.com" wählen wir die Schaltfläche INSTALLIEREN (3).
Schritt 2.2 ArduinoJSON für das parsen der API Daten vom Bitaxe Für das parsen der Daten im JSON-Format vom Bitaxe benötigen wir eine zusätzliche Bibliothek, hier verwende ich ArduinoJson. Read the full article
1 note
·
View note