FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hankyzoolander am 10 Juli 2016, 20:53:15

Titel: Fhem und der Windrichtungs Sensor
Beitrag von: hankyzoolander am 10 Juli 2016, 20:53:15
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?
Titel: Antw:Fhem und der Windrichtungs Sensor
Beitrag von: MadMax-FHEM am 10 Juli 2016, 23:46:58
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
Titel: Antw:Fhem und der Windrichtungs Sensor
Beitrag von: Ellert am 11 Juli 2016, 09:09:36
([windrichtung:reading] > 90 and [windrichtung:reading] < 160) siehe http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
Titel: Antw:Fhem und der Windrichtungs Sensor
Beitrag von: Brockmann am 11 Juli 2016, 18:47:41
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));;}
Titel: Antw:Fhem und der Windrichtungs Sensor
Beitrag von: hankyzoolander am 11 Juli 2016, 19:00:10
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