FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: sash.sc am 24 März 2019, 13:56:55

Titel: Abfrage des Füllstandes von Tintenpatronen
Beitrag 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?

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

Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: dkreutz am 24 März 2019, 14:08:40
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...
Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: digiart am 24 März 2019, 14:15:35
Ich würde es mit SNMP versuchen. Dort sollte die Werte abfragbar sein.
Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: sash.sc am 24 März 2019, 14:52:08
Wie würde das denn mit snmp aussehen?

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: digiart am 24 März 2019, 16:12:44
SNMP im Druckerinterface aktivieren und mit snmpget/snmpwalk im Linux-Terminal die richtigen OIDs auslesen.
Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: sash.sc am 24 März 2019, 17:12:20
Habe mal in den ganzen Einstellungen geschaut. Da gibt es nix um snmp zu aktivieren.



Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: knopf_piano am 24 März 2019, 17:36:33
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";
}
}
}

Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: sash.sc am 24 März 2019, 19:51:30
Werde es dir Tage ausprobieren!

Danke erstmal

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: amenomade am 24 März 2019, 20:05:28
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 (https://forum.fhem.de/index.php/topic,90601.msg874683.html#msg874683)
Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: sash.sc am 24 März 2019, 20:10:20
Viele Wege führen nach Rom. [emoji848][emoji108]

Werde dies auch testen.

Danke
Sascha

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: yoda_gh am 25 März 2019, 07:52:35
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...
Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: sash.sc am 27 März 2019, 20:23:14
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
Titel: Antw:Abfrage des Füllstandes von Tintenpatronen
Beitrag von: amenomade am 28 März 2019, 01:02:18
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]