Has anyone experience with Sensing Labs devices?

(Mattkrebs) #1

Hello everyone,

I have bought a bunch of Sensing Labs temperature/humidity sensors for research purposes.
According to the data sheet the devices should work with any public network, but there is no documentation of the required AppKey.
I have only found the DevEUI, which is printed on the device. The preconfigured AppEUI seems to be 70B3D580A0000000 for all devices, that is what I got from the OTAA join request on my gateway. Of course I cannot register the devices without knowing the secret AppKey.
I bought the devices from the ThingPark market, so they might be preconfigured for the Actility network.

Does anyone have an idea how to program new keys into the device or to read out the AppKey?
There is at least an I2C header on the PCB so there might be an EEPROM or MCU that can be accessed.

I already tried to contact Sensing Labs, but their contact form does not seem to work either :frowning:


(Verfacil) #2

Hi Matt.
It is almost a year since you posted this on the Forum. How did you get on?

I have just received a Sensing-Labs SL-Gateway (Pico) and a TEM-LAB-41NS temperature sensor but I cannot get them working!

I also have an IP68 temperature sensor device but how do you change the battery in that (or is it sealed forever!)

I have struggled with a TTN gateway (lack of support)

I have struggled with a Pi3 gateway

I have had some success with a Multitech Conduit AEP but still difficult and I bought this Sensing Labs one thinking it would be easier but no manuals, no guides, no idea how I configure things

Any help?


(Mattkrebs) #3

Hi Rob,

Sorry for the late answer.
I have not been active in LoRaWAN development for some time…

My issues with those Sensing Labs devices are also still unresolved. My biggest problem was that I could not even contact them via their website.

Perhaps you have been more lucky. If so, I would like to hear about that.

What problems do you have with the Multitech gateway?
I set up a few of them (but with mLinux instead of AEP), and they all worked fine with TTN.
So did my test nodes, provided that the keys were programmed correctly.


(Ennabih) #4

I have connected my LoRaWAN Radio transmitter Sensing Labs A (4-20ma Input) to one 4-20ma water pressure sensor (0…400bar). I saw the widget graph as current (unit mA), my aim is to show pressure values in widget in bar or hpa.

I need to decode last 2x bytes of the uplink payload (00 F9 8E 01 9C 10 05 D1) received from the Sensing Lab Tx to % value and convert to hPa or bar values and associate it to Cayenne widget graphs.

The Sensing Labs spec state that the last two bytes are Current = 05D1 = (suppressed in 1/200ma). To get pressure graphic, I need to make a scale factor:

  • 4mA (0%) = 0 bar (it depends of the pressure sensor)
  • 20mA (100%) = 400bar (it depends of the pressure.

But really I don´t know how to that;-)

(Arjan) #5

I see the 05D1 in the “UPLINK payload (00 F9 8E 01 9C 10 05 D1)” , but what is the exact value that this 05D1 should be converted into?

If it’s linear (is it?), then subtract 4 and multiply by 400 / (20 - 4), so: subtract 4 and multiply the result by 25?

However, I’ve not used Cayenne so no idea if one can use TTN Console payload functions to do any of that before passing it along to Cayenne. Or if one can do this in Cayenne directly.

Also, as I don’t know what the hexadecimal 0x05D1 should convert into, I cannot tell if it’s encoded LSB or MSB. (If it is sent as an integer, and is MSB, then 0x05D1 reads 1489 decimal, so maybe you first need to divide by 100 to get the mA reading? But if it’s LSB then it reads 53509 decimal, and you might need to divide by 10000 to stay within 4 and 20 mA. And all that even assumes it’s an integer to start with.)

…and maybe “suppressed” should read “represented” or something, so this may imply you need to multiply by 1/200, so: divide by 200? (1489 decimal might be 7.4 mA then?)

But as it seems you already see some data on Cayenne, I guess you already decoded that hexadecimal 0x05D1 into some mA reading between decimal 4 and 20 mA, so maybe you really only need to do the scaling for values between 4 and 20?

(Ennabih) #6

Thank you for the reply!

function Decoder (bytes, port) {

// In Our case 00 F9 8E 01 9C 10 05 D1
//decoding last 2x bytes "05 D1" 
// Unit miliamper, 2x bytes Value/200ma
// Decode whole 2xbytes to %, from % to bar
// Pressure sensor from 100...400bar (0% -> 100bat and 100% -> 400bar)

var pressure  = (((bytes[6] << 8) | bytes [7]));

return pressure/200;  // Division to 200 is required if the received value was really multiplied to 200ma

And converter should contains conversion calculations:

function Converter(decoded, port) {
  // Merge, split or otherwise
  // mutate decoded fields.
  var conv_procents = (decoded-4)*100/16;  //convert into procents (4ma-20ma)
  var conv_bar = conv_procents*3+100; //convert to bar (100bar-400bar)

  return conv_bar;

Attached us the user guide.

The last two bytes are input current expressed in 1/200ma as 2 bytes unsigned MSB int.

I woukd like to use the TTN Payload formats to decode and convert the current values to bar:
Can I use this code.

Shouldn’t the cayenne widget appears with pressure values instead of current?


Attached is the User guide of sensing Labs, concerned chapter is Uplink DATALOG FPort3.

SL_UserGuide_SenlabA-4MA-LAB-xxNS_E02-2.pdf (676.3 KB)

Thank you and
Best Regards,

(Ennabih) #9

I have used the TTN PAYLOAD FORMATS Decoder function to decode the last 2x bytes of Sensing Labs Uplink Data: 00 F9 8E 01 9C 10 05 D1

function Decoder (bytes, port) {
//decoding last 2x bytes “05 D1”
// Unit miliamper, 2x bytes Value/200ma
// Decode whole 2xbytes to %, from % to bar
// Pressure sensor from 100…400bar (0% -> 100bat and 100% -> 400bar)

var decoded = (((bytes[6] << 8) | bytes [7]));
var procent = ((decoded/200)-4)*100/16; //convert into procents (4ma-20ma)
var pressure = procent *3+1; //convert to bar (1bar-400bar)

return {

Barometer: pressure + ‘bar’,

Please correct me if I am wrong, should I now replace the last 4x bytes with Cayenne LPP payload format to have like: 05 73 05 D1 in order to get correct widget pressure in Cayenne Tool?

Data1 Ch (1x byte), Data1 Type (1x byte), Data1 (2x bytes)


05 = Channel ID
73 = Barometer
05 D1= current value in ma which will be decoded to pressure value as per Decoder function mentioned above.

(Markotanninen) #11

Noob question. How did you get your SenLab sensors activated? I got mine registered, but it says in the instructions that after registration you are redirected to the new device where you can get your app key to activate the device. How do I go about doing that?