FHEM Forum

FHEM => Automatisierung => Thema gestartet von: caldir65 am 22 Juni 2021, 10:01:47

Titel: Drucker-Tintenstand korrekt berechnen
Beitrag von: caldir65 am 22 Juni 2021, 10:01:47
Moin zusammen,

ich habe mir anhand eines Code-Bsp's hier aus dem Forum die Abfrage von Tintenständen eines EPSON XP-Druckers zusammen gebaut. Leider liefert die Quellseite des Druckers nur Werte, die genau die Hälfte des z.B. auf der Statusseite angezeigten Tintenstandes.

Ich habe mich da mal mit Berechnungen versucht, aber bekomme trotzdem nur den geringeren Stand angezeigt.
Das "Device":Internals:
   BUSY       0
   DEF        http://192.168.2.24/PRESENTATION/HTML/TOP/PRTINFO.HTML 14400
   FUUID      6093f1e9-f33f-378b-6178-1de27c5aa29cd4c7
   FVERSION   98_HTTPMOD.pm:0.241850/2021-04-08
   Interval   14400
   MainURL    http://192.168.2.24/PRESENTATION/HTML/TOP/PRTINFO.HTML
   ModuleVersion 4.1.08 - 1.4.2021
   NAME       Epson_XP630
   NOTIFYDEV  global
   NR         1629
   NTFY_ORDER 50-Epson_XP630
   STATE      C: 4% M: 31% Y: 36% B: 50%
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://192.168.2.24:80
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl http://192.168.2.24/PRESENTATION/HTML/TOP/PRTINFO.HTML
     header     
     host       192.168.2.24
     httpheader HTTP/1.1 200 OK
CACHE-CONTROL: no-cache
Pragma: no-cache
CONTENT-TYPE: text/html
CONTENT-LENGTH: 7853
SERVER: EPSON_Linux UPnP/1.0 Epson UPnP SDK/1.0
X-FRAME-OPTIONS: SAMEORIGIN
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    80
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /PRESENTATION/HTML/TOP/PRTINFO.HTML
     protocol   http
     redirects  0
     timeout    2
     url        http://192.168.2.24/PRESENTATION/HTML/TOP/PRTINFO.HTML
     sslargs:
   QUEUE:
   READINGS:
     2021-06-22 08:11:51   Black           50
     2021-06-22 08:11:51   Black33B        100
     2021-06-22 08:11:51   Cyan            4
     2021-06-22 08:11:51   Cyan33C         8
     2021-06-22 08:11:51   Magenta         31
     2021-06-22 08:11:51   Magenta33M      62
     2021-06-22 08:11:51   PhotoBlack33PB  0
     2021-06-22 08:11:51   Yellow          36
     2021-06-22 08:11:51   Yellow33Y       72
     2021-05-06 15:41:11   attrTemplateVersion 20201129
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        http://192.168.2.24/PRESENTATION/HTML/TOP/PRTINFO.HTML
   defptr:
     readingBase:
       Black      reading
       Cyan       reading
       Magenta    reading
       Yellow     reading
     readingNum:
       Black      04
       Cyan       02
       Magenta    03
       Yellow     01
     readingOutdated:
     requestReadings:
       update:
         Black      reading 04
         Cyan       reading 02
         Magenta    reading 03
         Yellow     reading 01
Attributes:
   DbLogExclude .*
   icon       it_printer
   model      EPSON XP-630 Tinstenstand
   reading01Name Yellow
   reading01Regex Ink_Y.*?='([\d]+)'
   reading02Name Cyan
   reading02Regex Ink_C.*?='([\d]+)'
   reading03Name Magenta
   reading03Regex Ink_M.*?='([\d]+)'
   reading04Name Black
   reading04Regex Ink_K.*?='([\d]+)'
   room       Arbeitszimmer
   stateFormat C: Cyan% M: Magenta% Y: Yellow% B: Black%
   userReadings Black33B { my $black1 = ReadingsVal($name,"Black",0)*2; return $black1;},Yellow33Y { my $yellow1 = ReadingsVal($name,"Yellow",0)*2; return $yellow1;},Cyan33C { my $cyan1 = ReadingsVal($name,"Cyan",0)*2; return $cyan1;},Magenta33M { my $magenta1 = ReadingsVal($name,"Magenta",0)*2; return $magenta1;},PhotoBlack33PB { my $pb1 = ReadingsVal($name,"PhotoBlack",0)*2; return $pb1;}


Wo übersehe ich da noch etwas?

Gruß, Christoph
Titel: Antw:Drucker-Tintenstand korrekt berechnen
Beitrag von: Otto123 am 22 Juni 2021, 11:10:57
Hallo Christoph,

Du meinst mit "angezeigt" weil Du vergessen hast stateFormat an Deine userReadings anzupassen? :)
stateFormat C: Cyan33C% M: Magenta33M% Y: Yellow33Y% B: Black33B%

Gruß Otto
Titel: Antw:Drucker-Tintenstand korrekt berechnen
Beitrag von: caldir65 am 29 Juni 2021, 10:29:49
Hallo Otto,

danke, das paßt soweit schon mal.
Jetzt habe ich nur noch eine PhotoBlack (zweiter Drucker, ähnliche Seite), die dummerweise zwar als PB bezeichnet wird, aber das Icon ist das gleiche wie bei Black...
Internals:
   BUSY       0
   DEF        https://192.168.1.121/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP 7200
   FUUID      5fb97e26-f33f-378b-f758-d4f66727dd5b366b
   FVERSION   98_HTTPMOD.pm:0.241850/2021-04-08
   Interval   7200
   MainURL    https://192.168.1.121/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP
   ModuleVersion 4.1.08 - 1.4.2021
   NAME       EPSON_XP7100
   NOTIFYDEV  global
   NR         1544
   NTFY_ORDER 50-EPSON_XP7100
   STATE      C: 50% M: 38% Y: 48% B: 50% PB: 0%
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://192.168.1.121:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://192.168.1.121/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP
     header     
     host       192.168.1.121
     httpheader HTTP/1.1 200 OK
CACHE-CONTROL: no-cache
Pragma: no-cache
CONTENT-TYPE: text/html
CONTENT-LENGTH: 6163
SERVER: EPSON_Linux UPnP/1.0 Epson UPnP SDK/1.0
X-FRAME-OPTIONS: SAMEORIGIN
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /PRESENTATION/ADVANCED/INFO_PRTINFO/TOP
     protocol   https
     redirects  0
     timeout    2
     url        https://192.168.1.121/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP
     sslargs:
   QUEUE:
   READINGS:
     2021-06-29 10:10:26   Black           25
     2021-06-29 10:10:26   Black33B        50
     2021-06-29 10:10:26   Cyan            25
     2021-06-29 10:10:26   Cyan33C         50
     2021-06-29 10:10:26   Magenta         19
     2021-06-29 10:10:26   Magenta33M      38
     2021-06-29 10:10:26   PhotoBlack33PB  0
     2021-06-29 10:10:26   Yellow          24
     2021-06-29 10:10:26   Yellow33Y       48
     2021-05-06 13:03:35   attrTemplateVersion 20201129
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://192.168.1.121/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP
   defptr:
     readingBase:
       Black      reading
       Cyan       reading
       Magenta    reading
       Yellow     reading
     readingNum:
       Black      04
       Cyan       02
       Magenta    03
       Yellow     01
     readingOutdated:
     requestReadings:
       update:
         Black      reading 04
         Cyan       reading 02
         Magenta    reading 03
         Yellow     reading 01
Attributes:
   DbLogExclude .*
   icon       it_printer
   model      EPSON XP7100 Tintenstand
   reading01Name Yellow
   reading01Regex Ink_Y.*?='([\d]+)'
   reading02Name Cyan
   reading02Regex Ink_C.*?='([\d]+)'
   reading03Name Magenta
   reading03Regex Ink_M.*?='([\d]+)'
   reading04Name Black
   reading04Regex Ink_K.*?='([\d]+)'
   reading05Name PhotoBlack
   reading05Regex Ink_K.*?='([\d]+)'
   room       Arbeitszimmer
   stateFormat C: Cyan33C% M: Magenta33M% Y: Yellow33Y% B: Black33B% PB: PhotoBlack33PB%
   userReadings Black33B { my $black1 = ReadingsVal($name,"Black",0)*2; return $black1;},Yellow33Y { my $yellow1 = ReadingsVal($name,"Yellow",0)*2; return $yellow1;},Cyan33C { my $cyan1 = ReadingsVal($name,"Cyan",0)*2; return $cyan1;},Magenta33M { my $magenta1 = ReadingsVal($name,"Magenta",0)*2; return $magenta1;},PhotoBlack33PB { my $pb1 = ReadingsVal($name,"PhotoBlack",0)*2; return $pb1;}


Gibt es da eine Möglichkeit, das auseinander zu halten? Wenn wich nämlich einfach auf das Icon (Ink_K) auch für die PB gehe, kommen die gleichen Werte wie bei Black ... (siehe Screenshot)


Gruß, Christoph