Fhem und der Windrichtungs Sensor

Begonnen von hankyzoolander, 10 Juli 2016, 20:53:15

Vorheriges Thema - Nächstes Thema

hankyzoolander

Hallo,
Habe unten gezeigten Windrichtungs Sensor.
Habe ihn an einem Arduino Nano an Analog1 mit Standart Firmata per USB an einem Raspberry Pi.

Bekomme auch daten. (Bild)

Die 93 im Reading steht für Osten.
Das Problem ist das die Werte immer springen. (93   92   94   91   90)

Möchte einen DUMMY der einfach anzeigt
Windrichtung Osten
oder Windrichtung Westen etc.

hier sind die Werte der Richtungen: von bis

Norden: 780-790
Süden : 280-290
Osten :  90-160
Westen:  940-950
SüdWest: 630-640
SüdOst: 180-190
NordOst: 460-470
NordWest: 880-890

Suche eine möglichkeit das zu Mappen.
Habe es mit einem DOIF versucht. Das funktioniert bei Osten.
([windrichtung:reading]<100) DOELSE attr windr cmdState Osten

Bei den anderen Werten hört es dann schon auf.
Gibt es eine Möglichkeit statt <100 z.b. anzugeben 90 bis 160 ? Damit das DOIF dann Osten in den DUMMY schreibt?
betateilchen  <--- my personal hero

MadMax-FHEM

Hallo,

bei DOIF kann ich leider nicht helfen...
Aber was wäre z.B. mit einem notify bei Wertänderung der Windrichtung, welches eine sub in myUtils aufruft, wo du dann austüfteln kannst welche Richtung und diese dann beispielsweise per setreading beim dummy setzt...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Ellert


Brockmann

Ich habe bei mir in der 99_myUtils.pm folgende Funktion drin:

### setzt Windrichtung (1-360 Grad) in Text um
sub deg2heading
{
    my $point = int ((($_[0] + 11.25) % 360) / 22.5);
    return (qw/N NNO NO ONO O OSO SO SSO S SSW SW WSW W WNW NW NNW/)[$point];
}


Das wird dann als ein Userreading in die Wetterstation integriert:

attr Wetterstation userReadings windDirectionTXT {deg2heading(ReadingsVal("Wetterstation","windDirection",0));;}

hankyzoolander

#4
Hallo,
ich habe es jetzt so angelegt
([windrichtung:reading] > 780 and [windrichtung:reading] < 799) DOELSEIF ([windrichtung:reading] > 280 and [windrichtung:reading] < 299) DOELSEIF ([windrichtung:reading] > 80 and [windrichtung:reading] < 169) DOELSEIF ([windrichtung:reading] > 930 and [windrichtung:reading] < 959) DOELSEIF ([windrichtung:reading] > 610 and [windrichtung:reading] < 649) DOELSEIF ([windrichtung:reading] > 170 and [windrichtung:reading] < 199) DOELSEIF ([windrichtung:reading] > 450 and [windrichtung:reading] < 479) DOELSEIF ([windrichtung:reading] > 870 and [windrichtung:reading] < 899) DOELSE attr richtung state Norden|Süden|Osten|Westen|SüdWesten|SüdOsten|NordOsten|NordWesten

Wenn ich den Sensor drehe, wird die Windrichtung angezeigt.
Habe die Werte etwas in der Spreizung angepasst, da ab und zu ein cmd_9 angezeigt wurde.

@Brockmann
werde deinen Vorschlag aber auch noch testen. Der ist genauer.
Danke an euch schon mal für eure Tips und Beispiele
betateilchen  <--- my personal hero