Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Tintenstand für Canon TR8550 (als Netzwerkdrucker)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Tintenstand für Canon TR8550 (als Netzwerkdrucker)

    This topic has been deleted. Only users with topic management privileges can see it.
    • bazidibavaria
      bazidibavaria Developer last edited by bazidibavaria

      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');
      	    }
          });
      }
      
      
      H 1 Reply Last reply Reply Quote 1
      • H
        Happyuser20 @bazidibavaria last edited by

        @bazidibavaria

        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
        Druckerindex.jpg

        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&amp;RES=4&amp;DEV=MB5100+series&amp;CNM_SEP=0&amp;mdl=MB5100+series&amp;low=0&amp;out=0&amp;ac=0&amp;srcmdl=6&amp;resid=Other&amp;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

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        478
        Online

        31.8k
        Users

        80.0k
        Topics

        1.3m
        Posts

        javascript monitoring
        2
        2
        603
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo