Hallo Gemeinde,
in meinem ersten Post möchte ich der Gemeinde gleich mal was zur verfügung stellen.
Wer einen Drucker von HP besitzt, und die verbleibenden Füllstände auslesen möchte, kann gerne folgendes Skript verwenden.
Ich weiß, es gibt bereits Skripte, aber die, die ich gefunden habe sind doch sehr Laienhaft (sorry). Den String "M282nw" könnt Ihr natürlich auf Eurem Drucker ändern. Ebenfalls die IP-Adresse zur XML Ausgabe ist nach Eurem Schema anzupassen.
Viel Spaß dabei:
Code:
/**
* Read informations from HP Printers;
* 2021-04-16 @ TheAlphaGhost;
*/
var url = 'http://192.168.169.170/DevMgmt/ConsumableConfigDyn.xml';
var request = require('request');
var parseString = require('xml2js').parseString;
// Create datapoints;
createState('Drucker.HP.M282nw.Black.ConsumableFamilyName');
createState('Drucker.HP.M282nw.Black.ConsumableLabelCode');
createState('Drucker.HP.M282nw.Black.ConsumablePercentageLevelRemaining');
createState('Drucker.HP.M282nw.Black.ProductNumber');
createState('Drucker.HP.M282nw.Cyan.ConsumableFamilyName');
createState('Drucker.HP.M282nw.Cyan.ConsumableLabelCode');
createState('Drucker.HP.M282nw.Cyan.ConsumablePercentageLevelRemaining');
createState('Drucker.HP.M282nw.Cyan.ProductNumber');
createState('Drucker.HP.M282nw.Magenta.ConsumableFamilyName');
createState('Drucker.HP.M282nw.Magenta.ConsumableLabelCode');
createState('Drucker.HP.M282nw.Magenta.ConsumablePercentageLevelRemaining');
createState('Drucker.HP.M282nw.Magenta.ProductNumber');
createState('Drucker.HP.M282nw.Yellow.ConsumableFamilyName');
createState('Drucker.HP.M282nw.Yellow.ConsumableLabelCode');
createState('Drucker.HP.M282nw.Yellow.ConsumablePercentageLevelRemaining');
createState('Drucker.HP.M282nw.Yellow.ProductNumber');
function GetData() {
request(url, function (error, response, body) {
var xml, result;
parseString(body, function (err, result) {
xml = JSON.stringify(result);
var json = JSON.parse(xml);
for (var i in json['ccdyn:ConsumableConfigDyn']['ccdyn:ConsumableInfo']) {
let node = json['ccdyn:ConsumableConfigDyn']['ccdyn:ConsumableInfo'][i];
let ConsumableFamilyName = node['dd:ConsumableFamilyName'];
let ConsumableLabelCode = node['dd:ConsumableLabelCode'];
let ConsumablePercentageLevelRemaining = node['dd:ConsumablePercentageLevelRemaining'];
let ProductNumber = node['dd:ProductNumber'];
var ColorDataPoint = "";
switch (String(ConsumableLabelCode)) {
case "K":
ColorDataPoint = "Black";
break;
case "C":
ColorDataPoint = "Cyan";
break;
case "M":
ColorDataPoint = "Magenta";
break;
case "Y":
ColorDataPoint = "Yellow";
break;
case "CMYK":
continue;
break;
default:
continue;
log("[ERROR] ColorDataPoint not found for " + ConsumableLabelCode + "!");
};
setState('javascript.0.Drucker.HP.M282nw.' + ColorDataPoint + '.ConsumableFamilyName', ConsumableFamilyName);
setState('javascript.0.Drucker.HP.M282nw.' + ColorDataPoint + '.ConsumableLabelCode', ConsumableLabelCode);
setState('javascript.0.Drucker.HP.M282nw.' + ColorDataPoint + '.ConsumablePercentageLevelRemaining', ConsumablePercentageLevelRemaining);
setState('javascript.0.Drucker.HP.M282nw.' + ColorDataPoint + '.ProductNumber', ProductNumber);
};
});
});
};
schedule("42 23 * * *", function () {
GetData();
});
Ergebnis:
Habpanel: