Seite 3 von 3
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 26. Nov 2019 23:24
von udo1toni
mcdandrew hat geschrieben: 26. Nov 2019 00:30
Die Log Ausgabe erscheint allerdings nicht...eventuell bricht es die Rule vorher schon ab?
Das wäre allerdings sehr seltsam, da die Rule ja vorher an dieser Stelle hängen blieb.
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 27. Nov 2019 02:05
von mcdandrew
Mal ne ganz blöde Frage...
Die Fehlermeldung
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
sagt doch aus, dass im Persistence File kein Eintrag für das entsprechende Datum gefunden wurde.
Kann es daran liegen, dass für dieses, in der Vergangenheit liegende Datum noch keine Einträge vorhanden sind? Die Persistence läuft schließlich erst seit dem 20.11!
Eventuell muss ich einfach bloß warten bis entsprechende Datensätze vorhanden sind.
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 27. Nov 2019 12:20
von udo1toni
Nein, die Fehlermeldung sagt aus, dass es nicht möglich war, den Wert, der von der Persistence geliefert wurde, als Number zu casten. Das ist ein feiner Unterschied

Deswegen wäre ich ja auch so scharf darauf, zu sehen, was dort eigentlich gecastet wird. (also was der Persistence Service zurück liefert.)
Es gibt natürlich noch eine pragmatische Methode, um das Problem zu lösen. Definiere ein Number Item, welches Du immer am 18. mit dem Wert von TotalCount füllst. Das Item muss mit restoreOnStartup persistiert werden, am besten mit mapDB. zB. so:
items:
rule:
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
Künftig berechnest Du die Differenz immer zu diesem Item.
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 28. Nov 2019 00:48
von mcdandrew
Es läuft
Ich habe zunächst dem ITEM totalcount_18 händisch einen Wert zugewiesen.
Aber hier noch mal alles komplett, vielleicht benötigt es jemand mal...
printer.things
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]"
printer.rules
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
Ein riesen Dank nochmal an Dich Udo für deine klasse Untestützung, super Erläuterungen und vorallem unendliche Geduld!!!
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 28. Nov 2019 14:10
von udo1toni
Gerne.

Schade nur, dass es hartnäckig nicht mit der Persistence funktioniert.
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 23. Jan 2020 12:44
von OliverCJ
Hallo zusammen,
der Post ist zwar schon etwas älter, ich nutze ihn aber einfach mal um eine Frage zu stellen...
Auf der offiziellen oh-Seite habe ich dieses Binding in der Dokumentation zu den Bindings gefunden (allerdings funktioniert dort der Link auf die Github-Seite nicht).
In der PaperUI finde ich das Binding aber leider nicht zur Installation.
Wo genau bekomme ich es also her? Jemand ne Ahnung? Oder ist das schon wieder eingestellt worden?
Danke und viele Grüße
Oliver
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 24. Jan 2020 06:40
von OliverCJ
Hat sich erledigt... Habe gestern auf 2.5.0 upgedatet und anschließend war es bei den Bindings installierbar.