Charts are not shown with oracle java

  • Platform information:
    • Hardware: x64/1 GB RAM/32 GB HDD
    • OS: CentOS 7
    • Java Runtime Environment: Java™ SE Runtime Environment (build 1.8.0_151-b12)
    • openHAB version: 2.2.0 (Build)
  • Issue of the topic: charts are not shown (neither in Basic UI nor in android app)
  • Please post configurations (if applicable):
    • Items configuration related to the issue
Number    GF_Boiler_Temperature         "Temperatur [%.1f °C]"         <temperature>   (GF_Boiler, gTemperature, gTemperature_Chart, gTest)            {channel="avmfritz:FRITZ_DECT_200:192_168_1_1:123456789012:temperature"}
  • Sitemap configuration related to the issue
Frame label="Persistence Test RRD4J" {
            Chart item=GF_Boiler_Temperature period=h refresh=600 service="rrd4j" legend=true
    }
  • Rules code related to the issue
    no rules
  • Services configuration related to the issue
    /etc/openhab2/services/rrd4j.cfg
# please note that currently the first archive in each RRD defines the consolidation
# function (e.g. AVERAGE) used by OpenHAB, thus only one consolidation function is
# fully supported
#
# default_numeric and default_other are internally defined defnames and are used as
# defaults when no other defname applies

#<defname>.def=[ABSOLUTE|COUNTER|DERIVE|GAUGE],<heartbeat>,[<min>|U],[<max>|U],<step>
#<defname>.archives=[AVERAGE|MIN|MAX|LAST|FIRST|TOTAL],<xff>,<steps>,<rows>
#<defname>.items=<list of items for this defname>

/etc/openhab2/persistence/rrd4j.persist:

// persistence strategies have a name and a definition and are referred to in the "Items" section
Strategies {
    // for rrd charts, we need a cron strategy
    everyMinute : "0 * * * * ?"
}

Items {
    //* : strategy = everyChange, everyMinute, restoreOnStartup

    // let's only store temperature values in rrd
    //gTemperature*, gTemperature_Chart* : strategy = everyMinute, restoreOnStartup
    * : strategy = everyMinute, restoreOnStartup
}

// vim: syntax=Xtend
  • If logs where generated please post these here using code fences:

Did you try to get the chart through the rest API?
What does it show?

http://localhost:8080/rest/chart?item=GF_Boiler_Temperature&period=h&h=800&w=1200

Thanksfor your reply!

Tried it out, here seems to be an error…

http://openhab2:8080/rest/chart?item=GF_Boiler_Temperature&period=h&h=800&w=1200:

{"error":{"message":"HTTP 404 Not Found","http-code":404,"exception":{"class":"javax.ws.rs.NotFoundException","message":"HTTP 404 Not Found","localized-message":"HTTP 404 Not Found"}}}

Any idea, why this exception occurs? Maybe some basic feature I have to activate in order to use charts?

A few days before I tried this out, which gave me valid results:
http://openhab2:8080/rest/persistence/items/GF_Boiler_Temperature

{"name":"GF_Boiler_Temperature","datapoints":"98","data":[{"time":1521879240000,"state":"20.78571428571428469922466319985687732696533203125"},{"time":1521880080000,"state":"21"},{"time":1521880920000,"state":"21.071428571428572951163005200214684009552001953125"},{"time":1521881760000,"state":"21.392261904761905810801181360147893428802490234375"},{"time":1521882600000,"state":"21.5"},{"time":1521883440000,"state":"21.46488095238095183958648703992366790771484375"},{"time":1521884280000,"state":"21.106547619047621111576518160291016101837158203125"},{"time":1521885120000,"state":"21.5"},
...

I saw this in some post here which was also related to problems witch charts and rrd4j persistence.

Try restarting OH, in my case this problem was caused by the change to DST and has been solved by restarting (at least for the REST calls and showeing charts on the sitemap,it did not solve the problem on HABPanel. I made a post for that already).

Neither restarting OH nor rebooting the box solves the problem. BTW charts never worked before, it’s not just an issue since the shift to DST.

Update your java

What are you getting when you try try this “http://openhab2:8080/rest/persistence/items/GF_Boiler_Temperature?serviceId=rrd4j” now?

To get a chart the following syntax should work for you:

http://openhab2:8080/rrdchart.png?items=GF_Boiler_Temperature&period=h
@vzorglub Your syntax didn’t work for me!

That was OH1 syntax, Ooops!

This gives me results, see my post before.

This gives me a server error:

HTTP ERROR 500
Problem accessing /rrdchart.png. Reason:

    Server Error
Caused by:
java.lang.ArrayIndexOutOfBoundsException: 0
	at sun.font.CompositeFont.getSlotFont(CompositeFont.java:351)
	at sun.font.CompositeGlyphMapper.initMapper(CompositeGlyphMapper.java:81)
	at sun.font.CompositeGlyphMapper.<init>(CompositeGlyphMapper.java:62)
	at sun.font.CompositeFont.getMapper(CompositeFont.java:409)
	at sun.font.StandardGlyphVector.init(StandardGlyphVector.java:1122)
	at sun.font.StandardGlyphVector.<init>(StandardGlyphVector.java:172)
	at java.awt.Font.getStringBounds(Font.java:2421)
	at java.awt.Font.getStringBounds(Font.java:2331)
	at java.awt.Font.getStringBounds(Font.java:2365)
	at org.rrd4j.graph.ImageWorker.getStringWidth(Unknown Source)
	at org.rrd4j.graph.RrdGraph.getSmallFontCharWidth(Unknown Source)
	at org.rrd4j.graph.RrdGraph.initializeLimits(Unknown Source)
	at org.rrd4j.graph.RrdGraph.createGraph(Unknown Source)
	at org.rrd4j.graph.RrdGraph.<init>(Unknown Source)
	at org.openhab.persistence.rrd4j.internal.charts.RRD4jChartServlet.createChart(RRD4jChartServlet.java:300)
	at org.openhab.persistence.rrd4j.internal.charts.RRD4jChartServlet.service(RRD4jChartServlet.java:157)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
	at org.eclipse.jetty.server.Server.handle(Server.java:534)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)
	at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
	at java.lang.Thread.run(Thread.java:748)

I’ll update my java and give it another try then.

My Java shows,

openjdk version "1.8.0_152"
OpenJDK Runtime Environment (Zulu Embedded 8.25.0.76-linux-aarch32hf) (build 1.8.0_152-b76)
OpenJDK Client VM (Zulu Embedded 8.25.0.76-linux-aarch32hf) (build 25.152-b76, mixed mode, Evaluation)

and using the syntax posted above with my values I get:

Confirm you get a response with data from the rest API request.

I now updated java:

java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

As far as I remember, I think I read somewhere that oracle java should work a little faster then openjdk and zulu. However oracle java won’t be a problem I guess.

When I use http://openhab2:8080/rest/persistence/items/GF_Boiler_Temperature?serviceId=rrd4j I get the following data:

{"name":"GF_Boiler_Temperature","datapoints":"98","data":[{"time":1521921240000,"state":"16.498214285714286830852870480157434940338134765625"},{"time":1521922080000,"state":"17.5702380952380963208270259201526641845703125"},{"time":1521922920000,"state":"18"},{"time":1521923760000,"state":"18.49940476190476346118884976021945476531982421875"},{"time":1521924600000,"state":"18.5"},{"time":1521925440000,"state":"18.928571428571427048836994799785315990447998046875"},{"time":1521926280000,"state":"19"},{"time":1521927120000,"state":"19"},{"time":1521927960000,"state":"19"},{"time":1521928800000,"state":"19"},{"time":1521929640000,"state":"19.28511904761904816041351296007633209228515625"},{"time":1521930480000,"state":"19.5"},{"time":1521931320000,"state":"19.5"},{"time":1521932160000,"state":"19.74940476190476346118884976021945476531982421875"},{"time":1521933000000,"state":"19.857142857142857650387668400071561336517333984375"},{"time":1521933840000,"state":"20"},{"time":1521934680000,"state":"20"},{"time":1521935520000,"state":"20"},{"time":1521936360000,"state":"20"},{"time":1521937200000,"state":"20"},{"time":1521938040000,"state":"20"},{"time":1521938880000,"state":"20.141666666666669271990031120367348194122314453125"},{"time":1521939720000,"state":"20.319696969696966704077567555941641330718994140625"},{"time":1521944760000,"state":"20.357142857142857650387668400071561336517333984375"},{"time":1521945600000,"state":"20.642857142857142349612331599928438663482666015625"},{"time":1521946440000,"state":"21"},{"time":1521947280000,"state":"20.928571428571427048836994799785315990447998046875"},{"time":1521948120000,"state":"21"},{"time":1521948960000,"state":"21"},{"time":1521949800000,"state":"21"},{"time":1521950640000,"state":"21"},{"time":1521951480000,"state":"21"},{"time":1521952320000,"state":"21"},{"time":1521953160000,"state":"21"},{"time":1521954000000,"state":"21"},{"time":1521954840000,"state":"21"},{"time":1521955680000,"state":"21"},{"time":1521956520000,"state":"21"},{"time":1521957360000,"state":"21"},{"time":1521958200000,"state":"21"},{"time":1521959040000,"state":"21.21428571428571530077533680014312267303466796875"},{"time":1521959880000,"state":"21.428571428571427048836994799785315990447998046875"},{"time":1521960720000,"state":"21.428571428571427048836994799785315990447998046875"},{"time":1521961560000,"state":"21.5"},{"time":1521962400000,"state":"21.5"},{"time":1521963240000,"state":"21.5"},{"time":1521964080000,"state":"21.5"},{"time":1521964920000,"state":"20.5"},{"time":1521965760000,"state":"21.819444444444446418174266000278294086456298828125"},{"time":1521966600000,"state":"26.083333333333332149095440399833023548126220703125"},{"time":1521967440000,"state":"26.142857142857142349612331599928438663482666015625"},{"time":1521968280000,"state":"26.928571428571427048836994799785315990447998046875"},{"time":1521969120000,"state":"26.71428571428571530077533680014312267303466796875"},{"time":1521969960000,"state":"25.571428571428572951163005200214684009552001953125"},{"time":1521970800000,"state":"25.642857142857142349612331599928438663482666015625"},{"time":1521971640000,"state":"26.71428571428571530077533680014312267303466796875"},{"time":1521972480000,"state":"25.928571428571427048836994799785315990447998046875"},{"time":1521973320000,"state":"24.642857142857142349612331599928438663482666015625"},{"time":1521974160000,"state":"24.428571428571427048836994799785315990447998046875"},{"time":1521975000000,"state":"23.78571428571428469922466319985687732696533203125"},{"time":1521975840000,"state":"23.928571428571427048836994799785315990447998046875"},{"time":1521976680000,"state":"24"},{"time":1521977520000,"state":"24"},{"time":1521978360000,"state":"24"},{"time":1521979200000,"state":"23.928571428571427048836994799785315990447998046875"},{"time":1521980040000,"state":"23.642857142857142349612331599928438663482666015625"},{"time":1521980880000,"state":"23.5"},{"time":1521981720000,"state":"23.428571428571427048836994799785315990447998046875"},{"time":1521982560000,"state":"23.357142857142857650387668400071561336517333984375"},{"time":1521983400000,"state":"22.71428571428571530077533680014312267303466796875"},{"time":1521984240000,"state":"22"},{"time":1521985080000,"state":"21.571428571428572951163005200214684009552001953125"},{"time":1521985920000,"state":"19.78571428571428469922466319985687732696533203125"},{"time":1521986760000,"state":"18.78571428571428469922466319985687732696533203125"},{"time":1521987600000,"state":"17.642857142857142349612331599928438663482666015625"},{"time":1521988440000,"state":"17"},{"time":1521989280000,"state":"16.71428571428571530077533680014312267303466796875"},{"time":1521990120000,"state":"16.642857142857142349612331599928438663482666015625"},{"time":1521990960000,"state":"17.428571428571427048836994799785315990447998046875"},{"time":1521991800000,"state":"18.71428571428571530077533680014312267303466796875"},{"time":1521992640000,"state":"19.428571428571427048836994799785315990447998046875"},{"time":1521993480000,"state":"19.699999999999999289457264239899814128875732421875"},{"time":1521994320000,"state":"20.28571428571428469922466319985687732696533203125"},{"time":1521995160000,"state":"20.428571428571427048836994799785315990447998046875"},{"time":1521996000000,"state":"20.698333333333334138615100528113543987274169921875"},{"time":1521996840000,"state":"20.89404761904761897994831087999045848846435546875"},{"time":1521997680000,"state":"21"},{"time":1521998520000,"state":"21"},{"time":1521999360000,"state":"21"},{"time":1522000200000,"state":"21"},{"time":1522001040000,"state":"21.305769230769232791544709471054375171661376953125"},{"time":1522001880000,"state":"21.072619047619046028785305679775774478912353515625"},{"time":1522002720000,"state":"21.03974358974358693785688956268131732940673828125"},{"time":1522003560000,"state":"21.251190476190476630335979280062019824981689453125"},{"time":1522004400000,"state":"21.5"},{"time":1522005240000,"state":"21.5"},{"time":1522006080000,"state":"21.5"},{"time":1522006920000,"state":"21.5"}]}

When trying http://openhab2:8080/rrdchart.png?items=GF_Boiler_Temperature&period=h I still got server error (500) as mentioned above. :frowning:

Unbelievable… I just switched to openjdk. The issue seems to be relatet to oracle java. With openjdk charts are now working. My version:

openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

Thanks to all who helped!