FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rabbe am 25 März 2014, 17:03:57

Titel: CUL_WS-Schematik?
Beitrag von: rabbe am 25 März 2014, 17:03:57
Hallo,

ich verwende diverse Wettersensoren der WS2000/7000-433MHz-Serie. Das klappt mit dem CUL-WS-Modul auch ziemlich gut, mit der Beschränkung auf 8 Sensorkennungen.
Die ASH2000, AS2000 und S2001I werden dabei als "S300TH" erkannt. Der S2001ID als "Indoor" und die WS7000-20 als "TH..." (obwohl ebenfalls Luftdruck inkl.). Insgesamt ist man aber auf 8 Sensoren beschränkt, entsprechend der Codierung. Den S2000R und auch den S2000W findet man bei meinem Aufbau, da diese fest auf die 8 codiert sind, beim S2001ID "Indoor"-Sensor (Bildanhang).
Aufgrund der unterschiedlichen Typen und damit Unterschiede beim Datenprotokoll wäre doch eine Unterscheidung durchaus möglich, die eine höhere Anzahl von Sensoren möglich machen bzw. den S2000R (Regen) und den S2000W (Wind) getrennt anlegen würde. Von Perl habe ich ehrlich gesagt keine Ahnung, trotzdem habe ich mir das Modul mal (mit Proton) angeschaut.

if($typbyte == 2 && int(@a) > 5) {           # rain
      #my $more = ($firstbyte&8) ? 0 : 1000;
      my $c = $hash->{corr1} ? $hash->{corr1} : 1;
      $rain = hex($a[5].$a[3].$a[4]) * $c;
      $val = "R: $rain";
      $devtype =  "Rain";
      $family = "WS7000";
      $NotifyType="R";
      $NotifyRain=$rain;
   }

    if($typbyte == 3 && int(@a) > 8) {           # wind
      my $hun = ($firstbyte&8) ? 100 : 0;
      $wnd = ($a[6].$a[3].".".$a[4])+$hun;
      my $dir  = ((hex($a[7])&3).$a[8].$a[5])+0;
      my $swing = (hex($a[7])&6) >> 2;
      $val = "W: $wnd D: $dir A: $swing";
      $devtype = "Wind";
      $family = "WS7000";
      $NotifyType="W WD WS";
      $NotifyWind=$wnd;
      $NotifyWindDir=$dir;
      $NotifyWindSwing=$swing;
    }

    if($typbyte == 4 && int(@a) > 10) {          # temp/hum/press
      $sgn = ($firstbyte&8) ? -1 : 1;
      $tmp = $sgn * ($a[6].$a[3].".".$a[4]) + $hash->{corr1};
      $hum = ($a[7].$a[8].".".$a[5]) + $hash->{corr2};
      $prs = ($a[9].$a[10])+ 900 + $hash->{corr3};
      if($prs < 930) {
        $prs = $prs + 100;
      }
      $val = "T: $tmp  H: $hum  P: $prs";
      $devtype = "Indoor";
      $family = "WS7000";
      $NotifyType="T H P";
      $NotifyTemperature=$tmp;
      $NotifyHumidity=$hum;
      $NotifyPressure=$prs;
 

Ich vermute mal/meine Vermutung ist, dass
($firstbyte&8) 
die Codierung des Sensors angibt bzw. wichtig für das Anlegen der Sensoren ist. Wünschenswert wäre es, wenn die WS7000-20 und der S2001ID als Sensor 9-16 sowie der Regen- bzw. Windsensor z.Bsp. als Sensor 17 und 18 angelegt werden würden.
Würde es ausreichen das Modul dahingehend zu ändern, dass man eine 8 etc. dazu addiert, in der Form
($firstbyte&8+8)

Danke und Gruß rabbe

Titel: Antw:CUL_WS-Schematik?
Beitrag von: rudolfkoenig am 26 März 2014, 13:06:37
ZitatWürde es ausreichen...

Nein, da die Abfrage des Geraetes weiter vorne mit
Zitat$def = $modules{CUL_WS}{defptr}{$cde} if(!$def);
usw. durchgefuehrt wird.

Das kann man auch leicht selbst durch Testen rausfinden.
Titel: Antw:CUL_WS-Schematik?
Beitrag von: rabbe am 26 März 2014, 13:37:55
Hallo,

das heißt also, dass ein "Aufbohren" des vorhandenen Moduls in dieser Hinsicht nicht möglich ist? Ein ASH2000 (erkannt als S300TH) und ein WS7000-20 (erkannt als TH0) mit Codierung 1 schreiben, je nach Empfang, unterschiedliche Werte in ein und dieselbe CUL_1-Datei. Eine Trennung auf Modell/Protokollebene habe ich nicht hinbekommen, dass man z.Bsp. ein CUL_1 und CUL_1_1 anlegt und die jeweiligen Daten von CUL 1 empfangenen Daten "herausgefischt" werden. Wie gesagt, beim Indoor-, Wind- und Regensensor funktioniert das ja (irgendwie) ähnlich aufgrund der unterschiedlichen Messgrößen.

Gruß rabbe
Titel: Antw:CUL_WS-Schematik?
Beitrag von: rudolfkoenig am 26 März 2014, 14:09:20
Das hiess nur, dass der vorgeschlagene Weg so nicht funktioniert, und eine moegliche Loesung aufwendiger waere.