Where can I find the S8 documentation?

Looking at the Senseair page here: S8 LP | Senseair
On the variations tab, the model Senseair S8 LP matches the number on the sensor.
However when I look at the modbus documentation, it states the function code 0x04 for reading CO2 level.

When I look the AirGradient code, I see that function code 0x44 is being used.

I found that SenseAir LP 8 seems to have this 0x44 function code. (see modbus modbus documentation on the documents tab here: LP8 pin headers | Senseair)

But LP 8 model number does not match 004-0-0053

I am confused. What is the model of the AirGradient Kit SenseAir and what is the right modbus documentation?

Thanks.
DD

2 Likes

I think the right version is this one:

This also fits from point of pin header layout. The other one you sent has totally different pin header layout, so its most likely a different version.

Why modbus described in the S8-LP pdf is different from the function code info, I cannot really tell you at the moment. It doesn’t make much sense to me as well.
Probably these days they come with interchangeable function code 04 and 44, or airgradient team has been looking at the wrong datasheet and its still working because of luck? :grinning_face_with_smiling_eyes:

Hi, I feel the same and the number on the sensor matches. It’s not just luck for function 0x44, I tried function code 0x04 and it did not work (unless I did something wrong). I guess it’s a documentation problem on SenseAir website. i’ll try to write to them.

DD

I have started using the 0x04 function code and it works for me.

I tried using the example for a C02 read sequence found in page 14 of the Senseair S8 LP Modbus documentation (for the product with number 004-0-0053).

It shows a master transmit of 8 bytes and a slave response of 7 bytes.

Master transmit sequence:
0XFE, 0X04, 0X00, 0X03, 0X00, 0X01, 0XD5, 0XC5

After modifying the Airgradient library code to match those bytes, specifying to write 8 bytes and read only 7, I got some fine C02 numbers above 400.

Why does it work with the function code 0x44 is something I would like to know.

I had the response from Sensair that we should not use 0x44 because it is an internal address. We should read from the register at 0x04. 0x04 finally worked for me as well.

My guess is the sensor maintains a value in internal memory 0x44, and it is copied to 0x04 for communication purpose. Read from 0x44 at our own risk.

Personally, after some time (some days continuous up time) I had some weird value reading from 0x44. Using another library that reads from 0x04, I never had an issue. Was it the library or the address… I don’t know.