|
|
Datenformate für IoT
JSON
CBOR
Die Concise Binary Object Representation (CBOR) ist ein binäres kompaktes Datenformat zur Serialisierung. Es orientiert sich an JSON und dient wie dieses dem Datenaustausch zwischen Anwendungen. Es soll höhere Prozessierungs- und Übertragungsgeschwindigkeit ermöglichen, opfert dafür jedoch die Klartextlesbarkeit. CBOR ist durch die IETF als Internetstandard in RFC 8949 spezifiziert. Quelle
RFC für CBOR https://www.rfc-editor.org/rfc/rfc8949.html#name-specific-data-models
Datagram Format (ähnlich TLV Type-Length-Value)
A data packet build of one byte as packet header information and up to 64 bytes of packet data. The packet data itself is a number of multiple fields.
This is based on http://things4u.github.io/DeveloperGuide/Message%20Format/message_format.html
Packet Header
Packet Size is the number of all bytes including the header.
Field
| Field Header | n bytes of field data |
| Temperature -100 - 150 | 0x01 | 2 | (BYTE[0]-100)+BYTE[1])/100 | -100,00 | 150,99 |
| Humidity | 0x02 | 1 | BYTE[0] | 0 | 100% |
| Airpressure | 0x03 | 2 | BYTE[0]*256 + BYTE[1] | | |
| Moisture 1 | 0x04 | 1 | BYTE[0] | | |
| Moisture 2 | 0x05 | 2 | BYTE[0]*256 + BYTE[1]/10 | | |
| Luminescense | 0x06 | | | | |
| Airquality | 0x07 | | | | |
| PIR | 0x08 | | | | |
| | | | | | |
| Distance mm | 0x20 | | BYTE[0]*256 + BYTE[1] | | | |
| Distance cm | 0x21 | | BYTE[0]*256 + BYTE[1] | | | |
| Distance m | 0x22 | | BYTE[0]*256 + BYTE[1] | | | |
| Distance km (1/10) | 0x23 | 2 | BYTE[0]*256 + BYTE[1]/10 | | | |
| big Distance mm | 0x24 | 4 | BYTE[0]*224 + BYTE[1]*216 + BYTE[2]*28 + BYTE[3] | | | |
| Date | 0x25 | 3 | day=BYTE[0] month=BYTE[1] year=BYTE[2] | | |
| Time | 0x26 | 3 | hour=BYTE[0] minute=BYTE[1] second=BYTE[2] | | |
| Date+Time | 0x27 | 6 | day=BYTE[0] month=BYTE[1] year=BYTE[2] hour=BYTE[3] minute=BYTE[4] second=BYTE[5] | | |
| | 0x28 | | | | |
| GPS-Short | 0x2A | 9 | lat=(BYTE[0]*224 + BYTE[1]*216 + BYTE[2]*28 + BYTE[3]) / 105 lon=(BYTE[4]*224 + BYTE[5]*216 + BYTE[6]*28 + BYTE[7]) / 105 sat=BYTE[8] | | |
| GPS-Long | 0x2B | | | | |
| Heading | 0x2C | | | | |
| Compass | 0x2D | | | | |
| RTC | 0x2E | | | | |
| | 0x2F | | | | |
| | | | | | |
| Battery voltage (0..30V) | 0x40 | 2 | (BYTE[0]*28 + BYTE[1]) / 10 | | |
| R (Ohm) | 0x41 | 2 | (BYTE[0]*28 + BYTE[1]) / 10 | | |
| R (kOhm) | 0x42 | 2 | (BYTE[0]*28 + BYTE[1]) / 10 | | |
| R (MOhm) | 0x43 | 2 | (BYTE[0]*28 + BYTE[1]) / 10 | | |
| | | | | | |
| Boolean FALSE | 0x80 | 0 | - | FALSE |
| Boolean TRUE | 0x81 | 0 | - | TRUE |
| String | 0x82 | 2+byte[0] | size=BYTE[0] content=BYTE[1]...BYTE[size] | |
| Int8 | 0x83 | 1 | BYTE[0] | -128 | 127 |
| Int16 | 0x84 | 2 | BYTE[0]*28 + BYTE[1] | -32.768 | 32.767 |
| Int32 | 0x85 | 4 | BYTE[0]*224 + BYTE[1]*216 + BYTE[2]*28 + BYTE[3] | -2.147.483.648 | -2.147.483.647 |
| small Decimal /10 | 0x86 | 1 | BYTE[0]/10 | -12,8 | 12,7 |
| midi Decimal /10 | 0x87 | 2 | (BYTE[0]*28 + BYTE[1]) / 10 | -3.276,8 | 3.276,7 |
| midi Decimal /100 | 0x88 | 2 | (BYTE[0]*28 + BYTE[1]) / 100 | -327,68 | 327,67 |
| midi Decimal /1000 | 0x89 | 2 | (BYTE[0]*28 + BYTE[1]) / 1000 | -32,768 | 32,767 |
| | | | | | |
| Decimal 1/10^n | 0x9n | 2 | (BYTE[0]*224 + BYTE[1]*216 + BYTE[2]*28 + BYTE[3]) / 10^n | | |
|