Druckerpatronen-Zustand

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

Vorheriges Thema - Nächstes Thema

akw

Hi,

weil meine Frau als Lehrerin nun schon mehrfach morgens vor der Schule festgestellt hat, dass der Drucker mal wieder keine Tinte hat, habe ich mal den Patronenzustand in FHEM integriert. Es handelt sich um einen HP Officejet Pro 8620. Ich gehe davon aus, dass es bei einer Reihe anderer HP-Drucker auf gleiche Weise funktioniert.

defmod Edeldrucker HTTPMOD http://192.168.178.78/DevMgmt/ConsumableConfigDyn.xml 60
attr Edeldrucker userattr reading01Name reading01XPath-Strict reading02Name reading02XPath-Strict reading03Name reading03XPath-Strict reading04Name reading04XPath-Strict
attr Edeldrucker httpVersion 1.1
attr Edeldrucker reading01Name Cyan
attr Edeldrucker reading01XPath-Strict //ccdyn:ConsumableInfo[3]/dd:ConsumablePercentageLevelRemaining/text()
attr Edeldrucker reading02Name Magenta
attr Edeldrucker reading02XPath-Strict //ccdyn:ConsumableInfo[2]/dd:ConsumablePercentageLevelRemaining/text()
attr Edeldrucker reading03Name Yellow
attr Edeldrucker reading03XPath-Strict //ccdyn:ConsumableInfo[4]/dd:ConsumablePercentageLevelRemaining/text()
attr Edeldrucker reading04Name Black
attr Edeldrucker reading04XPath-Strict //ccdyn:ConsumableInfo[5]/dd:ConsumablePercentageLevelRemaining/text()
attr Edeldrucker room Büro
attr Edeldrucker stateFormat C: Cyan% M: Magenta% Y: Yellow% K: Black%


Wichtig ist das Attribut "httpVersion", da der Drucker nicht auf HTTP 1.0 - Requests antwortet und das HTTPMOD defaultmäßig dieses Protokoll verwendet. Warum eigentlich? M.E. sollte der Default auf 1.1 stehen...


Vielleicht ist es ja für den ein oder anderen hilfreich!
Man kann natürlich noch viel mehr machen, aber das reicht mir zunächst mal. Eventuell ist es sinnvoll, irgendwann ein richtiges FHEM-Modul zu schreiben, dass mit dem Drucker per IPP (Internet Printing Protocol) spricht, um zum einen unabhängig vom Druckerhersteller zu funktionieren und zum anderen mehr Infos abzurufen. Außerdem könnte FHEM dann evt. auch selbst drucken :-)



FHEM-SVN auf MacMini OSX 10.7.5

FS20,FHT,HMS,CUL_WS,CUL_HM,KS300,HUE,FB_DECT

FHEMobile: www.fhemobile.de

Helmi55

Ja ja die Lehrerinnen Kenne ich.
Wäre schön wenn das auch mit EPSON 3620 arbeiten würde
Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Tedious

Danke für den Code, habe ich direkt mal übernommen. Nettes Gimmick für den Überblick - nur wenn die Patrone leer ist kannst Du den HP auch konfigurieren dass er eine EMail schickt ;)
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Prof. Dr. Peter Henning

Bei vielen Druckern anderer Hersteller funktioniert das nur mit SNMP. Das kann man aber problemlos in FHEM einbinden, indem auf dem FHEM-Rechner mit apt-get snmp die notwendigen Bibliotheken und Befehle installiert werden.

Dann braucht es ein Skript in /opt/fhem, beispielsweise

#!/bin/bash

PIP=192.168.0.XX
cmd="snmpget -Ovq -v1 -c public"
pages=1.3.6.1.2.1.43.10.2.1.4.1.1
#alert=iso.3.6.1.2.1.43.16.5.1.2.1.1
alert=1.3.6.1.4.1.2435.2.3.9.4.2.1.5.4.5.2.0
alertlevel=1.3.6.1.4.1.2435.2.3.9.4.2.1.5.4.5.6.0
tinte=iso.3.6.1.2.1.43.18.1.1.8.1.1
status=iso.3.6.1.2.1.43.18.1.1.8.1.2

nblack=1.3.6.1.2.1.43.11.1.1.6.1.1
nyellow=1.3.6.1.2.1.43.11.1.1.6.1.2
ncyan=1.3.6.1.2.1.43.11.1.1.6.1.3
nmagenta=1.3.6.1.2.1.43.11.1.1.6.1.4

fblack=1.3.6.1.2.1.43.11.1.1.9.1.1
fyellow=1.3.6.1.2.1.43.11.1.1.9.1.2
fcyan=1.3.6.1.2.1.43.11.1.1.9.1.3
fmagenta=1.3.6.1.2.1.43.11.1.1.9.1.4

#mblack
#myellow
#mcyan
#mmagenta

pages=`$cmd $PIP $pages`
alert=`$cmd $PIP $alert`
alertlevel=`$cmd $PIP $alertlevel`
tinte=`$cmd $PIP $tinte`
status=`$cmd $PIP $status`

#nblack=`$cmd $PIP $nblack`
#nyellow=`$cmd $PIP $nyellow`
#ncyan=`$cmd $PIP $ncyan`
#nmagenta=`$cmd $PIP $nmagenta`

fblack=`$cmd $PIP $fblack`
fyellow=`$cmd $PIP $fyellow`
fcyan=`$cmd $PIP $fcyan`
fmagenta=`$cmd $PIP $fmagenta`

if [ $fblack == -3 ]; then
  fblack="OK"
else
  if [ $fblack == -2 ]; then
    fblack="UNK2"
  else
    if [ $fblack == -1 ]; then
      fblack="UNK1"
    else
      if [ $fblack == 0 ]; then
        fblack="Leer"
      fi
    fi
  fi
fi

if [ $fyellow == -3 ]; then
  fyellow="OK"
else
  if [ $fyellow == -2 ]; then
    fyellow="UNK2" 
  else
    if [ $fyellow == -1 ]; then
      fyellow="UNK1"
    else
      if [ $fyellow == 0 ]; then
        fyellow="Leer"
      fi
    fi
  fi
fi

if [ $fcyan == -3 ]; then
  fcyan="OK"
else
  if [ $fcyan == -2 ]; then
    fcyan="UNK2" 
  else
    if [ $fcyan == -1 ]; then
      fcyan="UNK1"
    else
      if [ $fcyan == 0 ]; then
        fcyan="Leer"
      fi
    fi
  fi
fi

if [ $fmagenta == -3 ]; then
  fmagenta="OK"
else
  if [ $fmagenta == -2 ]; then
    fmagenta="UNK2" 
  else
    if [ $fmagenta == -1 ]; then
      fmagenta="UNK1"
    else
      if [ $fmagenta == 0 ]; then
        fmagenta="Leer"
      fi
    fi
  fi
fi



echo "$status|$pages|$alert|$alertlevel|$tinte|$fcyan|$fmagenta|$fyellow|$fblack"


sowie ein kleines Perl-Programm
##############################################################################
#
#  Tintenstrahldrucker
#
##############################################################################

sub getTintenstrahldrucker(){
  my $string=`/opt/fhem/getTintenstrahldrucker.sh`;
  $string=~s/"//g;
  my @data=split('\|',$string);
  my $hash = $defs{'Tintenstrahldrucker'};
  readingsBeginUpdate($hash);
  readingsBulkUpdate($hash,"raw",$string);
  readingsBulkUpdate($hash,"status",$data[0]);
  readingsBulkUpdate($hash,"pages",$data[1]);
  readingsBulkUpdate($hash,"alert",$data[2]);
  readingsBulkUpdate($hash,"alertlevel",$data[3]);
  readingsBulkUpdate($hash,"ink",$data[4]);
  readingsBulkUpdate($hash,"ink-cyan",$data[5]);
  readingsBulkUpdate($hash,"ink-magenta",$data[6]);
  readingsBulkUpdate($hash,"ink-yellow",$data[7]);
  readingsBulkUpdate($hash,"ink-black",$data[8]);
  readingsEndUpdate($hash,1);
}


das bei dem dummy "Tintentstrahldrucker" die userReadings befüllt und durch ein kleines "at" zyklisch aufgerufen wird.

Problem dabei: Welche OID (Object Identifier) - das sind die kryptischen Zahlenstrings im Skript - bedeuten WAS ? Da schweigen sich die meisten Hersteller aus, das obige funktioniert mit einem Brother-Tintenstrahldrucker.

LG

pah

wendeling

Halo,
bei mir will er dass ich folgende installiere :

apt-get install libxml-parser-perl libxml-xpath-perl

aber das läßt er nicht zu ?

Was tun ?

Gruß
Wendelin


Prof. Dr. Peter Henning

Zitatbei mir will er
Wer - "er" ?

Zitataber das läßt er nicht zu ?
Derselbe "er" ? Was heißt, "lässt nicht zu" ?

LG

pah

Tedious

FHEM fehlen die Pakete. Musst Du in der Shell nachinstallieren, Du musst dazu sudo voranstellen...
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

CoolTux

Zitat von: wendeling am 02 September 2018, 18:05:01
Halo,
bei mir will er dass ich folgende installiere :

apt-get install libxml-parser-perl libxml-xpath-perl

aber das läßt er nicht zu ?

Was tun ?

Gruß
Wendelin

https://forum.fhem.de/index.php/topic,71806.0.html
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

wendeling

Hallo,
Entschuldigung das ich gefragt habe!

Mit er ist der Raspberry bzw. dessen Betriebssystem gemeint gewesen.

Aber wenn ich es wüsste hätte ich nicht gefragt.

Aber ok. dann ohne Druck.. 

Gruß
Wendelin


Prof. Dr. Peter Henning

Nun ja.

Wer irgendwelche komischen Fragen stellt, ohne Informationen mitzuliefern,
wer Befehlsfolgen postet, ohne die Log-Ausgaben oder Fehlermeldungen mitzuliefern,

darf sich über fehlenden Support nicht wundern.

Also ohne Druck.

LG

pah

Laserhelge

Hallo,

wollte gerade die Idee mit dem Füllstand umsetzen, bekomme aber im Minutentakt folgenden Eintrag im Log:

Laserdrucker: Read callback: Error: http://192.168.115.221/DevMgmt/ConsumableConfigDyn.xml: empty answer received

Wenn ich die Adresse im Browser aufrufe, bekomme ich die XML-Datei angezeigt.

Hat jemand einen Tipp für mich?

Danke und viele Grüße

defmod Laserdrucker HTTPMOD http://192.168.115.221/DevMgmt/ConsumableConfigDyn.xml 60
attr Laserdrucker userattr reading01Name reading01XPath-Strict reading02Name reading02XPath-Strict reading03Name reading03XPath-Strict reading04Name reading04XPath-Strict
attr Laserdrucker httpVersion 1.1
attr Laserdrucker reading01Name Cyan
attr Laserdrucker reading01XPath-Strict //ccdyn:ConsumableInfo[3]/dd:ConsumablePercentageLevelRemaining/text()
attr Laserdrucker reading02Name Magenta
attr Laserdrucker reading02XPath-Strict //ccdyn:ConsumableInfo[2]/dd:ConsumablePercentageLevelRemaining/text()
attr Laserdrucker reading03Name Gelb
attr Laserdrucker reading03XPath-Strict //ccdyn:ConsumableInfo[4]/dd:ConsumablePercentageLevelRemaining/text()
attr Laserdrucker reading04Name Schwarz
attr Laserdrucker reading04XPath-Strict //ccdyn:ConsumableInfo[5]/dd:ConsumablePercentageLevelRemaining/text()
attr Laserdrucker room DG_Buero
attr Laserdrucker stateFormat C: Cyan% M: Magenta% Y: Gelb% K: Schwarz%

setstate Laserdrucker C: Cyan% M: Magenta% Y: Gelb% K: Schwarz%
FHEM auf Raspberry 4 / CUL / KNX / Loxone Miniserver

Prof. Dr. Peter Henning


Mumpitz

Zitat von: akw am 27 August 2018, 08:37:10
Hi,

weil meine Frau als Lehrerin nun schon mehrfach morgens vor der Schule festgestellt hat, dass der Drucker mal wieder keine Tinte hat, habe ich mal den Patronenzustand in FHEM integriert. Es handelt sich um einen HP Officejet Pro 8620. Ich gehe davon aus, dass es bei einer Reihe anderer HP-Drucker auf gleiche Weise funktioniert.

defmod Edeldrucker HTTPMOD http://192.168.178.78/DevMgmt/ConsumableConfigDyn.xml 60
attr Edeldrucker userattr reading01Name reading01XPath-Strict reading02Name reading02XPath-Strict reading03Name reading03XPath-Strict reading04Name reading04XPath-Strict
attr Edeldrucker httpVersion 1.1
attr Edeldrucker reading01Name Cyan
attr Edeldrucker reading01XPath-Strict //ccdyn:ConsumableInfo[3]/dd:ConsumablePercentageLevelRemaining/text()
attr Edeldrucker reading02Name Magenta
attr Edeldrucker reading02XPath-Strict //ccdyn:ConsumableInfo[2]/dd:ConsumablePercentageLevelRemaining/text()
attr Edeldrucker reading03Name Yellow
attr Edeldrucker reading03XPath-Strict //ccdyn:ConsumableInfo[4]/dd:ConsumablePercentageLevelRemaining/text()
attr Edeldrucker reading04Name Black
attr Edeldrucker reading04XPath-Strict //ccdyn:ConsumableInfo[5]/dd:ConsumablePercentageLevelRemaining/text()
attr Edeldrucker room Büro
attr Edeldrucker stateFormat C: Cyan% M: Magenta% Y: Yellow% K: Black%


Wichtig ist das Attribut "httpVersion", da der Drucker nicht auf HTTP 1.0 - Requests antwortet und das HTTPMOD defaultmäßig dieses Protokoll verwendet. Warum eigentlich? M.E. sollte der Default auf 1.1 stehen...


Vielleicht ist es ja für den ein oder anderen hilfreich!
Man kann natürlich noch viel mehr machen, aber das reicht mir zunächst mal. Eventuell ist es sinnvoll, irgendwann ein richtiges FHEM-Modul zu schreiben, dass mit dem Drucker per IPP (Internet Printing Protocol) spricht, um zum einen unabhängig vom Druckerhersteller zu funktionieren und zum anderen mehr Infos abzurufen. Außerdem könnte FHEM dann evt. auch selbst drucken :-)

Hallo akw

Tolle Sache, für mich angepasst, libxml nachinstalliert, ausgeführt und siehe da. Es funktioniert!

Besten Dank bereits jetzt dafür!

Hast Du zufälligerweise schon eine Umsetzung für TabletUI gemacht?  ;)

Laserhelge

Danke für den Vorschlag, aber auch mit einem Timeout von 20 bekomme ich die Meldung

Laserdrucker: Read callback: Error: http://192.168.115.221/DevMgmt/ConsumableConfigDyn.xml: empty answer received

im Log. Im Browser erscheint die XML-Datei auch gefühlt verzögerungsfrei.

Hat jemand eine Idee, woran es sonst liegen könnte.

defmod Laserdrucker HTTPMOD http://192.168.115.221/DevMgmt/ConsumableConfigDyn.xml 60
attr Laserdrucker userattr reading01Name reading01XPath-Strict reading02Name reading02XPath-Strict reading03Name reading03XPath-Strict reading04Name reading04XPath-Strict
attr Laserdrucker httpVersion 1.1
attr Laserdrucker reading01Name Cyan
attr Laserdrucker reading01XPath-Strict //ccdyn:ConsumableInfo[3]/dd:ConsumablePercentageLevelRemaining/text()
attr Laserdrucker reading02Name Magenta
attr Laserdrucker reading02XPath-Strict //ccdyn:ConsumableInfo[2]/dd:ConsumablePercentageLevelRemaining/text()
attr Laserdrucker reading03Name Yellow
attr Laserdrucker reading03XPath-Strict //ccdyn:ConsumableInfo[4]/dd:ConsumablePercentageLevelRemaining/text()
attr Laserdrucker reading04Name Black
attr Laserdrucker reading04XPath-Strict //ccdyn:ConsumableInfo[5]/dd:ConsumablePercentageLevelRemaining/text()
attr Laserdrucker room DG_Buero
attr Laserdrucker stateFormat C: Cyan% M: Magenta% Y: Yellow% K: Black%
attr Laserdrucker timeout 2000

setstate Laserdrucker C: Cyan% M: Magenta% Y: Yellow% K: Black%


Danke und viele Grüße, Klaus
FHEM auf Raspberry 4 / CUL / KNX / Loxone Miniserver

Prof. Dr. Peter Henning

Vorgehensweise: diese Seite mal mit wget holen und den Inhalt ansehen. Dabei verschiedene Versionen von http (1.0, 1.1, 2.0) im Header einstellen - wenn die HP-Kisten da maulig sind, könnte es daran liegen.

LG

pah