- Platform information:
- Hardware: ARM64/3Gb/EMMC
- OS: CentOS 7 / aarch64
- Java Runtime Environment: OpenJDK Runtime Environment (Zulu 8.33.0.135-linux_aarch64) (build 1.8.0_192-b135)
- openHAB version: 2.4.0
Hi,
using a javascript transformation to convert uptime into human readable format take very long time and high cpu usage (250%) on octa core cpu.
File: mqtt.things
Thing topic dummyTester “DummyTester”
{
Channels:
Type switch : switch_binary “Binary Switch” [ stateTopic=“/thk/1/state”, transformationPattern=“JSONPATH:$.state”, commandTopic=“/thk/1/command”, on=“ON”, off=“OFF” ]
Type string : uptime “Uptime” [ stateTopic=“/thk/1/state”, transformationPattern=“JS:switch_uptime.js” ]
Type string : freeheap “Free heap” [ stateTopic=“/thk/1/state”, transformationPattern=“JSONPATH:$.freeheap” ]
}
File: switch_uptime.js
‘use strict’;
load(“/etc/openhab2/scripts/moment.js”);
load(“/etc/openhab2/scripts/moment-duration-format.js”);(function(i) {
var obj = JSON.parse(i);
var dur = moment.duration(obj.uptime);
return dur.format(“D [Days] h [Hours]”);
})(input);
File: openhab.log
2018-12-29 13:13:34.501 [DEBUG] [o.client.mqttv3.internal.ClientState] - openhab2: received bytes count=1
2018-12-29 13:13:34.502 [DEBUG] [o.client.mqttv3.internal.ClientState] - openhab2: received bytes count=42
2018-12-29 13:13:34.504 [DEBUG] [mqttv3.internal.wire.MqttInputStream] - null: Automatic Reconnect Successful: PUBLISH qos:0 retained:false dup:false topic:“/thk/1/state” payload:[hex:7b227374617465223a224f4646222c2266726565 utf8:“{“state”:“OFF”,“free” length:28]
2018-12-29 13:13:34.505 [DEBUG] [o.client.mqttv3.internal.ClientState] - openhab2: received key=0 message=PUBLISH qos:0 retained:false dup:false topic:”/thk/1/state" payload:[hex:7b227374617465223a224f4646222c2266726565 utf8:"{“state”:“OFF”,“free” length:28]
2018-12-29 13:13:34.506 [DEBUG] [client.mqttv3.internal.CommsCallback] - openhab2: new msg avail, notify workAvailable
2018-12-29 13:13:34.507 [DEBUG] [client.mqttv3.internal.CommsReceiver] - openhab2: network read message
2018-12-29 13:13:34.508 [DEBUG] [client.mqttv3.internal.CommsCallback] - openhab2: call messageArrived key=0 topic=/thk/1/state
2018-12-29 13:13:34.510 [DEBUG] [.jsonpath.internal.path.CompiledPath] - Evaluating path: $[‘state’]
— no logging output but this is the time the javascript processing occures —
2018-12-29 13:13:47.364 [DEBUG] [.jsonpath.internal.path.CompiledPath] - Evaluating path: $[‘freeheap’]
Is there a way to speedup javascript processing? Or a faster/better way to display the uptime of a thing?
Kind regards
Thomas