HP Printer Binding - monatliche Seiten berechnen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von mcdandrew »

Ich habe in der Paper UI unter Addons --> Persistence die RRD4J installiert.

Anschließend dann im Verzeichnis Persistence einen ConfigFile angelegt.

Code: Alles auswählen

Strategies 
{
    everyMinute : "0 * * * * ?"
    everyHour : "0 0 * * * ?"
    everyDay : "0 0 0 * * ?"
}

Items 
{
	officejet_monthcount			 : strategy = everyChange, restoreOnStartup
}
Default Persistence Service...
Habe ich gerade konfiguriert bringt allerdings auch keine Veränderung.
Da die Persistenz erst seit dem 20.11 läuft habe ich mal testweise vom 18. auf den 23. geändert...auch keine Veränderung.

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von udo1toni »

Nimm bitte everyMinute mit in die Strategy rein. rrd4j braucht eine fixe Menge an Platz, das sollte also kein Problem sein. Ansonsten müssen wir weitersuchen. Du kannst bei historicState auch noch explizit die Datenquelle mit angeben:

Code: Alles auswählen

val Number nHcount = officejet_totalcount.historicState(nDay,"rrd4j").state as Number
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von mcdandrew »

habe ich getan...Fehlermeldung bleibt allerdings die selbe :(

Code: Alles auswählen

2019-11-25 00:26:14.020 [INFO ] [e.smarthome.model.script.print.count] - nMonth=0 nDays=25 nDay=2019-11-23T00:00:00.000+01:00

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

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von udo1toni »

Hm. Sieht ja erst mal so aus, als ob die Persistence nicht funktioniert. Du hast openHAB ja sicher schon mal neu gestartet.
Zum Testen kannst Du einen Chart auf der Sitemap anlegen und nachschauen, ob der Daten liefert.

Code: Alles auswählen

Chart item=officejet_totalcount period=W refresh=60000
Es müsste dann eine aufsteigende Linie zu sehen sein. Falls das nicht der Fall ist, müsstest Du die Datei officejet_totalcount.rrd im Verzeichnis /var/lib/openhab2/persistence/rrd4j/ (vorausgesetzt, es handelt sich um eine Standardinstallation) löschen und neu anlegen lassen (vorher openHAB beenden).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von mcdandrew »

Code: Alles auswählen

Hm. Sieht ja erst mal so aus, als ob die Persistence nicht funktioniert. 
Andere durch die Persistence gespeicherte Werte (bspw. Aussentemperatur) werden korrekt dargestellt.

Code: Alles auswählen

Du hast openHAB ja sicher schon mal neu gestartet.
natürlich

Habe nun das Verzeichnis gelöscht und die Dateien neu anlegen lassen. Ich werde berichten was das Chart sagt.

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von mcdandrew »

Die Persistence scheint einwandfrei zu funktionieren...habe mal 2 Seiten gedruckt.
Im zweiten Chart wird das Item "officejet_monthcount".
Wie zu erkennen ist wird kein Wert zugewiesen.

Bild

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von udo1toni »

Wie sieht denn der Channel zum Item officejet_totalcount aus?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von mcdandrew »

Thing-File

Code: Alles auswählen

Thing hpprinter:printer:djprinter "HP Officejet 6960" @ "Büro" [ ipAddress="192.168.10.7", usageInterval="30", statusInterval="4" ]
ITem-File

Code: Alles auswählen

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"

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von udo1toni »

Das ist hässliches Stochern im Nebel. Vielleicht ergibt sich aus dieser Logzeile etwas:

Code: Alles auswählen

val Hcount = officejet_totalcount.historicState(nDay,"rrd4j").state 
logInfo("print.count","nTcount={} Hcount={}",nTcount,Hcount)
Also erst mal keine Zuweisung zu Number, sondern mal schauen, was denn da tatsächlich zurück kommt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: HP Printer Binding - monatliche Seiten berechnen

Beitrag von mcdandrew »

Das ist hässliches Stochern im Nebel.
Ich hätte schon längst aufgegeben...ich bewundere immerwieder deinen Ehrgeiz ;)

Habe den Code jetzt wie folgt geändert..

Code: Alles auswählen

rule "Druckseite_add"
when 
    //System started or                  // Systemstart, Anzeige mit aktuellem Wert initialisieren
    Item officejet_totalcount changed
then
    val Integer nMonth = if(now.getDayOfMonth < 23) 1 else 0
    val Integer nDays =now.minusMonths(nMonth).getDayOfMonth

    val nDay = now.withTimeAtStartOfDay.minusMonths(nMonth).minusDays(nDays-23)
    
    val Number nTcount = officejet_totalcount.state as Number
    val nHcount = officejet_totalcount.historicState(nDay,"rrd4j").state 
	
	logInfo("print.count","nTcount={} nHcount={}",nTcount,nHcount)
	
    officejet_monthcount.postUpdate(nTcount - nHcount)
end
Wobei ich sagen muss, dass ich die Varaible Hcount (wie von Dir beschrieben) nach nHcount geändert habe...
Die Log Ausgabe erscheint allerdings nicht...eventuell bricht es die Rule vorher schon ab?

Antworten