Has anyone experience with Sensing Labs devices?

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:


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?


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.


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;-)

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?

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,

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.

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?

Do you still need assistance with the Sensing Labs devices? I am now using these and have them set up, payload decoded etc and can help if needed


I’m struggling to get a SenlabH to work in TTNver3.
Anyone have a payload decoder for that one?

Using_Node -Red I could really do with a flow that works for getting data from my Senlab sensor.

Hi Hakangus,

There is an online tool to easily encode/decode all “Sensing-Labs” payloads:
It could be useful for TEST and quick check of some payloads.

All Sensing-Labs documentation (including “how to encode/decode”) is available on https://support.sensing-labs.com
Only Sensing-Labs customers are allowed to access to this support website, so you can ask for a registration here.

To be short:

  • if your Senlab is in BASIC mode (one measure per TX), HEX decode is possible (see official documentation)
  • if your Senlab is in DATALOG mode (up to 24 measures per TX), you need to use “SLcodec” to encode/decode your payloads.
    SLCodec can be implemented as a REST API on your server, so you can send REST request from node-red (for example) to decode using SLCodec…

Thanks for your reply.
I´m not that skilled in programming so I hoped for a copy/paste decoder script for TTNver3 for my SenlabH. :wink: For all our Elsys sensors the manufactorer have the script on their website. I can´t see why Sensing Labs doeasn´t have that.

We are working on that solution :wink:!

:thinking: Shouldn’t take long to post a script to a website…?

Do you have a timeline?

Can you return and update the Forum when done/available (and please - open access not behind some registartion/licence/paywall implementation (we are all building off open source and standing on the shoulders of giants in this sector and with LoRaWAN & TTN ;-), and many of us get asked to step in and help assist struggling users with devices we would not normally use or access so having the right tools available for that process is key to improving your users experience :slight_smile: )

We are working on it … (to write and test the script in this format)

No, sorry.

I understand this and I will inform by a topic on TTN community and on this topic too, with sources and a kind of README, to make it easy for Sensing-Labs products users.

That sounds good. My Node-Red flow don´t look specially nice right now with a lot of nodes. An ordinary Javascript as a decoder on TTN would be nice. Please post here as well when done. Then it would be a easy as some of your collegues in the business!

Any news on this?

We are working on the javascript version…
We will keep you informed in this topic.

1 Like

If you don´t intend to publish any script, please be honest and say so.

We are still working on it (“JavaScript library” to decode sensing-labs payload (all modes).
It will be available within end of November 2021.
Thank you for your patience.