Extend devStateIcon nach Berechnung (Wert von bis)

Begonnen von Schmitzkatze, 17 Januar 2015, 21:47:34

Vorheriges Thema - Nächstes Thema

Schmitzkatze

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
Server: Raspberry pi 2 + Debian +, USB-TCM310, HM_IP / CCU3, FitzBox!

hhsch

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/)

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
FHEM mit DbLog (MySQL) auf BananaPi M2 (RPiTC-2_beta1-bpi-m2), mit CUL868 (fw 1.57) und CUL868 (fw 1.57) im HM Betrieb
12xCUL_EM, 2xCUL_WS, 6xHMS100T, 4xHMS100TF, CUL_HM_HM_CC_RT_DN, CUL_HM_HM_TC_IT_WM_W_EU, CUL_HM_HM_SEC_SCo, CUL_HM_HM_LC_SW2_FM, KS300

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Schmitzkatze

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
Server: Raspberry pi 2 + Debian +, USB-TCM310, HM_IP / CCU3, FitzBox!

ujaudio

#4
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...
Einen lieben Gruß
Jürgen

dirkbalzer

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?
Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

stromer-12

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}}
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL