55_InfoPanel.pm - Wer 02_RSS.pm mag, wird auch das hier lieben...

Begonnen von betateilchen, 26 Januar 2015, 16:17:25

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: hotwebnet am 30 Januar 2015, 19:42:33
kannst du mir sagen warum ???

Ja, aber Du kommst da sicher auch selbst drauf, wenn Du mal ein bisschen nachdenkst. Zum Beispiel darüber, welche Befehle Dein "Receiver" überhaupt versteht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fh168

Danke Jungs, ihr habt mir wieder den Abend versaut.

Jetzt habe ich mit dem InfoPanel wieder ein neues Projekt :-)

Klappt super.

Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

betateilchen

Standardmässig arbeite ich auf meinem Panel mit einem refresh von 20 Sekunden. Das ist für meine Zwecke völlig ausreichend. Die InfoPanels, die auf einem externen Webserver bereitgestellt werden, werden sogar nur alle 300 Sekunden aktualisiert.


In der nächsten Version ist die Angabe des hostname im DEFINE nicht mehr notwendig. Das Modul ermittelt den Parameter über das Betriebssystem selbst. Bereits vorhandene devices müssen im DEF entsprechend angepasst werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Wir können auch mit Gruppen arbeiten

Kommen wir noch einmal auf das Beispiel "Button mit Statusanzeige" zurück:

Zitat von: betateilchen am 30 Januar 2015, 11:17:42

button 13 0 0 160 80 0 0 {"http://192.168.123.241:8083/fhem?XHR=1&cmd.az_Drucker=set%20az_Drucker%20toggle"} {"Drucker an"}
condition {ReadingsVal('az_Drucker','state','off') eq 'on'}
rgb "FF0000FF"
circle - 20 20 5 1
rgb "4D4D4DFF"
condition 1


Dieser Code erzeugt an der linken oberen Ecke (0,0) einen Button mit der Breite 160 und der Höhe 80.
In diesem Button befindet sich 20 Pixel von links und 20 Pixel von oben ein kleiner roter Kreis als Statusanzeige.


Wenn man diesen Button nun nicht in der oberen linken Ecke des InfoPanels haben möchte, sondern beispielsweise in der zweiten Reihe (80px) und dritten Spalte (480px), müsste man ja alle Positionsangaben umrechnen:



button 13 480 80 640 160 0 0 {"http://192.168.123.241:8083/fhem?XHR=1&cmd.az_Drucker=set%20az_Drucker%20toggle"} {"Drucker an"}
condition {ReadingsVal('az_Drucker','state','off') eq 'on'}
rgb "FF0000FF"
circle - 500 100 5 1
rgb "4D4D4DFF"
condition 1



Muss man aber nicht. SVG bietet die Möglichkeit, mehrere Elemente als "Gruppe" zu betrachten und bestimmte Eigenschaften auf alle Elemente in der Gruppe zu vererben. Das bedeutet, der Button wird immer mit identischen Positionsangaben definiert und die tatsächliche Position wird in der Gruppendefinition festgelegt.



group button23 open 480 80
button 23 0 0 160 80 0 0 {"http://192.168.123.241:8083/fhem?XHR=1&cmd.az_Drucker=set%20az_Drucker%20toggle"} {"Drucker an"}
condition {ReadingsVal('az_Drucker','state','off') eq 'on'}
rgb "FF0000FF"
circle - 20 20 5 1
rgb "4D4D4DFF"
condition 1
group - close



Alle Positionsangaben zwischen "group open" und "group close" werden damit automatisch in die richtigen Koordinaten umgerechnet.
Das erleichtert die Positionierung von Elementen erheblich.

Die generelle Syntax für group lautet:



group <id> open <x> <y>

group <id> close






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

Benni

Hallo betateilchen,

ich muss einfach mal ganz spontan meiner Begeisterung Ausdruck verleihen: Danke für dieses tolle Modul!  8)

bisher habe ich bereits meine Panel-Hauptübersicht von RSS auf InfoPanel portiert und muss sagen, die Grafikqualität und die Geschwindigkeit überzeugen sehr. Ganz davon abgesehen, dass außerdem  mein FHEM durch das Wegfallen des Renderns der RSS-Grafiken wieder deutlich besser reagiert. :)

Gerade bin ich daran meine, bisher auf separatem Raspberry liegenden, statischen Button-Panels in InfoPanel umzusetzen. Da kommen mir die Gruppen gerade recht. Sehr geile Idee!

