RSS Anzeige soll nur einen Wert anzeigen

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

Vorheriges Thema - Nächstes Thema

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