NEWS
Tintenstand für Canon TR8550 (als Netzwerkdrucker)
-
Hallo,
hier mein Script zum auswerten des Tintenstands bei einen Canon TR8550 der über LAN angeschlossen ist.
Vielleicht ist es ja für den ein oder anderen nützlich.Als Vorlage diente https://www.iobroker.net/docu/index-317.htm?page_id=3668&lang=de
LG bazidibavaria
PS: Es ist mein erstes Skript für ioBroker, wenn ihr Verbesserungsvorschläge habt, immer her damit
EDIT: role hinzugefügt
EDIT: Leider ist die Code-Darstellung fehlerhaft, doppelte backslashed werden durch einfache ersetzt.
=> Zeile 80 - inktank [HIER DOPPELTE] levelpos [HIER DOPPELTE]/* Beschreibung: Canon Drucker Tintenstand für iobroker ermitteln Vorlage: https://www.iobroker.net/docu/index-317.htm?page_id=3668&lang=de Author: bazidibavaria - 2020-03-18 Version: 0.1 */ var druckerIP = "192.168.178.20"; var druckerHersteller = "Canon"; var druckerMod = "TR8550"; var druckerDataJS = "http://" + druckerIP + "/JS_MDL/model.js"; var level_C = 0; var level_M = 0; var level_Y = 0; var level_BK = 0; var level_PGBK = 0; var DruckIP = "Drucker." + druckerHersteller + "." + druckerMod + ".IP"; var DruckerName = "Drucker." + druckerHersteller + "." + druckerMod + ".Name"; var DruckerHersteller = "Drucker." + druckerHersteller + "." + druckerMod + ".Hersteller"; var DruckerModell = "Drucker." + druckerHersteller + "." + druckerMod + ".Modell"; var CLevel = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.C.Level"; var CWarning = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.C.Warning"; var MLevel = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.M.Level"; var MWarning = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.M.Warning"; var YLevel = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.Y.Level"; var YWarning = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.Y.Warning"; var BKLevel = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.BK.Level"; var BKWarning = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.BK.Warning"; var PGBKLevel = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.PGBK.Level"; var PGBKWarning = "Drucker." + druckerHersteller + "." + druckerMod + ".Tinte.PGBK.Warning"; // Anlegen der Variablen createState(DruckIP,druckerIP,{name:'Drucker IP',type:"string",role:"text"}); createState(DruckerName,druckerHersteller + " " + druckerMod,{name:'Drucker Name',type:"string",role:"text"}); createState(DruckerHersteller,druckerHersteller,{name:'Drucker Hersteller',type:"string",role:"text"}); createState(DruckerModell,druckerMod,{name:'Drucker Modell',type:"string",role:"text"}); createState(CLevel,0,{name:'Tintenstand Cyan',def:0,type:"number",write:false,min:0,max:100,unit:"%",role:"value.fill"}); createState(MLevel,0,{name:'Tintenstand Magenta',def:0,type:"number",write:false,min:0,max:100,unit:"%",role:"value.fill"}); createState(YLevel,0,{name:'Tintenstand Yellow',def:0,type:"number",write:false,min:0,max:100,unit:"%",role:"value.fill"}); createState(BKLevel,0,{name:'Tintenstand Black',def:0,type:"number",write:false,min:0,max:100,unit:"%",role:"value.fill"}); createState(PGBKLevel,0,{name:'Tintenstand Page Black',def:0,type:"number",write:false,min:0,max:100,unit:"%",role:"value.fill"}); createState(CWarning,false,{name:'Tintenstand Warnung Cyan',def:false,type:"boolean",write:false,role:"indicator"}); createState(MWarning,false,{name:'Tintenstand Warnung Magenta',def:false,type:"boolean",write:false,role:"indicator"}); createState(YWarning,false,{name:'Tintenstand Warnung Yellow',def:false,type:"boolean",write:false,role:"indicator"}); createState(BKWarning,false,{name:'Tintenstand Warnung Black',def:false,type:"boolean",write:false,role:"indicator"}); createState(PGBKWarning,false,{name:'Tintenstand Warnung Page Black',def:false,type:"boolean",write:false,role:"indicator"}); // Schedule für die Updates schedule("0 */1 * * *", Drucker); // Skript ausführen Drucker(); function Drucker () { request(druckerDataJS, function (error, response, body) { if (!error && response.statusCode == 200) { //get colors var inkColNames = []; var findInkCol = /inkCOL\s?=\s?([^;]+);/i; var matchInkCol = findInkCol.exec(body); // log(matchInkCol); if(matchInkCol != null && matchInkCol.length == 2){ inkColNames = eval(matchInkCol[1]); } //get ink fill state inkColNames.forEach(ink => { var levelPos = inkColNames.indexOf(ink); var findInkStatus = new RegExp('inktank\[' + levelPos + '\]\s?=\s?([^;]+)',"i"); var matchInkStatus = body.match(findInkStatus); if(matchInkStatus != null && matchInkStatus.length == 2){ var inkColState = eval(matchInkStatus[1]); if(inkColState.length == 3){ var inkColLevel = 0; if(inkColState[1] != 10){ var inkColLevel = 100 - (inkColState[1]*10); } else { var inkColLevel = 100; } switch(ink) { case 'InkMaz': setState(MLevel,inkColLevel); setState(MWarning,(inkColState[2]==1)?true:false); break; case 'InkBlk': setState(BKLevel,inkColLevel); setState(BKWarning,(inkColState[2]==1)?true:false); break; case 'InkYel': setState(YLevel,inkColLevel); setState(YWarning,(inkColState[2]==1)?true:false); break; case 'InkPbk': setState(PGBKLevel,inkColLevel); setState(PGBKWarning,(inkColState[2]==1)?true:false); break; case 'InkCia': setState(CLevel,inkColLevel); setState(CWarning,(inkColState[2]==1)?true:false); break; default: // do nothing } } } }); } else { log(error); log('Kein Drucker gefunden'); } }); }
-
Dein Script ist genau das was ich suche. Habe es mal getestet (mit IP meines Druckers).
Es werden Datenpunkte angelegt aber keine füllstände eingetragen.
Kannst du mir evtl. helfen?Wenn ich die Adresse bei mir im Browser eingebe, bekomme ich diesen Code
var g_Administrator = 0; var inktank=[]; inktank[0]=[4,8,0]; inktank[1]=[0,8,0]; inktank[2]=[2,0,0]; inktank[3]=[3,0,0]; var g_help_url = 'http://rs.ciggws.net/rd.cgi?FNC=RUI_HELP&RES=4&DEV=MB5100+series&CNM_SEP=0&DEV=MB5100+series&SFV=1.0&CTV=1.0&LNG=DE&CTN=SDP%2Fsdp-os.html'; var g_eid_url = 'dummy'; var g_ink_url = 'http://rs.ciggws.net/rd.cgi?FNC=RUI_INK&RES=4&DEV=MB5100+series&CNM_SEP=0&DEV=MB5100+series&LNG=DE&HRI=D'; var g_sup_url = 'http://canon.com/support/'; var g_err_url = 'http://rs.ciggws.net/rd.cgi?FNC=RUI_ERR&RES=4&DEV=MB5100+series&CNM_SEP=0&DEV=MB5100+series&LNG=DE&PDR=4&ERR=NO'; var g_pass_url = 'http://rs.ciggws.net/rd.cgi?FNC=RUI_PASS&RES=4&DEV=MB5100+series&CNM_SEP=0&DEV=MB5100+series&LNG=DE&CTN=PW%2Fpw_certifications.html'; var g_cert_url = 'http://rs.ciggws.net/rd.cgi?FNC=RUI_CERT&RES=4&DEV=MB5100+series&CNM_SEP=0&DEV=MB5100+series&LNG=DE&CTN=PW%2Fpw_security.html'; var g_signal_strength = '0'; var g_link_quality = '0'; var g_err_msg_id = 'HTTP_ERR_DISP_IDLE'; var g_bst_st = '0'; var g_battery_lv = 'AC_ON'; var g_prndoc = '0'; var g_firm_up_date=0; var g_micro_ap=0; var g_wifi_direct=0; var g_nfc_mode=0; var g_ipp_over_usb=0; var g_network_mode='NORMAL'; var g_fax_model=1; var g_scanner=1; var g_adf=2; var g_mobile=0; var g_scanto_folder=1; var g_lan_if = 'LAN_IF_WIRED'; var g_password_enable=0; var g_logon_screen = '0'; var g_cartridge_rest = [-1,-1]; var g_ink_empty = '-1';
wenn ich nur die IP eingebe erscheint diese Seite
mit diesem Quellcode
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta http-equiv="X-UA-Compatible" content="IE=edge" > <link rel="stylesheet" type="text/css" href="rui/CSS/common.css?ver=1.070-1790-101"> <link rel="stylesheet" type="text/css" href="rui/CSS/other.css?ver=1.070-1790-101"> <script type="text/javascript" src="http://me.kis.v2.scr.kaspersky-labs.com/FD126C42-EBFA-4E12-B309-BB3FDD723AC1/main.js?attr=8thD_SsniDpSpjKd1_86rnzkWVo2AjBAnCXQRG4MogbfGPVTJLGgz9CupPrHdDMm" charset="UTF-8"></script><style type="text/css"></style> <title></title> <script src="LANG/messID.js?ver=1.070-1790-101" type="text/javascript" charset="UTF-8"></script> <script src="JS_MDL/model.js?ver=1.070-1790-101" type="text/javascript" charset="UTF-8"></script> <script src="rui/JS/utility.js?ver=1.070-1790-101" type="text/javascript" charset="UTF-8"></script> <script src="rui/JS_TBL/table_error.js?ver=1.070-1790-101" type="text/javascript" charset="UTF-8"></script> <script src="rui/JS/event.js?ver=1.070-1790-101" type="text/javascript" charset="UTF-8"></script> <script src="rui/JS/framework.js?ver=1.070-1790-101" type="text/javascript" charset="UTF-8"></script> <script src="rui/JS/view.js?ver=1.070-1790-101" type="text/javascript" charset="UTF-8"></script> <script src="rui/JS/top.js?ver=1.070-1790-101" type="text/javascript" charset="UTF-8"></script> <script language="javascript"></script> </head> <body onSelectStart="return false;"> <div class="UserView Lcd_large" id="userviewArea"> <div class="ReturnAppBar" id="returnAppBar"> <a class="LinkArea" href="#" id="returnApp"> <div class="Text" id="returnAppText">12345</div> </a> </div> <div class="HorizontalContainer" id="TopMenu"> <div class="MenuPage"> <div class="ContentRelative"> <div class="dummy" id="replaceTop"></div> </div> </div> <div class="ContentPage"> <div class="h10Container" id="h10Container" style="width:300%"> <div class="Page_for_h10"> <div class="ContentRelative" id="stack1"><div class="dummy" id="replaceDebug1"></div></div> </div> <div class="Page_for_h10"> <div class="ContentRelative" id="stack2"><div class="dummy" id="replaceDebug2"></div></div> </div> <div class="Page_for_h10"> <div class="ContentRelative" id="stack3"><div class="dummy" id="replaceDebug3"></div></div> </div> </div> </div> </div> </div> <div class="Sample" id="SampleArea"> <div class="PRINF" id="samplePRINF"> <div class="Title"> <div class="Text">12345</div> <div class="EventTarget" id="EVT_PRINF_BBTN"> <div class="BwdBtn"> <div class="Text">12345</div> </div> </div> </div> <div class="TitleEnd"></div> <div class="EventTarget" id="EVT_PRINF_UPDW"> <div class="ContentArea" id="prinf_content_class"> <div class="ErrMsgArea" id="PrintInfo_MsgArea"> <div class="Text" id="PrintInfo_MsgText">12345</div> <div class="LinkButtonArea Err"> <div class="LinkButton" id="lnkbtn_Detail">12345</div> </div> </div> <div class="InkLevel"> <div class="Text">12345</div> </div> <div class="InkInfo"> <div class="InkAreaLine" id="ink_area_line1"> <div class="InkPattern" id="inktank0"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank1"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank2"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank3"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank4"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank5"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> </div> <div class="InkAreaLine" id="ink_area_line2"> <div class="InkPattern" id="inktank6"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank7"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank8"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank9"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank10"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> <div class="InkPattern" id="inktank11"> <div class="InkMess"></div> <div class="InkArea"><div class="InkBar"></div></div> </div> </div> </div> <div class="LinkButtonArea" id="InkLink"> <a class="LinkButton" id="lnkbtn_InkModel" target="_blank">12345</a><a class="LinkButton" id="lnkbtn_BuyInk" target="_blank">12345</a> </div> <div class="InfoArea" id="infoArea"> <div class="InfoItem" id="InfoItem00"> <div class="Text">12345</div> <div class="Level"> <div class="Text" id="ItemText00">12345</div> </div> <div class="InfoGraph"> <div class="GraphArea" id="gauge00"><div class="Graph" id="indi00"></div></div> </div> </div> <div class="InfoItem" id="InfoItem01"> <div class="Text">12345</div> <div class="Level"> <div class="Text" id="ItemText01">12345</div> </div> <div class="InfoGraph"> <div class="GraphArea" id="gauge01"><div class="Graph" id="indi01"></div></div> </div> </div> </div> <div class="BatteryLevelArea" id="batteryLevelArea"> <div class="BatteryLevelPattern" id="battery"> <div class="Text" id="ErrMes">12345</div> <div class="BatteryGraphArea" id="batteryGraph"> <div class="BatteryGraph"><div class="Graph" id="Low"></div></div> </div> </div> </div> <div class="MaintenanceCartridgeArea" id="maintenanceCartridgeArea"> <div class="CartridgeLevelPattern" id="cartridge"> <div class="Text" id="cartridgeMes">12345</div> <div class="CartridgeMess" id="cartridgeMess"></div> <div class="InfoGraph"> <div class="CartridgeGraph"><div class="InkBar" id="cartridgeGraph"></div></div> </div> </div> </div> <div class="ModeBtnArea"><a class="FtrButton" id="modeSelectForSmall"><div class="Text">12345</div></a></div> <div class="LinkButtonArea"><a class="LinkButton" id="webManualForSmall" target="_blank" ><div class="Text">12345</div></a></div> <div class="CertBtnArea"><a class="CertLinkButton" id="certBtn" ><div class="Text">12345</div></a></div> </div> </div> <div id="pageendPRINF"></div> </div> <div class="DTL" id="sampleDTL"> <div class="Title"> <div class="Text">12345</div> <div class="EventTarget" id="EVT_DTL_BBTN"> <div class="BwdBtn"> <div class="Text">12345</div> </div> </div> </div> <div class="TitleEnd"></div> <div class="ContentArea" id="EVT_DTL_UPDW"> <div class="ErrTitle" id="ErrTitle"> <div class="Text" id ="ErrTitleText">12345</div> </div> <div class="ErrMsg"> <div class="Text" id ="ErrMsgText">12345</div> </div> <div class="LinkButtonArea"> <a class="LinkButton" id="lnkbtn_ErrInf" target="_blank" ></a> <a class="LinkButton" id="lnkbtn_Support" target="_blank" ></a> </div> </div> <div id="pageendDTL"></div> </div> <div class="MODE" id="sampleMODE"> <div class="Title"> <div class="Text">12345</div> <div class="EventTarget" id="EVT_MODE_BBTN"> <div class="BwdBtn"> <div class="Text">12345</div> </div> </div> </div> <div class="TitleEnd"></div> <div class="EventTarget" id="EVT_MODE_UPDW"> <div class="ContentArea"> <div class="MODE_Item" id="MODE_Item"> <div class="Text" id="MODE_ItemText">12345</div> </div> <div class="ModeMessArea"> <div class="Text" id="ModeMessArea">12345</div> </div> <div class="RadioDetailButton" id="MODE_RadioButton"> <div class="ModeSelect" id="ModeSet00"> <input type="radio" name="ModeSelect" id="ModeRadio00" checked="true"> <label for="ModeRadio00" class="Text">12345</label> </div> <div class="ModeSelect" id="ModeSet01"> <input type="radio" name="ModeSelect" id="ModeRadio01"> <label for="ModeRadio01" class="Text">12345</label> </div> </div> <div class="ModeBtnArea"> <a class="FtrButton" id="logonBtn" > <div class="Text">12345</div> </a> </div> <div class="LinkButtonArea"> <a class="LinkButton" id="TopWebManual" target="_blank" > <div class="Text">12345</div> </a> </div> <div class="CertBtnArea"> <a class="CertLinkButton" id="certBtn" > <div class="Text">12345</div> </a> </div> <div id="pageendMODE"></div> </div> </div> </div> <div class="MES_LINK" id="sampleMES_LINK"> <div class="Title"> <div class="Text">12345</div> <div class="EventTarget" id="EVT_MES_LINK_BBTN"> <div class="BwdBtn"> <div class="Text">12345</div> </div> </div> </div> <div class="TitleEnd"></div> <div class="EventTarget" id="EVT_MES_LINK_UPDW"> <div class="ContentArea"> <div class="MesItem"> <div class="Text" id="MesItemText">12345</div> </div> </div> <div class="SelectArea"> <div class="EventTarget"> <div class="SelectButton" id="EVT_MES_LINK_BTN"> <div class="Text">12345</div> </div> <a class="CertLinkButton" id="EVT_MES_LINK_BTN_LINK" href="javascript:void(0);" target="_blank" style="display:none;"> <div class="Text">12345</div> </a> </div> </div> <div id="pageendMES_LINK"></div> </div> <div class="Footer" id="FooterBar"> <div class="EventTarget"> <div class="FtrButton" id="EVT_MES_LINK_FTRBTN"> <div class="Text">12345</div> </div> </div> </div> </div> </div> <div class="ScreenGarage" id="GarageArea"> </div> <input type="hidden" id="EID" value="http://rs.ciggws.net/rd.cgi?FNC=RUI_EID2&RES=4&DEV=MB5100+series&CNM_SEP=0&mdl=MB5100+series&low=0&out=0&ac=0&srcmdl=6&resid=Other&hriid=D"> </body> </html>
Die Tintenstände auf der Seite sind die aktuellen, werden aber von dem Script leider nicht eingetragen.
Kannst du mir evtl. helfen bzw denkanstöße geben woran das liegt?Gruß
HappyUser20