2 kleine Fragen habe ich aber auch noch: Gibt es (oder wird es geben) eine Möglichkeit den Buttontext mehrzeilig auszuführen?
Gibt es (oder wird es geben) eine Möglichkeit einen Text-"Stil" mit anzugeben (bspw. Fett, kursiv, unterstrichen ...)?

Nochmal vielen Dank!
Echt klasse was du da machst!

Bin mal gespannt, was noch kommt ;)

Gruß Benni.

betateilchen

#35
Zitat von: Benni am 31 Januar 2015, 18:01:26
Gibt es (oder wird es geben) eine Möglichkeit einen Text-"Stil" mit anzugeben (bspw. Fett, kursiv, unterstrichen ...)?

Hab ich bisher nicht drüber nachgedacht, sowas sollte aber kein großes Problem sein. Schauen wir mal...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#36
Zitat von: Benni am 31 Januar 2015, 18:01:26
Gibt es (oder wird es geben) eine Möglichkeit den Buttontext mehrzeilig auszuführen?

Aber das kannst Du Dir doch mit den bereits vorhandenen Möglichkeiten ganz einfach selbst bauen 8)


group multiline open 0 215
thalign "middle"
rgb "FFFF00FF"
rect 15_line 0 0 160 80 0 0 1
rgb "4D4D4DFF"
text 15_1 80 20 "Ich stehe in Zeile 1"
text 15_2 80 40 "Text in Zeile 2"
text 15_3 80 60 "Dritte Zeile"
area 15_area 0 0 160 80 "www.google.de"
thalign "start"
group - close


(http://up.picr.de/20850018bu.png)

Das Button-Tag macht letztendlich auch nichts anderes, als ein gefülltes Rechteck zu zeichnen und dann den Text draufzuschreiben. Schau doch mal in den html-Quelltext eines generierten ButtonPanels.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Benni

Zitat
Aber das kannst Du Dir doch mit den bereits vorhandenen Möglichkeiten ganz einfach selbst bauen 8)

Stimmt! Und durch die Gruppenbildung fast genau so komfortabel, wie der Button selbst.
Danke!

Benni

Zitat von: Benni am 31 Januar 2015, 18:57:29
Stimmt! Und durch die Gruppenbildung fast genau so komfortabel, wie der Button selbst.
Danke!


Aber leider nur fast.  :(
Bei area habe ich keine Möglichkeit gefunden, als target zum Öffnen des Links "secret"
anzugeben. So wird er einfach im aktuellen Fenster geöffnet. Was einem bspw. beim Schalten von devices eine leere Seite präsentiert.

betateilchen

#39
*erledigt*

Die Link-Logik von "button" funktioniert nun auch identisch bei "area"

Achtung: Das muss bei ALLEN bereits vorhandenen area Definitionen entsprechend angepaßt werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Neue Modulversion eingecheckt. Damit müssten nun auch alle images wieder funktionieren und nicht nur svg-Dateien :)

Wichtig: Diese neue Modulversion benötigt die ebenfalls aktualisierte Datei configDB.pm, falls man mit der Konfigurationsdatenbank arbeitet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Benni

 Hallo betateilchen,

soeben ausgecheckt und getestet.
Läuft!  8)

Danke!
Gruß Benni.

betateilchen

Zitat von: Benni am 31 Januar 2015, 18:01:26
Gibt es (oder wird es geben) eine Möglichkeit einen Text-"Stil" mit anzugeben (bspw. Fett, kursiv, unterstrichen ...)?

Du meinst so?  8)

(http://up.picr.de/20860079ry.png)


#

rgb "FFFFFFFF"
pt 20
moveto 100 100

textdesign underline
text - x y "textdesign underline"

moveby 0 50
textdesign overline
text - x y "textdesign overline"

moveby 0 50
textdesign line-through
text - x y "textdesign line-through"

moveby 0 50
textdesign bold
text - x y "textdesign bold"

moveby 0 50
textdesign italic
text - x y "textdesign italic"

moveby 0 50
textdesign bold,italic,underline
text - x y "textdesign bold,italic,underline"

moveby 0 50
textdesign clear
text - x y "textdesign clear"

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

Benni

Ja! So hatte ich mir das vorgestellt. :)
Sehr schön!

Inzwischen habe ich übrigens neben der Hauptansicht auch das erste Button-Panel fertig portiert (s. Anhänge)


betateilchen

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