Autor Thema: Druckerpatronen-Zustand  (Gelesen 5202 mal)

Offline akw

  • Developer
  • Full Member
  • ****
  • Beiträge: 200
    • Bytefeed
Druckerpatronen-Zustand
« 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 :-)



FHEM-SVN auf MacMini OSX 10.7.5

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

FHEMobile: www.fhemobile.de
Gefällt mir Gefällt mir x 4 Liste anzeigen

Offline Helmi55

  • Hero Member
  • *****
  • Beiträge: 1011
    • Helmi's Fotoseite
Antw:Druckerpatronen-Zustand
« Antwort #1 am: 28 August 2018, 18:24:11 »
Ja ja die Lehrerinnen Kenne ich.
Wäre schön wenn das auch mit EPSON 3620 arbeiten würde
Gruß
Helmut
System1 fhem 5.9 auf RPi 3B, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 5.9 auf RPi 3B mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/album
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Tedious

  • Hero Member
  • *****
  • Beiträge: 1290
  • Indocti discant et ament meminisse periti
Antw:Druckerpatronen-Zustand
« Antwort #2 am: 29 August 2018, 09:45:41 »
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 Brix N3150/4GB/250GB SSD mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max! und SonOff, Alexa mit HABridge, Kleinkram...

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
Antw:Druckerpatronen-Zustand
« Antwort #3 am: 29 August 2018, 13:24:13 »
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

Offline wendeling

  • Full Member
  • ***
  • Beiträge: 287
Antw:Druckerpatronen-Zustand
« Antwort #4 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


Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
Antw:Druckerpatronen-Zustand
« Antwort #5 am: 02 September 2018, 18:18:38 »
Zitat
bei mir will er
Wer - "er" ?

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

LG

pah

Offline Tedious

  • Hero Member
  • *****
  • Beiträge: 1290
  • Indocti discant et ament meminisse periti
Antw:Druckerpatronen-Zustand
« Antwort #6 am: 03 September 2018, 09:02:48 »
FHEM fehlen die Pakete. Musst Du in der Shell nachinstallieren, Du musst dazu sudo voranstellen...
FHEM auf Brix N3150/4GB/250GB SSD mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max! und SonOff, Alexa mit HABridge, Kleinkram...

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20718
Antw:Druckerpatronen-Zustand
« Antwort #7 am: 03 September 2018, 09:08:19 »
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.me/MOldenburg
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline wendeling

  • Full Member
  • ***
  • Beiträge: 287
Antw:Druckerpatronen-Zustand
« Antwort #8 am: 03 September 2018, 21:52:51 »
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


Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
Antw:Druckerpatronen-Zustand
« Antwort #9 am: 04 September 2018, 04:44:50 »
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

Offline Laserhelge

  • New Member
  • *
  • Beiträge: 19
Antw:Druckerpatronen-Zustand
« Antwort #10 am: 04 September 2018, 22:19:59 »
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 2 / CUL / KNX

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
Antw:Druckerpatronen-Zustand
« Antwort #11 am: 05 September 2018, 04:49:33 »
Timeout hochsetzen.

LG

pah

Offline Mumpitz

  • Full Member
  • ***
  • Beiträge: 263
Antw:Druckerpatronen-Zustand
« Antwort #12 am: 05 September 2018, 20:39:33 »
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?  ;)

Offline Laserhelge

  • New Member
  • *
  • Beiträge: 19
Antw:Druckerpatronen-Zustand
« Antwort #13 am: 05 September 2018, 23:22:09 »
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 2 / CUL / KNX

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
Antw:Druckerpatronen-Zustand
« Antwort #14 am: 06 September 2018, 03:59:38 »
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

 

decade-submarginal