Wiki source code of DMT01

Version 80.6 by Mengting Qiu on 2025/08/07 17:06

Show last authors
1
2
3 [[image:1753592237986-145.png||height="354" width="118"]] [[image:1753592287802-550.png||height="237" width="341"]]
4
5
6 **Table of Contents:**
7
8 {{toc/}}
9
10 (% aria-label="macro:toc widget" contenteditable="false" role="region" tabindex="-1" %)
11 (((
12 (% style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||height="15" role="presentation" title="Click and drag to move" width="15"]]
13 )))
14
15
16
17 = 1.  Introduction =
18
19 == 1.1 ​ What is DMT01 Wireless Meat Thermometer ==
20
21
22 The DMT01 is a (% style="color:blue" %)professional-grade wireless meat thermometer(%%) engineered for accurate, real-time temperature monitoring in commercial cooking environments. Ideal for restaurants, central kitchens, catering services, and food processing facilities, the DMT01 ensures consistent results across various cooking methods—including grilling, smoking, roasting, deep-frying, sous vide, baking, and more. Its precise monitoring helps improve cooking efficiency, ensure food safety, and meet HACCP compliance standards.
23
24 The system consists of two components:
25 - (% style="color:blue" %)Food-grade BLE High-Temperature Probe(%%) – A durable, high-heat resistant probe that measures internal food temperature during cooking.
26 - (% style="color:blue" %)Charging Base with BLE & LoRaWAN Forwarder(%%) – This base not only charges the probe but also acts as a communication bridge. It receives temperature data from the BLE probe and transmits it via the LoRaWAN long-range wireless protocol to your IoT platform or monitoring system.
27
28 With its dual wireless support ((% style="color:blue" %)BLE for close-range/small design(%%) and (% style="color:blue" %)LoRaWAN for long-range data transmission(%%)), the DMT01 is ideal for both home cooking enthusiasts and commercial kitchen environments seeking smart, connected temperature monitoring.
29
30 == ​1.2  Features ==
31
32 * Wireless Meat Thermometer – Designed for accurate and reliable cooking temperature monitoring
33 * Food-Grade Probe – Safe for food contact and dishwasher-compatible for easy cleaning
34 * BLE 5.1 Broadcasting – Supports real-time local data transmission via Bluetooth Low Energy
35 * LoRaWAN Connectivity – Enables long-range, low-power data transmission to IoT platforms
36 * Smart Uplink Triggering – Supports periodic data reporting and real-time alerts on temperature thresholds
37
38 (% style="display:none" %)
39
40 == 1.3 Specification ==
41
42
43 (% style="color:blue" %)**Common DC Characteristics:**
44
45 * Supply Voltage: +5v via USB Type-C
46 * Operating Temperature:
47
48 (% style="color:blue" %)**Food Probe Spec:**
49
50 * Length: 126mm
51 * Diameter: 6mm
52 * Food temperature: -30 ~~110 °C, Accuracy: ±0.5°C
53 * Ambient temperature: 0 ~~380°C, Accuracy: ±5°C
54 * Wireless: BLE 5.1
55 * Distance: ≥ 30m
56 * Battery: 4mAh
57 * Recharge time: < 2 hours
58 * Battery Duration: >30 hours
59 * IP Rate: IP67, Dish Washer proof
60
61
62
63 (% style="color:blue" %)**Charger Spec:**
64
65 * BLE v5.1 + LoRaWAN
66 * Power Input: USB Type-C, +5v
67 * Battery: Li-ion , 3000mAh
68 * Recharge time: < 2 hours
69
70
71
72
73 == 1.4 ​ Applications ==
74
75 * Commercial Kitchen
76 * Restaurant
77 * Catering
78 * Food Processing
79 * Central Kitchen
80 * Cloud Kitchen
81 * HACCP Monitoring
82 * Food Safety
83 * Meat Factory
84 * Industrial Cooking
85
86 == 1.5 Product Apperance ==
87
88 (% class="wikigeneratedid" %)
89 [[image:1753594523550-152.png||height="462" width="416"]]
90
91
92 == 1.6  Working mode ==
93
94
95 (% style="color:blue" %)**Deep Sleep Mode:**(%%)** **Sensor doesn't have any LoRaWAN activate. This mode is used for storage and shipping to save battery life.
96
97 (% style="color:blue" %)**Working Mode:**(%%) In this mode, Sensor will work as LoRaWAN Sensor to Join LoRaWAN network and send out sensor data to server. Between each sampling/tx/rx periodically, sensor will be in IDLE mode), in IDLE mode, sensor has the same power consumption as Deep Sleep mode.
98
99
100 == 1.7 LED Status ==
101
102
103 The DMT01 uses a dual-color LED to indicate system status:
104
105 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:503px" %)
106 |(% style="background-color:#4f81bd; color:white; width:196px" %)**LED Behavior**|(% style="background-color:#4f81bd; color:white; width:305px" %)**Description**
107 |(% style="width:196px" %)Green breathing effect|(% style="width:305px" %)Probe is inserted and charging
108 (LED turns off immediately when probe is removed)
109 |(% style="width:196px" %)Red solid (5 seconds)|(% style="width:305px" %)Mode switched successfully (after 1-3s button press)
110 |(% style="width:196px" %)Red blinking (15 seconds)|(% style="width:305px" %)Charging base low battery (<15% capacity)
111 |(% style="width:196px" %)Red/Green alternating blink (3 seconds)|(% style="width:305px" %)Device reset in progress (after 3s long press)   
112 |(% style="width:196px" %)Single green blink|(% style="width:305px" %)BLE connection established between probe and base
113
114
115
116 == 1.8 Button Function ==
117
118 [[image:1754120439617-600.jpg||height="404" width="404"]]
119
120 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:536.222px" %)
121 |=(% style="width: 147px; background-color: rgb(79, 129, 189); color: white;" %)**Behavior on ACT**|=(% style="width: 130px; background-color: rgb(79, 129, 189); color: white;" %)**Function**|=(% style="width: 254px; background-color: rgb(79, 129, 189); color: white;" %)**Action**
122 |(% style="background-color:#f2f2f2; width:147px" %) [[image:1754045287749-587.png]]>3s|(% style="background-color:#f2f2f2; width:130px" %)Active Device|(% style="background-color:#f2f2f2; width:254px" %)(((
123 Red/Green alternating blink (3 seconds), DMT01 will enter working mode and start to JOIN LoRaWAN network.
124 When the probe is placed in the repeater to charge, the green LED above the relay box will have a breathing effect. When the probe is taken out, the LED light will go out.
125 )))
126 |(% style="background-color:#f2f2f2; width:147px" %)[[image:1754045287749-587.png]] 1~~3s|(% style="background-color:#f2f2f2; width:130px" %)Switch working mode|(% style="background-color:#f2f2f2; width:254px" %)(((
127 There are three operating modes:
128 Default LoRaWAN and Bluetooth broadcast mode,
129 Separate LoRaWAN mode
130
131 Separate Bluetooth broadcast mode.
132 (% style="color:red" %)**Note:**(%%) To switch modes, remove the probe and press the button; otherwise, the mode will not switch.
133 )))
134
135
136
137 == 1.9 Power on device and Recharge Probe ==
138
139
140
141
142 = 2.  Use DMT01 =
143
144 == 2.1  How it works ==
145
146 (((
147 (((
148
149
150 DMT01 Include two parts,
151
152 1. The food grade probe : used to measure the meat temperature
153 1. The Charger which is also a LoRaWAN End node: used to connect the probe via BLE and get the temperature and send via LoRaWAN to IoT server.
154
155
156
157 Consider the BLE coverage , there is two cases:
158
159 === **Connection Mode: Probe is near by the Charge, within BLE range** ===
160
161 Probe will establish connection to the charge via BLE.  and the data flow is as below.
162 )))
163
164 [[image:1753622303925-386.png]]
165
166
167 === **Broadcast Mode: Probe is far away from the Charge, out of BLE range** ===
168
169 Probe will auto swtich to BLE broadcast mode and broadcast the data via BLE. Any BLE Scaner can pick up the signal and send to IoT server.
170
171 For example:
172
173 1) User can use BH01 BLE to LoRaWAN converter to pick up the BLE signal to IoT Server
174
175 2) User can use Mobile phone to get the broadcast signal and further process.
176
177
178 == 2.2 Activate Device ==
179
180 To use DMT01 send data to LoRaWAN network, user need to:
181
182 1. Input the OTAA Keys in LoRaWAN Network Server
183 1. Make sure there is LoraWAN network
184 1. Press the button on the DMT01 for more than 3 seconds, DMT01 will start to connect to LoRaWAN network
185
186
187
188 After the DMT01 Join LoRaWAN network, once user take out the probe, the probe will start to measure temperature and user will be to see the data on the server.
189 )))
190
191
192 == 2.3 ​Quick guide to connect to LoRaWAN server (OTAA) ==
193
194
195 Following is an example for how to join the [[TTN v3 LoRaWAN Network>>url:https://console.cloud.thethings.network/]]. Below is the network structure; we use the [[LPS8v2>>url:https://www.dragino.com/products/lora-lorawan-gateway/item/228-lps8v2.html]] as a LoRaWAN gateway in this example.
196
197 The LPS8V2 is already set to connected to [[TTN network >>url:https://console.cloud.thethings.network/]], so what we need to now is configure the TTN server.
198
199 [[image:1754298519453-808.jpg||height="211" width="951"]]
200
201
202 (% style="color:blue" %)**Step 1:**(%%) Create a device in TTN with the OTAA keys from DMT01.
203
204 Each DMT01 is shipped with a sticker with the default device EUI as below:
205
206 [[image:1754298588891-599.jpeg]](% style="display:none" %)
207
208 You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:(% style="display:none" %)
209
210 (% style="color:blue" %)**Create the application.**
211
212 [[image:1754298671647-982.png]]
213
214 [[image:1754298685721-106.png]]
215
216 (% style="color:blue" %)**Add devices to the created Application.**
217
218 [[image:1754298708270-733.png]]
219
220 [[image:1754298719336-394.png]]
221
222 (% style="color:blue" %)**Enter end device specifics manually.**
223
224 [[image:1754298737089-161.png]]
225
226 (% style="color:blue" %)**Add DevEUI and AppKey.**
227
228 (% style="color:blue" %)**Customize a platform ID for the device.**
229
230 [[image:1754298751553-229.png]]
231
232
233 (% style="color:blue" %)**Step 2: **(%%)Add decoder
234
235 In TTN, user can add a custom payload so it shows friendly reading.
236
237 Click this link to get the decoder: [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main/>>url:https://github.com/dragino/dragino-end-node-decoder/tree/main/]]
238
239 Below is TTN screen shot:
240
241 [[image:1754298862776-783.png||height="609" width="1426"]]
242
243 [[image:1754299076396-787.png]]
244
245 (% style="color:blue" %)**Step 3:**(%%) Activate on DMT01
246
247 Press the button for 3 seconds to activate the DMT01.
248
249 After join success, it will start to upload messages to TTN and you can see the messages in the panel.
250
251 [[image:1754298481895-828.png||height="441" width="1387"]]
252
253
254
255 == 2.3 LoRaWAN Payload ==
256
257
258 === 2.3.1 Probe in-place detection, FPORT~=6 ===
259
260 There are three types of detection:
261
262 * When the probe is placed in or removed from the relay box, or when Bluetooth charging is complete, an event packet is sent uplink to the LoRaWan server.
263 * The payload includes the** Timestamp, ProbeEvent and relay box battery level**.
264
265 The Payload format is as below:
266
267 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
268 |(% colspan="5" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=6)**
269 |(% style="width:103px" %)**Size (bytes)**|(% style="width:91px" %)**4**|(% style="width:98px" %)**1**|(% style="width:103px" %)**1**
270 |(% style="width:103px" %)Value|(% style="width:91px" %)Timestamp|(% style="width:98px" %)ProbeEvent|(% style="width:103px" %)relay box battery level
271
272 Example in TTN:
273
274 [[image:1754557417277-862.png||height="322" width="1388"]]
275
276 0332
277
278 (% style="color:#037691" %)**Timestamp**(%%): 0x68946BB4
279
280 (% style="color:#037691" %)**ProbeEvent**(%%):
281
282 0x03 =
283
284 (% style="color:#037691" %)**Frequency Band**(%%):
285
286
287 === 2.3.1 Device Status, FPORT~=5 ===
288
289
290 Users can use the downlink command(**0x26 01**) to ask DMT01 to send device configure detail, include device configure status. DMT01 will uplink a payload via FPort=5 to server.
291
292 The Payload format is as below.
293
294 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
295 |(% colspan="6" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=5)**
296 |(% style="width:103px" %)**Size (bytes)**|(% style="width:91px" %)**1**|(% style="width:98px" %)**2**|(% style="width:103px" %)**1**|(% style="width:112px" %)**1**
297 |(% style="width:103px" %)Value|(% style="width:91px" %)Sensor Model|(% style="width:98px" %)Firmware Version|(% style="width:103px" %)Frequency Band|(% style="width:112px" %)Sub-band
298
299 Example in TTN:
300
301 [[image:1754299464263-797.png||height="274" width="1384"]]
302
303
304 (% style="color:#037691" %)**Sensor Model**(%%): For DMT01, this value is 0x4B
305
306 (% style="color:#037691" %)**Firmware Version**(%%): 0x0101, Means: v1.0.1 version
307
308 (% style="color:#037691" %)**Frequency Band**(%%):
309
310 0x01: EU868
311
312 0x02: US915
313
314 0x03: IN865
315
316 0x04: AU915
317
318 0x05: KZ865
319
320 0x06: RU864
321
322 0x07: AS923
323
324 0x08: AS923-1
325
326 0x09: AS923-2
327
328 0x0a: AS923-3
329
330 0x0b: CN470
331
332 0x0c: EU433
333
334 0x0d: KR920
335
336 0x0e: MA869
337
338 (% style="color:#037691" %)**Sub-Band**(%%):
339
340 AU915 and US915:value 0x00 ~~ 0x08
341
342 CN470: value 0x0B ~~ 0x0C
343
344 Other Bands: Always 0x00
345
346
347 === 2.3.2  Sensor Data. FPORT~=2 ===
348
349
350 Sensor Data is uplink via FPORT=2
351
352 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
353 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
354 **Size(bytes)**
355 )))|=(% style="width: 40px;background-color:#4F81BD;color:white" %)4|=(% style="width: 90px;background-color:#4F81BD;color:white" %)1|=(% style="width: 150px; background-color: #4F81BD;color:white" %)6|=(% style="width: 80px; background-color: #4F81BD;color:white" %)1|=(% style="width: 80px; background-color: #4F81BD;color:white" %)1|=(% style="width: 80px; background-color: #4F81BD;color:white" %)2|=(% style="width: 80px; background-color: #4F81BD;color:white" %)2
356 |(% style="width:99px" %)Value|(% style="width:69px" %)(((
357 Timestamp
358
359
360 )))|(% style="width:130px" %)DevMode|(% style="width:194px" %)MACaddr|(% style="width:106px" %)ProbeBat|(% style="width:97px" %)(((
361 BoxBat
362 )))|(% style="width:97px" %)Food temperature|(% style="width:97px" %)Ambient temperature
363
364 [[image:1754300947187-648.png||height="641" width="1351"]]
365
366
367
368 ==== (% style="color:#4472c4" %)**Unit timestamp**(%%) ====
369
370 Unit TimeStamp Example: 689085D7(H) = 1754301911(D)
371
372 Put the decimal value into this link([[https:~~/~~/www.epochconverter.com)>>https://www.epochconverter.com]])to get the time.
373
374
375 ==== (% style="color:#4472c4" %)**DevMode**(%%) ====
376
377 **Example**:
378
379 If payload is 0x01: BLE_LoRa
380
381 If payload is 0x02: LoRa
382
383 If payload is 0x03: BLE
384
385
386 ==== (% style="color:#4472c4" %)**MACaddr**(%%) ====
387
388 **Example**:
389
390 If the payload is C12309250F1A, the MACaddr is C12309250F1A
391
392
393 ==== (% style="color:#4472c4" %)**ProbeBat**(%%) ====
394
395 **Example:**
396
397 If payload is 0x64 = 100%
398
399
400 ==== (% style="color:#4472c4" %)**BoxBat**(%%) ====
401
402 **Example:**
403
404 If payload is 0x46 = 70%
405
406
407 ==== (% style="color:#4472c4" %)**Food temperature**(%%) ====
408
409 Because the food temperature data is a little-endian sequence, the order of the front and back bytes needs to be swapped during decoding.
410
411 **Example**:
412
413 If payload is: D300H = 00D3H, temp = 00D3H /10 = 21.1 degree
414
415 If payload is: 3FFFH  = FF3F , temp = (FF3FH - 65536)/10 = -19.3 degrees.
416
417
418 ==== (% style="color:#4472c4" %)**Ambient temperature**(%%) ====
419
420 Because the food temperature data is a little-endian sequence, the order of the front and back bytes needs to be swapped during decoding.
421
422 **Example**:
423
424 If payload is: D200H = 00D2H, temp = 00D2H /10 = 21.0 degree
425
426 If payload is: 3FFFH  = FF3F , temp = (FF3FH - 65536)/10 = -19.3 degrees.
427
428
429
430 == 2.4 Bluetoothe Broadcast Payload ==
431
432 Scan and obtain DMT01 device broadcast data through a third-party mobile phone app (such as nRF Connect)
433
434 Example:
435
436 Note: The following data is obtained through the **nRF Connect tool**.
437
438 [[image:1754305290140-806.jpg||height="680" width="432"]]
439
440
441 If the scanned payload is 0x0201060609444D5430310EFF  **01C12309250F1AD100CD006446   **0512E001E001
442
443 (% style="color:red" %)**Note: **
444
445 * The first 12 bytes in the payload are the Bluetooth packet header data and do not need to be decoded.
446 * The last 6 bytes in the payload are the Bluetooth packet trailer data and do not need to be decoded.
447
448 So the payload is:**01C12309250F1AD100CD006446**
449
450
451 ==== (% style="color:#4472c4" %)**Bluetooth data packet frame header**(%%) ====
452
453 Example: 0x0201060609444D5430310EFF
454
455
456 ==== (% style="color:#4472c4" %)**DevMode**(%%) ====
457
458 **Example**:
459
460 If payload is 0x01: BLE_LoRa
461
462 If payload is 0x02: LoRa
463
464 If payload is 0x03: BLE
465
466
467 ==== (% style="color:#4472c4" %)**MACaddr**(%%) ====
468
469 **Example**:
470
471 If the payload is C12309250F1A, the MACaddr is C12309250F1A
472
473
474 ==== (% style="color:#4472c4" %)**ProbeBat**(%%) ====
475
476 **Example:**
477
478 If payload is 0x64 = 100%
479
480
481 ==== (% style="color:#4472c4" %)**BoxBat**(%%) ====
482
483 **Example:**
484
485 If payload is 0x46 = 70%
486
487
488 ==== (% style="color:#4472c4" %)**Food temperature**(%%) ====
489
490 Because the food temperature data is a little-endian sequence, the order of the front and back bytes needs to be swapped during decoding.
491
492 **Example**:
493
494 If payload is: D300H = 00D3H, temp = 00D3H /10 = 21.1 degree
495
496 If payload is: 3FFFH  = FF3F , temp = (FF3FH - 65536)/10 = -19.3 degrees.
497
498
499 ==== (% style="color:#4472c4" %)**Ambient temperature**(%%) ====
500
501 Because the food temperature data is a little-endian sequence, the order of the front and back bytes needs to be swapped during decoding.
502
503 **Example**:
504
505 If payload is: D200H = 00D2H, temp = 00D2H /10 = 21.0 degree
506
507 If payload is: 3FFFH  = FF3F , temp = (FF3FH - 65536)/10 = -19.3 degrees.
508
509
510 ==== (% style="color:#4472c4" %)**Bluetooth data packet frame tail**(%%) ====
511
512 Example: 0x0512E001E001
513
514
515
516 == 2.5 Datalog Feature ==
517
518
519 Datalog Feature is to ensure IoT Server can get all sampling data from Sensor even if the LoRaWAN network is down. For each sampling, DMT01 will store the reading for future retrieving purposes.
520
521
522 === 2.5.1 How datalog works ===
523
524
525 DMT01 will wait for ACK for every uplink, when there is no LoRaWAN network,DMT01 will mark these records with non-ack messages and store the sensor data, and it will send all messages (10s interval) after the network recovery.
526
527 * (((
528 a) DMT01 will do an ACK check for data records sending to make sure every data arrive server.
529 )))
530 * (((
531 b) DMT01 will send data in **CONFIRMED Mode**, but DMT01 won't re-transmit the packet if it doesn't get ACK, it will just mark it as a NONE-ACK message. In a future uplink if DMT01 gets a ACK, DMT01 will consider there is a network connection and resend all NONE-ACK messages.
532
533
534 )))
535
536 === 2.5.2 Enable Datalog ===
537
538 Using the platform downlink** 07 01**, you can enable the device to automatically send **non-ACK** messages. Once enabled, the LC01 will wait for an acknowledgment (ACK) for every uplink. If there is no LoRaWAN network available, DMT01 will mark these records as non-ACK messages, store the sensor data, and continue checking for network availability (at 10-second intervals) to resend all stored messages once the network is restored.
539
540 * (((
541 a) DMT01 performs an ACK check for each data record to ensure it successfully reaches the server.
542 )))
543 * (((
544 b) When automatic sending of non-ACK messages is enabled, the DMT01 transmits data in **CONFIRMED** mode. If an ACK is not received, it does not resend the packet; instead, it marks it as a **non-ACK** message. During subsequent uplinks, if the DMT01 receives an ACK, it considers the network restored and will resend all stored non-ACK messages.
545 )))
546
547
548
549 === 2.5.3 Unix TimeStamp ===
550
551
552 DMT01 uses Unix TimeStamp format based on
553
554 [[image:1754354802681-163.jpeg]]
555
556 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
557
558 Below is the converter example
559
560 [[image:1754354818964-624.jpeg]]
561
562
563
564 === 2.5.4 Set Device Time ===
565
566
567 You need to run downlink command 28 01 to enable time synchronization.
568
569 Once the LC01 joins the LoRaWAN network, it will send the MAC command **DeviceTimeReq**, and the server will reply with **DeviceTimeAns** to provide the current time to the LC01. If the LC01 fails to receive the time from the server, it will use its internal time and wait for the next time request. //(By default, this occurs once every 10 days.)//
570
571 {{info}}
572 The LoRaWAN server must support LoRaWAN v1.0.3 (MAC v1.0.3) or higher to use this MAC command feature. ChirpStack, The Things Stack v3, and Loriot support it, but The Things Stack v2 does not. If the server does not support this command, it will discard the uplink packet containing it. As a result, the user will lose the time request packet when the automatic time synchronization function is enabled on TTN v2.
573 {{/info}}
574
575 (% style="color:#4f81bd" %)**Downlink Command: 0x28**
576
577 * Example: 0x28 01  ~/~/ Automatic time synchronization Enabled
578 * Example: 0x28 00  ~/~/  Automatic time synchronization Disable.
579
580
581
582 === 2.5.5 Datalog Uplink payload (FPORT~=3) ===
583
584
585 The Datalog uplinks will use below payload format.
586
587 **Retrieval data payload:**
588
589 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
590 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
591 **Size(bytes)**
592 )))|=(% style="width: 40px;background-color:#4F81BD;color:white" %)4|=(% style="width: 90px;background-color:#4F81BD;color:white" %)1|=(% style="width: 150px; background-color: #4F81BD;color:white" %)6|=(% style="width: 80px; background-color: #4F81BD;color:white" %)1|=(% style="width: 80px; background-color: #4F81BD;color:white" %)1|=(% style="width: 80px; background-color: #4F81BD;color:white" %)1|=(% style="width: 80px; background-color: #4F81BD;color:white" %)1|=(% style="width: 80px; background-color: #4F81BD;color:white" %)2|=(% style="width: 80px; background-color: #4F81BD;color:white" %)2
593 |(% style="width:99px" %)Value|(% style="width:69px" %)(((
594 Timestamp
595
596
597 )))|(% style="width:130px" %)DevMode|(% style="width:194px" %)MACaddr|(% style="width:106px" %)ProbeBat|(% style="width:97px" %)(((
598 BoxBat
599 )))|(% style="width:97px" %)Message Type|(% style="width:97px" %)(((
600 tempData
601
602 Length
603 )))|(% style="width:97px" %)Food temperature|(% style="width:97px" %)Ambient temperature
604
605 **No ACK Message**:  1: This message means this payload is fromn Uplink Message which doesn't get ACK from the server before ( for **PNACKMD=1** feature)
606
607 **Poll Message Flag**: 1: This message is a poll message reply.
608
609 * Poll Message Flag is set to 1.
610
611 * Each data entry is 11 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
612
613 For example, in US915 band, the max payload for different DR is:
614
615 **a) DR0:** max is 11 bytes so one entry of data
616
617 **b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
618
619 **c) DR2:** total payload includes 11 entries of data
620
621 **d) DR3: **total payload includes 22 entries of data.
622
623 If devise doesn't have any data in the polling time. Device will uplink 11 bytes of 0   
624
625
626 If user sends below downlink command: 316892FD706893103005
627
628 Where : Start time: 6892FD70 = time 25/8/6 07:00:00
629
630 Stop time: 68931030 = time 25/8/6 08:20:00
631
632
633 DMT01 **will uplink this payload.**
634
635 [[image:1754468836928-459.png]]
636
637 (((
638 68930FD201C12309250F1A643C4028E000EA00DF00EA00DF00EC00DF00EF00DF00F100DE00F400DC00F700DC00F800DB00F900DB00FD00
639
640 6893100E01C12309250F1A643C4028DE000401FF00090105010D0103011001030112011A011401150115010E0117010A01170104011801
641 )))
642
643 (((
644 Where the first 55 bytes is for the first entry:
645 )))
646
647 (((
648 **68930FD2 01 C12309250F1A 64 3C 40 28 E000 EA00 DF00 EA00 DF00 EC00 DF00 EF00 DF00 F100 DE00 F400 DC00 F700 DC00 F800 DB00 F900 DB00 FD00**
649 )))
650
651 (((
652 **Unix time** is 0x68930FD2=1754468306s=25/8/6 08:18:00
653
654 **DevMode** is 0x01 =  BLE_LoRa
655
656 **MACaddr **is 0xC12309250F1A = C12309250F1A
657
658 **ProbeBat **is 0x64 = 100%
659
660 **BoxBat **is 0x3c = 60%
661
662 **Message Type** is 0x40 = POLL_REPLY
663
664 **tempDataLength **is 0x28 = 40(Represents the total number of temperature bytes of the current group)
665
666 **Food temperature** is 0xE000 = 00E0/10 = 22.4℃
667
668 **Ambient temperature** is 0xEA00 = 0x00EA/10=23.4℃
669
670 **Food temperature** is 0xDF00 = 00FD/10 = 25.3℃
671
672 **Ambient temperature** is 0xEA00 = 0x00EA/10=23.4℃
673
674 One set of data contains 10 sets of data, and so on...
675 )))
676
677
678 = 3. Configure DMT01  ~-~- 需要修改 =
679
680
681 DMT01 supports below configure method:
682
683 * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
684
685
686
687 == 3.1 General Commands ==
688
689 These commands are to configure:
690
691 * General system settings like: uplink interval.
692 * LoRaWAN protocol & radio related command.
693
694 They are same for all Dragino Devices which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
695
696 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/]]
697
698 (% style="color:red" %)**Note: DMT01 can only be configured using Downlink commands and does not support configuration using AT commands.**
699
700
701 (((
702 == 3.2 Downlink Commands Set ==
703
704
705 These commands only valid for DMT01, as below:
706
707 === 3.2.1 Set Transmit Interval Time ===
708
709
710 (% style="color:#037691" %)**AT Command:**
711
712 There is no AT command to set TDC time.
713
714
715 **Feature**: Change LoRaWAN End Node Transmit Interval.
716
717 (% style="color:blue" %)**Downlink Command: 0x01**
718
719 Format: Command Code (0x01) followed by 3 bytes time value.
720
721 If the downlink payload is **0100003C**, it means set the end node's transmit Interval is set to 0x00003C = 60 seconds, with the type code 01.
722
723 * **Example 1**: Downlink Payload: 0100001E  ~/~/  Sets the transmit interval (TDC) to 30 seconds
724 * **Example 2**: Downlink Payload: 0100003C  ~/~/  Sets the transmit interval (TDC) to 60 seconds
725
726
727
728 === 3.2.2 Get Device Status ===
729
730
731 Send a LoRaWAN downlink to request the device's alarm settings.
732
733
734 (% style="color:blue" %)**Downlink Payload:  **(%%)**0x26 01**
735
736 The sensor will upload device status via FPort=5. See the payload section for details.
737
738
739 === 3.2.3 Clear Flash Record ===
740
741
742 (% style="color:#037691" %)**AT Command:**
743
744 There is no AT command to Clear flash storage for the data log feature
745
746
747 **Feature**: Clear flash storage for the  data log feature.
748
749 (% style="color:#4f81bd" %)**Downlink Command: 0x08**
750
751 * Example: 0x0801  ~/~/ Clears all saved data in flash.
752
753
754
755 === 3.2.4 Confirmed Mode ===
756
757
758 (% style="color:#037691" %)**AT Command:**
759
760 There is no AT command to control whether Confirmed Mode is enabled or disabled.
761
762
763 **Feature**: Mode for sending data that requires acknowledgment.
764
765 (% style="color:#4f81bd" %)**Downlink Command: 0x07**
766
767 * Example: 0x07 01  ~/~/ Confirmed Mode enabled.
768 * Example: 0x07 00  ~/~/  Confirmed Mode disable.
769
770
771
772 === 3.2.5 Set the time synchronization interval ===
773
774
775 **Feature**: Set how often to perform time synchronization (default: 10 days, unit: days)
776
777 (% style="color:#4f81bd" %)**Downlink Command: 0x28**
778
779 * Example: 0x28 01  ~/~/ Synchronize once a day
780 * Example: 0x28 03  ~/~/  Synchronize once every three days
781 )))
782
783
784 === 3.2.6  Alarm Mode ===
785
786
787 **Feature**: When the sample temperature is lower or higher than the set threshold, it will automatically alarm (the alarm mode is only for food temperature).
788
789 (% style="color:#4f81bd" %)**Downlink Command: 0x09**
790
791 Format: Command Code (0x09) followed by 4 bytes.
792
793 Example: 09 aa aa bb bb
794
795 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
796 |=(% style="width: 155px;background-color:#4F81BD;color:white" %)**Parameter**|=(% style="width: 197px;background-color:#4F81BD;color:white" %)**Function**
797 |(% style="width:154px" %)aa aa|(% style="width:196px" %)(((
798 Minimum temperature threshold
799
800 (Minimum not to exceed: -30℃)
801 )))
802 |(% style="width:154px" %)bb bb|(% style="width:196px" %)(((
803 Maximum temperature threshold
804
805 (Maximum not to exceed: 120℃)
806 )))
807
808 * Example: 0x09 00 14 00 15  ~/~/ Set the minimum threshold to 20℃ and the maximum threshold to 25℃
809 * Example: 0x09 00 00 00 00  ~/~/  Disable threshold alarm mode
810
811 Note:
812
813 * When the temperature exceeds the set minimum and maximum temperature thresholds, sampling will be performed at an interval of every 6 seconds. Each set of temperature data will be immediately uploaded to the server.
814 * The set minimum and maximum alarm temperatures must be within the food temperature range. The temperature detection range is -30 to 120°C.
815
816
817
818 === 3.2.7 Multi sampling ===
819
820 **Feature**: Sampling multiple times and uplink together.
821
822 (% style="color:#4f81bd" %)**Downlink Command: 0x09**
823
824 Format: Command Code (0x0A) followed by 3 bytes.
825
826 Example: 0A aa aa bb
827
828 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
829 |=(% style="width: 155px;background-color:#4F81BD;color:white" %)**Parameter**|=(% style="width: 197px;background-color:#4F81BD;color:white" %)**Function**
830 |(% style="width:154px" %)aa aa|(% style="width:196px" %)Sampling interval (range: 6~~65535s)
831 |(% style="width:154px" %)bb|(% style="width:196px" %)Sampling times (range: 1~~12 times)
832
833 Example: 0x0A 06 0A  ~/~/Sampling is done once every 6 seconds, and uploading is done after sampling 10 data points, i.e. uploading is done once every 1 minute.
834
835
836 = 4. Firmware update =
837
838
839 **Firmware download link **(% class="mark" %)(To be updated...)
840
841 User can upgrade the firmware for DMT01 charger. The charger include two piece of software:
842
843 * For LoRa part: OTA firmware update via LoRa.
844
845 * For BLE and controller part.
846
847
848
849 == 4.1 Update LoRa software ==
850
851 (% class="wikigeneratedid" %)
852 User can change firmware DMT01 charger to:
853
854 * Change Frequency band/ region.
855 * Update with new features.
856 * Fix bugs.
857
858 (((
859 **Firmware and changelog can be downloaded from :** **[[Firmware download link>>https://www.dropbox.com/scl/fo/ztlw35a9xbkomu71u31im/AE9nOhl7iwYvmnz7ggQXwZ0/LoRaWAN%20End%20Node/DMT01/Firmware?dl=0&rlkey=ojjcsw927eaow01dgooldq3nu&subfolder_nav_tracking=1]]**
860
861 **Methods to Update Firmware:**
862
863 * (Recommanded way) OTA firmware update via wireless : **[[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/]]**
864
865
866 )))
867
868 == 4.2 Update BLE software ==
869
870 Step 1: You need to download an APP named: EspBleOTA on your mobile phone.
871
872 Download link of APK file for Android: [[APK file>>https://github.com/EspressifApps/esp-ble-ota-android/releases/tag/rc]]
873
874 [[image:1754547742655-178.png||height="364" width="1057"]]
875
876
877 Step 2: After the phone is installed, open the installed EspbleOTA
878 [[image:1754548807155-607.gif]]
879
880 (% style="color:red" %)**Note:**
881
882 (% style="color:red" %)**1. When you open it, the app will request permission to use your phone's Bluetooth. Please grant permission, otherwise the app will not be able to search for Bluetooth.**
883
884 (% style="color:red" %)**2. You need to pull down the scan display window again and rescan BLE.**
885
886
887 Step 3: Select the Bluetooth device named DMT01 in the scanning display window and click to connect.
888
889 (% style="color:red" %)**Note: Before upgrading, you need to save the firmware in the directory of the phone. When upgrading, you need to enter the saved path and select the firmware.**
890
891 [[image:1754555502747-456.gif||height="659" width="297"]]
892
893
894 Step 4: Wait for the update to complete
895
896 [[image:1754555791301-172.jpg||height="618" width="277"]]
897
898
899
900
901 = 5.  FAQ =
902
903
904
905 = 6.  Order Info =
906
907
908 Part Number: (% style="color:blue" %)**DMT01-XX**
909
910 (% style="color:red" %)**XX:**
911
912 * **EU433**: Frequency bands EU433
913 * **EU868**: Frequency bands EU868
914 * **KR920**: Frequency bands KR920
915 * **CN470**: Frequency bands CN470
916 * **AS923**: Frequency bands AS923
917 * **AU915**: Frequency bands AU915
918 * **US915**: Frequency bands US915
919 * **IN865**: Frequency bands IN865
920 * **CN779**: Frequency bands CN779
921
922 = 7. ​ Packing Info =
923
924
925 (% style="color:#037691" %)**Package Includes:**
926
927 * DMT01 -  Digital Meat Thermoneter x 1
928
929 (% style="color:#037691" %)**Dimension and weight:**
930
931 * Device Size: cm
932 * Device Weight: g
933 * Package Size / pcs : cm
934 * Weight / pcs : g
935
936 = 8.  ​Support =
937
938
939 * Support is provided Monday to Friday, from 09:00 to 18:00 GMT+8. Due to different timezones we cannot offer live support. However, your questions will be answered as soon as possible in the before-mentioned schedule.
940 * Provide as much information as possible regarding your enquiry (product models, accurately describe your problem and steps to replicate it etc) and send a mail to [[support@dragino.com>>url:http://../../../../../../D:%5C%E5%B8%82%E5%9C%BA%E8%B5%84%E6%96%99%5C%E8%AF%B4%E6%98%8E%E4%B9%A6%5CLoRa%5CLT%E7%B3%BB%E5%88%97%5Csupport@dragino.com]].