Seite 2 von 3
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 24. Nov 2019 23:23
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.
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 25. Nov 2019 00:22
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
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 25. Nov 2019 00:30
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
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 25. Nov 2019 10:01
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).
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 25. Nov 2019 20:51
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.
natürlich
Habe nun das Verzeichnis gelöscht und die Dateien neu anlegen lassen. Ich werde berichten was das Chart sagt.
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 25. Nov 2019 22:51
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.

Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 25. Nov 2019 23:07
von udo1toni
Wie sieht denn der Channel zum Item officejet_totalcount aus?
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 25. Nov 2019 23:14
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"
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 25. Nov 2019 23:56
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.
Re: HP Printer Binding - monatliche Seiten berechnen
Verfasst: 26. Nov 2019 00:30
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?