Druckerpatronen-Zustand

Begonnen von akw, 27 August 2018, 08:37:10

Vorheriges Thema - Nächstes Thema

Hauslaus

Hallo

auf der Suche nach der Quelle des INK-Tools bin ich auf die Seiten gestossen.

Falls jemand damit was anfangen kann:
https://sourceforge.net/projects/ink/
https://github.com/dmonty2/ink2snmp
Bei GitHub steht (Googlleübersetzung):
Zitatink2snmp

Lesen Sie die Tintenfüllstände und konvertieren Sie sie in SNMP.

Installieren Sie libinklevel und Tinte von Markus Heinz.
Der Tintenbefehl unterstützt USB-, Parallel- und Netzwerkdrucker.
http://ink.sourceforge.net/
Testen und richten Sie den Befehl 'Tinte' für Ihren Drucker ein.
Fügen Sie Ihren Arbeitstintenbefehl oben im ink2snmp-Skript hinzu.
Fügen Sie Ihrer /etc/snmp/snmpd.conf Folgendes hinzu
pass .1.3.6.1.2.1.43 / bin / bash / usr / local / bin / ink2snmp

Das konvertieren in SNMP habe ich doch hier irgendwo gelesen ist doch das Richtige.

Ich probiere es jedenfalls gleich.

Gruß
Hauslaus
Raspberry Pi Model B mit 512 mb
SCC stapelbar (V 1.26.01 a-culfw Build: 271 CSM433 & 868)
raspbian jessie

Hauslaus

Hallo amenomade,

Danke für die Antwort. Ich werde mir das mit einem Skript ansehen. Sauber immer klingt gut.

Unsere Beiträge hatten sich gerade überschnitten. Ich werde mir das mit dem "ink2snmp" auf GitHub ansehen und versuchen es zu verstehen.

Danke
Hauslaus
Raspberry Pi Model B mit 512 mb
SCC stapelbar (V 1.26.01 a-culfw Build: 271 CSM433 & 868)
raspbian jessie

amenomade

Ja, klingt gut. Wenn snmp aber nicht mit HTTPMOD sondern mit z.B. SYSSTAT
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

caldir65

#63
Moin,

und, wurde der Aufruf von ink aus fhem jetzt erfolgreich gelöst?

Ich frage, da ich es ähnlich habe mit Turboprint, da kann ich es wie folgt auf der Konsole erfragen:
pi@raspi-fhem:~ $ tpconfig --ink
Black=400
Cyan=70
Yellow=80
Magenta=970
PhotoBlack=150


Gut, hier müssten die Ausgaben noch entsprechend "umgerechnet" werden, die Werte sind durch 10 zu teilen, dann entspricht es den %-Angaben der entsprechenden Anzeige von Turboprint...

Bisher habe ich leider keine Lösung gefunden im Netz, die ich mir entsprechend anpassen konnte ...

Gruß, Christoph

PS: ich benutze auch einen Epson (XP-7100), jedoch greift die httpmod-Variante hier so nicht, da in der Status-Übersicht sowohl Black als auch PhotoBlack das gleiche Kürzel bk haben ...
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

dirk.k

Hallo zusammen,
ich frage meinen Brother mit SYSSTAT und SNMP ab.
Funktioniert sehr gut. Hier mal der Code als Beispiel:

defmod PrinterStatus SYSSTAT 600 600 192.168.0.223
attr PrinterStatus disable 1
attr PrinterStatus event-on-change-reading 1
attr PrinterStatus group Printer
attr PrinterStatus mibs .1.3.6.1.2.1.43.10.2.1.4.1.1:GesamtSeiten,\
.1.3.6.1.2.1.43.8.2.1.14.1.1:Hersteller,\
.1.3.6.1.2.1.43.5.1.1.17.1:Seriennummer,\
.1.3.6.1.2.1.43.11.1.1.9.1.6:Bandeinheit,\
.1.3.6.1.2.1.43.11.1.1.9.1.7:Trommeleinheit,\
.1.3.6.1.2.1.43.11.1.1.6.1.1:TonerSchwarzTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.2:TonerCyanTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.3:TonerMagentaTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.4:TonerYellowTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.5:BildEinheitTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.6:TransferBeltTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.7:FuserTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.8:Tray1RollerTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.9:Tray1FrictionPadTXT,\
.1.3.6.1.2.1.43.11.1.1.6.1.10:WasteTonerXTT,\
.1.3.6.1.2.1.43.11.1.1.8.1.1:TonerSchwarzSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.2:TonerCyanSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.3:TonerMagentaSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.4:TonerYellowSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.5:BildEinheitSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.6:TransferBeltSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.7:FuserSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.8:Tray1RollerSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.9:Tray1FrictionPadSOLL,\
.1.3.6.1.2.1.43.11.1.1.8.1.10:WasteTonerSOLL,\
.1.3.6.1.2.1.43.11.1.1.9.1.1:TonerSchwarzREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.2:TonerCyanREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.3:TonerMagentaREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.4:TonerYellowREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.5:BildEinheitREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.6:TransferBeltREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.7:FuserREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.8:Tray1RollerREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.9:Tray1FrictionPadREST,\
.1.3.6.1.2.1.43.11.1.1.9.1.10:WasteTonerREST,\

attr PrinterStatus room 1.9_Technik
attr PrinterStatus snmp 1
attr PrinterStatus snmpCommunity public
attr PrinterStatus snmpVersion 2
attr PrinterStatus userReadings ur_BildEinheitREST_Prozent:.* {100 * BildEinheitSOLL/BildEinheitREST}\
\

attr PrinterStatus verbose 0

caldir65

#65
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:
   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;}


und der Quellcode der Seite, die ich abfrage:
<!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>


Vielen Dank für Unterstützung.

Gruß,
Christoph

Edit: Anpassung an Änderungen im Device
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

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:
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

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
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Dulaman

Hallo zusammen,
ich schließe mich dem Thema hier einmal an. Da ich derzeit auch an der Integration des Tonerstandes für meinen Lexmark MC3224 Druckers bin.

Ich habe es mit der RegEx und HTTPMOD Methode versucht, komme allerdings nicht weiter.
HTTPMOD funktioniert in FHEM, da habe ich die Preise von Tankstellen integriert.

Meine Stsatusseite des Druckers sieht wie folgt aus:
http://192.168.7.138/#/Status

Und die Anzeige des Toners wird so in der HTML angezeigt:
<li id="TonerSupplies" data-node="TonerSupplies" class="child-row">
<div class="supplyStatusContainer" data-init="initSupplyStatusContainer(this)">
<div class="contentRow" role="gridcell">
<div class="contentHeader" role="heading">
<span class="translated" data-textid="67527" tabindex="-1">
Schwarze Kassette
</span>
<br>
</div>
<div class="contentBody" role="presentation">
<div class="progress" role="presentation" tabindex="" data-deviceid="8-1">
<div class="progress-inner BlackGauge" role="img" aria-labelledby="0%">
<div class="progress-slider" style="width: 0px; overflow: hidden;">
<span class="dataText">0</span>
</div>
</div> <div class="status_icon warning">&nbsp;</div></div>
</div>
</div>
<div class="contentRow" role="gridcell">
<div class="contentHeader" role="heading">
<span class="translated" data-textid="67526" tabindex="-1">
Cyan-Kassette
</span>
<br>
</div>
<div class="contentBody" role="presentation">
<div class="progress" role="presentation" tabindex="" data-deviceid="8-2">
<div class="progress-inner CyanGauge" role="img" aria-labelledby="0%">
<div class="progress-slider" style="width: 0px; overflow: hidden;">
<span class="dataText">0</span>
</div>
</div> <div class="status_icon warning">&nbsp;</div></div>
</div>
</div>
<div class="contentRow" role="gridcell">
<div class="contentHeader" role="heading">
<span class="translated" data-textid="67525" tabindex="-1">
Magenta Kassette
</span>
<br>
</div>
<div class="contentBody" role="presentation">
<div class="progress" role="presentation" tabindex="" data-deviceid="8-3">
<div class="progress-inner MagentaGauge" role="img" aria-labelledby="0%">
<div class="progress-slider" style="width: 0px; overflow: hidden;">
<span class="dataText">0</span>
</div>
</div> <div class="status_icon warning">&nbsp;</div></div>
</div>
</div>
<div class="contentRow" role="gridcell">
<div class="contentHeader" role="heading">
<span class="translated" data-textid="67524" tabindex="-1">
Gelbe Kassette
</span>
<br>
</div>
<div class="contentBody" role="presentation">
<div class="progress" role="presentation" tabindex="" data-deviceid="8-4">
<div class="progress-inner YellowGauge" role="img" aria-labelledby="0%">
<div class="progress-slider" style="width: 0px; overflow: hidden;">
<span class="dataText">0</span>
</div>
</div> <div class="status_icon warning">&nbsp;</div></div>
</div>
</div>
</div>
</li>

Meine Versuche mittels RegEx sehen so aus:
<span class="translated" data-textid="67527" tabindex="-1">Schwarze Kassette</span> <span class="dataText">([^0-9]+)

Selbst den "einfachen" Status des Druckers, bekomme ich nicht hin.
Status: Ruhemodus
RegEx: <span class="statusline statuswarning">([A-Za-z]+)


<ul id="StatusHeader" class="itemContainer" role="status">

<ul>


<li id="Navigation" data-node="Navigation" class="child-row">

</li>

<li id="StatusArea" data-node="StatusArea" class="child-row">

<div class="content statusarea" role="status">
<div class="status">
<span class="translated" data-textid="67964" tabindex="-1">
Status
</span>
: <span class="statusline statuswarning">Ruhemodus </span>
</div>
<div class="warnings" style="">
<span class="translated" data-textid="72888" tabindex="-1">
Nachrichten
</span>
: <span class="warningline statuswarning">Kapazität Tonerkassette Schwarz wenig </span> <span class="warningline-more">
<span class="translated" data-textid="72893" tabindex="-1">
(Mehr...)
</span>
</span>
</div>
</div>

</li>


</ul>

</ul>


Hier das Listing meines Devices:
Internals:
  BUSY      0
  CFGFN     
  DEF        http://192.168.7.138/#/Status 300
  FUUID      6431365b-f33f-3b18-e323-3a35533efa6b21dc
  Interval  300
  MainURL    http://192.168.7.138/#/Status
  ModuleVersion 4.1.15 - 17.12.2022
  NAME      Lexmark
  NOTIFYDEV  global
  NR        333931
  NTFY_ORDER 50-Lexmark
  STATE      ???
  TYPE      HTTPMOD
  eventCount 5
  value     
  CompiledRegexes:
  HttpUtils:
    NAME     
    addr      http://192.168.7.138:80
    auth      0
    buf       
    code      400
    compress  1
    conn     
    data     
    displayurl http://192.168.7.138/#/Status
    header   
    host      192.168.7.138
    httpheader HTTP/1.1 400 Bad Request
Date: Sat, 08 Apr 2023 10:01:49 GMT
Server: Lexmark_Web_Server
X-Frame-Options: SAMEORIGIN
Cache-Control: no-cache
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
    httpversion 1.0
    hu_blocking 0
    hu_filecount 1
    hu_port    80
    hu_portSfx
    ignoreredirects 1
    loglevel  4
    path      /#/Status
    protocol  http
    redirects  0
    timeout    2
    url        http://192.168.7.138/#/Status
    sslargs:
  QUEUE:
  READINGS:
  REQUEST:
    context    reading
    data     
    header   
    ignoreredirects 0
    num        unknown
    retryCount 0
    type      update
    url        http://192.168.7.138/#/Status
  hmccu:
Attributes:
  reading01Name Status
  reading01Regex <span class="statusline statuswarning">([A-Za-z]+)
  reading02Name Warnings
  reading02Regex <span class="warningline statuswarning">([A-Za-z]+)
  room      1.1_Buero

Ich vermute noch als Fehler, dass das # in der Adresszeile den Rest des Links auskommentiert.
Hat jemand ebenfalls einen Lexmarkdrucker und kann die richtige URL nennen?

Vielen Dank.

mähschaf

Hallo Dulaman,

Ich bin da jetzt kein Experte, aber wenn es wirklich an dem Hash-Zeichen # liegt, versuch doch mal, dieses Zeichen zu codieren.

Vielleicht hilft das?

Viel Erfolg,
Martin


Dulaman

Hallo,

leider hat das mit dem Zeichen umcodieren nicht geholfen.
Die URL http://192.168.7.138/%23/Status ergibt ebenfalls nen HTTP 400 Fehler.

Danke, für den Tipp ... ich suche weiter.

Gruß Andreas

mi.ke

Zitat von: Dulaman am 08 April 2023, 12:06:22Ich habe es mit der RegEx und HTTPMOD Methode versucht, komme allerdings nicht weiter.
HTTPMOD funktioniert in FHEM, da habe ich die Preise von Tankstellen integriert.

Meine Stsatusseite des Druckers sieht wie folgt aus:
http://192.168.7.138/#/Status

im einfachsten Fall per HTTPMOD z.B. so:
Schwarze.*?dataText">(.*?)<
und wie Du es am einfachsten raus bekommst:
https://regex101.com/
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

satprofi

#71
Hallo @all.
Versuche den Patronenstatus eines Brother zu eruieren.
Das Model auslesen klappt schon mal

pc">(.*?)<

<link rel="stylesheet" type="text/css" href="../common/css/mobile_ews.css" />
<title>Brother MFC-J1010DW</title><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no" /></head><body><div id="headerFrame"><div id="menuButton" layout="pc" onclick="toggleMenu();"><img src="/common/images/menu_icon.gif" alt="Menu"></div><div id="modelName" layout="pc">MFC-J1010DW</div><div id="corporateLogo" layout="pc"><img src="/common/images/logo.gif" alt="Brother" /></div></div></div><div id="Menu" layout="pc"><div

Mit regex finde ich auch die Prozentzahl, aber wird von fhem nicht eingelesen.

\(M\)\*\*.{9}(\d\d)

Firmware-Version</dt><dd>1.12</dd></dl></div><div class="contentsGroup"><dl class="items_info_1line"><dt>Seitenz&auml;hler</dt><dd>11</dd><dt class="subhead"><span>Farbe</span></dt><dd>7</dd><dt class="subhead"><span>SCHWARZWEISS</span></dt><dd>4</dd></dl></div><div class="contentsGroup"><h3>Verbleibende&#32;Lebensdauer</h3><dl class="items"><dt>Tinte&nbsp;Cyan&#32;(C)**</dt><dd>99%</dd><dt>Tinte&nbsp;Magenta&#32;(M)**</dt><dd>99%</dd><dt>Tinte&nbsp;Gelb&#32;(Y)**</dt><dd>99%</dd><dt>Tinte&nbsp;Schwarz&#32;(BK)**</dt><dd>97%</dd></dl></div><div class="contentsGroup"><h3>Gesamtanzahl&#32;gedruckter&#32;Seiten</h3><dl class="items">
was mache ich da falsch?


auszug aus logfile

2023.11.19 13:39:24 5: Drucker: Read callback: body
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="en-gb" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb"><head><meta http-equiv="Content-Script-Type" content="text/javascript" /><meta http-equiv="content-style-type" content="text/css" /><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><meta http-equiv="X-UA-Compatible" content="IE=edge"><script type="text/javascript" src="/common/js/ews.js"></script><link rel="stylesheet" type="text/css" href="../common/css/mobile_common.css" />
<link rel="stylesheet" type="text/css" href="../common/css/mobile_ews.css" />
<title>Brother MFC-J1010DW</title><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no" /></head><body><div id="headerFrame"><div id="menuButton" layout="pc" onclick="toggleMenu();"><img src="/common/images/menu_icon.gif" alt="Menu"></div><div id="modelName" layout="pc">MFC-J1010DW</div><div id="corporateLogo" layout="pc"><img src="/common/images/logo.gif" alt="Brother" /></div></div></div><div id="Menu" layout="pc"><div id="navigationContainer"><div id="navMenu"><div id="LayoutButton"><img id="PCButton" layout="pc" src="/common/images/chevron_left.gif" onclick="changeLayout('user_layout','mobile');"></img><img id="MobileButton" layout="pc" src="/common/images/pin.gif" onclick="changeLayout('user_layout','pc');"></img></div><hr><div id="LogInOutBox"><form method="post" action="/home/status.html"><div><input type="password" id="LogBox" name="B415" /><input type="hidden" name="loginurl" value="/general/information.html"/><input id="login" type="submit" value="Login" /></div></form></div><div class="links"><a href="https://update.brother.co.jp/device/redirect.aspx?redirecttype=6&country=w&lang=en&device=MFC-J1010DW&alias=aqfs" target="_blank">Trouble logging in?</a></div><hr><div id="menu_tree_root"><div class="menuLv1"><a href="#" onclick="expandMenu('home_sub');">Home</a><div id="home_sub" class="open"><div class="menuLv2"><a href="/home/status.html">Status</a></div><div class="menuLv2"><a href="/home/reflesh.html" class="subMenu">Auto&#32;Refresh&#32;Interval</a></div></div></div><hr></div></div></div></div><div id="Page" layout="pc"><div id="rightFrameContainer"><div id="rightFrame"><div id="mainContent"><div id="pageTitle"><h2>Please&#32;Login</h2></div><div id="pageContents"><div class="contentsGroup"><p class="noteMessage">To&#32;Access&#32;this&#32;page&#32;you&#32;are&#32;required&#32;to&#32;Login,&#32;please&#32;Login.</p></div></div></div></div></div></div></div><div id="footerFrame">Copyright(C) 2000-2021 Brother Industries, Ltd. All Rights Reserved.</div><script type="text/javascript" src="/common/js/mobilemenucontrl.js"></script><script>window.onpageshow = function(event) {if (event.persisted) { window.location.reload(); }};</script></body></html>
2023.11.19 13:39:24 4: Drucker: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2023.11.19 13:39:24 5: Drucker: GetCookies is looking for Cookies
2023.11.19 13:39:24 5: Drucker: ExtractSid called, context reading, num unknown
2023.11.19 13:39:24 4: Drucker: checking for redirects, code=200, ignore=0
2023.11.19 13:39:24 4: Drucker: no redirects to handle
2023.11.19 13:39:24 5: Drucker: Read callback sets LAST_REQUEST to update
2023.11.19 13:39:24 5: Drucker: CheckAuth decided no authentication required
2023.11.19 13:39:24 5: Drucker: Read starts parsing response to update with defined readings: 01,05
2023.11.19 13:39:24 5: Drucker: ExtractReading M with regex /(?^:/\(BK\)\*\*.{9}(\d\d)/)/...
2023.11.19 13:39:24 5: Drucker: ExtractReading M did not match
2023.11.19 13:39:24 5: Drucker: ExtractReading Model with regex /(?^:pc">(.*?)<)/...
2023.11.19 13:39:24 5: Drucker: FormatReading is encoding the reading value as utf-8 because no encoding was specified and the response body charset was unknown or decoded
2023.11.19 13:39:24 5: Drucker: ExtractReading for reading05-1 sets Model to MFC-J1010DW
2023.11.19 13:39:24 5: Drucker: ExtractReading value as hex is 4d46432d4a313031304457
2023.11.19 13:39:24 4: Drucker: Read response matched 1, unmatch 1 Reading(s)
2023.11.19 13:39:24 5: Drucker: Read response to update matched Model
2023.11.19 13:39:24 5: Drucker: Read response to update did not match M
2023.11.19 13:39:24 5: Drucker: HandleSendQueue called from ReadCallback, qlen = 0
2023.11.19 13:39:24 5: Drucker: HandleSendQueue found no usable entry in queue
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

#72
ursache gefunden, seite wird nicht aufgerufen, da passworteingabe fehlt. auf startseite findet er das regex vom Model, aber die Patronenzustände sind erst nach Passworteingabe sichtbar.

werte jetzt die icongrösse aus.

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram