Abfrage des Füllstandes von Tintenpatronen

Begonnen von sash.sc, 24 März 2019, 13:56:55

Vorheriges Thema - Nächstes Thema

sash.sc

Hallo zusammen.

Ich habe einen dicken von Epson, ein Workforce. Dieser hat einen eingebauten Webserver, über den man den Füllstand der Patronen Anfragen kann bzw angezeigt bekommt. Jedoch nur grafisch.

Hat jemand eine Idee, wie wann denn Füllstand über fhem abfragen kann?

Hier mal ein Bild von der Page.

Gruß und danke
Sascha (https://uploads.tapatalk-cdn.com/20190324/2a5ded2db31627cdaad81e22df0d2934.jpg)

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

dkreutz

Da gibt es von Epson wohl eine API: https://www.epson.eu/verticals/epson-open-platform

Habe aber nicht weiter geschaut, ob und was die erforderliche Anmeldung zum Developer Programm kostet und ob die gewünschte Information über die API abfragbar ist...
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

digiart

Ich würde es mit SNMP versuchen. Dort sollte die Werte abfragbar sein.
Anfragen ausserhalb der Threads (PN, Mail o.ä.) werden ignoriert!

sash.sc

Wie würde das denn mit snmp aussehen?

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

digiart

SNMP im Druckerinterface aktivieren und mit snmpget/snmpwalk im Linux-Terminal die richtigen OIDs auslesen.
Anfragen ausserhalb der Threads (PN, Mail o.ä.) werden ignoriert!

sash.sc

Habe mal in den ganzen Einstellungen geschaut. Da gibt es nix um snmp zu aktivieren.



Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

knopf_piano

#6
meine umsetzung für nen hp laser. andere oids mußt du dir raussuchen:

in fhem console (<printerip> anpassen):

{HP_PrinterStatusCheck("<printerip>","Dum_HP_Laserdrucker")}



vorher einfügen...
fhem

define Dum_HP_Laserdrucker dummy

define rg_PrinterStatus readingsGroup <%it_printer@blue>,<Wert>,<Zeit> Dum_HP_Laserdrucker.*
attr rg_PrinterStatus alias Druckerstatus
attr rg_PrinterStatus group .Peripherie
attr rg_PrinterStatus mapping { 'serial' => "Seriennummer",
'maxNrCopies' => "max. Anzahl Kopien",
'pagesPrinted' => "gedruckte Seiten",
'remainNrCopies' => "Tonerfüllstand",
'status' => "Status",
'tonerColor' => "Tonerfarbe",
'tonerLevel' => "Tonerfüllstand",
'cartridge' => "Toner",
'drum' => "Toner-Drum",
'systemName' => "Name",
}
attr rg_PrinterStatus nameStyle style="font-weight:bold;;font-size:12;;text-align:left;;"
attr rg_PrinterStatus noheading 1
attr rg_PrinterStatus nolinks 1
attr rg_PrinterStatus room Geräte->Peripherie
attr rg_PrinterStatus sortColumn 1
attr rg_PrinterStatus valueFormat { 'tonerLevel' => "%s %",
'remainNrCopies' => "%s %",
}


myutils

###################################################
# snmp-request
###################################################
sub HP_PrinterStatusCheck(@)
{
my $printer_ip = shift;
my $device = shift;
my $oid = "";
my @tmp = ();
my $val = "";
my $cmd = "snmpwalk -cC -v 1 -c public $printer_ip";
my %hp_snmp_oid= (
"status"              =>   "1.3.6.1.2.1.25.3.5.1.1.1",
"remainNrCopies"      =>   "1.3.6.1.2.1.43.11.1.1.9.1.1",
"tonerColor"          =>   "1.3.6.1.2.1.43.12.1.1.4.1.1",
"pagesPrinted"        =>   "1.3.6.1.2.1.43.10.2.1.4.1.1",
"serial"              =>   "1.3.6.1.2.1.43.5.1.1.17.1",
"systemName"   =>   "1.3.6.1.2.1.1.5.0",
"cartridge"   =>   "1.3.6.1.2.1.43.11.1.1.6.1.1",
"drum"       =>   "1.3.6.1.2.1.43.11.1.1.6.1.5",
#"tonerLevel"          =>   "1.3.6.1.2.1.43.11.1.1.8.1.1",
#"allCartridg"   =>   "1.3.6.1.2.1.43.11.1.1.6",
#"deviceID"   =>   "1.3.6.1.4.1.11.2.3.9.1.1.7.0",
#"maxNrCopies"         =>   "1.3.6.1.2.1.43.11.1.1.8.1.1",
"name" => "1.3.6.1.2.1.1.1.0",
"MAC" => "1.3.6.1.2.1.2.2.1.6.2",
);
my %hrPrinterStatus = (
        1 => "other (1)",
        2 => "unknown (2)",
        3 => "idle (3)",
        4 => "printing (4)",
        5 => "warmup (5)"
);

#if(PingServer($printer_ip))
if(1)
{
foreach my $key (keys %hp_snmp_oid)
{
$oid = $hp_snmp_oid{$key};
#print "$cmd $oid\n";
$val = `$cmd $oid`;
@tmp = split(/:/,$val);

if($key eq "status")
{
$val = $hrPrinterStatus{$tmp[1]};
}
elsif($key =~ /name/)
{
$val = $tmp[5];
$val =~ s/[:\"]//g;
}
elsif($key =~ /(cartridge|drum)/)
{
$val = $tmp[1];
$val =~ s/[:\"]//g;
}
elsif($key =~ /MAC/)
{
$val = trim($tmp[1]);
#$val =~ s/[:\"]//g;
#$val =~ s/(\s){1}//;
$val =~ s/\s/\:/g;
}
else
{
$val = $tmp[1];
$val =~ s/[:\s\"]//g;
}

#print "$key:\t$val\n";
fhem "setreading $device $key $val";
}
}
}

zotac nano mit proxmox und ganz viel zeug drauf

sash.sc

Werde es dir Tage ausprobieren!

Danke erstmal

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

amenomade

Zitat von: sash.sc am 24 März 2019, 13:56:55
Hallo zusammen.

Ich habe einen dicken von Epson, ein Workforce. Dieser hat einen eingebauten Webserver, über den man den Füllstand der Patronen Anfragen kann bzw angezeigt bekommt. Jedoch nur grafisch.

Hat jemand eine Idee, wie wann denn Füllstand über fhem abfragen kann?


Hast Du einfach mit HTTPMOD versucht? Es gibt sogar Templates für Epson.
(auch für Hp)
ZitatB_01b_epson_printer_cartridge_status
Get cartridge states of your Epson printer.
Define a HTTPMOD device like
defmod DEVICE HTTPMOD http://192.168.188.25/PRESENTATION/HTML/TOP/PRTINFO.HTML 3600
Change IP to your needs
Source: https://forum.fhem.de/index.php/topic,90601.msg874683.html#msg874683
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

sash.sc

Viele Wege führen nach Rom. [emoji848][emoji108]

Werde dies auch testen.

Danke
Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

yoda_gh

Falls die Ansätze nicht klappen, schick uns bitte mal den HTML-Quellcode der Status-Seite, dann müssen wir sehen, ob dort die Werte nicht lesbar drin stehen...

sash.sc

Hallo zusammen.

Danke nochmals für eure Hilfe.

Habe es jetzt per HTTPMOD probiert. Haut auch soweit funktioniert. Jedoch wurde mit der Wert für Schwarz nicht angezeigt und das Reading nicht angelegt.
Habe vorweg das Templat für Epson angewendet.
Das Reading für Schwarz wurde nicht angelegt, da


reading04Name Black
reading04Regex Ink_B.*?='([\d]+)'


im Template steht.

habe mir dann den Quelltext für die Seite mal angeschaut !


<ul class="information-last clearfix">
<li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_K.PNG' height='44'>
</div>
<div class='clrname'>BK</div>
</li>
<li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_Y.PNG' height='21'>
</div>
<div class='clrname'>Y</div>
</li>
<li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_M.PNG' height='18'>
</div>
<div class='clrname'>M</div>
</li>
<li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_C.PNG' height='17'>
</div>
<div class='clrname'>C</div>
</li>
</ul>
</div>


Habe dann das folgend abgeändert !


reading04Regex
Ink_BK.*?='([\d]+)'


Und das Reading für Schwarz wurde dann angelegt und alle 4 Farben dann angezeigt !

Habe gesehen, dass es aber kein Template für ddie Abfrage des Status gibt, z.B. Anzahl der gedruckten Seiten.
Das Problem ist, dass diese Seite mit Frames arbeitet.

Habe hier mal den Code eingefügt.


Seitenquelltext


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.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>WF-2630 Series</title><link rel='stylesheet' type='text/css' href='../COMMON/STYLE.CSS'></head><FRAMESET rows="58,*"><FRAME name="HEADER" src="HEADER" scrolling="no" noresize><FRAMESET cols="320,*"><FRAME scrolling="yes" name="MENU" src="MENU"><FRAME name="CONTENTS" src="../INFO_PRTINFO/TOP"></FRAMESET><NOFRAMES><BODY></BODY></NOFRAMES></FRAMESET></html>


Framequelltext


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN "
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Author" content="SEIKO EPSON">
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
<meta name="format-detection" content="telephone=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>WF-2630 Series</title><link rel='stylesheet' type='text/css' href='../COMMON/STYLE.CSS'></head><body class="contents"><div class="wrap"><div class="header-main">Status&nbsp;&gt;&nbsp;Wartung</div><div class="section"><dl class="values"><dt class="key"><span class="key">Erstdruckdatum&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">12-10-2028</div></dd></dl><fieldset class="group"><legend>Druckinformationen</legend><dl class="values"><dt class="key"><span class="key">Gesamtanzahl Seiten&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">248</div></dd><dt class="key"><span class="key">Gesamtanzahl S&amp;W-Seiten&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">155</div></dd><dt class="key"><span class="key">Gesamtanzahl Farbe-Seiten&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">93</div></dd><dt class="key"><span class="key">Gesamtanzahl 1-seitige Druckseiten&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">248</div></dd></dl></fieldset><fieldset class="group"><legend>Anzahl nach Größe sortierter Seiten</legend><table class="values"><thead><tr><th class="key" rowspan="2">&nbsp;</th><th class="key" colspan="2">1-seitig</th></tr><tr><th class="key">Schwarzweiß</th><th class="key">Farbe</th></tr></thead><tbody><tr><td class="value">A3/LGL</td><td class="value number"><div class="preserve-white-space">1</div></td><td class="value number"><div class="preserve-white-space">0</div></td></tr><tr><td class="value">A4/Letter</td><td class="value number"><div class="preserve-white-space">154</div></td><td class="value number"><div class="preserve-white-space">93</div></td></tr><tr><td class="value">A5</td><td class="value number"><div class="preserve-white-space">0</div></td><td class="value number"><div class="preserve-white-space">0</div></td></tr><tr><td class="value">A6</td><td class="value number"><div class="preserve-white-space">0</div></td><td class="value number"><div class="preserve-white-space">0</div></td></tr><tr><td class="value">B4</td><td class="value number"><div class="preserve-white-space">0</div></td><td class="value number"><div class="preserve-white-space">0</div></td></tr><tr><td class="value">B5</td><td class="value number"><div class="preserve-white-space">0</div></td><td class="value number"><div class="preserve-white-space">0</div></td></tr><tr><td class="value">Umschlag</td><td class="value number"><div class="preserve-white-space">0</div></td><td class="value number"><div class="preserve-white-space">0</div></td></tr><tr><td class="value">Sonstiges</td><td class="value number"><div class="preserve-white-space">0</div></td><td class="value number"><div class="preserve-white-space">0</div></td></tr></tbody></table></fieldset><fieldset class="group"><legend>Gesamtanzahl nach Funktion sortierter Seiten</legend><dl class="values"><dt class="key"><span class="key">S&amp;W-Kopie&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">43</div></dd><dt class="key"><span class="key">Farbe-Kopie&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">9</div></dd><dt class="key"><span class="key">S&amp;W-Fax&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">0</div></dd><dt class="key"><span class="key">Farbe-Fax&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">0</div></dd><dt class="key"><span class="key">S&amp;W-Scan&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">62</div></dd><dt class="key"><span class="key">Farbe-Scan&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">36</div></dd><dt class="key"><span class="key">S&amp;W-Druck vom Computer oder Mobilgerät&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">112</div></dd><dt class="key"><span class="key">Farbe-Druck vom Computer oder Mobilgerät&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">77</div></dd></dl></fieldset><fieldset class="group"><legend>Gesamtanzahl nach Drucksprache sortierter Seiten</legend><dl class="values"><dt class="key"><span class="key">Von ESC/P-R gedruckt&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">15</div></dd><dt class="key"><span class="key">Sonstiges&nbsp;:</span></dt><dd class="value clearfix"><div class="preserve-white-space">233</div></dd></dl></fieldset><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></div><div class="footer"><ul class="buttons"><li class="button"><button type="button" class="button" onclick="document.getElementById('refresh_form').submit(); return false;">Aktualisieren</button></li></ul></div></div></body></html>


Die URL von der FrameSeite ist http://192.168.2.111/PRESENTATION/ADVANCED/INFO_MENTINFO/TOP


Da werde Ich dann wohl für Jede Info ein Reading anlegen müssen, oder?
Oder gibt es eine Funktion die die Seite "scannt" und einem die Readings anlegt ?!?!?!?

Gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

amenomade

Zitat von: sash.sc am 27 März 2019, 20:23:14
Habe dann das folgend abgeändert !


reading04Regex
Ink_BK.*?='([\d]+)'

Eher Ink_K.*?='([\d]+)' oder?

Zitat
Da werde Ich dann wohl für Jede Info ein Reading anlegen müssen, oder?
Leider ja.
ZitatOder gibt es eine Funktion die die Seite "scannt" und einem die Readings anlegt ?!?!?!?
Da es weder JSON noch XML ist, nein.

Gruß und Danke
Sascha
[/quote]
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus