RSS Anzeige soll nur einen Wert anzeigen

Begonnen von moonsorrox, 23 Juni 2016, 11:56:59

Vorheriges Thema - Nächstes Thema

moonsorrox

ich habe das Problem das mir meine RSS Anzeige auf dem Tablet für einen Rollladen zwei Werte anzeigt und ich weiß nicht wie ich das hin bekomme nur einen Wert anzuzeigen..

Zur Erklärung der Rollladen zeigt mir in der RSS Anzeige volle Werte an wie z.B. 50%, 60%, 80% wenn ich den Rollladen aber mal mit der Fernbedienung fahre und ich habe irgend eine Stellung z.B. 71% möchte ich das mir meine RSS Anzeige anzeigt Zwischenstellung...!
Das funktioniert auch soweit, nur wenn der Rollladen dann wirklich mal auf 80% steht zeigt er mir immer beide Werte an...! Das möchte ich aber nicht... habe da schon einiges an Versuchen probiert, aber ich bekomme es nicht hin
Vielleicht kann mir mal einer nen Tipp geben..?

Folgende Definitionen habe ich für 80%:
# Status RollladenWZ Schatten 80%
condition {(ReadingsVal('RollladenWZ','state','') eq '80'}
rgb 2E64FE  # blau
moveby 0 25
text x y { "Ist - 80%" }


und diese für die Zwischenstellung:
# Status RollladenWZ beliebige Stellung
condition {ReadingsVal('RollladenWZ','state','?')}
rgb 2E64FE  # blau
moveby 0 25
text x y { "Zwischenstellg." }

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Hollo

Ohne es probiert zu haben...
Kannst Du in der condition im Vergleich nicht wildcards nutzen?

So in der Art...

# Status RollladenWZ 10% Schritte
condition {ReadingsVal('RollladenWZ','state','') eq '?0'}
rgb 2E64FE  # blau
moveby 0 25
text x y {ReadingsVal('RollladenWZ','state','')}

# Status RollladenWZ beliebige Stellung
condition {ReadingsVal('RollladenWZ','state','') ne '?0'}
rgb 2E64FE  # blau
moveby 0 25
text x y { "Zwischenstellg." }

FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

moonsorrox

ja evtl. ich werde es mal probieren, aber ich habe noch zwei weitere Rollläden da nutze ich z.B auch die 75% und 25% da würde es dann nicht funktionieren.
Mir fällt da gerade auch nichts ein wie man es am besten machen könnte...  :-\
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

Ich habe es jetzt mal mit deinem Beispiel speziell mit den 10er Schritten probiert, das funktioniert auch nicht.
Es werden mir dann immer zwei Stellungen angezeigt...!

Ich habe da irgendwie keinen Einfall mehr zu...!  :-\
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

Ich bräuchte immer noch jemanden der mir zu meinem RSS Anzeige Problem helfen kann, ich bekomme das nicht hin, wenn der Rollladen eine beliebe Zwischenstellung hat zeigt er mir nichts an und die anderen Anzeigen rutschen dann nach oben es es paßt nichts mehr...!  :-\
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

amithlon

Hallo,

mein Perl ist noch eher schwach, wie ich gerade bei mir wieder bemerkt habe.

Allerdings ganz allgemein: wenn Du Zehnerschritte bekommen willst hilft eine Module-Division. Wert%10 ergibt den Rest, wenn der 0 ist, ist es eine 10%-Stellung.
Die Konvertiereung sollte Perl alleine erledigen.

{my $temp = ReadingsVal('RollladenWZ','state','' % 10; return $temp }
condition {$temp == 0'}
...Readings ausgeben

condition {$temp != 0'}
...Zwischenstellung ausgeben

Wie das jetzt genau rein muß und wo oben Klammern falsch sind u.ä. müßte ein Perl / RSS-Kenner mal eingreifen.

Gruß aus Berlin
Michael

betateilchen

Alles viel zu kompliziert gedacht - und wahrscheinlich haben einige Tippgeber bisher auch selbst noch nie mit RSS oder InfoPanel gearbeitet.

In der zweiten condition fehlt schlichtweg die Bedingung. Du prüfst nur auf das ReadingsVal() selbst, und egal welcher Wert dort drinsteht, ist die condition immer wahr. Deshalb werden bei 80 immer beide Texte angezeigt. Achja, und die Klammersetzung stimmt auch nicht 100% :)

probiers mal so:


# Status RollladenWZ Schatten 80%
condition { ReadingsVal('RollladenWZ','state','-1') == 80 }
rgb 2E64FE  # blau
moveby 0 25
text x y { "Ist - 80%" }

# Status RollladenWZ beliebige Stellung
condition { ReadingsVal('RollladenWZ','state','-1') != 80 }
rgb 2E64FE  # blau
moveby 0 25
text x y { "Zwischenstellg." }

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: moonsorrox am 23 Juni 2016, 11:56:59
Zur Erklärung der Rollladen zeigt mir in der RSS Anzeige volle Werte an wie z.B. 50%, 60%, 80% wenn ich den Rollladen aber mal mit der Fernbedienung fahre und ich habe irgend eine Stellung z.B. 71% möchte ich das mir meine RSS Anzeige anzeigt Zwischenstellung...!

Warum willst Du eigentlich nicht immer die genaue Stellung anzeigen lassen?


rgb 2E64FE  # blau
moveby 0 25
text x y { "Ist - ".ReadingsVal('RollladenWZ','state','?')."%" }


(Im InfoPanel wäre es übrigens noch einfacher, da könntest Du einfach longpoll verwenden, dann wird der Wert laufend aktualisiert)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moonsorrox

@betateilchen
du bist wie immer genial  ;) vielen Dank

Ja die Frage nach dem eigentlich genau anzeigen ist berechtigt und ich frage mich wieso ich es wirklich nicht mache... Werde ich gleich mal umsetzen  :)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

jetzt habe ich wohl doch ein paar Probleme, er hat mir das Log mit diesem Fehler vollgeschrieben.
2016.07.25 22:27:46 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 50 }
2016.07.25 22:27:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3811493) line 1.
2016.07.25 22:27:46 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 0 }
2016.07.25 22:27:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3811490) line 1.
2016.07.25 22:27:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 50 }
2016.07.25 22:27:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3811487) line 1.
2016.07.25 22:27:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 60 }
2016.07.25 22:27:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3811486) line 1.
2016.07.25 22:27:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 70 }
2016.07.25 22:27:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3811485) line 1.
2016.07.25 22:27:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 80 }
2016.07.25 22:27:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3811484) line 1.
2016.07.25 22:27:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 0 }
2016.07.25 22:27:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3811481) line 1.
2016.07.25 22:27:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 100 }
2016.07.25 22:27:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3811480) line 1.
2016.07.25 22:26:46 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 50 }
2016.07.25 22:26:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3810587) line 1.
2016.07.25 22:26:46 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 0 }
2016.07.25 22:26:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3810584) line 1.
2016.07.25 22:26:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 50 }
2016.07.25 22:26:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3810581) line 1.
2016.07.25 22:26:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 60 }
2016.07.25 22:26:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3810580) line 1.
2016.07.25 22:26:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 70 }
2016.07.25 22:26:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3810579) line 1.
2016.07.25 22:26:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 80 }
2016.07.25 22:26:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3810578) line 1.
2016.07.25 22:26:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 0 }
2016.07.25 22:26:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3810575) line 1.
2016.07.25 22:26:46 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 100 }
2016.07.25 22:26:46 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3810574) line 1.
2016.07.25 22:25:45 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 50 }
2016.07.25 22:25:45 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809654) line 1.
2016.07.25 22:25:45 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 0 }
2016.07.25 22:25:45 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809651) line 1.
2016.07.25 22:25:45 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 50 }
2016.07.25 22:25:45 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809648) line 1.
2016.07.25 22:25:45 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 60 }
2016.07.25 22:25:45 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809647) line 1.
2016.07.25 22:25:45 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 70 }
2016.07.25 22:25:45 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809646) line 1.
2016.07.25 22:25:45 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 80 }
2016.07.25 22:25:45 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809645) line 1.
2016.07.25 22:25:45 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 0 }
2016.07.25 22:25:45 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809642) line 1.
2016.07.25 22:25:45 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 100 }
2016.07.25 22:25:45 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809641) line 1.
2016.07.25 22:25:41 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 50 }
2016.07.25 22:25:41 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809502) line 1.
2016.07.25 22:25:41 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 0 }
2016.07.25 22:25:41 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809499) line 1.
2016.07.25 22:25:41 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 50 }
2016.07.25 22:25:41 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809496) line 1.
2016.07.25 22:25:41 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 60 }
2016.07.25 22:25:41 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809495) line 1.
2016.07.25 22:25:41 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 70 }
2016.07.25 22:25:41 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809494) line 1.
2016.07.25 22:25:41 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 80 }
2016.07.25 22:25:41 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809493) line 1.
2016.07.25 22:25:41 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 0 }
2016.07.25 22:25:41 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809490) line 1.
2016.07.25 22:25:41 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 100 }
2016.07.25 22:25:41 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3809489) line 1.
2016.07.25 22:24:42 3: CUL_HM set RollladenWZ statusRequest
2016.07.25 22:24:40 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 50 }
2016.07.25 22:24:40 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3808454) line 1.
2016.07.25 22:24:40 3: eval: { ReadingsVal('RollladenWZT','state','-1') == 0 }
2016.07.25 22:24:40 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3808451) line 1.
2016.07.25 22:24:40 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 50 }
2016.07.25 22:24:40 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3808448) line 1.
2016.07.25 22:24:40 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 60 }
2016.07.25 22:24:40 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3808447) line 1.
2016.07.25 22:24:40 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 70 }
2016.07.25 22:24:40 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3808446) line 1.
2016.07.25 22:24:40 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 80 }
2016.07.25 22:24:40 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3808445) line 1.
2016.07.25 22:24:40 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 0 }
2016.07.25 22:24:40 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3808442) line 1.
2016.07.25 22:24:40 3: eval: { ReadingsVal('RollladenWZ','state','-1') == 100 }
2016.07.25 22:24:40 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 3808441) line 1.


Ich denke es kommt daher da er den "state" abfragt und wenn die Rollläden dann den Zustand on oder off haben.
ich habe nun erst einmal anstatt "state" "pct" abgefragt und die Perl Warnungen sind alle weg.

@betateilchen
Ich denke ich werde das mit den Abfragen wohl doch so machen, wie von dir vorgeschlagen.

rgb 2E64FE  # blau
moveby 0 25
text x y { "Ist - ".ReadingsVal('RollladenWZ','state','?')."%" }


Die andere Variante funktioniert nur dann wenn ich so wie geschrieben einen Wert habe bei mehreren Werten entstehen ja immer weitere Einträge durch diesen Eintrag, wenn der dann auch für !=50, !=60 und !=70 gemacht wird
# Status RollladenWZ beliebige Stellung
condition { ReadingsVal('RollladenWZ','state','-1') != 80 }
rgb 2E64FE  # blau
moveby 0 25
text x y { "Zwischenstellg." }



Ich muss mir dann nur überlegen wie ich die Einträge dann für Beschattung, Oben und Unten mache, da ich diese gern als Anzeige hätte. Bei den Zwischenstellungen ist das OK mit den Prozentanzeigen.
Er zeigt mir so immer nur die Prozente an. Ich hatte in meiner RSS Anzeige auch die Stellung Beschattung, Offen und Geschlossen, dies würde dann jetzt so angezeigt Ist - 50%, Ist - 100% und Ist - 0%
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

amithlon

Hallo

>Die andere Variante funktioniert nur dann wenn ich so wie geschrieben einen Wert habe bei mehreren Werten entstehen ja immer weitere Einträge durch diesen >Eintrag, wenn der dann auch für !=50, !=60 und !=70 gemacht wird

nur deshalb hatte ich oben den Hinweis auf eine Modulo-Division gegeben, da könnte man sowas mit einer Abfrage erledigen wenn man es so haben will.

Gruß aus Berlin
Michael

betateilchen

und es stand bisher auch nirgends, dass es auch alphanumerische Werte geben kann...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moonsorrox

habe ich auch nicht dran gedacht das er offen und geschlossen im state mit on und off anzeigt.
Ich habe es ja gelöst mit pct, aber  das andere muss ich mir noch durch den Kopf gehen lassen.
Perl ist ja da sehr tückisch und ich bin kein Perlfreak, selbst auf den Perlseiten habe ich meine Probleme und brauche da immer Hilfe
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

betateilchen

Vielleicht solltest Du einfach nochmal leicht verständlich (!) erklären, welche Anzeige Du wann haben möchtest. Am Anfang dieses Threads steht da (für mein Empfinden) ziemlich wirres Zeug (rauf/runter 80% 50% Ferbedienung usw.) 8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moonsorrox

OK, ich habe auf meinem Tablet mir ein paar Button gemacht für folgende Stellungen:

Button - Schliessen
Button - Öffnen
Button - Stop
Button - 80%
Button - 60%
Button - 50%

Stellungen die ich abfrage:
1. 100% = on oder Oben/Offen
2. 80% = 80%
3. 60% = 60%
4. 50% = Beschattung
5. 0% = off oder Geschlossen

Das mit der Fernbedienung ist nur als Zusatz, da ich ja nicht weiß wenn ich auf der FB drücke zum fahren und wieder stoppe welchen Wert der Rollladen dann gerade hat wenn er anhält.

Somit können eben die verschiedensten Stellungen möglich sein.
Ich habe eben nur die 100%, 80%, 60%, 50% und 0% in meinem RSS abgefragt, aber habe eben das Problem gesehen das irgend eine Zwischenstellung mir auf meinem Tablet eine Leerstelle angezeigt hatte und somit sind die unteren Werte nach oben gerutscht und passten nicht mehr zur Anzeige.
Das habe ich eben nicht richtig gebacken bekommen.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

So ein wenig habe ich noch etwas verändert und kleine Erfolge
Der Code sieht nun so aus
# Status RollladenWZT Oben - Offen
condition { ReadingsVal('RollladenWZT','state','none') =~ m/^on$/ }
rgb 00FA9A  # MediumSpringGreen
moveby 0 25
#text x y { "Test AUF" }
text x y { "Oben - Offen" }

# Status RollladenWZT Geschlossen
condition { ReadingsVal('RollladenWZT','state','none') =~ m/^off$/ }
rgb 2E64FE  # blau
moveby 0 25
text x y { "Geschlossen" }

# Status RollladenWZT Schatten 50%
condition { ReadingsVal('RollladenWZT','state','none') =~ m/^50$/ }
rgb 2E64FE  # blau
moveby 0 25
text x y { "Beschattung" }
condition 1



was mir jetzt immer noch Probleme bereitet ist wenn ich jetzt alle numerischen Werte also ob nun 50% 80% usw. mit folgenden Code abfrage:
condition { ReadingsVal('RollladenWZ','state','none') =~ m/\d\d/ }
rgb 00FA9A  # MediumSpringGreen
moveby 0 25
text x y { "Zwischenstellg." }


schreibt er eben wenn ich jetzt auf z.B. 50% stehe das ganze zweimal hin, weil ich ja die 50% als Beschattung anzeige.
Weiß aber nicht wie ich das jetzt anders machen soll.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Hollo

Das on/off kannst Du doch mittels der ebenfalls vorhandenen Prozentangabe umgehen.
Alternativ auch über Eventmap auf 100% bzw. 0% ändern!?

Dementsprechend würde ich die conditions aufbauen...

Wert >=98 dann offen
Wert <=2 dann zu
Wert ist >2 UND <98 UNDNICHT 50 dann Zwischenstellung
Wert =50 dann Beschattung

Dann hast Du nie 2 Bedingungen, die gleichzeitig gültig sind

FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

betateilchen

Mach Dir das Leben doch nicht so kompliziert und denke mal über den Tellerrand hinaus...

Im rss Layout:



condition 1
rgb { rss_rollo_rgb('RollladenWZT'); }
moveby 0 25
text x y { rss_rollo_val('RollladenWZT'); }




In der 99_myUtils.pm:



sub rss_rollo_val($) {
  my ($rollo) = @_;
  my $val     = ReadingsVal($rollo,'state','none');
  return "Oben - Offen" if ($val eq 'on');
  return "Geschlossen"  if ($val eq 'off');
  return "Beschattung"  if ($val eq '50');
  return $val;
}

sub rss_rollo_rgb($) {
  my ($rollo) = @_;
  my $val     = ReadingsVal($rollo,'state','none');
  return "00FA9A" if ($val eq 'on');
  return "2E64FE";
}



Und schon kannst Du soviele Rollläden und soviele Zwischenstufen abkaspern, wie Du möchtest, ohne Dir die Finger wund zu tippen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hollo

Das ist mal ne Lösung.   :o
Ich wusste gar nicht, dass man innerhalb des Layouts bzw. der condition auch einen Funktionsaufruf machen kann.   8)

Grübel, grübel...
Das könnte ich glatt für meine Multimedia-Spalte einsetzen, da ich das gerade "spielende" Gerät eh für die Lautstärkefunktion ermittel.
Würde das ja evtl. echt vereinfachen.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

moonsorrox

Vielen Dank betateilchen  ;)
Zitat von: betateilchen am 27 Juli 2016, 13:38:46
Mach Dir das Leben doch nicht so kompliziert und denke mal über den Tellerrand hinaus...
Ja, dass setzt natürlich auch jede Menge Perl Kenntnisse voraus, die ich leider nicht habe.
Ein wenig experimentiere ich ja und lese es von anderen Codeschnipsel ab, leider klappt das nicht immer  :-\

Ich werde mal ein wenig damit arbeiten, denn du hast mir ja empfohlen auf InfoPanel zu wechseln, wobei ich diese Dinge dann ja ebenfalls brauche.
Zu dem InfoPanel habe ich schon einige Fragen, aber dazu mache ich dann einen neuen  Beitrag auf. Ich habe da schon gesehen das ich meine layout Dateien nicht 1 zu 1 übernehmen kann.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

betateilchen

Zitat von: Hollo am 27 Juli 2016, 16:28:35
Ich wusste gar nicht, dass man innerhalb des Layouts bzw. der condition auch einen Funktionsaufruf machen kann.   8)

Kommt davon , wenn man die commandref nicht liest. Da steht sowas nämlich.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hollo

Da hast Du wohl recht.
Ich habe das "damals" mit dem RSS-Workshop aufgebaut und seitdem in Betrieb.
Bei Bedarf wird minimal angepasst, aber sonst läuft das Dingen in der Küche seither so.

Da habe ich nicht weiter in die commandref geguckt.  (beschämt nach unten guck).   :-[
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

moonsorrox

Zitat von: Hollo am 28 Juli 2016, 09:42:56
Da habe ich nicht weiter in die commandref geguckt.  (beschämt nach unten guck).   :-[
tröste dich mir geht es ähnlich, nur wenn ich mal wieder etwas ändere/verbessere dann fällt mir spät die commanref ein, aber die ist eigentlich immer sehr hilfreich...

Wobei ich diesen speziellen Fall gar nicht gefunden habe...
Aber ich habe jetzt schon die Anzeige so gemacht wie von betateilchen vorgeschlagen, geht super...!  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM