sending temperature via LoRaWAN
This commit is contained in:
@ -60,18 +60,19 @@ static void prepareTxFrame( uint8_t port )
|
|||||||
DS18B20.begin();
|
DS18B20.begin();
|
||||||
uint8_t cnt = DS18B20.getDS18Count();
|
uint8_t cnt = DS18B20.getDS18Count();
|
||||||
Serial.printf("cnt: %d\n\r", cnt);
|
Serial.printf("cnt: %d\n\r", cnt);
|
||||||
uint8_t addr[8];
|
const uint8_t SLOT_WIDTH = 8 + 4; // 8 bytes address, 4 bytes value
|
||||||
DS18B20.getAddress(addr, 0);
|
appDataSize = cnt * SLOT_WIDTH;
|
||||||
Serial.printf("%02x %02x %02x %02x %02x %02x %02x %02x\n\r", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7]);
|
uint8_t *buf = appData;
|
||||||
DS18B20.requestTemperatures(); // send the command to get temperatures
|
for (uint8_t i = 0; i < cnt; i++) {
|
||||||
uint32_t tempC = DS18B20.getTemp(addr);
|
uint8_t *addr = (buf + (i * SLOT_WIDTH));
|
||||||
Serial.printf("tempC: %08x\n\r", tempC);
|
uint32_t *value = (uint32_t*) (buf + (i * SLOT_WIDTH) + 8);
|
||||||
|
|
||||||
appDataSize = 4;
|
DS18B20.getAddress(addr, 0);
|
||||||
appData[0] = 0x01;
|
Serial.printf("%02x %02x %02x %02x %02x %02x %02x %02x\n\r", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7]);
|
||||||
appData[1] = 0x02;
|
DS18B20.requestTemperatures(); // send the command to get temperatures
|
||||||
appData[2] = 0x03;
|
*value = DS18B20.getTemp(addr);
|
||||||
appData[3] = 0x04;
|
Serial.printf("tempC: %08x\n\r", *value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RTC_DATA_ATTR bool firstrun = true;
|
RTC_DATA_ATTR bool firstrun = true;
|
||||||
|
31
snippets/decoding.txt
Normal file
31
snippets/decoding.txt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
28EE74AD2E1602F8180A0000
|
||||||
|
|
||||||
|
|
||||||
|
>>> from binascii import unhexlify
|
||||||
|
>>> unhexlify('0001')
|
||||||
|
b'\x00\x01'
|
||||||
|
>>> from struct import unpack
|
||||||
|
>>> unpack('<I', unhexlify('0001'))
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
struct.error: unpack requires a buffer of 4 bytes
|
||||||
|
>>> unpack('<I', unhexlify('00000001'))
|
||||||
|
(16777216,)
|
||||||
|
>>> unpack('<I', unhexlify('180A0000'))
|
||||||
|
(2584,)
|
||||||
|
>>> unpack('I', unhexlify('180A0000'))
|
||||||
|
(2584,)
|
||||||
|
>>> unpack('>I', unhexlify('180A0000'))
|
||||||
|
(403308544,)
|
||||||
|
>>> 0xa28
|
||||||
|
2600
|
||||||
|
>>> 0xa18
|
||||||
|
2584
|
||||||
|
>>> unpack('<I', unhexlify('180A0000'))
|
||||||
|
(2584,)
|
||||||
|
>>> a='28EE74AD2E1602F8180A0000'
|
||||||
|
>>> a[0:15]
|
||||||
|
'28EE74AD2E1602F'
|
||||||
|
>>> a[16:]
|
||||||
|
'180A0000'
|
||||||
|
>>>
|
Reference in New Issue
Block a user