FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Schmitzkatze am 17 Januar 2015, 21:47:34

Titel: Extend devStateIcon nach Berechnung (Wert von bis)
Beitrag von: Schmitzkatze am 17 Januar 2015, 21:47:34
Hi Leuz

ich habe einen Windrichtungssensor der soweit gut funktioniert.

Jetzt möchte ich die Richtungen als Icons anzeigen. (N,NW,W,usw)

Das Icon geht mit folgendem Eintrag z.B.: attr Windrichtung devStateIcon .*90:control_centr_arrow_down_right
(Wenn genau 90 Grad)

Jetzt kommt das Problem (Ihr werdet es schon ahnen): es muss aber in einem Bereich anzeigen sonst müsste ich 360 devStateIcon eingeben  :(

Ich habe es folgendermaßen versucht:

attr Windrichtung devStateIcon 23-65:control_arrow_up_right 66-112:control_centr_arrow_right 113-157:control_centr_arrow_down_right 158-202:control_centr_arrow_down 203-247:control_centr_arrow_down_left 248-292:control_centr_arrow_left 293-337:control_arrow_up_left


Geht leider nicht.

Jetzt kommt`s noch: Norden - den müsste ich ja von 337-360 oder 0-22 anzeigen.

Hat jemand schon mal so etwas gemacht oder eine Idee?

Ich habe mir schon ´nen Wolf gegoogelt und aus der Commandref werde ich nicht schlau.

Gruß Schmitzkatze
Titel: Antw:Extend devStateIcon nach Berechnung (Wert von bis)
Beitrag von: hhsch am 18 Januar 2015, 01:01:44
Wie in der commandref steht, hat das Attribut devStateIcon folgendes Format:
regexp:icon-name:cmd

Was du suchst sind die passenden Regular Expressions für die jeweiligen Zahlenbereiche. RegExp suchen in einer Zeichenkette nach einem bestimmten Muster, wird dieses Muster gefunden ist die RegExp wahr. (Ich empfehle dir diese Seite zu besuchen und alles genauer nachzulesen: http://www.regexr.com/ (http://www.regexr.com/))

Für deinen Anwendungsfall ergäbe sich folgendes Attribut:
^(2[3-9]|[3-5][0-9]|6[0-5])$:control_arrow_up_right ^(6[6-9]|[7-9][0-9]|10[0-9]|11[0-2])$:control_centr_arrow_right ^(11[3-9]|1[2-4][0-9]|15[0-7])$:control_centr_arrow_down_right ^(15[89]|1[6-9][0-9]|20[0-2])$:control_centr_arrow_down ^(20[3-9]|2[1-3][0-9]|24[0-7])$:control_centr_arrow_down_left ^(24[89]|2[5-8][0-9]|29[0-2])$:control_centr_arrow_left ^(29[3-9]|3[0-2][0-9]|33[0-7])$:control_arrow_up_left ^(33[89]|3[45][0-9]|360|[0-9]|1[0-9]|2[0-2])$:control_centr_arrow_up

Grüße
hhsch
Titel: Antw:Extend devStateIcon nach Berechnung (Wert von bis)
Beitrag von: justme1968 am 18 Januar 2015, 07:47:06
du kannst auch die {...} variante von devStateIcon verwenden. zwischen den klammern steht perl code (am besten nur ein aufruf einer sub in 99_myUtils) die den passenden string je nach aktuellem device status zurück liefert.

das ist in diesem fall einfacher als die einzelnen wertebereichr auf regex abzubilden und erlaubt  ohne riesen regex auch noch feinere unterteilungen und auch das direkte 'berechnen' des passenden icons..

gruß
  andre
Titel: Antw:Extend devStateIcon nach Berechnung (Wert von bis)
Beitrag von: Schmitzkatze am 18 Januar 2015, 12:51:13
SUUPER!

Danke für das perfekte Ergebnis.

So klappt es. Das mit RexEx scheint logisch und ich kann es auch in anderen Bereichen abwenden.

: Und wieder was dazugelernt

Wenn ich später Icons o.ä. genauer benötigen werde ich mir mal den perl code + 99_myUtils ansehen.

Euch beiden nochmal Danke.

Gruß Schmitzkatze
Titel: Antw:Extend devStateIcon nach Berechnung (Wert von bis)
Beitrag von: ujaudio am 16 August 2015, 19:19:04
Anhand des Beispiels hier kann ich nun auch meine Rollladenicons richtig einstellen, der Link um zu üben der regexp ist auch Klasse:
(2[5-9]|3[0-4])
matched mir alles von 25 bis 34

Aber wie bekomme ich die Werte 25.5, 26.5,etc. bis 34.5, die mir der Aktor liefert, auch noch dazu?

(2[5-9]|3[0-4])(\.)5
matched mir jetzt nur noch die Werte mit Nachkommastellen  :(

(2[5-9]|3[0-4])(\.)5|(2[5-9]|3[0-4])
Uff, jetzt habe ich mal alle Werte zusammen...

Bis ich da fit bin, wird es noch lange dauern, aber es hat Spaß gemacht  :) und ich fange an zu begreifen, was man damit noch alles anstellen kann...
Titel: Antw:Extend devStateIcon nach Berechnung (Wert von bis)
Beitrag von: dirkbalzer am 20 September 2015, 19:15:38
Hi,
ich bastel auch gerade an den Rolladenicons. Mit zweistelligen Werten funktioniert das auch super.
Bei mir scheitert es momentan aber an den Werten zwischen 0 und 9.5 .
Kann man die Werte irgendwie auf 1-Stellige Ziffern beschränken?
Titel: Antw:Extend devStateIcon nach Berechnung (Wert von bis)
Beitrag von: stromer-12 am 20 September 2015, 20:09:39
Zitat von: dirkbalzer am 20 September 2015, 19:15:38
Hi,
ich bastel auch gerade an den Rolladenicons. Mit zweistelligen Werten funktioniert das auch super.
Bei mir scheitert es momentan aber an den Werten zwischen 0 und 9.5 .
Kann man die Werte irgendwie auf 1-Stellige Ziffern beschränken?

Ich mache es so:
devStateIcon  {my $w=100-int(ReadingsVal("$name","pct",100)/10)*10;if($w==0){'.*:fts_window_2w'}else{'.*:fts_shutter_'.$w}}