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?
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
([windrichtung:reading] > 90 and [windrichtung:reading] < 160) siehe http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
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));;}
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