This is work in progress (read: neither complete nor perfect), but it works and I wanted to share it with you.
It’s valid for System Firmware 2H4_3000.006.003 / Engine Firmware 2H4_1000.005.001 (seems to be from 2006) but might also fit for other versions and other models.
If page http://<ipaddress>/start/start.htm
exists and starts with a comment like this:
<!-- Kyocera Command Center -->
<!-- for Project code 2GR -->
<!-- -->
<!-- Copyright (C) 2006 KYOCERA MITA Corporation -->
your printer most probably will be compatible.
services/http.cfg
KyoceraFS1350DN.url=http://<ipaddress>/start/start.htm
KyoceraFS1350DN.updateInterval=1000
items/KyoceraFS1350DN.items
Number:Dimensionless FS1350DN_Toner_Percent "FS-1350DN Toner [%.0f %%]" {http="<[KyoceraFS1350DN:60000:REGEX(.*[^/]+TLevel\\[0\\]\\s*=\\s*(\\d+);.*)]"}
String FS1350DN_Display_Line1 "FS-1350DN Display [%s]" {http="<[KyoceraFS1350DN:1000:REGEX(.*[^/]LCD\\[0\\]\\s*=\\s*\"([^\"]+)\";.*)]"}
String FS1350DN_Tray0_Papersize "FS-1350DN Tray 0 Papersize [%s]" {http="<[KyoceraFS1350DN:60000:REGEX(.*[^/]sCol2\\[0\\]\\s*=\\s*papersize_([^;]+?);.*)]"}
Number FS1350DN_Tray0_Capacity "FS-1350DN Tray 0 Capacity [%s]" {http="<[KyoceraFS1350DN:60000:REGEX(.*[^/]sCol4\\[0\\]\\s*=\\s*\"([^\"]+)\";.*)]"}
String FS1350DN_Tray0_Level "FS-1350DN Tray 0 Level [%s]" {http="<[KyoceraFS1350DN:1000:REGEX(.*[^/]sCol5\\[0\\]\\s*=\\s*\"level_([^\"]+)\";.*)]"}
String FS1350DN_Tray1_Papersize "FS-1350DN Tray 1 Papersize [%s]" {http="<[KyoceraFS1350DN:60000:REGEX(.*[^/]sCol2\\[1\\]\\s*=\\s*papersize_([^;]+?);.*)]"}
String FS1350DN_Tray1_Level "FS-1350DN Tray 1 Level [%s]" {http="<[KyoceraFS1350DN:1000:REGEX(.*[^/]sCol5\\[1\\]\\s*=\\s*\"level_([^\"]+)\";.*)]"}
Number FS1350DN_Tray1_Capacity "FS-1350DN Tray 1 Capacity [%s]" {http="<[KyoceraFS1350DN:60000:REGEX(.*[^/]sCol4\\[1\\]\\s*=\\s*\"([^\"]+)\";.*)]"}
Tray 0 = MP Tray
Tray 1 = Cassette 1
ToDo:
- read printer status from
PtrVal[1]
- put everything to a rule to not update the values when printer is offline
1 Like
Pretty cool, i didn’t know that my Printer can show this, altough it has snmp enabled anyway.
J4I:
MODELL: FS-1135MFP
VERSION: 2MJ_2F00.005.005
Oh I didn’t know about SNMP, tell me more! Does that have the same/more values (and quite immediate update intervals)?
To be honest i didn’t start yet with investigating time in the snmp implementation of kyocera.
I jsut saw that my printer has a configuration page for this in the web interface.
I have found these 2 sites so far:
http://www.oidview.com/mibs/1347/md-1347-1.html
and
http://www.mibdepot.com/cgi-bin/vendor_index.cgi?r=kyocera
Maybe this can already help you. 
I didn’t yet manage to have enough time to try out SNMP (yes there’s an OpenHAB 2 binding for it) but as I changed the toner drum, I wanted to start to also keep track of the pages printed - so there’s some more code:
services/http.cfg
KyoceraFS1350DNCounters.url=http://<ipaddress>/start/StatCntFunc.htm
KyoceraFS1350DNCounters.updateInterval=1000
items/KyoceraFS1350DN.items
Number FS1350DN_Counter_Total "FS-1350DN Counter Total [%s]" {http="<[KyoceraFS1350DNCounters:60000:REGEX(.*Usage\\[0\\]\\+\":\";\\s*sName\\[0\\]\\s*=\\s*\"([^\"]+)\";.*)]"}
Number FS1350DN_Counter_A4 "FS-1350DN Counter A4 [%s]" {http="<[KyoceraFS1350DNCounters:60000:REGEX(.*PaperSize\\[4\\]\\+\":\";\\s*sName\\[0\\]\\s*=\\s*\"([^\"]+)\";.*)]"}
Number FS1350DN_Counter_OtherD "FS-1350DN Counter Other(Double) [%s]" {http="<[KyoceraFS1350DNCounters:60000:REGEX(.*PaperSize\\[44\\]\\+\":\";\\s*sName\\[7\\]\\s*=\\s*\"([^\"]+)\";.*)]"}
Number FS1350DN_Counter_OtherS "FS-1350DN Counter Other(Single) [%s]" {http="<[KyoceraFS1350DNCounters:60000:REGEX(.*PaperSize\\[45\\]\\+\":\";\\s*sName\\[8\\]\\s*=\\s*\"([^\"]+)\";.*)]"}
(I left out some other page sizes, but I guess you will get how it works)
Persist it and visualize it with Grafana:

I only persited once a minute (enough resoution for me) that’s why you see such steps during the job.
Large print job was a job of 64 doublesided pages (each side counts as one page).
1 Like
Still not on SNMP… but now on the recent version of the HTTP binding:
things/printers.things
Thing http:url:Kyocera-FS-1350DN "Kyocera-FS-1350DN"
[
baseURL="http://<ipaddress>/start", //TODO: Use hostname
refresh=120,
timeout=600000
]
{
Channels:
Type string : Toner_Percent [
stateExtension="/start.htm",
mode="READONLY",
stateTransformation="REGEX:.*[^/]+TLevel\\[0\\]\\s*=\\s*(\\d+);.*"
]
Type string : Display_Line1 [
stateExtension="/start.htm",
mode="READONLY",
stateTransformation="REGEX:.*LCD\\[0\\]\\s*=\\s*\"([^\"]+)\";.*"
]
Type string : Tray0_Papersize [
stateExtension="/start.htm",
mode="READONLY",
stateTransformation="REGEX:.*[^/]sCol2\\[0\\]\\s*=\\s*papersize_([^;]+?);.*"
]
Type string : Tray0_Capacity [
stateExtension="/start.htm",
mode="READONLY",
stateTransformation="REGEX:.*[^/]sCol4\\[0\\]\\s*=\\s*\"([^\"]+)\";.*"
]
Type string : Tray0_Level [
stateExtension="/start.htm",
mode="READONLY",
stateTransformation="REGEX:.*[^/]sCol5\\[0\\]\\s*=\\s*\"level_([^\"]+)\";.*"
]
Type string : Tray1_Papersize [
stateExtension="/start.htm",
mode="READONLY",
stateTransformation="REGEX:.*[^/]sCol2\\[1\\]\\s*=\\s*papersize_([^;]+?);.*"
]
Type string : Tray1_Capacity [
stateExtension="/start.htm",
mode="READONLY",
stateTransformation="REGEX:.*[^/]sCol5\\[1\\]\\s*=\\s*\"level_([^\"]+)\";.*"
]
Type string : Tray1_Level [
stateExtension="/start.htm",
mode="READONLY",
stateTransformation="REGEX:.*[^/]sCol4\\[1\\]\\s*=\\s*\"([^\"]+)\";.*"
]
Type string : Counter_Total [
stateExtension="/StatCntFunc.htm",
mode="READONLY",
stateTransformation="REGEX:.*Usage\\[0\\]\\+\":\";\\s*sName\\[0\\]\\s*=\\s*\"([^\"]+)\";.*"
]
Type string : Counter_A4 [
stateExtension="/StatCntFunc.htm",
mode="READONLY",
stateTransformation="REGEX:.*PaperSize\\[4\\]\\+\":\";\\s*sName\\[0\\]\\s*=\\s*\"([^\"]+)\";.*"
]
Type string : Counter_OtherD [
stateExtension="/StatCntFunc.htm",
mode="READONLY",
stateTransformation="REGEX:.*PaperSize\\[44\\]\\+\":\";\\s*sName\\[7\\]\\s*=\\s*\"([^\"]+)\";.*"
]
Type string : Counter_OtherS [
stateExtension="/StatCntFunc.htm",
mode="READONLY",
stateTransformation="REGEX:.*PaperSize\\[45\\]\\+\":\";\\s*sName\\[8\\]\\s*=\\s*\"([^\"]+)\";.*"
]
}
items/KyoceraFS1350DN.items
Number:Dimensionless FS1350DN_Toner_Percent "FS-1350DN Toner [%.0f %%]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Toner_Percent" }
String FS1350DN_Display_Line1 "FS-1350DN Display [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Display_Line1" }
String FS1350DN_Tray0_Papersize "FS-1350DN Tray 0 Papersize [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Tray0_Papersize" }
Number:Dimensionless FS1350DN_Tray0_Capacity "FS-1350DN Tray 0 Capacity [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Tray0_Capacity" }
String FS1350DN_Tray0_Level "FS-1350DN Tray 0 Level [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Tray0_Level" }
String FS1350DN_Tray1_Papersize "FS-1350DN Tray 1 Papersize [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Tray1_Papersize" }
String FS1350DN_Tray1_Level "FS-1350DN Tray 1 Level [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Tray1_Capacity" }
Number:Dimensionless FS1350DN_Tray1_Capacity "FS-1350DN Tray 1 Capacity [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Tray1_Level" }
Number:Dimensionless FS1350DN_Counter_Total "FS-1350DN Counter Total [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Counter_Total" }
Number:Dimensionless FS1350DN_Counter_A4 "FS-1350DN Counter A4 [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Counter_A4" }
Number:Dimensionless FS1350DN_Counter_OtherD "FS-1350DN Counter Other(Double) [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Counter_OtherD" }
Number:Dimensionless FS1350DN_Counter_OtherS "FS-1350DN Counter Other(Single) [%s]" (GP_Persist_Change) { channel="http:url:Kyocera-FS-1350DN:Counter_OtherS" }
Sadly it outputs two error messages in log every refresh
seconds if the printer isn’t online - but that’s way less then with the old http
binding.