Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 26. Nov 2019 23:24
Code: Alles auswählen
2019-11-25 00:26:14.028 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Druckseite_add': cannot invoke method public abstract org.eclipse.smarthome.core.types.State org.eclipse.smarthome.core.persistence.HistoricItem.getState() on null
Code: Alles auswählen
Number totalcount_18 "Anzahl Seiten am 18. [%d]"
Code: Alles auswählen
rule "set totalcount_18"
when
Time cron "0 0 0 18 * ?" // am 18. des Monats um 00:00:00 Uhr
then
totalcount_18.postUpdate(officejet_totalcount.state)
end
Code: Alles auswählen
Thing hpprinter:printer:djprinter "HP Officejet 6960" @ "Büro" [ ipAddress="192.168.10.7", usageInterval="30", statusInterval="4" ]
Code: Alles auswählen
printer.items
String officejet_status "Status" {channel="hpprinter:printer:djprinter:status#status"}
Number officejet_blacklevel "Füllstand schwarz [%s%%]" {channel="hpprinter:printer:djprinter:ink#blackLevel"}
Number officejet_yellowlevel "Füllstand Yellow [%s%%]" {channel="hpprinter:printer:djprinter:ink#yellowLevel"}
Number officejet_cyanlevel "Füllstand Cyan [%s%%]" {channel="hpprinter:printer:djprinter:ink#cyanLevel"}
Number officejet_magentalevel "Füllstand Magenta [%s%%]" {channel="hpprinter:printer:djprinter:ink#magentaLevel"}
Number officejet_totalcount "Anzahl gedruckter Seiten" {channel="hpprinter:printer:djprinter:usage#totalCount"}
Number officejet_totalColorCount "davon in Farbe" {channel="hpprinter:printer:djprinter:usage#totalColorCount"}
Number officejet_totalMonochromeCount "davon in schwarz" {channel="hpprinter:printer:djprinter:usage#totalMonochromeCount"}
Number officejet_monthcount "Seiten aktueller Zeitraum [%d]"
Number totalcount_18 "Anzahl Seiten am 18. [%d]"
Code: Alles auswählen
//Zähler am 18 zurücksetzen
rule "set totalcount_18"
when
Time cron "0 0 0 18 * ?" // am 18. des Monats um 00:00:00 Uhr
then
totalcount_18.postUpdate(officejet_totalcount.state)
end
//Differenz berechnen
rule "Druckseite_add"
when
System started or // Systemstart, Anzeige mit aktuellem Wert initialisieren
Item officejet_totalcount changed
then
officejet_monthcount.postUpdate((officejet_totalcount.state as Number) - (totalcount_18.state as Number))
end
//Warnung bei Überschreitung
rule "Druckvolumen"
when
Item officejet_monthcount changed
then
if(officejet_monthcount.state == 45)
{
sendTelegram("user", "Druckvolumen zu 90% verbraucht...noch 5 Seiten übrig")
}
else if(officejet_monthcount.state >= 50)
{
sendTelegram("user", "Druckvolumen aufgebraucht!")
}
end