Autor Thema: Radar basierter WiFi-Niederschlagssensor für Regen, Hagel und Schnee  (Gelesen 90981 mal)

Offline Per

  • Hero Member
  • *****
  • Beiträge: 1529
Ich glaub das wär was für einen 3D Drucker
Ist das Zeug UV-beständig?

Aber 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  ???

Offline Benni

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2074
  • FHEMinist
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!

Offline chunter1

  • Sr. Member
  • ****
  • Beiträge: 807
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  ;)
Zustimmung Zustimmung x 5 Informativ Informativ x 1 Liste anzeigen

Offline chunter1

  • Sr. Member
  • ****
  • Beiträge: 807
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.

« Letzte Änderung: 26 Juni 2017, 13:45:30 von chunter1 »

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19333
ja. mit logproxy geht das. im wiki ist ein beispiel das man abwandeln kann.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline chunter1

  • Sr. Member
  • ****
  • Beiträge: 807
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.


Offline chunter1

  • Sr. Member
  • ****
  • Beiträge: 807
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
« Letzte Änderung: 26 Juni 2017, 14:16:21 von chunter1 »

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19333
kannst du mir mal ein jsonlist2 vom device machen wenn in den readings nicht nur 0 steht ?

FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline chunter1

  • Sr. Member
  • ****
  • Beiträge: 807
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
}
« Letzte Änderung: 26 Juni 2017, 14:49:29 von chunter1 »

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19333
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.
« Letzte Änderung: 26 Juni 2017, 17:00:22 von justme1968 »
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline chunter1

  • Sr. Member
  • ****
  • Beiträge: 807
Wow!
Vielen Dank für die Unterstützung!  :)
Werds gleich heut Abend ausprobieren.

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19333
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.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline chunter1

  • Sr. Member
  • ****
  • Beiträge: 807
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

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19333
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.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline chunter1

  • Sr. Member
  • ****
  • Beiträge: 807
du musst noch ein logproxy device anlegen: define lp logProxy

Danke, das wars, jetzt funktionierts!

 

decade-submarginal