HP Tintenstand per Datenpunkt

Allgemein
// bringt den Druckertintenstand von WEB enabled HP Tintenstrahler in ioBroker
// Basierend auf CCU2 Script fuer HP Drucker http://homematic-forum.de/forum/viewtop ... 31&t=25140
// und dem angepassten Script von PiX aus iobroker http://forum.iobroker.de/viewtopic.php? ... c289#p6931
// Author : looxer01 - 22.12.2015


// hier Drucker parameter einstellen - vor dem ersten Speichern des Scripts
var druckerIP = "192.168.178.32";
var druckerURL =  "http://192.168.178.32/DevMgmt/ConsumableConfigDyn.xml";

var druckermod = "8610";
var TinteID = "951XL";

var request = require('request');
var cut1 = "dd:ConsumableLabelCode";
var cut2 = "dd:ConsumablePercentageLevelRemaining";

var level_M = 0;
var level_C = 0;
var level_Y = 0;
var level_K = 0;



// angepasst an HP 8900 - hier bitte entsprechend anpassen auf den jeweiligen Typ
createState('Drucker.HP.8610.IP',druckerIP);
createState('Drucker.HP.8610.Modell',druckermod);
createState('Drucker.HP.8610.Tinte',TinteID);
createState('Drucker.HP.8610.Cyan.Level');
createState('Drucker.HP.8610.Cyan.Ink','CN046A');
createState('Drucker.HP.8610.Yellow.Level');
createState('Drucker.HP.8610.Yellow.Ink','CN048A');
createState('Drucker.HP.8610.Black.Level');
createState('Drucker.HP.8610.Black.Ink','CN045A');
createState('Drucker.HP.8610.Magenta.Level');
createState('Drucker.HP.8610.Magenta.Ink','CN047A');



schedule("*/20 * * * *", function () { // alle 20 Minuten

request(druckerURL, function (error, response, body) {
if (!error && response.statusCode == 200) {

// Farbe nummer 1
var eins_position = body.indexOf(cut1) + cut1.length + 1;
var color = body.substring(eins_position, eins_position+1) ;
var zwei_position = body.indexOf(cut2)+ cut2.length + 1;
var level_string = body.substring(zwei_position, zwei_position+2) ;
var eins_lastpos = eins_position +10;
var zwei_lastpos = zwei_position + 10;

if("M" == color){
level_M = level_string;
}
if("X" == color){
level_C = level_string;
}
if("Y" == color){
level_Y = level_string;
}
if("K" == color){
level_K = level_string;
}

// Farbe nummer 2
eins_position = body.indexOf(cut1, eins_lastpos) + cut1.length + 1 ;
color = body.substring(eins_position, eins_position+1) ;
zwei_position = body.indexOf(cut2,zwei_lastpos)+ cut2.length + 1;
level_string = body.substring(zwei_position, zwei_position+2) ;

if("M" == color){
level_M = level_string;
}
if("C" == color){
level_C = level_string;
}
if("Y" == color){
level_Y = level_string;
}
if("K" == color){
level_K = level_string;
}
eins_lastpos = eins_position + 10;
zwei_lastpos = zwei_position + 10;


// Farbe nummer 3
eins_position = body.indexOf(cut1, eins_lastpos) + cut1.length + 1;
color = body.substring(eins_position, eins_position+1) ;
zwei_position = body.indexOf(cut2,zwei_lastpos)+ cut2.length + 1;
level_string = body.substring(zwei_position, zwei_position+2) ;

if("M" == color){
level_M = level_string;
}
if("C" == color){
level_C = level_string;
}
if("Y" == color){
level_Y = level_string;
}
if("K" == color){
level_K = level_string;
}
eins_lastpos = eins_position + 10;
zwei_lastpos = zwei_position + 10;


// Farbe nummer 4
eins_position = body.indexOf(cut1, eins_lastpos) + cut1.length + 1;
color = body.substring(eins_position, eins_position+1) ;
zwei_position = body.indexOf(cut2,zwei_lastpos)+ cut2.length + 1;
level_string = body.substring(zwei_position, zwei_position+2) ;

if("M" == color){
level_M = level_string;
}
if("C" == color){
level_C = level_string;
}
if("Y" == color){
level_Y = level_string;
}
if("K" == color){
level_K = level_string;
}
eins_lastpos = eins_position + 10;
zwei_lastpos = zwei_position + 10;


log('Drucker Level M ' + level_M , "info");
log('Drucker Level C ' + level_C , "info");
log('Drucker Level Y ' + level_Y , "info");
log('Drucker Level K ' + level_K , "info");

// der folgende Bereich muss für ggf abweichenden Druckertyp angepasst werden

setState('javascript.0.Drucker.HP.8610.Cyan.Level', level_C);
setState('javascript.0.Drucker.HP.8610.Yellow.Level', level_Y);
setState('javascript.0.Drucker.HP.8610.Black.Level', level_K);
setState('javascript.0.Drucker.HP.8610.Magenta.Level', level_M);
setState('javascript.0.Drucker.HP.8610.IP', druckerIP);


} else { // if (!error && response.statusCode == 200) {
log(error);
log('Kein Drucker gefunden');

}

}); // end of request

}); // end of schedule
Tags:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.