Druckerpatronen-Zustand

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

Vorheriges Thema - Nächstes Thema

mi.ke

Zitat von: elektrikpe2 am 23 Juni 2019, 17:05:17
Würde Dir einen ausgeben wenn ich könnte. Ich trink einen auf dich.

Guter Mann !
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

elektrikpe2

Habe doch noch eine Frage. Ist zwar evt. hier nicht ganz richtig untergebracht, gehört aber hier zum Thema. Ich bekomme ja bei dem Aufruf der html Seiten per httmod die Daten auf englisch. Liegt wohl daran, dass das so im httpheader so eingetragen wurde. Im Browser werden mir Seiten jedoch in deutsch dargestellt. Da ich in manchen Bereichen ein echter Anfänger bin, wollte ich wissen, ob man sich das Ergebnis des HTTPMOD-Zugriffs irgendwie anzeigen lassen kann. Danke.
LG Peter

mi.ke

Hi Peter,

wenn es in den Internals unter buf nicht angezeigt wird, kannst Du das mit showBody sichtbar machen.
attr Druckereigenschaften showBody 1

cheers
mi.ke
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

elektrikpe2

Hallo, ich habe jetzt danke Mi.ke die Werte soweit gefunden, wo ich denke, dass sie interessant sein könnten. Werde also bald meine gesamte Steuerung hier zur Verfügung stellen. Das die Werte in englisch kommen liegt eindeutig am httpheader (Content-Language: en-gb). Ich habe im Forum noch andere Threads gefunden, die bei der Abfrage des Druckerstatus darüber gestolpert sind. Dort wird geraten, den httpheader anzupassen. Leider bin ich zu doof, die entsprechenden attribute zu finden, die dazu führen (auch über commandref nicht). Grundsätzlich kann man sich über die Art, die jetzt hier festgestellt wurde helfen, aber schöner wäre m.E. eine Version, die dem entspricht was ich bei direktem Zugriff bekomme. Ich lass das mal hier stehen, das weiß hier sicher auch jemand. Ansonsten kann ich das auch zu einem Thread im HTTPMOD für Anfängerfragen machen.

LG Peter

elektrikpe2

Hier jetzt wie versprochen meine Codeschnipsel für Druckerabfragen mindestens MFC-9xxx. Ich denke es geht für alle Drucker die über den HTTPMOD gleichartig angesprochen werden können:

FHEM:
defmod Druckerstatistik HTTPMOD http://xxx.xxx.xxx.xx/general/information.html 86400
attr Druckerstatistik userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex requestHeader1
attr Druckerstatistik group Drucker
attr Druckerstatistik reading01Name Pages_Total
attr Druckerstatistik reading01Regex Page ;Counter*?<dd>(.*?)<
attr Druckerstatistik reading02Name Pages_black
attr Druckerstatistik reading02Regex Page ;Counter<.*?B&amp;;W.*?<dd>(.*?)<
attr Druckerstatistik reading03Name Pages_Color
attr Druckerstatistik reading03Regex Page ;Counter<.*?Color.*?<dd>(.*?)<
attr Druckerstatistik reading04Name Fax
attr Druckerstatistik reading04Regex Fax.*?<dd>(.*?)<
attr Druckerstatistik reading05Name Kopie
attr Druckerstatistik reading05Regex Copy.*?<dd>(.*?)<
attr Druckerstatistik reading06Name ADF_Image_Scans
attr Druckerstatistik reading06Regex ADF.*?<dd>(.*?)<
attr Druckerstatistik reading07Name Flatbed_Image_Scans
attr Druckerstatistik reading07Regex Flatbed.*?<dd>(.*?)<
attr Druckerstatistik requestHeader1 User-Agent: Mozilla/5.0 (Windows NT 10.0) Gecko/20100101 Firefox/43.0
attr Druckerstatistik room 91_Geraete
attr Druckerstatistik stateFormat Total: Pages_Total Schwarz: Pages_black Color: Pages_Color


defmod Druckerpatronenstatus HTTPMOD http://xxx.xxx.xxx.xx/general/information.html 21600
attr Druckerpatronenstatus userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex
attr Druckerpatronenstatus group Drucker
attr Druckerpatronenstatus httpVersion 1.1
attr Druckerpatronenstatus reading01Name Cyan
attr Druckerpatronenstatus reading01Regex \(C\)\*\*.{9}\((\d{1,3}\.\d{1,2})%\)
attr Druckerpatronenstatus reading02Name Magenta
attr Druckerpatronenstatus reading02Regex \(M\)\*\*.{9}\((\d{1,3}\.\d{1,2})%\)
attr Druckerpatronenstatus reading03Name Gelb
attr Druckerpatronenstatus reading03Regex \(Y\)\*\*.{9}\((\d{1,3}\.\d{1,2})%\)
attr Druckerpatronenstatus reading04Name Schwarz
attr Druckerpatronenstatus reading04Regex \(BK\)\*\*.{9}\((\d{1,3}\.\d{1,2})%\)
attr Druckerpatronenstatus room 91_Geraete
attr Druckerpatronenstatus stateFormat C: Cyan% M: Magenta% G: Gelb% S: Schwarz%


defmod Druckereigenschaften HTTPMOD http://xxx.xxx.xxx.xx/general/information.html 86400
attr Druckereigenschaften userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex
attr Druckereigenschaften group Drucker
attr Druckereigenschaften httpVersion 1.1
attr Druckereigenschaften reading01Name Typ
attr Druckereigenschaften reading01Regex Model.*?<dd>(.*?)<
attr Druckereigenschaften reading02Name Serienr
attr Druckereigenschaften reading02Regex Serial.*?<dd>(.*?)<
attr Druckereigenschaften reading03Name Sub1
attr Druckereigenschaften reading03Regex Sub1.*?<dd>(.*?)<
attr Druckereigenschaften reading04Name MB
attr Druckereigenschaften reading04Regex Memory.*?<dd>(.*?)<
attr Druckereigenschaften room 91_Geraete
attr Druckereigenschaften stateFormat Modell: Typ SN: Serienr Firmware: Sub1 Speicher: MB mb


Diese Daten können natürlich auch direkt im FTUI eingegeben werden ;-)

FTUI:

<!DOCTYPE html>
<html>
<body>
   <div class="page" id="content_system_printer_status">
<div class="phone-back-btn">
<div data-type="link" data-url="#content_system.html" data-load="#content_system" data-color="black" data-icon="mi-chevron_left" class="large"></div>
</div>

<div class="hbox">
<div class="vbox phone-width">
<div class="card lift">

<header>Eigenschaften</header>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckereigenschaften","var_data":"Modell","var_content":"Typ"}'></div>
</section>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckereigenschaften","var_data":"Seriennummer","var_content":"Serienr"}'></div>
</section>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckereigenschaften","var_data":"Firmware","var_content":"Sub1"}'></div>
</section>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckereigenschaften","var_data":"Speicher","var_content":"MB"}'></div>
</section>
<header>Toner Status</header>
<section>
<div class="hdm-flexbox-container">
<div class="hdm-flexbox-item-50">
<div class="small readonly"
data-type="knob"
data-device="Druckerpatronenstatus"
data-get="Schwarz"
data-part="1"
data-anglearc="360"
data-angleoffset="0"
data-min="0"
data-max="100"
data-nomcolor="#000000"
data-fgcolor="#000000"
data-bgcolor="#00A1DE"
data-unit="%"></div>
<div data-type="label" class="big">Schwarz (CF400A)</div>
</div>
<div class="hdm-flexbox-item-50">
<div class="small readonly"
data-type="knob"
data-device="Druckerpatronenstatus"
data-get="Cyan"
data-part="1"
data-anglearc="360"
data-angleoffset="0"
data-min="0"
data-max="100"
data-nomcolor="#000000"
data-fgcolor="#00FFFF"
data-bgcolor="#00A1DE"
data-unit="%"></div>
<div data-type="label" class="big">Zyan (CF401A)</div>
</div>
</div>
</section>
<section>
<div class="hdm-flexbox-container">
<div class="hdm-flexbox-item-50">
<div class="small readonly"
data-type="knob"
data-device="Druckerpatronenstatus"
data-get="Gelb"
data-part="1"
data-anglearc="360"
data-angleoffset="0"
data-min="0"
data-max="100"
data-nomcolor="#000000"
data-fgcolor="#FFFF00"
data-bgcolor="#00A1DE"
data-unit="%"></div>
<div data-type="label" class="big">Gelb (CF402A)</div>
</div>
<div class="hdm-flexbox-item-50">
<div class="small readonly"
data-type="knob"
data-device="Druckerpatronenstatus"
data-get="Magenta"
data-part="1"
data-anglearc="360"
data-angleoffset="0"
data-min="0"
data-max="100"
data-nomcolor="#000000"
data-fgcolor="#FF00FF"
data-bgcolor="#00A1DE"
data-unit="%"></div>
<div data-type="label" class="big">Magenta (CF403A)</div>
</div>
</div>
</section>
</div>
</div>
<div class="vbox phone-width">
<div class="card lift">
<header>Drucker Statistik</header>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckerstatistik","var_data":"Seiten Gesamt","var_content":"Pages_Total"}'></div>
</section>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckerstatistik","var_data":"Seiten Schwarz/Weiß","var_content":"Pages_black"}'></div>
</section>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckerstatistik","var_data":"Seiten Farbe","var_content":"Pages_Color"}'></div>
</section>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckerstatistik","var_data":"Fax","var_content":"Fax"}'></div>
</section>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckerstatistik","var_data":"Kopien","var_content":"Kopie"}'></div>
</section>
<header>Scanner Statistik</header>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckerstatistik","var_data":"Einzug-Scans","var_content":"ADF_Image_Scans"}'></div>
</section>
<section>
<div data-template="template_system_printer.html" data-parameter='{"var_device":"Druckerstatistik","var_data":"Flachbett-Scans","var_content":"Flatbed_Image_Scans"}'></div>
</section>
</div>
</div>
</div>
</div>
</body>
</html>


Ich habe mich ziemlich genau an die Vorgabe von Andreas (somansch) gehalten, weil mir sein Layout/Design so gut gefiel, dass ich es (fast ganz) abgekupfert habe (Ausnahme Schwarz auf Schwarz - pah). Nein, ich habe gemischt mit paul79 und holle. Daher hier auch vielen Dank an Alle, die mir geholfen haben (natürlich auch Mi.ke)

LG Peter

elektrikpe2

Hallo, ich noch mal. Habe dank dkreutz hier die Änderung des Attributes für eine deutsche Ausgabe der brother Daten, falls es jemand interessiert und auch nicht wusste wie es geht: attr ... requestHeader1 Accept-Language: de-de,de,en - und schon entsprechen die Daten die der HTTPMOD zieht auch den Daten, die ich bei direktem Zugriff auf einen Drucker der auf "deutsch" steht.

LG Peter

wendeling

Hallo,
wer kann mir bezüglich eines Epson Druckers helfen ?

Gruß
Wendelin

thomas1977mg

CANON INKJET

Hallo zusammen,

ich würde gerne meine CANON PIXMA Drucker auslesen.
Mit den HTTP-MOD Befehlen komme ich da so leider nicht weiter.

Hat hier bereits jemand eine Lösung für?

Vielen Dank,
Tom

rischbiter123

Moin,

beim Pixma funktioniert es auch, wie in Antwort 18, mit ink. Die Webseite gibt die Füllstände leider nicht her.
Wie das dann allerdings in Fhem umgesetzt werden muss, kann ich nicht sagen, da ich es selber nicht nutze.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

Hauslaus

Hallo!

Meinem Canon entlocke ich durch die Antwort 18 die hilfreichen Daten:

Canon MX920 series

Black:                              40%
Photoblack:                      60%
Yellow:                             20%
Magenta:                          80%
Cyan:                                 0%

Um diese Angaben in mein FHEM zu bekommen ist HTTPMOD leider nicht hilfreich.

Die Antwort 3 (https://forum.fhem.de/index.php/topic,90601.msg831360.html#msg831360) hilft mir leider nicht weiter. Ich denke mir, dass ich den ersten Teil aus Antwort 3 auf jeden Fall nicht benötige, da ich ja die Werte aus dem INK-Programm bereits auf meinem Terminal stehen habe. Wie  bekomme ich nun aber diese Werte in mein FHEM?

Gibt es vielleicht doch schon eine Lösung für Canon Drucker oder gibt es vielleicht einen Wink mit dem Zaunpfahl?

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

Prof. Dr. Peter Henning

ZitatWink mit dem Zaunpfahl
Klar doch:

Ordentliche Fehlerbeschreibungen liefern - statt weinerliches "hilft mir nicht weiter".
Informationen darüber, was man eigentlich benutzt - keiner von uns weiß, was mit "INK-Programm" und "Terminal" gemeint ist. Oder hat Zeit, sich "Antwort 18" herauszusuchen.

LG

pah

amenomade

Zitat von: Hauslaus am 22 Oktober 2020, 22:22:10
Hallo!

Meinem Canon entlocke ich durch die Antwort 18 die hilfreichen Daten:

Canon MX920 series

Black:                              40%
Photoblack:                      60%
Yellow:                             20%
Magenta:                          80%
Cyan:                                 0%

Um diese Angaben in mein FHEM zu bekommen ist HTTPMOD leider nicht hilfreich.

Die Antwort 3 (https://forum.fhem.de/index.php/topic,90601.msg831360.html#msg831360) hilft mir leider nicht weiter. Ich denke mir, dass ich den ersten Teil aus Antwort 3 auf jeden Fall nicht benötige, da ich ja die Werte aus dem INK-Programm bereits auf meinem Terminal stehen habe. Wie  bekomme ich nun aber diese Werte in mein FHEM?

Gibt es vielleicht doch schon eine Lösung für Canon Drucker oder gibt es vielleicht einen Wink mit dem Zaunpfahl?

Gruß
Hauslaus
Es gibt mehrere Möglichkeiten, Werte aus einem Terminalbefehl an Fhem zu übergeben.
Z.B.:
- wenn Du schon ein HTTPMOD hast, kannst Du einfach per userReadings (siehe CommandRef) den system Befehl aufrufen
- CustomReadings Modul (siehe CommandRef)
- die sauberste (non blocking) Methode ist aus einem Skript auf system Ebene - Scheduling per cron - , die Werte mit nc und setreading zu setzen (entweder über den Telnet Port oder über HTTP). Viele Beispiele im Forum.
...

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

Hauslaus

Hallo amenomade,

danke für die Antwort.

Ich habe bereits was mit HTTPMOD am laufen. Ich habe mir das Modul nochmals im CommandRef angesehen. Entweder verstehe ich es falsch oder ....

Anfangsbeschreibung von HTTPMOD (Googleübersetzung):
ZitatDieses Modul bietet eine allgemeine Möglichkeit, Informationen von Geräten mit einer HTTP-Schnittstelle abzurufen und in Messwerten zu speichern oder Informationen an solche Geräte zu senden. Es fragt eine bestimmte URL mit Headern und Daten ab, die durch Attribute definiert sind.
Aus der HTTP-Antwort werden in Attributen benannte Messwerte mithilfe von Regexes, JSON oder XPath extrahiert, die ebenfalls durch Attribute definiert sind.

ZU Xpath steht hier (Googleübersetzung):
ZitatAnalysieren von http / XML mit xpath

Eine weitere Alternative zum Regex-Parsing ist die Verwendung von XPath zum Extrahieren von Werten aus HTTP-Antworten.
Das folgende Beispiel zeigt, wie XML-Daten mit XPath-Strict oder HTML-Daten mit XPath analysiert werden können.
Beide funktionieren ähnlich und das Beispiel verwendet XML-Daten, die mit der Option XPath-Strict analysiert wurden: Wenn die XML-Daten in der HTTP-Antwort folgendermaßen aussehen:
<root xmlns: foo = "http://www.foo.org/" xmlns: bar = "http://www.bar.org">
.....

Also verlangt HTTPMOD doch immer HTML-Daten?

Die Ausgabe dieses auf meinen RaspberryPi installierten INK-Tool läuft ausserhalb des FHEM-System. Ist das mein Problem?

In Antwort 18 schreibt deudi:
ZitatEin Canon Farb-Tintenstrahldrucker (MG8150) kann leider kein SNMP und die Webseite schweigt sich über den Tintenstand leider aus. Hier bin ich mit dem Tool "ink" fündig geworden.

Und dieses Tool installiert ich mit:
apt-get install ink

Und mit der Eingabe erhalte ich:
root@raspi-Heim:/home/pi# ink -b bjnp://192.168.178.89
ink 0.5.2 (c) 2015 Markus Heinz

Canon MX920 series

Black:                                  40%
Photoblack:                          60%
Yellow:                                 20%
Magenta:                              80%
Cyan:                                    0%

Die Eingabe HTTPMOD erwartet doch eine Eingabe nach dem Muster:
http://xxx.xxx.xxx.xx/general/information.

Und nicht:
ink -b bjnp://192.168.178.89

Kann ich mit HTTPMOD Daten von einem Nicht-FHEM-Tool abrufen bzw. auslesen?

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

Hauslaus

#pah  Prof. Dr. Peter Henning

Als "New Member" sind wir angehalten uns einzulesen. Das tat ich. Ich habe auf der Suche nach einer Lösung u.a. diesen Beitrag im Gesamten gelesen. Da ich einen Pixma-Drucker besitze sehe ich in der Antwort 18 auch eine Teillösung für mich. Und wenn ein "Sr. Member" ein INK-Tool aufzeigt bin ich als ein "New Member" davon ausgegangen, dass es sich hierbei um ein allgemein bekanntes Tool handelt. Insbesondere wenn nur 18 Minuten nach diesem INK-Toolantwort ihre Antwort als "Hero Member" erfolgt. Ich hätte dieses Tool sonst gar nicht installiert.

Im übrigen habe ich keine Fehlermeldung und somit kann ich keine ordentliche Fehlermeldung abgeben. Dieses ING-Tool liefert eine perfekte Textausgabe die leider, wie von mir auch beschrieben, keine HTML Ausgabe liefert.

In meiner Frage bat ich nicht um eine Programmierung und ich habe nicht um eine weitere tiefere Unterstützung gebeten. Es war einfach nur eine Frage.

Auch ohne Programmierkenntnisse und mit meinem Grundschulenglisch läuft mein FHEM seit Jahren super und auch stabil. Ich habe hierfür viel aus diesem Forum mitgenommen und gelernt. Ich selber konnte leider bisher keinen Beitrag leisten da ich kein Profi bin und auch bestimmt kein Profi mehr werde. Das soll doch für FHEM auch keine Voraussetzung sein?

Mit dem Wunsch nach einem Zaunpfahl will ich keinen reizen und sollte aber bitte in keiner Beleidigung enden.

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

amenomade

Zitat von: Hauslaus am 25 Oktober 2020, 20:56:31


Kann ich mit HTTPMOD Daten von einem Nicht-FHEM-Tool abrufen bzw. auslesen?

Gruß
Hauslaus
Ja, mit einem userReading. Siehe Abschnitt userReadings in https://fhem.de/commandref_DE.html#readingFnAttributes, und https://fhem.de/commandref_DE.html#command für system Befehle.

Wenn Du schon ein HTTPMOD hast, der einige Daten aus der Webseite des Druckers holt, kannst Du darauf triggern, und im userReading deinen system Befehl aufrufen.

Aber wie gesagt, das sauberste ist, auf System Ebene, einen script laufen zu lassen (z.B. per cron), der die Daten an Fhem übergibt
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus