FHEM > Codeschnipsel

Druckerpatronen-Zustand

<< < (14/14)

caldir65:
Hallo,

inzwischen habe ich den Drucker soweit zur Mitarbeit bewegen können, daß zumindest ein Teil der Tinten angezeigt wird in fhem. Allerdings mußte ich noch etwas Berechnung hinein bringen - nach den gelieferten Werten wurde mir die Tinte um Faktor 2 zu wenig angezeigt.
Jetzt habe ich nur noch das Problem, daß mir keine Werte für PhotoBlack geliefert werden in dieser Definition - innerhalb des Quelltextes des Druckers wird sogar die gleiche Bezeichnung verwendet...
Hat jemand eine Idee, wie ich jetzt auch die letzte Patrone mit in meine Anzeige bekommen kann?

So habe ich den Drucker konfiguriert:

--- Code: ---   BUSY       0
   DEF        https://192.168.1.121/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP 3600
   FUUID      5fb97e26-f33f-378b-f758-d4f66727dd5b366b
   FVERSION   98_HTTPMOD.pm:0.241850/2021-04-08
   Interval   3600
   MainURL    https://192.168.1.121/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP
   ModuleVersion 4.1.08 - 1.4.2021
   NAME       Drucker_Epson
   NOTIFYDEV  global
   NR         1548
   NTFY_ORDER 50-Drucker_Epson
   STATE      C: 34% M: 27% Y: 33% B: Black%
   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-05-06 14:59:49   Cyan            34
     2021-05-06 14:59:49   Magenta         27
     2021-05-06 14:59:49   Yellow          33
     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:
       Cyan       reading
       Magenta    reading
       Yellow     reading
     readingNum:
       Cyan       02
       Magenta    03
       Yellow     01
     readingOutdated:
     requestReadings:
       update:
         Cyan       reading 02
         Magenta    reading 03
         Yellow     reading 01
Attributes:
   DbLogExclude .*
   icon       it_printer
   model      epson_printer_cartridge_status
   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
   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;}

--- Ende Code ---

und der Quellcode der Seite, die ich abfrage:

--- Code: ---<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="Author" content="SEIKO EPSON"><meta name="format-detection" content="telephone=no"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>XP-7100 Series</title><link rel='stylesheet' type='text/css' href='../COMMON/STYLE.CSS'><script type='text/javascript' src='SCRIPT.JS'></script></head><body class="contents"><div class="wrap"><div class="header-main">Status&nbsp;&gt;&nbsp;Produktstatus</div><div class="section"><fieldset class="group no-legend"><form target="_top" action="/PRESENTATION/ADVANCED/COMMON/TOP" method="post" id="input_form" name="input_form"><ul class="values"><li class="value clearfix"><select class="select" id="SEL_LANGA" name="SEL_LANGA" onchange="return document.input_form.submit();"><option value="1">English</option><option value="2">Français</option><option value="4" selected>Deutsch</option><option value="3">Italiano</option><option value="5">Español</option><option value="6">Português</option><option value="7">Nederlands</option><option value="12">Norsk</option><option value="13">Svenska</option><option value="14">Suomi</option><option value="15">polski</option><option value="16">Čeština</option><option value="17">Magyar</option><option value="18">Dansk</option><option value="20">Ελληνικά</option><option value="21">Slovensky</option><option value="22">Română</option><option value="10">繁體中文</option></select></li></ul></form></fieldset><fieldset class="group no-legend"><fieldset class="group"><legend>Druckerstatus</legend><ul class="values"><li class="value clearfix"><div class="preserve-white-space">Verfügbar</div></li></ul><ul class="values"><li class="value clearfix"><div class="preserve-white-space"></div></li></ul></fieldset><div id="ELSE_STATUS"><fieldset class="group"><legend>Anderer Status</legend><ul class="values"><li class="value clearfix"><div class="preserve-white-space"><noscript>Aktivieren Sie die JavaScript-Einstellung des Browsers.</noscript></div></li></ul></fieldset></div><script type="text/javascript"><!--
HideElseStatus();//-->
</script></fieldset><div class="information-last clearfix " ><ul class="inksection"><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_K.PNG' height='34' style=''>
</div>
<div class='clrname'>BK</div>
</li><!--
--><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_C.PNG' height='34' style=''>
</div>
<div class='clrname'>C</div>
</li><!--
--><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_Y.PNG' height='33' style=''>
</div>
<div class='clrname'>Y</div>
</li><!--
--><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_M.PNG' height='27' style=''>
</div>
<div class='clrname'>M</div>
</li><!--
--><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_K.PNG' height='42' style=''>
</div>
<div class='clrname'>PB</div>
</li>
</ul></div><fieldset class="group no-legend"><fieldset class="group"><legend>Kassette 1</legend><dl class="values"><dt class="key"><span class="key">Papiergröße&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">10 x 15 cm (4 x 6 Zoll)</div></dd><dt class="key"><span class="key">Papiertyp&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">Epson Premium Glossy</div></dd></dl></fieldset><fieldset class="group"><legend>Kassette 2</legend><dl class="values"><dt class="key"><span class="key">Papiergröße&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">A4 210 x 297 mm</div></dd><dt class="key"><span class="key">Papiertyp&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">Normalpapier</div></dd></dl></fieldset></fieldset><fieldset class="group no-legend"><dl class="values"><dt class="key"><span class="key">Epson Connect-Status&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">Nicht registriert</div></dd><dt class="key"><span class="key">Epson Connect-eMail-Adresse&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space"></div></dd><dt class="key"><span class="key">Google Cloud Print-Status&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">Nicht registriert</div></dd></dl></fieldset><fieldset class="group no-legend"><dl class="values"><dt class="key"><span class="key">Firmware&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">01.65.YL17J5</div></dd><dt class="key"><span class="key">Stammzertifikat-Version&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">02.00</div></dd><dt class="key"><span class="key">Seriennummer&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">X5D7005096</div></dd><dt class="key"><span class="key">Netzwerk-MAC-Adresse&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">38:9D:92:AD:D6:FB</div></dd></dl></fieldset><fieldset class="group no-legend"><dl class="values"><dt class="key"><span class="key">Administratorname/Kontaktinformationen&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space"></div></dd></dl></fieldset><script type="text/javascript"><!--
initialize();//-->
</script></div><div class="footer"><form action="" method='get' id='refresh_form'><div><input type='hidden' value='' name='tm'></div></form><script type="text/javascript"><!--
document.getElementById('refresh_form').tm.value=new Date().getTime();//-->
</script><table width="100%"><tr><td class="footer_button" align="left"><ul class="buttons"><li class="button"><button type="button" class="button" onclick="document.getElementById('refresh_form').submit(); return false;">Aktualisieren</button></li></ul></td><td class="footer_license" align="right"><a class="license" target="_blank" href="/PRESENTATION/ADVANCED/LICENSE/TOP">Softwarelizenzen</a></td></tr></table></div></div></body></html>
--- Ende Code ---

Vielen Dank für Unterstützung.

Gruß,
Christoph

Edit: Anpassung an Änderungen im Device

caldir65:
Moinsen,

ich habe jetzt einen ganz anderen Weg zur Abfrage genutzt. Bei meinen Recherchen zum Thema bin ich in einem c't-Artikel aus 2015 fündig geworden, der sich näher mit Cups und entsprechenden CLI-Möglichkeiten auseinander setzt. Diese Möglichkeit sollte mit vielen Druckern, die Toner- oder Tintenstand offerieren und mit Cups angesprochen werden können, funktionieren.
Hierfür benötigt man noch eine Datei aus dem c't-Artikel (marker.ipp), die als Zusatzangebot herunterladbar ist.

Mit dem ipptool bekomme ich auf dieseweise folgende Ausgabe:

--- Code: ---desktop:~/tmp$ ipptool -tv ipp://192.168.1.121/ marker.ipp
"marker.ipp":
    Get-Printer-Attributes:
        attributes-charset (charset) = utf-8
        attributes-natural-language (naturalLanguage) = en
        printer-uri (uri) = ipp://192.168.1.121:631/
        requested-attributes (1setOf keyword) = marker-names,marker-levels
    marker                                                               [PASS]
        RECEIVED: 221 bytes in response
        status-code = successful-ok (successful-ok)
        attributes-charset (charset) = utf-8
        attributes-natural-language (naturalLanguage) = en
        marker-names (1setOf nameWithoutLanguage) = Photo Black ink,Cyan ink,Magenta ink,Yellow ink,Black ink
        marker-levels (1setOf integer) = 26,14,7,16,89
--- Ende Code ---
Die Auswertung habe ich mit der Hilfe von @betateilchen in ein Textfile umgeleitet. Zudem ein Dummy erstellt, welchen ich über eine Funktion mit Readings befülle.
Um die Daten unabhängig von fhem zu erstellen, wird ein ipptool-Aufruf mittels Script durchgeführt, zudem werden die Daten anschließend direkt vom Script in den Dummy eingetragen.

Details hierzu findet ihr auch in diesem Thread.

Vielleicht hilft es ja jemanden

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln