[FUIP] [gelöst] Drucker Tintenstand-Anzeige aus FHEM übernehmen

Begonnen von caldir65, 06 Juni 2022, 14:35:16

Vorheriges Thema - Nächstes Thema

caldir65

Hallo,

ich habe in fhem ein Device angelegt, welches mit Hilfe der Cups-IPP-Tools regelmäßig den Tintenstand meines Mufu's abfragt und dann grafisch aufbereitet ausgibt. DIeses Device ist wie folgt definiert:Internals:
   FUUID      61759765-f33f-378b-a345-a82c9c612eac82de
   FVERSION   98_dummy.pm:0.256060/2022-02-01
   NAME       ipp_EPSON_XP7100
   NR         1599
   STATE      ipp://192.168.1.121:631/
   TYPE       dummy
   READINGS:
     2022-06-06 13:00:06   Black           23
     2022-06-06 13:00:06   Cyan            26
     2022-06-06 13:00:06   Magenta         32
     2022-06-06 13:00:06   Photo_Black     92
     2022-06-06 13:00:06   Yellow          3
     2022-06-03 16:00:04   attributes-charset utf-8
     2022-06-03 16:00:04   attributes-natural-language en
     2022-06-03 16:00:04   marker-levels   92,26,32,3,23
     2022-06-03 16:00:04   marker-names    Photo Black ink,Cyan ink,Magenta ink,Yellow ink,Black ink
     2022-06-03 16:00:04   printer-uri     ipp://192.168.1.121:631/
     2022-06-03 16:00:04   requested-attributes marker-names,marker-levels
     2022-06-03 16:00:04   status-code     successful-ok (successful-ok)
Attributes:
   DbLogExclude .*
   alias      Epson XP-7100 im Büro
   devStateIcon {package ui_Table;
ring(::ReadingsVal("ipp_EPSON_XP7100","Magenta",0),0,100,330,330,'magenta',"100,1",undef,0,1).
ring(::ReadingsVal("ipp_EPSON_XP7100","Cyan",0),0,100,200,200,'cyan',"100,1",undef,0,1).
ring(::ReadingsVal("ipp_EPSON_XP7100","Yellow",0),0,100,60,60,'yellow',"100,1",undef,0,1).
ring(::ReadingsVal("ipp_EPSON_XP7100","Black",0),0,100,0,0,'black',"100,1",undef,0,1,"100,100,100,100,100").
ring(::ReadingsVal("ipp_EPSON_XP7100","Photo_Black",0),0,100,10,10,'ph-black',"100,1",undef,0,1,"100,100,100,100,100")
}
   event-on-change-reading Black,Cyan,Magenta,Photo_Black,Yellow
   group      Drucker
   icon       it_printer
   room       Arbeitszimmer
   sortby     01
   stateFormat printer-uri
   verbose    0

Das Ergebnis habe ich angehängt. Ich würde jetzt gerne eine Zelle mit einer entsprechenden View anlegen, um auf meinem Tablet den Stand zu sehen, auch wenn ich gerade mal nicht  fhem geöffnet habe - ist das Möglich, und wenn, wie stelle ich das an?

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Thorsten Pferdekaemper

Hi,
das ist gerade ein bisschen schwer zu sagen. Im Prinzip müsste man so etwas schon mit der HMTL-View hinbekommen, aber wie genau weiß ich noch nicht. Was macht denn das "ring" genau bzw. wo bekommt man das denn her?
Gruß,
   Thorsten
FUIP

caldir65

Moin Thorsten,

das ring ist - glaube ich - dieser Halbkreis mit dem Tintenstand.

Ich habe hier in diesem Thread mal alles zusammen getragen, was ich seinerzeit gemacht habe, um zu dem im Screenshot sichtbaren Ergebnis zu kommen, bisher aber nur auf der normalen fhemweb-Oberfläche...

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Thorsten Pferdekaemper

Hi,
ah, das ist wohl aus der DOIF-Welt. Es ist wahrscheinlich nicht ganz so einfach, das in die FTUI/FUIP-Welt zu übernehmen. Aber ich schau mir's mal genauer an.
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Hallo,
ich habe mir mal angesehen, was die ring-Funktion produziert. Das könnte man in einer FUIP-View schon irgendwie nachbauen, war mir jetzt aber zu viel Arbeit. Folgendermaßen kann man das ganze tatsächlich direkt übernehmen:
Zuerst machst Du Dir ein userReading, das das Ergebnis der ring-Funktion enthält, also in etwa:

attr ipp_EPSON_XP7100 userReadings magentaWidget {package ui_Table;
ring(::ReadingsVal("ipp_EPSON_XP7100","Magenta",0),0,100,330,330,'magenta',"100,1",undef,0,1)}

(Vielleicht müssen irgendwo noch ";" durch ";;" ersetzt werden, aber prinzipiell funktioniert das.)
Dann in FUIP eine HTML view mit folgendem Inhalt anlegen:

<div data-type="label"
     data-device="ipp_EPSON_XP7100"
     data-get="magentaWidget"></div>

...und schon erscheint das ganze in FUIP.
Ich hab's ausprobiert und sogar der Update funktioniert automatisch.

Wenn man's eleganter haben will, dann vielleicht für die userReadings einen eigenen Dummy anlegen und in der HTML View verwenden.
Außerdem kann man in der HTML View mit fuip-field für das Reading (data-get) arbeiten und das ganze als View Template anlegen. Dann hat man es nicht mehrfach.

Gruß,
   Thorsten
FUIP

caldir65

Hallo Thorsten,

danke, damit hat es super funktioniert, jetzthabe ich beide Drucker im Blick...

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.