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:

Code: Alles auswählen

Number totalcount_18 "Anzahl Seiten am 18. [%d]"
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 :D

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.