FTLab RadonEye RD200

Begonnen von DL3HRT, 25. Februar 2024, 10:54

⏪ vorheriges - nächstes ⏩

silfox

#30
Ich besitze mehrere RD200.
Ein Gerät habe ich umgebaut, den Mikrokontroller entfernt und lese den eigentlichen Detektor über die serielle Schnittstelle aus.
Die anderen lesen ich via Bluetooth über die crontab alle 10min mit Hilfe eines expect-Skripts auf einem RaspberryPi aus.

Man muss in dem unten stehenden Skript "1C:9D:C2:51:7F:5A" durch die Kennung des eigenen RD200 ersetzen.
Diese kann man erfragen mittels: sudo hcitool -i hci0 lescan


Das expect-Skript:
#!/usr/bin/expect -f
#
## remove output from STDOUT, except for puts
log_user 0
#
set timeout 4
#
spawn gatttool -b 1C:9D:C2:51:7F:5A -I
#
match_max 100000
#
expect "> "
#
while (1) {
  send -- "connect\r"
  expect "Connection successful"  break
  sleep 1
# puts "next attempt\n"
}
#
send -- "mtu 507\r"
expect "MTU was exchanged successfully" {

    sleep 1
    send -- "char-write-cmd 0x002a 50\r"

    set systemTime [clock seconds]
    puts "Time [clock format $systemTime -format %Y-%m-%dT%H:%M:%S]"
    set message1 ""

    expect {
            -re "Notification handle = 0x002c value: (.+\n)" {
              set message1 ${message1}$expect_out(1,string)
              exp_continue
        }
      }
      puts "$message1"
  }

send -- "exit\r"
#
expect eof

Dsl71

wow, sooo einfach geht das? Was ist da der output?

Ich kämpf ja mit meim esp32 ordentlich rum... SD Interface war nicht stabil, jetzt asynchroner Webserver schwächelt manchmal, JTAG debugger ist bestellt. Aber gut, ich will ja auch was lernen.

silfox

Der Output sieht so aus:

Time 2024-04-20T08:01:17
50 0a 0a 00 06 00 07 00 01 00 00 00 ^M

Time 2024-04-20T08:06:11
50 0a 08 00 07 00 07 00 01 00 01 00 ^M

Ich schreibe diesen Text in eine Datei und kopiere sie dann auf den Rechner, auf dem die Datenbank liegt.
Dort wandle ich die Datei mit einem C-Programm wie folgt um
(wichtig ist nur die Zeile mit der Hex-Umwandlung):

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* main  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
int main(int argc, char *argv[])
{
  int      n;
  FILE    *ifp;
  char     cstop[30];
  char     its [256];

  char     s1 [80],s2[80],s3[80];
  int      x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11;


  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  char ifn[256];

  if (argc>1)
    strcpy(ifn,argv[1]);
  else
    sprintf(ifn,"rd200.log"); // so heisst die Datei mit dem Log-Output

  if ((ifp=fopen(ifn,"r"))==NULL)
  {
    fprintf(stderr,"unable to open %s\n",ifn);
    exit(1);
  }

  while (fgets(its,sizeof(its),ifp)) // read all lines
  {
    n=sscanf(its,"%s%s%s",s1,s2,s3);

    if (n<2) continue;

    if (strncasecmp(s1,"Time",4)==0) // read line with time
    {
      strncpy(cstop,s2,20);          // and remember date
    }
    else                             // read the hex data
    {
      n=sscanf(its,
              "%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",
                         &x0,&x1,&x2,&x3,&x4,&x5,&x6,&x7,&x8,&x9,&x10,&x11);

      double v1     = x1 *256 + x0;
      double rn_val = x3 *256 + x2;
      double v2     = x5 *256 + x4;
      double v3     = x7 *256 + x6;
      double v4     = x9 *256 + x8;
      double v5     = x11*256 + x10;

      // insup(cstop,rn_val); // insert in database at server

      fprintf(stderr,"n=%d date=%s rn=%7.0lf %.0lf %.0lf %.0lf %.0lf %.0lf\n",
                                               n,cstop,rn_val,v1,v2,v3,v4,v5);
    }
  }
  fclose(ifp);

  exit(0);
}

Dsl71

versteh, coole Lösung

Dsl71

Sodale, nach geraumer Zeit: ein kleines Update für die Radon Eye V3 Geräte und die ESP32 boards. (BugFix):

Siehe auch: "Darf es etwas Radon sein? Der Radon-Mess-Thread" #199





Dsl71

Sodale, nachdem i fast aufgeben wollte, ein kleiner Zwischenbericht:

Also ALLE, wirklich ALLE asynchronen Webserver Bibliotheken für den ESP 32 sind instabil. Und ich habe die fünf als am stabilsten geltenden getestet.

Besonders schlimm ist es mit den asynchronen TCP Events. Falls da wer was stabileres als:

<code>
https://github.com/esphome/ESPAsyncWebServer.git
https://github.com/esphome/AsyncTCP.git
</code>

kennt,bitte melden. Wobei ich auf AsyncTCP mittlerweile verzichte.

Einmal ein Bild:

Sie dürfen in diesem Board keine Dateianhänge sehen.

Dsl71

Sodale, ich leb ja noch immer das Projekt, auch nach vielen Rückschlägen. Hier mal ein Zwischenscreenshot:

Sie dürfen in diesem Board keine Dateianhänge sehen.

Frage: Seid Ihr interessiert? Einer der Vorteile des Projektes ist ja,dass man einen Lüfter damit steuern kann.
Und ein 10min update Intervall vom RD200 hat.

Was ich gesehen hab, der Amoled Screen des Lilygo S3 Amoled (kostet alleine 30€) ist zwar hübsch, aber eigentlich nicht nötig. Daher lass ich gerade ESP 32 S3 Platinen um 5€ kommen mit 16Mb Flash und 8Mb PS-Ram. Die Kosten kann man damit auf ca 20€ pro Schaltung reduzieren.

stsch69

Zitat von: Dsl71 am 07. Juni 2024, 20:57...
Frage: Seid Ihr interessiert?
...


Hallo, da ist hier sicher fast jeder mit einem RD200 interessiert :)
Wäre auch mqtt möglich?
Und danke für das Projekt!

VG
Steffen

Dsl71

In der ersten Version nicht, im Update ganz sicher mqtt. lg

@stsch69 kannst Du mir da einen Server zukommen lassen wo ich gratis mqtt betreiben kann?

stsch69

Zitat von: Dsl71 am 08. Juni 2024, 12:31In der ersten Version nicht, im Update ganz sicher mqtt. lg

@stsch69 kannst Du mir da einen Server zukommen lassen wo ich gratis mqtt betreiben kann?

Also ich nutze MQTT "nur" im eigenen Netzwerk per Mosquitto und von außen über VPN.
Aber evtl. reicht auch die free-Version von https://www.hivemq.com

Dsl71

Sodale, wieder mal ein Lebenszeichen von mir.

Hier seht Ihr den Logger auf einem 5€ ESP32-S3 16mb/8mb laufen. Ohne Temperatursensor und ohne RTC. Internetverbindung ist nötig.

ESP32-S3 DevkitC-1 N16R8 Klon

Da ich nur einen V1 RadonEye habe suche ich langsam Leute mit einem V2 und V3 die das mal testen wollen. PM an mich bitte.

Voraussetzung: Minimum Win10, Visual Studio Code und PlatformIo ist nötig. Kenntnis der Tool Chain ist nötig.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Dsl71

Zitat von: stsch69 am 08. Juni 2024, 15:34
Zitat von: Dsl71 am 08. Juni 2024, 12:31In der ersten Version nicht, im Update ganz sicher mqtt. lg

@stsch69 kannst Du mir da einen Server zukommen lassen wo ich gratis mqtt betreiben kann?

Also ich nutze MQTT "nur" im eigenen Netzwerk per Mosquitto und von außen über VPN.
Aber evtl. reicht auch die free-Version von https://www.hivemq.com

@stsch69 Hab mir Mosquitto installiert und kann es nun ansprechen, hehe. Hab ne RaspiMatic und werde dort den Server aufsetzen, damit der raspi 4 etwas mehr zu tun hat. Danke für den Hinweis.