+GF+ U1000 V2 HM
Product Datasheet
Device Profile for Tesenso IoT Cloud
Decoder/Payload Converter for Tesenso IoT Cloud
https://github.com/Tesenso-GmbH/Device-Decoder/blob/main/Adeunis_Modbus_for_GF.js
// J.G : 07-08-2024 V 1.1 GF Mobile Ultraschall HM version
var decodedMsg = {};
if (msg && msg.data && msg.data.length >= 32) {
var filterCorruptData = msg.data.slice(-18);
if (filterCorruptData != "ffffffffffffffffff") {
decodedMsg = main(msg.data);
}
}
return {
msg: decodedMsg,
metadata: metadata,
msgType: msgType
};
function main(data) {
var decodedData = {};
var gemessenesGesamtVolumeData = data.slice(-8); // volume
//var gemessenerTemperaturunterschied = data.slice(-16, -8); // deltaT ...doens't work
var gemesseneTemperaturKalt = data.slice(-24, -16); // returnFlowTemperature
var gemesseneTemperaturWarm = data.slice(-32, -24); // flowTemperature
var gemesseneEnergie = data.slice(-40, -32); // heatMeterEnergy
var gemesseneLeistung = data.slice(-48, -40); // power
var gemessenerDurchfluss = data.slice(-56, -48); // flowRate
var gemesseneGeschwindigkeit = data.slice(-64, -56); // flowSpeed
decodedData.waterMeter = HexToFloat32(gemessenesGesamtVolumeData); // m3
//decodedData.deltaT = HexToFloat32(gemessenerTemperaturunterschied); // °C ... doesn't work, doing it manually below
decodedData.returnFlowTemperature = HexToFloat32(gemesseneTemperaturKalt); // °C
decodedData.flowTemperature = HexToFloat32(gemesseneTemperaturWarm); // °C
decodedData.heatMeterEnergy = HexToFloat32(gemesseneEnergie); // kWh
decodedData.power = HexToFloat32(gemesseneLeistung); // kW
decodedData.flowRate = HexToFloat32(gemessenerDurchfluss); // m3/std
decodedData.flowSpeed = HexToFloat32(gemesseneGeschwindigkeit); // m/s
decodedData.deltaT = decodedData.flowTemperature - decodedData.returnFlowTemperature;
decodedData.data = msg.data;
return decodedData;
}
function HexToFloat32(str) {
var int = parseInt(str, 16);
if (int > 0 || int < 0) {
var sign = (int >>> 31) ? -1 : 1;
var exp = (int >>> 23 & 0xff) - 127;
var mantissa = ((int & 0x7fffff) + 0x800000).toString(2);
var float32 = 0;
for (var i = 0; i < mantissa.length; i += 1) {
float32 += parseInt(mantissa[i]) ? Math.pow(2, exp) : 0;
exp--;
}
return float32 * sign;
} else return 0;
}
Device Labels
in manual
dataKey
dataType
dataFormat
Gemessene Geschwindigkeit
flowSpeed
float
m/s
Gemessener Durchfluss
flowRate
float
m^3/h
Berechnete Leistung
power
float
kW
Berechnete Energie
heatMeterEnergy
float
kWh
Gemessene Temperatur (heiss)
flowTemperature
float
°C
Gemessene Temperatur (kalt)
returnFlowTemperature
float
°C
Gemessene Temperatur (Diff.)
deltaT
float
°C
Gemessenes Gesamtvolumen
waterMeter
float
m^3
Validate Data
Last updated