Bugs on device connector

Hi all, there is a problem on parser of negative temperature for MCF88 devices, I think is a sign issue on parser for MCF-LW12TERWP on negative temperature (and I suppose the same for MCF-LW12TER, MCF-LW12CO2, MCF-LW12VOC).

Instead to have negative temperature, the parsed temperature has high values (over 600°C).

This is an example:
044A716B2769FF89AE88018D726B277BFF85A58801CF736B2781FF85A3880164
04 -> type Temperature/Pressure/Humidity
First measure
4A716B27 -> date/time
69FF - > temperature -> LSB became FF69 -> SIGNED INTEGER if 32 bit is FFFFFF69 -> -151 hundreds of degrees -> -1,51°C
89 -> humidity
AE8801 -> pressure
Second measure
8D726B27 -> date/time
7BFF - > temperature -> LSB became FF7B -> SIGNED INTEGER if 32 bit is FFFFFF7B -> -133 hundreds of degrees -> -1,33°C
85 -> humidity
A58801 -> pressure
Third measure
CF736B27 -> date/time
81FF - > temperature -> LSB became FF81 -> SIGNED INTEGER if 32 bit is FFFFFF81 -> -127 hundreds of degrees -> -1,27°C
85 -> humidity
A38801 -> pressure
64 -> battery

I think there is a wrong handling of 2 bytes signed integer value.

Thanks in advance.

Hi @franco.zampicinini,

This is about a bug, so I’m going to open support for you.
I’ll be in touch soon.

See you! :v:t3:

Solved, many thanks!

1 Like

Hello,

I don’t know if it’s piece of code could help you a bit but here this an example of how convert hex values to decimal and manage also negative number.

  const hexAccX = `0x${payload.substring(48,52)}`;
  const hexAccY = `0x${payload.substring(52,56)}`;
  const hexAccZ = `0x${payload.substring(56,60)}`;



  // Convert the hex values into decimal and apply the calculations

  const altitude = Number(hexAlt) / 100;

  x = parseInt( hexAccX, 16);
  if (( x & 0x8000) > 0) {
      x =  x - 0x10000;
  }
  const accelerometerX = Number(x) / 1;

  y = parseInt( hexAccY, 16);
  if (( y & 0x8000) > 0) {
      y =  y - 0x10000;
  }
  const accelerometerY = Number(y) / 1;

  z = parseInt( hexAccZ, 16);
  if (( z & 0x8000) > 0) {
      z =  z - 0x10000;
  }
  const accelerometerZ = Number(z) / 100;
1 Like

Hi, sorry if I bother you, I noted that on MCF-LW12VOC dashboard there are no data available as variable, I think there are some problem with the parser (that is very close to the MCF-LW12TERWP).
Also Images on “about” tabs of MCF-LW12TER and MCF-LW12VOC are wrong (please use this for both: https://www.mcf88.it/wp-content/uploads/2017/12/mcf88-MCF-LW12TER-LoRaWan-indoor-environmental-sensor.png)

We have to attent to an important event in few weeks (The Things Conference) and we want to show our sensors with Tago. Thanks in advance.

Hi Franco,
We fixed the issue with the MCF-LW12VOC, you should be able to receive data on your dashboard from now on.
About the Image update, are you referring to the dashboard generated after you create the device?

Yes, the image on the dashboard.

Thanks in advance.