Store numeric values based on name+unit instead of name+quantity.

pull/1021/head
Fredrik Öhrström 2023-08-27 17:33:32 +02:00
rodzic 94d4ddce16
commit 71fe4b4392
8 zmienionych plików z 141 dodań i 57 usunięć

Wyświetl plik

@ -1111,7 +1111,7 @@ bool MeterCommonImplementation::handleTelegram(AboutTelegram &about, vector<ucha
}
triggerUpdate(&t);
/* string s = debugValues();
/*string s = debugValues();
printf("\n\nVALUES------\n%s\n--------------\n", s.c_str());*/
@ -1255,12 +1255,12 @@ void MeterCommonImplementation::setNumericValue(FieldInfo *fi, DVEntry *dve, Uni
if (dve == NULL)
{
string field_name_no_unit = fi->vname();
numeric_values_[pair<string,Quantity>(field_name_no_unit, fi->xuantity())] = NumericField(u, v, fi);
numeric_values_[pair<string,Unit>(field_name_no_unit, fi->displayUnit())] = NumericField(u, v, fi);
}
else
{
field_name_no_unit = fi->generateFieldNameNoUnit(dve);
numeric_values_[pair<string,Quantity>(field_name_no_unit, fi->xuantity())] = NumericField(u, v, fi, *dve);
numeric_values_[pair<string,Unit>(field_name_no_unit, fi->displayUnit())] = NumericField(u, v, fi, *dve);
}
}
@ -1284,7 +1284,7 @@ bool MeterCommonImplementation::hasValue(FieldInfo *fi)
bool MeterCommonImplementation::hasNumericValue(FieldInfo *fi)
{
pair<string,Quantity> key(fi->vname(),fi->xuantity());
pair<string,Unit> key(fi->vname(),fi->displayUnit());
return numeric_values_.count(key) != 0;
}
@ -1297,7 +1297,7 @@ bool MeterCommonImplementation::hasStringValue(FieldInfo *fi)
double MeterCommonImplementation::getNumericValue(FieldInfo *fi, Unit to)
{
string field_name_no_unit = fi->vname();
pair<string,Quantity> key(field_name_no_unit,fi->xuantity());
pair<string,Unit> key(field_name_no_unit,fi->displayUnit());
if (numeric_values_.count(key) == 0)
{
return std::numeric_limits<double>::quiet_NaN(); // This is translated into a null in the json.
@ -1308,9 +1308,7 @@ double MeterCommonImplementation::getNumericValue(FieldInfo *fi, Unit to)
double MeterCommonImplementation::getNumericValue(string vname, Unit to)
{
Quantity q = toQuantity(to);
pair<string,Quantity> key(vname,q);
pair<string,Unit> key(vname,to);
if (numeric_values_.count(key) == 0)
{
return std::numeric_limits<double>::quiet_NaN(); // This is translated into a null in the json.
@ -1408,10 +1406,10 @@ string MeterCommonImplementation::debugValues()
for (auto &p : numeric_values_)
{
string vname = p.first.first;
Quantity q = p.first.second;
string us = unitToStringLowerCase(p.first.second);
NumericField& nf = p.second;
s += tostrprintf("%s %s = %g\n", toString(q), vname.c_str(), nf.value);
s += tostrprintf("%s_%s = %g\n", vname.c_str(), us.c_str(), nf.value);
}
for (auto &p : string_values_)

Wyświetl plik

@ -240,8 +240,8 @@ protected:
vector<string> selected_fields_;
// Map difvif key to hex values from telegrams.
std::map<std::string,std::pair<int,std::string>> hex_values_;
// Map field name including unit (total_volume_m3) to numeric value.
std::map<pair<std::string,Quantity>,NumericField> numeric_values_;
// Map field name+Unit to Numeric field which includes the value.
std::map<pair<std::string,Unit>,NumericField> numeric_values_;
// Map field name (at_date) to string value.
std::map<std::string,StringField> string_values_;
// Used to block next poll, until this poll has received a respones.

Wyświetl plik

@ -7,15 +7,15 @@ mkdir -p $TEST
TESTNAME="Test additional json from cmdline"
TESTRESULT="ERROR"
cat simulations/simulation_additional_json.txt | grep '^{' > $TEST/test_expected.txt
cat simulations/simulation_additional_json.txt | grep '^{' | jq --sort-keys . > $TEST/test_expected.txt
$PROG --format=json --json_floor=5 --json_address="RoodRd 42" --field_city="Stockholm" simulations/simulation_additional_json.txt \
MyTapWater multical21 76348799 "" \
> $TEST/test_output.txt 2> $TEST/test_stderr.txt
MyTapWater multical21 76348799 "" 2> $TEST/test_stderr.txt | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
@ -23,14 +23,14 @@ then
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_response.txt
meld $TEST/test_expected.txt $TEST/test_responses.txt
fi
fi
fi
if [ "$TESTRESULT" = "ERROR" ]; then echo ERROR: $TESTNAME; exit 1; fi
exit 0
TESTNAME="Test additional shell envs from cmdline"
TESTRESULT="ERROR"

Wyświetl plik

@ -11,7 +11,7 @@ TESTRESULT="ERROR"
HEX="5E44A51139259471410D7A720050052F2F0C06742400008C1006000000000C13823522008C2013494400000B3B0000000C2B000000000A5A22030A5E91020AA61800004C0619130000CC100600000000426CDF252F2F2F2F2F2F2F2F2F2F2F"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
"set_date":"2022-05-31",
"set_1_fromd_utc":"2022-12-22T01:00:00Z",
"set_2_fromdhm_utc":"2022-12-22T13:12:00Z",
@ -46,6 +46,8 @@ cat > $TEST/test_expected.txt <<EOF
"set_31_from_setdate2_datetime":"2022-07-31 07:33",
EOF
sort $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
# TZ=UTC+1 date --date 2022-12-22T12:12:12Z +%s --> 1671711132 # UTC time
# TZ=UTC+1 date --date '2022-12-22 12:12:12' +%s --> 1671714732 # Local time in UTC+1 ie Stockholm no daylight savings.
# TZ=UTC+1 date --date '2022-12-22 12:12' +%s --> 1671714720
@ -91,7 +93,7 @@ TZ=UTC+1 $PROG --format=json --ppjson \
\
--calculate_set_31_from_setdate2_datetime="set_30_from_setdate_datetime + 1 month + 7 h + '00:33'"\
"$HEX" \
Moo sharky774 71942539 NOKEY | grep \"set_ > $TEST/test_output.txt
Moo sharky774 71942539 NOKEY | grep \"set_ | sort > $TEST/test_output.txt
if [ "$?" = "0" ]
then
@ -100,6 +102,11 @@ then
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_output.txt
fi
fi
fi

Wyświetl plik

@ -16,7 +16,7 @@ Received telegram from: 76348799
driver: multical21
EOF
$PROG 2A442D2C998734761B168D2091D37CAC21E1D68CDAFFCD3DC452BD802913FF7B1706CA9E355D6C2701CC24 2> $TEST/test_output.txt 1>&2
$PROG 2A442D2C998734761B168D2091D37CAC21E1D68CDAFFCD3DC452BD802913FF7B1706CA9E355D6C2701CC24 > $TEST/test_output.txt 2>&1
if [ "$?" = "0" ]
then
@ -25,6 +25,11 @@ then
then
echo OK: $TESTNAME
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_output.txt
fi
fi
else
echo "ERROR: $TESTNAME"
@ -33,18 +38,20 @@ else
exit 1
fi
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"cold water","meter":"multical21","name":"MyWater","id":"76348799","status":"DRY","total_m3":6.408,"target_m3":6.408,"flow_temperature_c":127,"external_temperature_c":19,"current_status":"DRY","time_dry":"22-31 days","time_reversed":"","time_leaking":"","time_bursting":"","timestamp":"1111-11-11T11:11:11Z"}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
TESTNAME="Test hex on commandline with meter"
$PROG --format=json 2A442D2C998734761B168D2091D37CAC21E1D68CDAFFCD3DC452BD802913FF7B1706CA9E355D6C2701CC24 \
MyWater auto 76348799 28F64A24988064A079AA2C807D6102AE > $TEST/test_output.txt 2> $TEST/test_stderr.txt
MyWater auto 76348799 28F64A24988064A079AA2C807D6102AE 2> $TEST/test_stderr.txt | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
@ -92,18 +99,20 @@ fi
TESTNAME="Test hex on stdin"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"other","meter":"lansenpu","name":"MyCounter","id":"00010206","status":"OK","a_counter":4711,"b_counter":1234,"timestamp":"1111-11-11T11:11:11Z"}
{"media":"cold water","meter":"multical21","name":"MyWater","id":"76348799","status":"DRY","total_m3":6.408,"target_m3":6.408,"flow_temperature_c":127,"external_temperature_c":19,"current_status":"DRY","time_dry":"22-31 days","time_reversed":"","time_leaking":"","time_bursting":"","timestamp":"1111-11-11T11:11:11Z"}
{"media":"other","meter":"lansenpu","name":"MyCounter","id":"00010206","status":"OK","a_counter":4711,"b_counter":1234,"timestamp":"1111-11-11T11:11:11Z"}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
echo 234433300602010014007a8e0000002f2f0efd3a1147000000008e40fd3a3412000000002A442D2C998734761B168D2091D37CAC21E1D68CDAFFCD3DC452BD802913FF7B1706CA9E355D6C2701CC24234433300602010014007a8e0000002f2f0efd3a1147000000008e40fd3a341200000000999 | \
$PROG --silent --ignoreduplicates=false --format=json stdin:hex MyCounter auto 00010206 NOKEY MyWater auto 76348799 28F64A24988064A079AA2C807D6102AE > $TEST/test_output.txt 2> $TEST/test_stderr.txt
$PROG --silent --ignoreduplicates=false --format=json stdin:hex MyCounter auto 00010206 NOKEY MyWater auto 76348799 28F64A24988064A079AA2C807D6102AE 2> $TEST/test_stderr.txt | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then

Wyświetl plik

@ -10,22 +10,29 @@ TEST=testoutput
TESTNAME="Test duplicates are ignored"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"smoke detector","meter":"lansensm","name":"Rummet","id":"01000273","status":"OK","async_msg_id_counter":588,"minutes_since_last_manual_test_counter":30022,"timestamp":"1111-11-11T11:11:11Z"}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
$PROG --format=json --ignoreduplicates simulations/simulation_duplicates.txt \
Rummet lansensm 01000273 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_responses.txt
fi
fi
fi
@ -35,7 +42,7 @@ if [ "$TESTRESULT" = "ERROR" ]; then echo ERROR: $TESTNAME; exit 1; fi
TESTNAME="Test duplicates are left alone"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"smoke detector","meter":"lansensm","name":"Rummet","id":"01000273","status":"OK","async_msg_id_counter":588,"minutes_since_last_manual_test_counter":30022,"timestamp":"1111-11-11T11:11:11Z"}
{"media":"smoke detector","meter":"lansensm","name":"Rummet","id":"01000273","status":"OK","async_msg_id_counter":588,"minutes_since_last_manual_test_counter":30022,"timestamp":"1111-11-11T11:11:11Z"}
{"media":"smoke detector","meter":"lansensm","name":"Rummet","id":"01000273","status":"OK","async_msg_id_counter":588,"minutes_since_last_manual_test_counter":30022,"timestamp":"1111-11-11T11:11:11Z"}
@ -43,18 +50,25 @@ cat > $TEST/test_expected.txt <<EOF
{"media":"smoke detector","meter":"lansensm","name":"Rummet","id":"01000273","status":"OK","async_msg_id_counter":588,"minutes_since_last_manual_test_counter":30022,"timestamp":"1111-11-11T11:11:11Z"}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
$PROG --format=json --ignoreduplicates=false simulations/simulation_duplicates.txt \
Rummet lansensm 01000273 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_responses.txt
fi
fi
fi

Wyświetl plik

@ -10,26 +10,33 @@ TEST=testoutput
TESTNAME="Test ok serial rawtty telegram on stdin"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"room sensor","meter":"lansenth","name":"Rummet1","id":"00010203","status":"PERMANENT_ERROR SABOTAGE_ENCLOSURE","current_temperature_c":21.8,"current_relative_humidity_rh":43,"average_temperature_1h_c":21.79,"average_relative_humidity_1h_rh":43,"average_temperature_24h_c":21.97,"average_relative_humidity_24h_rh":42.5,"timestamp":"1111-11-11T11:11:11Z"}
{"media":"room sensor","meter":"rfmamb","name":"Rummet2","id":"11772288","status":"PERMANENT_ERROR","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"maximum_temperature_24h_c":23.47,"minimum_temperature_1h_c":21.85,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_1h_rh":42.5,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z"}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
xxd -r -p simulations/serial_rawtty_ok.hex | \
$PROG --silent --format=json --listento=any stdin:rawtty \
Rummet1 lansenth 00010203 "" \
Rummet2 rfmamb 11772288 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_responses.txt
fi
fi
fi
@ -39,20 +46,27 @@ if [ "$TESTRESULT" = "ERROR" ]; then echo ERROR: $TESTNAME; exit 1; fi
TESTNAME="Test bad serial rawtty telegram with interspersed noise, on stdin"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"room sensor","meter":"rfmamb","name":"Rummet2","id":"11772288","status":"PERMANENT_ERROR","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"maximum_temperature_24h_c":23.47,"minimum_temperature_1h_c":21.85,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_1h_rh":42.5,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z"}
EOF
xxd -r -p simulations/serial_rawtty_bad.hex | $PROG --silent --format=json --listento=any stdin:rawtty Rummet1 lansenth 00010203 "" Rummet2 rfmamb 11772288 "" | grep Rummet > $TEST/test_output.txt
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
xxd -r -p simulations/serial_rawtty_bad.hex | $PROG --silent --format=json --listento=any stdin:rawtty Rummet1 lansenth 00010203 "" Rummet2 rfmamb 11772288 "" | grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_responses.txt
fi
fi
fi

Wyświetl plik

@ -10,26 +10,33 @@ TEST=testoutput
TESTNAME="Reading binary telegram from stdin"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"room sensor","meter":"lansenth","name":"Rummet1","id":"00010203","status":"PERMANENT_ERROR SABOTAGE_ENCLOSURE","current_temperature_c":21.8,"current_relative_humidity_rh":43,"average_temperature_1h_c":21.79,"average_relative_humidity_1h_rh":43,"average_temperature_24h_c":21.97,"average_relative_humidity_24h_rh":42.5,"timestamp":"1111-11-11T11:11:11Z"}
{"media":"room sensor","meter":"rfmamb","name":"Rummet2","id":"11772288","status":"PERMANENT_ERROR","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"maximum_temperature_24h_c":23.47,"minimum_temperature_1h_c":21.85,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_1h_rh":42.5,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z"}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
xxd -r -p simulations/serial_rawtty_ok.hex | \
$PROG --silent --format=json --listento=any stdin:rawtty \
Rummet1 lansenth 00010203 "" \
Rummet2 rfmamb 11772288 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_output.txt
fi
fi
fi
@ -41,24 +48,31 @@ TESTRESULT="ERROR"
xxd -r -p simulations/serial_rawtty_ok.hex > $TEST/test_raw
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"room sensor","meter":"lansenth","name":"Rummet1","id":"00010203","status":"PERMANENT_ERROR SABOTAGE_ENCLOSURE","current_temperature_c":21.8,"current_relative_humidity_rh":43,"average_temperature_1h_c":21.79,"average_relative_humidity_1h_rh":43,"average_temperature_24h_c":21.97,"average_relative_humidity_24h_rh":42.5,"timestamp":"1111-11-11T11:11:11Z"}
{"media":"room sensor","meter":"rfmamb","name":"Rummet2","id":"11772288","status":"PERMANENT_ERROR","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"maximum_temperature_24h_c":23.47,"minimum_temperature_1h_c":21.85,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_1h_rh":42.5,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z"}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
$PROG --silent --format=json --listento=any $TEST/test_raw:rawtty \
Rummet1 lansenth 00010203 "" \
Rummet2 rfmamb 11772288 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo OK: $TESTNAME
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_output.txt
fi
fi
fi
@ -68,25 +82,32 @@ if [ "$TESTRESULT" = "ERROR" ]; then echo ERROR: $TESTNAME; exit 1; fi
TESTNAME="Reading rtlwmbus formatted telegrams from stdin"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"room sensor","meter":"lansenth","name":"Rummet1","id":"00010203","status":"PERMANENT_ERROR SABOTAGE_ENCLOSURE","current_temperature_c":21.8,"current_relative_humidity_rh":43,"average_temperature_1h_c":21.79,"average_relative_humidity_1h_rh":43,"average_temperature_24h_c":21.97,"average_relative_humidity_24h_rh":42.5,"timestamp":"1111-11-11T11:11:11Z","device":"rtlwmbus[]","rssi_dbm":97}
{"media":"room sensor","meter":"rfmamb","name":"Rummet2","id":"11772288","status":"PERMANENT_ERROR","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"maximum_temperature_24h_c":23.47,"minimum_temperature_1h_c":21.85,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_1h_rh":42.5,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z","device":"rtlwmbus[]","rssi_dbm":97}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
cat simulations/serial_rtlwmbus_ok.msg | \
$PROG --silent --format=json --listento=any stdin:rtlwmbus \
Rummet1 lansenth 00010203 "" \
Rummet2 rfmamb 11772288 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_output.txt
fi
fi
fi
@ -96,24 +117,31 @@ if [ "$TESTRESULT" = "ERROR" ]; then echo ERROR: $TESTNAME; exit 1; fi
TESTNAME="Reading rtlwmbus formatted telegrams from file"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"room sensor","meter":"lansenth","name":"Rummet1","id":"00010203","status":"PERMANENT_ERROR SABOTAGE_ENCLOSURE","current_temperature_c":21.8,"current_relative_humidity_rh":43,"average_temperature_1h_c":21.79,"average_relative_humidity_1h_rh":43,"average_temperature_24h_c":21.97,"average_relative_humidity_24h_rh":42.5,"timestamp":"1111-11-11T11:11:11Z","device":"rtlwmbus[]","rssi_dbm":97}
{"media":"room sensor","meter":"rfmamb","name":"Rummet2","id":"11772288","status":"PERMANENT_ERROR","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"maximum_temperature_24h_c":23.47,"minimum_temperature_1h_c":21.85,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_1h_rh":42.5,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z","device":"rtlwmbus[]","rssi_dbm":97}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
$PROG --silent --format=json --listento=any simulations/serial_rtlwmbus_ok.msg:rtlwmbus \
Rummet1 lansenth 00010203 "" \
Rummet2 rfmamb 11772288 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_output.txt
fi
fi
fi
@ -121,25 +149,32 @@ fi
TESTNAME="Reading rtl433 formatted telegrams from stdin"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"room sensor","meter":"lansenth","name":"Rummet1","id":"00010203","status":"PERMANENT_ERROR SABOTAGE_ENCLOSURE","current_temperature_c":21.8,"current_relative_humidity_rh":43,"average_temperature_1h_c":21.79,"average_relative_humidity_1h_rh":43,"average_temperature_24h_c":21.97,"average_relative_humidity_24h_rh":42.5,"timestamp":"1111-11-11T11:11:11Z","device":"rtl433[]","rssi_dbm":999}
{"media":"room sensor","meter":"rfmamb","name":"Rummet2","id":"11772288","status":"PERMANENT_ERROR","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"maximum_temperature_24h_c":23.47,"minimum_temperature_1h_c":21.85,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_1h_rh":42.5,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z","device":"rtl433[]","rssi_dbm":999}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
cat simulations/serial_rtl433_ok.msg | \
$PROG --silent --format=json --listento=any stdin:rtl433 \
Rummet1 lansenth 00010203 "" \
Rummet2 rfmamb 11772288 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_output.txt
fi
fi
fi
@ -149,24 +184,31 @@ if [ "$TESTRESULT" = "ERROR" ]; then echo ERROR: $TESTNAME; exit 1; fi
TESTNAME="Reading rtl433 formatted telegrams from file"
TESTRESULT="ERROR"
cat > $TEST/test_expected.txt <<EOF
cat > $TEST/test_expected_unsorted.txt <<EOF
{"media":"room sensor","meter":"lansenth","name":"Rummet1","id":"00010203","status":"PERMANENT_ERROR SABOTAGE_ENCLOSURE","current_temperature_c":21.8,"current_relative_humidity_rh":43,"average_temperature_1h_c":21.79,"average_relative_humidity_1h_rh":43,"average_temperature_24h_c":21.97,"average_relative_humidity_24h_rh":42.5,"timestamp":"1111-11-11T11:11:11Z","device":"rtl433[]","rssi_dbm":999}
{"media":"room sensor","meter":"rfmamb","name":"Rummet2","id":"11772288","status":"PERMANENT_ERROR","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"maximum_temperature_24h_c":23.47,"minimum_temperature_1h_c":21.85,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_1h_rh":42.5,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z","device":"rtl433[]","rssi_dbm":999}
EOF
jq --sort-keys . $TEST/test_expected_unsorted.txt > $TEST/test_expected.txt
$PROG --silent --format=json --listento=any simulations/serial_rtl433_ok.msg:rtl433 \
Rummet1 lansenth 00010203 "" \
Rummet2 rfmamb 11772288 "" \
| grep Rummet > $TEST/test_output.txt
| grep Rummet | jq --sort-keys . > $TEST/test_output.txt
if [ "$?" = "0" ]
then
cat $TEST/test_output.txt | sed 's/"timestamp":"....-..-..T..:..:..Z"/"timestamp":"1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
cat $TEST/test_output.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_responses.txt
diff $TEST/test_expected.txt $TEST/test_responses.txt
if [ "$?" = "0" ]
then
echo "OK: $TESTNAME"
TESTRESULT="OK"
else
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected.txt $TEST/test_output.txt
fi
fi
fi