Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

transmit humidity data #24

Open
cyrax72 opened this issue Apr 15, 2021 · 7 comments
Open

transmit humidity data #24

cyrax72 opened this issue Apr 15, 2021 · 7 comments

Comments

@cyrax72
Copy link

cyrax72 commented Apr 15, 2021

Please tell me how to use this library to transmit humidity data?

@floe
Copy link
Owner

floe commented Apr 15, 2021

I would suggest you start with the temperature example (https://github.com/floe/BTLE/blob/master/examples/temperature/temperature.ino) and change the UUID to the one for humidity (should be in the BTLE specification UUID list).

@cyrax72
Copy link
Author

cyrax72 commented Apr 16, 2021

Thank you for your answer. I tried, I succeeded. However, I need battery power, temperature and humidity. I tried to use NRF_DEVICE_INFORMATION_SERVICE_UUID, but nothing works. Please tell me what I'm doing wrong?

`#include <BTLE.h>
#include <RF24.h>

RF24 radio(9, 10);
BTLE btle(&radio);

struct battery_level_data {
uint16_t service_uuid;
uint8_t battery_percentage;
};

void setup() {
Serial.begin(9600);
Serial.println("BTLE multichunk sender");
btle.begin("RD"); //can be emptystring
}

void loop() {

battery_level_data battery_data;
battery_data.service_uuid = NRF_BATTERY_SERVICE_UUID;
battery_data.battery_percentage = 80;

nrf_service_data temp_data;
temp_data.service_uuid = NRF_TEMPERATURE_SERVICE_UUID;
//temp_data.value = BTLE::to_nRF_Float(36);
temp_data.value = 36;

nrf_service_data hum;
hum.service_uuid = NRF_DEVICE_INFORMATION_SERVICE_UUID;
//hum.value = BTLE::to_nRF_Float(77);
hum.value = 77;

btle.preparePacket();

if (!btle.addChunk(0x16, sizeof(battery_data), &battery_data)) {
Serial.println("Battery level does not fit");
}

if (!btle.addChunk(0x16, sizeof(temp_data), &temp_data)) {
Serial.println("Temperature does not fit");
}

if (!btle.addChunk(0x16, sizeof(hum), &hum)) {
Serial.println("hum does not fit");
}

btle.transmitPacket();
btle.hopChannel();

delay(500);
}`

@floe
Copy link
Owner

floe commented Apr 17, 2021

INFORMATION_SERVICE won't work for humidity, that's something entirely different. 0x2A6F seems to be correct, see also here: NordicSemiconductor/Android-nRF-Connect#52

@cyrax72
Copy link
Author

cyrax72 commented Apr 21, 2021

I probably asked the question not quite correctly .. I managed to send the humidity, as you advised, replacing 0x1809 with 0x2A6F. But I do not understand how to transfer 3 parameters at once in one package - tempurature, humidity, and battery charge. My sensor needs all of them.

@floe
Copy link
Owner

floe commented Apr 21, 2021

I think the code you posted actually looks pretty correct (apart from the humidity UUID). What does e.g. the nRF Connect app show for your device when all 3 parameters are present?

@cyrax72
Copy link
Author

cyrax72 commented Apr 21, 2021

Only 2 parameters will arrive in NRF connect. There is no third at all (humidity). The message "hum does not fit" arrives in the serial port. It feels like btle.addChunk doesn't add a third parameter. If we swap the blocks
if (! btle.addChunk (0x16, sizeof (temp_data), & temp_data)) {
Serial.println ("Temperature does not fit");
}
and
if (! btle.addChunk (0x16, sizeof (hum), & hum)) {
Serial.println ("hum does not fit");
}
in some places, then in the series the message "Temperature does not fit" and in the NRF connect there is no temperature ...

@floe
Copy link
Owner

floe commented Apr 21, 2021

OK, then you're running out of space in the advertisement, for the nRF24, you can only have at most 21 bytes of payload. Try setting the name to "" (empty string).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants