Radar basierter WiFi-Niederschlagssensor für Regen, Hagel und Schnee

Begonnen von chunter1, 10 Juni 2017, 13:07:48

Vorheriges Thema - Nächstes Thema

Per

Zitat von: chunter1 am 13 Juni 2017, 13:08:52Ich glaub das wär was für einen 3D Drucker
Ist das Zeug UV-beständig?

Zitat von: chunter1 am 13 Juni 2017, 13:08:52Aber so ganz gefällt mir das Konzept noch nicht - vorallem bei Starkregen hilft die Rinne nix.
Pendelnd aufhängen, dass es im Wind mitgehen kann. Aber wie dann das Tropfwasser abführen  ???

Benni

Zitat von: chunter1 am 10 Juni 2017, 14:29:56
Oder doch so wie die 2000 ... 3000,-€ teuren, kommerziellen Sensoren den Sensor vertikal nach oben ausrichten und einen Dome oben drauf setzen.
Allerdings frag ich mich wie die Signalauswertung dort genau läuft. Evtl. verwenden die einen Radar Sensor Typ der auch die Distanz Information liefert.

Vielleicht sollte man doch eher in die Richtung weiterermitteln. Die sind ja bestimmt nicht zufällig bei diesem Design gelandet.
Bei den bisherigen Ansätzen tauchen ja anscheinend ständig neue Hindernisse auf. Wind ist ja auch noch nicht wirklich berücksichtigt, im Moment wird ja noch mehr oder weniger davon ausgegangen dass der Regen gerade fällt ;)

Aber auf jeden Fall ein sehr interessantes Projekt!

chunter1

Zitat von: Benni am 13 Juni 2017, 15:13:49
Vielleicht sollte man doch eher in die Richtung weiterermitteln. Die sind ja bestimmt nicht zufällig bei diesem Design gelandet.
Bei den bisherigen Ansätzen tauchen ja anscheinend ständig neue Hindernisse auf. Wind ist ja auch noch nicht wirklich berücksichtigt, im Moment wird ja noch mehr oder weniger davon ausgegangen dass der Regen gerade fällt ;)

Die Frage ist wie immer was genau man erreichen will und zu welchem Aufwand/Preis  :)

Die Ziele die ich mir für dieses Projekt gesteckt habe sind:

*) Erkennung des Niederschlagstyps (Schneefall, leichter/starker Regen und Hagel)
*) Schnell ansprechend
*) Möglichst niedrige Kosten
*) Komfortable Wifi Anbindung (keine Sendelimits wie auf z.B. 868 MHz)
*) Wartungsarm (Verschmutzung, Korrosion...)
*) Einfach nachzubauen

Um die Funktionalität der kommerziellen Geräte zu erreichen, ist natürlich deutlich mehr Aufwand notwendig.
Zur Erkennung der Entfernung und Geschwindigkeit braucht man zumindest ein FMCW Radar Modul.
Dann braucht man eine leistungsfähige Signalverarbeitung usw.

Ich fang mal klein an  ;)

chunter1

Kann man in FHEM eigentlich einen X-Y Plot mit "Farbpunkten" zur Darstellung von Häufigkeiten (so wie im Bild anbei) erstellen?
Auf der vertikalen Achse die Geschwindigkeit, auf der horizontalen die Größe und im Graph selbst die Häufigkeit in Farbe.
Diese Woche solls ja regnen und ich würde gerne die Messwerte zur Auswertung grafisch darstellen.


justme1968

ja. mit logproxy geht das. im wiki ist ein beispiel das man abwandeln kann.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chunter1

ok, danke!
Also das zu integrieren schaff ich wohl nicht mehr bis zum Regen  :(

Um das Projekt etwas zu beschleunigen/parallelisieren würde mich interessieren, ob wer bereit wäre, sich einen ESP8266 + Radar Sensor zuzulegen um an der Entwicklung ernsthaft mitzuwirken?
Wenn ja, bitte PM.


chunter1

Zitat von: justme1968 am 26 Juni 2017, 13:46:23
ja. mit logproxy geht das. im wiki ist ein beispiel das man abwandeln kann.

Momentan messe ich 1 Minute lang und übergebe dann an FHEM die Top-10 Liste der am häufigsten aufgetretenen speed/magnitude Paare.

Das Reading TOP10_BINGROUPS liefert z.B. die top-10 Geschwindigkeitsgruppen [m/s].
Das Reading TOP10_MAGGROUPS liefert die dazugehörige Magnitude Gruppe [0..255].
Das Reading TOP10_OCCURR liefert die dazugehörige Auftrittshäufigkeit [0..600].


Readings
Clipping            0                       2017-06-26 14:04:26
Snapshots           600                     2017-06-26 14:04:26
TOP10_BINGROUPS     0 0 0 0 0 0 0 0 0 0     2017-06-26 14:04:26
TOP10_MAGGROUPS     0 0 0 0 0 0 0 0 0 0     2017-06-26 14:04:26
TOP10_OCCURR        0 0 0 0 0 0 0 0 0 0     2017-06-26 14:04:26


Diese müsste man dann irgendwie akkmulieren und in das Diagramm eintragen.
Ohne Perl Kenntnisse bin ich da wohl aufgeschmissen  :o

justme1968

kannst du mir mal ein jsonlist2 vom device machen wenn in den readings nicht nur 0 steht ?

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chunter1

Zitat von: justme1968 am 26 Juni 2017, 14:17:30
kannst du mir mal ein jsonlist2 vom device machen wenn in den readings nicht nur 0 steht ?

Hier mal ein "fake-Unwetter" vom Übelsten.  ;D

Mögliche Ranges der Werte sind:

- BINGROUPS:   0..31     (= 0...32 m/s in Gruppen; also Gruppe0 = 0.1..1 m/s, Gruppe1 = 1.1..2 m/s usw.)
- MAGGROUPS:  0...31    (dimensionslos)
- OCCURR:        0...600  (Auftrittshäufigkeit innerhalb 1 Minute)



{
  "Arg":"RAINSENSOR",
  "Results": [
  {
    "Name":"RAINSENSOR",
    "PossibleSets":" ",
    "PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 readingList setList useSetExtensions disable disabledForIntervals event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading alexaName alexaRoom cmdIcon devStateIcon devStateStyle genericDeviceType:switch,outlet,light,blind,speaker,thermostat homebridgeMapping:textField-long icon sortby webCmd widgetOverride userattr",
    "Internals": {
      "NAME": "RAINSENSOR",
      "NR": "411",
      "STATE": "-",
      "TYPE": "dummy"
    },
    "Readings": {
      "ADCpeak": { "Value":"491", "Time":"2017-06-26 14:28:47" },
      "Clipping": { "Value":"0", "Time":"2017-06-26 14:28:47" },
      "Snapshots": { "Value":"20", "Time":"2017-06-26 14:28:47" },
      "TOP10_BINGROUPS": { "Value":"10 16 31 0 0 0 0 0 0 0", "Time":"2017-06-26 14:28:47" },
      "TOP10_MAGGROUPS": { "Value":"17 5 5 0 0 0 0 0 0 0", "Time":"2017-06-26 14:28:47" },
      "TOP10_OCCURR": { "Value":"200 150 50 0 0 0 0 0 0 0", "Time":"2017-06-26 14:28:47" }
    },
    "Attributes": {      "room": "RADAR" }
  }  ],
  "totalResultsReturned":1
}

justme1968

#39
da es nur drei werte gibt (und noch ein problem mit den farben s.u.) schaut es nicht sehr spektakulär aus. aber im prinzip funktioniert es so:

das hier als routine in 99_myUtils.pm:sub
logProxy_echorain($)
{
  my ($d) = @_;

  my $bin = ReadingsVal( $d, 'TOP10_BINGROUPS', '' );
  my $mag = ReadingsVal( $d, 'TOP10_MAGGROUPS', '' );
  my $occurr = ReadingsVal( $d, 'TOP10_OCCURR', '' );

  $bin = [split( ' ', $bin )];
  $mag = [split( ' ', $mag )];
  $occurr = [split( ' ', $occurr )];

  my $array = ();
  while( @{$bin} ) {
    push( @{$array}, [ shift @{$mag}, shift @{$bin}] );
  }

  return logProxy_xy2Plot($array);
}


das hier als plot file:set terminal png transparent size <SIZE> crop
set title 'NIEDERSCHLAG'           
#set grid                           
                                   
set xrange [0:32]                   
set yrange [0:32]                   
set y2range [0:32]                 
set xlabel "size"                   
set ylabel "m/s"                   
set y2label "m/s"                   
                                   
#lp Func:logProxy_echorain('RAINSENSOR')
                                           
plot "<IN>" using 1:2 axes x1y1 title 'Verteilnung' ls l1 lw 1 with points


und das hier als SVG device:define echorain SVG lp:echorain:CURRENT
attr echorain plotsize 440,400
attr echorain room echorain


die farbkodierung der häufigkeit ist noch nich nicht mit dabei da sich im svg plot aktuell die farben nur auf 6 oder 8 die vordefinierten linien farben setzen lassen. das ist für eine häufigkeitsverteilung natürlich nicht ausreichend. ich habe schon eine idee wie man das erweitern kann und schlage rudi einen patch vor sobald ich dazu komme.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chunter1

Wow!
Vielen Dank für die Unterstützung!  :)
Werds gleich heut Abend ausprobieren.

justme1968

anbei noch ein bild wie es mit farben für die intensität und legende ausschauen würde. aktuell gibt es leider noch keine möglichkeit die legende auch zu beschriften.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chunter1

Zitat von: justme1968 am 26 Juni 2017, 18:14:06
anbei noch ein bild wie es mit farben für die intensität und legende ausschauen würde. aktuell gibt es leider noch keine möglichkeit die legende auch zu beschriften.

Schaut sehr gut aus! :)

Eine Frage zu deinem Demo Code.
Ich bekomme "No Logdevice lp".
Muss ich statt "lp" evtl. den dummy eintragen wo die Readings ankommen?
Sorry... mir fehlt da noch der Durchblick

justme1968

du musst noch ein logproxy device anlegen: define lp logProxy

die readings kommen aus dem device das im pilotfile in der column_spec zeile im funktionsaufruf angegeben ist. in meinem beispiel oben habe ich deinen RAINSENSOR namen verwendet.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chunter1

Zitat von: justme1968 am 26 Juni 2017, 20:46:14
du musst noch ein logproxy device anlegen: define lp logProxy

Danke, das wars, jetzt funktionierts!