#!/bin/sh
#
# args: fieldName [leafID [concentratorID]]
#   or: -multiID [options] fieldName leafID leafID { leafID }*
#
# Filter JSON logs to extract values of interest
# for *nix tools such as awk and gnuplot
# ie as space-separated columns.
#
# Expected input format is one JSON array record per line with elements
# ISO-format timestamp, concentrator ID, raw leaf ASCII7 printable object
# eg:
#
# [ "2014-12-19T15:39:50Z", "", {"@":"0a45","+":5,"L":163,"B|mV":3315,"v|%":0,"tT|C":7} ]
# [ "2014-12-19T15:40:18Z", "", {"@":"819c","T|C16":156,"L":206,"B|cV":256} ]
# [ "2014-12-19T15:41:20Z", "", {"@":"2d1a","+":3,"v|%":0,"tT|C":7,"O":1,"vac|h":6} ]
#
# and (for < 2 IDs) output consisting of space-separated columns of
# ISOtimestamp leafID fieldValue
# eg:
#
# 2014-12-19T14:58:20Z 2d1a 0
# 2014-12-19T14:59:50Z 0a45 0
# 2014-12-19T15:00:06Z 414a 0
#
# Else multi-ID, multi-column output of the form:
# 2016-09-17T07:38:55Z - 341 - -
# 2016-09-17T07:39:35Z - - 341 -
# 2016-09-17T07:39:51Z 234 - - -
#
# Example use processing an archive:
# xzmore < data/OpenTRV/pubarchive/partial/201412.json.xz | OpenTRV/scripts/filterJSON "v|%" 3015


#JAVA_HOME=/usr/lib/jvm/latest/
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-armhf/
export JAVA_HOME
JAVAcmd=$JAVA_HOME/bin/java
if [ ! -x $JAVAcmd ]; then
    # If specific Java instance not available, tru more generic fallback.
    unset JAVA_HOME
    JAVAcmd=java
fi

# To get librxtx for RPi...
#     sudo apt-get install librxtx-java

# OpenTRV comms lib version
OPENTRVVER=0.2.3

#OPENTRVDIR=/local/docs-public/www.hd.org/Damon/Env/OpenTRV
OPENTRVDIR=/rw/docs-public/www.hd.org/Damon/Env/OpenTRV
OPENTRVJLDIR=$OPENTRVDIR/lib
OPENTRVTPJLDIR=$OPENTRVDIR/thirdPartyLib
#OPENTRVTPNLDIR=$OPENTRVDIR/thirdPartyLib/native/arm5vtel
# From librxtx-java package...
OPENTRVSJLDIR=/usr/share/java
OPENTRVTPNLDIR=/usr/lib/jni

exec $JAVAcmd -client -Xms2m -Xmx4m \
    -Djava.library.path=$OPENTRVTPNLDIR \
    -classpath "$OPENTRVJLDIR/OpenTRV-comms-${OPENTRVVER}.jar:$OPENTRVSJLDIR/*:$OPENTRVTPJLDIR/*" \
    uk.org.opentrv.comms.json.JSONStatsLineStreamReader "$@"
