NEWS
Darstellung einer Pulsoximetriekurve
-
Gerät sollte ja Freitag da sein, dann schau ich mal was so geht.
Eingerichtet ist alles soweit an Tools, ESP ist mal mit Tasmota BLE geflasht,
mal sehen was da geht. Werde mal einen BLE nRF Sniffer besorgen das soll ja mit
Wireshark Plugin gehen.
Rund um den Key wären Infos gut, hast du da Bilder der IDE da ? -
Wäre geil, wenn jemand auch noch nen Tipp für mein eigentliches Thema hätte.
Ich glaube, dass die geladenen Seiten in Vis keine Timeouts zulassen. So dass man eine Animation einbauen kann und das livechart eben mit den vielen Werten in sekundenintervallen nicht zurechtkommt. -
@ralla66 Die App die ich meine ist kein Sniffer, es ist eine Client-Anwendung, die einfach sich als Bluetooth-Client mit dem BT-Gerät (Server) verbindet. Es handelt sich also um eine ganz normale Client-Server Verbindung. Daher kann man auch Daten zum Device hochladen.
-
@alexaxel sagte in Darstellung einer Pulsoximetriekurve:
Wäre geil, wenn jemand auch noch nen Tipp für mein eigentliches Thema hätte
vielleicht die Frage mal anders stellen. Mal zum Kern der Sache.
Du brauchst Livedata oder es reicht mit Verzögerung von Max 5 Sec auch.
Einige Devices haben ja auch gespeicherte Datensätze, diese werden von dir
noch nicht betrachtet ?Gegeben sind 8 x 1 Byte die Werte Darstellen, zB Puls usw.
Diese sollen in einer View ( Kurven ) dargestellt werden.Ansatz 1:
Du stellst die Daten in einem View mit einem html Widget da.
Das scheint wohl nicht zu klappen wie du oben schriebst, richtig ?
Dann welches Widget geht nicht, eventuell ist der html Code nicht ok.
Bei html wird wohl kaum einer helfen können da sehr anspruchsvoll.
Eher der schwierige Weg.Ansatz 2:
Du parkst die Daten in einer Datenbank zwischen, entweder einzeln oder als Array.
Die Daten in einen Datenpunkt zu schreiben sollte möglich sein.
Ich als Beginner von Kurven würde mit History und Flot beginnen.
Die Experten hier können dir da aber viel besser helfen.aus einer DB eine Kurve darstellen, siehst du da Möglichkeiten ?
-
@ralla66 sagte in Darstellung einer Pulsoximetriekurve:
aus einer DB eine Kurve darstellen, siehst du da Möglichkeiten ?
nur wenn die Daten über iob geloggt wurden.
Aber ich glaube dass diese Frage bereits mal behandelt wurde. Leider weiss ich nicht mit welcher DB und welchem Ergebnis
-
@ralla66 Ich bring es mal knapper auf den Punkt. Folgender HTML-Code / JS Code stellt einfach nur ein bewegendes Quadrat von links nach rechts dar.
Kopiert den Code als HTML-Webseite mal auf Deinen Rechner und lass ihn im Browser laufen. Kopiere den gleichen Code in ein HTML-Widget. Du wirst sehen es läuft nicht. Ich glaube, dass solche Schleifen oder Timeouts innerhalb von VIS nicht möglich sind.
Wenn das Problem gelöst ist, kann ich eine Kurve darstellen und es mit HTML basteln - das wäre nicht das Problem.History-Daten helfen leider nicht. Auch nicht in einer Datenbank schreiben und dann auslesen. Das ist ein schneller Datenstrom. Ihr kennt bestimmt die Patientenmonitore, wo immer die Kurve in Echtzeit dargestellt wird. Manche Pulsoximeter stellen auch so eine Kurve dar.
Hier der einfache Code von ChatGPT erstellt.
<canvas id="myCanvas" width="400" height="200"></canvas> <script> // JavaScript-Funktion, um ein blaues Quadrat zu zeichnen und zu animieren function animateSquare() { // Canvas-Element und 2D-Kontext erhalten var canvas = document.getElementById('myCanvas'); var ctx = canvas.getContext('2d'); // Quadrat-Parameter var squareSize = 50; var x = 0; // Startposition auf der x-Achse var y = canvas.height / 2 - squareSize / 2; // Zentriert auf der y-Achse var speed = 2; // Bewegungsgeschwindigkeit function drawSquare() { // Hintergrund zeichnen, um den vorherigen Frame zu löschen ctx.clearRect(0, 0, canvas.width, canvas.height); // Quadrat zeichnen ctx.fillStyle = 'blue'; ctx.fillRect(x, y, squareSize, squareSize); } function updatePosition() { // Neue Position berechnen x += speed; // Wenn das Quadrat das Ende des Canvas erreicht hat, zurücksetzen if (x > canvas.width) { x = -squareSize; } } function animate() { // Quadrat zeichnen und Position aktualisieren drawSquare(); updatePosition(); // Die animate-Funktion in einer Schleife aufrufen, um die Animation fortzusetzen requestAnimationFrame(animate); } // Animation starten animate(); } // Die Funktion aufrufen, wenn die Seite geladen ist window.onload = animateSquare; </script>
-
ok, html ist nicht mein Fachgebiet und fällt für mich weg.
Werde den Weg über Daten schaufeln probieren.
Hier sind ja Ansätze dazu.
Das werde ich mal mit Tasmota Scripting oder als Routine im ESP testen.
Also senden von 48 Byte Pulshöhe aus dem ESP pro Minute als 1 Datenpaket.
Darstellung werde ich mal mit Flot testen. Dann 240 Byte, 5 x Puls, Breite 1 min / Puls.Ähm was, wer, also Bilder :
Rohdata, 1 Puls für Flot, Breite Flot 1 min, Höhe nach Wert
0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 69 66 63 60 57 54 51 48 45 42 39 36 33 30 27 24 21 18 15 12 9 6 3 0
Aufgabe, erstellen einer Datei die Flot aufrufen kann. ( Ähnlich wie im History Adapter )
-
erster Test, ESP Wert per Mqtt in Datenpunkt geschrieben und History.
Darstellung per Flott Adapter.Scripting Tasmota zur Datenübertragung:
>D WTP=0 HZR=1 >S if HZR>0 then WTP=WTP+2 endif if WTP>60 then HZR=0 endif if HZR<1 then WTP=WTP-2 endif if WTP<2 then HZR=1 endif +>publish Pulswert/Wert %WTP% print Pulswert %0WTP% >W Pulswert {m} %0WTP%
-
update;
>D ;Pulsfrequenz ist PFR ;Blutsauerstoff ist SP02 ;Perfusionsindex ist PIX ;Hochzähler ist HZR ;Umschalter ist USR PFR=0 SP02=94 PIX=20 HZR=1 >S if HZR>0 then PFR=PFR+2 endif if PFR>60 then HZR=0 endif ;---------------------------- if HZR<1 then PFR=PFR-2 endif if PFR<2 then HZR=1 endif +>publish Pulsoximeter/Pulsfrequenz/Puls %PFR% +>publish Pulsoximeter/Blutsauerstoff/SP02 %SP02% +>publish Pulsoximeter/Perfusionsindex/PI %PIX% print Pulsfrequenz %0PFR% print Blutsauerstoff %0SP02% print Perfusionsindex %0PIX% >W Pulsfrequenz {m} %0PFR% Blutsauerstoff{m} %0SP02% Perfusionsindex {m} %0PIX% #
warten aufs Device --------------------------------------------------------------> -
kannst du bitte mal schauen was im Arduino Code nicht passt.
Bekomme den Code nicht kompiliert,E:\Arduino IDE\BLE_Alex1\BLE_Alex1.ino:231:14: note: suggested alternative: 'char' sTemp += sChar + ","; ^~~~~ char exit status 1 Compilation error: 'LED_BUILTIN' was not declared in this scope
Habe mal LED_BUILTIN auskommentiert und den Teil mit sChar gelöscht, dann im Monitor
17:45:37.922 -> Verbinde ... 17:45:38.035 -> Juhu Verbunden... 17:45:38.066 -> Hab folgenden service gefunden: 0xffe0 ... 17:45:38.415 -> Service entdeckt 17:45:38.447 -> Subscribing to simple key characteristic ... 17:45:38.484 -> Subscribed
-
Testobjekt:
Data:
ViaTom
Wellue BMP02
PC60FW
Mac : 00 00 00 00 00 99
ID: OxySmart 0153
Android APP: ViHealth, läuft nach AnmeldungPreis: 25 Ocken
Data vom Nordic nRF Logger
nRF Connect, 2023-12-29 OxySmart 0153 (00:00:00:00:00:99) I 18:53:18.086 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-20-1C-19-16-13-07 A 18:53:18.086 " U " received I 18:53:18.087 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-F0-03-03-03-F6 A 18:53:18.087 " U " received I 18:53:18.163 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-11-0E-0D-0E-15-E2 A 18:53:18.163 " U " received I 18:53:18.267 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-21-30-40-4E-57-7B A 18:53:18.267 " U !0@NW{" received I 18:53:18.356 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-5B-5A-57-52-CB-03 A 18:53:18.356 " U [ZWR " received I 18:53:18.461 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-43-3D-37-34-31-08 A 18:53:18.461 " U C=741" received I 18:53:18.477 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-06-21-02-00-00-00-45 A 18:53:18.477 " U! E" received I 18:53:18.568 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-2E-2C-29-26-23-A0 A 18:53:18.568 " U .,)&# " received I 18:53:18.672 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-1F-1B-18-15-12-CA A 18:53:18.672 " U " received I 18:53:18.777 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-0F-0E-0F-16-21-36 A 18:53:18.777 " U !6" received I 18:53:18.866 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-31-42-52-5D-63-CB A 18:53:18.866 " U 1BR]c " received I 18:53:18.881 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-08-01-60-6C-00-31-00-C0-10 A 18:53:18.881 " U`l 1 " received I 18:53:18.972 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-64-62-5D-57-CF-48 A 18:53:18.972 " U db]W H" received I 18:53:19.061 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-0F-07-02-48-41-3C-38-34-71 A 18:53:19.061 " U HA<84q" received I 18:53:19.077 Notification received from 6e400003-b5a3-f393-e0a9-e50e24dcca9e, value: (0x) AA-55-F0-03-03-03-F6 A 18:53:19.077 " U " received
Testobjekt Nr.2 :
Data:
Holfenry
JKS 50 CL
MAC: CB 31 33 32 45 55
ID: OximeterPreis: 20 Ocken
Data vom Nordic nRF Logger
nRF Connect, 2023-12-29 OXIMETER (CB:31:33:32:45:55) V 19:42:45.119 Connecting to CB:31:33:32:45:55... D 19:42:45.119 gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M) D 19:42:46.098 [Callback] Connection state changed with status: 0 and new state: CONNECTED (2) I 19:42:46.098 Connected to CB:31:33:32:45:55 D 19:42:46.098 [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED V 19:42:46.101 Discovering services... D 19:42:46.102 gatt.discoverServices() I 19:42:46.546 Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms) D 19:42:46.862 [Callback] Services discovered with status: 0 I 19:42:46.862 Services discovered V 19:42:46.867 Generic Access (0x1800) - Device Name [R W] (0x2A00) - Appearance [R W] (0x2A01) - Peripheral Preferred Connection Parameters [R] (0x2A04) - Resolvable Private Address Only [R] (0x2AC9) Generic Attribute (0x1801) - Service Changed [I R] (0x2A05) Client Characteristic Configuration (0x2902) Unknown Service (0000ffe0-0000-1000-8000-00805f9b34fb) - Unknown Characteristic [N R W WNR] (0000ffe1-0000-1000-8000-00805f9b34fb) Client Characteristic Configuration (0x2902) Characteristic User Description (0x2901) - Unknown Characteristic [N R W WNR] (0000ffe2-0000-1000-8000-00805f9b34fb) Client Characteristic Configuration (0x2902) Characteristic User Description (0x2901) D 19:42:46.867 gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true) D 19:42:46.869 gatt.setCharacteristicNotification(0000ffe1-0000-1000-8000-00805f9b34fb, true) D 19:42:46.871 gatt.setCharacteristicNotification(0000ffe2-0000-1000-8000-00805f9b34fb, true) I 19:42:46.950 Connection parameters updated (interval: 45.0ms, latency: 0, timeout: 5000ms) I 19:42:47.495 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00 A 19:42:47.495 "(0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00" received I 19:42:47.495 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F A 19:42:47.495 "(0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F" received I 19:42:47.672 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 7F-0E-07-07-07-15-2A-46-54-54-54-4D-46-3F-38-38-31-31-2A-23 A 19:42:47.672 "(0x) 7F-0E-07-07-07-15-2A-46-54-54-54-4D-46-3F-38-38-31-31-2A-23" received I 19:42:47.717 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 1C-15-0E-0E-07-00-00-0E-11 A 19:42:47.717 "(0x) 1C-15-0E-0E-07-00-00-0E-11" received I 19:42:47.718 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00 A 19:42:47.718 "(0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00" received I 19:42:47.719 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F A 19:42:47.719 "(0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F" received I 19:42:47.720 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 7F-0E-07-07-07-15-2A-46-54-54-54-4D-46-3F-38-38-31-31-2A-23 A 19:42:47.720 "(0x) 7F-0E-07-07-07-15-2A-46-54-54-54-4D-46-3F-38-38-31-31-2A-23" received I 19:42:47.720 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 1C-15-0E-0E-07-00-00-00-03 A 19:42:47.720 "(0x) 1C-15-0E-0E-07-00-00-00-03" received I 19:42:48.167 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00 A 19:42:48.167 "(0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00" received I 19:42:48.167 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F A 19:42:48.167 "(0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F" received I 19:42:48.212 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 7F-0E-31-4D-5B-5B-5B-54-4D-46-3F-38-38-31-2A-23-1C-15-0E-07 A 19:42:48.212 "(0x) 7F-0E-31-4D-5B-5B-5B-54-4D-46-3F-38-38-31-2A-23-1C-15-0E-07" received I 19:42:48.212 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-0E-23-46-5B-00-E3 A 19:42:48.212 "(0x) 00-00-00-0E-23-46-5B-00-E3" received I 19:42:48.257 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00 A 19:42:48.257 "(0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00" received I 19:42:48.257 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F A 19:42:48.257 "(0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F" received I 19:42:48.392 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 7F-0E-31-4D-5B-5B-5B-54-4D-46-3F-38-38-31-2A-23-1C-15-0E-07 A 19:42:48.392 "(0x) 7F-0E-31-4D-5B-5B-5B-54-4D-46-3F-38-38-31-2A-23-1C-15-0E-07" received I 19:42:48.392 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-0E-23-46-5B-62-45 A 19:42:48.392 "(0x) 00-00-00-0E-23-46-5B-62-45" received I 19:42:48.932 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00 A 19:42:48.932 "(0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00" received I 19:42:48.934 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F A 19:42:48.934 "(0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F" received I 19:42:48.934 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 7F-62-62-5B-4D-3F-3F-3F-38-31-2A-23-1C-15-0E-07-00-00-00-07 A 19:42:48.934 "(0x) 7F-62-62-5B-4D-3F-3F-3F-38-31-2A-23-1C-15-0E-07-00-00-00-07" received I 19:42:48.934 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 23-3F-4D-4D-4D-46-3F-62-76, "#?MMMF?bv" A 19:42:48.934 "(0x) 23-3F-4D-4D-4D-46-3F-62-76, "#?MMMF?bv"" received I 19:42:48.936 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00 A 19:42:48.936 "(0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00" received I 19:42:48.937 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F A 19:42:48.937 "(0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F" received I 19:42:48.937 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 7F-62-62-5B-4D-3F-3F-3F-38-31-2A-23-1C-15-0E-07-00-00-00-07 A 19:42:48.937 "(0x) 7F-62-62-5B-4D-3F-3F-3F-38-31-2A-23-1C-15-0E-07-00-00-00-07" received I 19:42:48.937 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 23-3F-4D-4D-4D-46-3F-38-4C, "#?MMMF?8L" A 19:42:48.937 "(0x) 23-3F-4D-4D-4D-46-3F-38-4C, "#?MMMF?8L"" received I 19:42:49.607 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00 A 19:42:49.607 "(0x) FF-44-01-00-60-63-7C-02-17-00-00-00-00-00-00-00-00-00-00-00" received
-
Datenanalyse Holfenry JKS 50 CL:
Per ffe1 werden 68 Byte gesendet, für die Pulswertekurve fortlaufend nicht statisch.
( Byte 41 bis 67 )
Rot und Blau markiert absteigende / aufsteigende Pulskurve
Pakete a
( 20 Byte / 20 Byte/ 20 Byte / 8 Byte )
SPo2 sollte Byte 5 sein, PI evtl. Byte 6 und 7FF-44-01-00-5E-62-4E-04-17-00-00-00-00-00-00-00-00-00-00-00 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F 7F-15-0E-15-23-46-62-69-70-70-69-62-5B-54-4D-4D-4D-46-46-3F 38-31-2A-2A-23-23-23-2A-B3 FF-44-01-00-5E-62-4E-04-17-00-00-00-00-00-00-00-00-00-00-00 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F 7F-15-0E-15-23-46-62-69-70-70-69-62-5B-54-4D-4D-4D-46-46-3F 38-31-2A-2A-23-23-23-15-9E ---------------------------------------------------------------------------------- FF-44-01-00-5E-62-4E-04-17-00-00-00-00-00-00-00-00-00-00-00 Spo2 ( 5A – 64 hex ) 90 -100 dec Fest 94 Fest PI 0 – 14 hex ( 20 dec ) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F 7F-15-0E-15-23-46-62-69-70-70-69-62-5B-54-4D-4D-4D-46-46-3F 8 Byte / 11 Byte 38-31-2A-2A-23-23-23-2A-B3 8 Byte ---------------------------------------------------------------------------------- Paket 1 I 19:44:26.496 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-5E-62-4E-04-17-00-00-00-00-00-00-00-00-00-00-00 A 19:44:26.496 "(0x) FF-44-01-00-5E-62-4E-04-17-00-00-00-00-00-00-00-00-00-00-00" received I 19:44:26.496 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F A 19:44:26.496 "(0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F" received I 19:44:26.541 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 7F-15-0E-15-23-46-62-69-70-70-69-62-5B-54-4D-4D-4D-46-46-3F A 19:44:26.541 "(0x) 7F-15-0E-15-23-46-62-69-70-70-69-62-5B-54-4D-4D-4D-46-46-3F" received I 19:44:26.542 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 38-31-2A-2A-23-23-23-15-9E A 19:44:26.542 "(0x) 38-31-2A-2A-23-23-23-15-9E" received Paket 2 I 19:44:26.585 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) FF-44-01-00-5E-62-4E-04-17-00-00-00-00-00-00-00-00-00-00-00 A 19:44:26.585 "(0x) FF-44-01-00-5E-62-4E-04-17-00-00-00-00-00-00-00-00-00-00-00" received I 19:44:26.586 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F A 19:44:26.586 "(0x) 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-7F-7F" received I 19:44:26.586 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 7F-15-0E-15-23-46-62-69-70-70-69-62-5B-54-4D-4D-4D-46-46-3F A 19:44:26.586 "(0x) 7F-15-0E-15-23-46-62-69-70-70-69-62-5B-54-4D-4D-4D-46-46-3F" received I 19:44:26.586 Notification received from 0000ffe1-0000-1000-8000-00805f9b34fb, value: (0x) 38-31-2A-2A-23-23-23-2A-B3 A 19:44:26.586 "(0x) 38-31-2A-2A-23-23-23-2A-B3" received
-
@ralla66 Sorry, war ein paar Tage offline. Das sieht doch richtig gut aus! Dann kannst Du auch mehrere Daten gleich nutzen, Puls, SPO2 und Pulskurve
-
@ralla66 Ich habe es mittlerweile hinbekommen. Ich nutze doch den History Adapter und ein kleines JS Script, das im Hintergrund bei aktualisierung des Arrays, kommend vom MQTT Client, das Array Byte für Byte durch gelesen wird und der Inhalt immer auf einem DP Typ Nummer aktualisiert wird. Das Das Script zu schnell läuft habe ich eine Pausen-Variable eingebaut. Die Funktion Settimeout funktioniert in den Script-Adapter. (leider nicht im HTML-Widget, aber egal). So mit dem DP habe ich quasi einen Wert der so in ca. 20ms immer aktualisiert wird. Auf diesen DP schaut das History-Chart. Weil der JS-Adapter das nicht so mag, wenn 1000 mal pro Minute ein DP aktualisiert wird, habe ich den Warnwert einfach im Adapter gefunden und auf 2000 hochgestellt.. hehehe läuft alles stabil. (Pi4). Du kannst mit dem History-Widget auch schön die Kurve stauchen und strecken, so dass es wie im Original aussieht.
Das weiße kleine Ding da oben ist die Echtzeit-Pulskurve und wird schnell gezeichnet. So 2 Wellen pro Sekunde ungefähr. Die beiden großen Charts hab ich mich Echarts gemacht. Die Daten schreibe ich historisch auch auf einem separaten SQL-Server mit dem SQL Adapter. Letztens war der Arzt da und will auch so'n kranken Scheiß -
@ralla66 Bei meiner ESP Lolin32 Library scheint die Konstante schon deklariert zu sein. Steht halt für die Nummer 1. Kannst einfach mit 1 ersetzen. Aber du kannst auch den ganzen Mist mit der LED an und aus-Sache löschen. Ich hab es ja schön kommentiert, wo die LEDs eingeschaltet und ausgeschaltet werden. Ich guck da heute auch nicht mehr drauf. Ansonsten wenn Du sie haben möchtest, probiere es mal mit der 1 oder lass mal ein BeispielCode namens "Blink" auf dem Teil laufen, dann kannst du den Code rauskopieren, wenn das dort funktioniert.
-
-
@ralla66 läuft Deiner jetzt auch ? Ich hätte noch gerne den weißen Hintergrund geändert. Aber leider geht das wohl nicht. Hintergrund beim History-Chart ist eine andere Fläche drumherrum.
-
@alexaxel sagte in Darstellung einer Pulsoximetriekurve:
Hintergrund beim History-Chart
was ist das?
Hintergrund geht immer
-
Arduino Code behersche ich nicht.
Eigentlich benötigen wir für die Pulskurve nur Byte 41 bis 67.
Led ausklammern klappt ja, meckert aber bei sChar und iWert.
Daran haperts halt.
Sonst soweit ok. Mqtt klappt, Datenpunkte werden angelegt. -
@ralla66 Du ich hab da noch einen Mix aus 2 Versionen im Code, ist mir gar nicht aufgefallen.
Du kannst diesen ganzen Teil auch löschen, weil ich darüber schon das ganze Array auf einmal via mqtt gesendet habe.
String sTemp; int iWert; for (int i = 0; i < length; i++) { //dbSerialPrint((char)message[i]); iWert = int(data[i],DEC); sTemp += sChar + ","; } mqttClient.print(sTemp);