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
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
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
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
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...
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?
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}}