From df53a2c6a2ae38f7bafbb46ba0a4d2913b029abd Mon Sep 17 00:00:00 2001 From: Adrian Bretsch Date: Fri, 8 May 2026 12:54:14 +0200 Subject: [PATCH] feat: Add Schrankbelegungsplan diagram and gRPC client for BOS-Miner - Created a new Draw.io diagram for the cabinet layout (03_Schrankbelegung.drawio) detailing the components and their arrangement. - Implemented a gRPC client in client.js to interact with the BOS-Miner, including a function to retrieve the tuner state with authorization. --- docs/diagrams/01_Verbindungsplan.drawio | 395 +++++++++++++++++++++++ docs/diagrams/02_Stromlaufplan.drawio | 407 ++++++++++++++++++++++++ docs/diagrams/03_Schrankbelegung.drawio | 335 +++++++++++++++++++ src/miners/client.js | 42 +++ 4 files changed, 1179 insertions(+) create mode 100644 docs/diagrams/01_Verbindungsplan.drawio create mode 100644 docs/diagrams/02_Stromlaufplan.drawio create mode 100644 docs/diagrams/03_Schrankbelegung.drawio create mode 100644 src/miners/client.js diff --git a/docs/diagrams/01_Verbindungsplan.drawio b/docs/diagrams/01_Verbindungsplan.drawio new file mode 100644 index 0000000..2a97168 --- /dev/null +++ b/docs/diagrams/01_Verbindungsplan.drawio @@ -0,0 +1,395 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/diagrams/02_Stromlaufplan.drawio b/docs/diagrams/02_Stromlaufplan.drawio new file mode 100644 index 0000000..c356fc0 --- /dev/null +++ b/docs/diagrams/02_Stromlaufplan.drawio @@ -0,0 +1,407 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/diagrams/03_Schrankbelegung.drawio b/docs/diagrams/03_Schrankbelegung.drawio new file mode 100644 index 0000000..f061f4c --- /dev/null +++ b/docs/diagrams/03_Schrankbelegung.drawio @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/miners/client.js b/src/miners/client.js new file mode 100644 index 0000000..64a7063 --- /dev/null +++ b/src/miners/client.js @@ -0,0 +1,42 @@ +const grpc = require('@grpc/grpc-js'); +const protoLoader = require('@grpc/proto-loader'); +const path = require('path'); + +// === KONFIGURATION === +const PROTO_PATH = path.join(__dirname, 'performance.proto'); +const GRPC_SERVER = '192.168.0.102:50051'; // IP-Adresse des BOS-Miners +const AUTH_TOKEN = 'aWzKUJcmbyBMiTbo'; // Optionaler Token + +// === Lade Proto-Datei === +const packageDefinition = protoLoader.loadSync(PROTO_PATH, { + keepCase: true, + longs: String, + enums: String, + defaults: true, + oneofs: true +}); + +const protoDescriptor = grpc.loadPackageDefinition(packageDefinition); +const performance = protoDescriptor.braiins.bos.v1; + +// === gRPC-Client erstellen === +const client = new performance.PerformanceService( + GRPC_SERVER, + grpc.credentials.createInsecure() // ggf. durch TLS ersetzen +); + +// === Beispiel-Funktion: GetTunerState aufrufen === +function getTunerState() { + const metadata = new grpc.Metadata(); + metadata.add('authorization', AUTH_TOKEN); + + client.GetTunerState({}, metadata, (err, response) => { + if (err) { + console.error('Fehler beim gRPC-Aufruf:', err); + } else { + console.log('Antwort von GetTunerState:', response); + } + }); +} + +getTunerState();