Difference between revisions of "TEMPERATURE TRACKING WITH BLE SENSORS"
m (Text replacement - "Bluetooth(?!®)" to "Bluetooth®") |
|||
(16 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
==''INTRO''== | ==''INTRO''== | ||
− | The temperature tracking and monitoring industry has a multi-billion-dollar economic and environmental impact worldwide. It is constantly changing and adapting to growing consumer demands. But to remain competitive and profitable, cold chain logistics fleets have to look for innovative and efficient solutions. | + | The temperature tracking and monitoring industry has a multi-billion-dollar economic and environmental impact worldwide. It is constantly changing and adapting to growing consumer demands. But to remain competitive and profitable, cold chain logistics fleets have to look for innovative and efficient solutions. Bluetooth® technology, combined with vehicle GPS trackers and sensors, opens up new possibilities for fleet and cargo monitoring. |
== Solution description == | == Solution description == | ||
To solve the challenges mentioned above, we use the SPECIAL category GPS tracker FMB140 or other FMB EYE Sensor - the brand-new BLE based Teltonika accessory with smart features and extensive functionality set including ID signal transmission, temperature, humidity, and internal battery level tracking. | To solve the challenges mentioned above, we use the SPECIAL category GPS tracker FMB140 or other FMB EYE Sensor - the brand-new BLE based Teltonika accessory with smart features and extensive functionality set including ID signal transmission, temperature, humidity, and internal battery level tracking. | ||
− | '''How it works''' - the FMB models is based on the FMB platform and supports wireless | + | '''How it works''' - the FMB models is based on the FMB platform and supports wireless Bluetooth® LE connectivity, so it can effectively communicate with Bluetooth® devices such as sensors. To ensure the best results, the tracker should be installed in a cold chain vehicle and configured the usual way in the spot where its Bluetooth® antenna is not covered by bulky metal parts nearby. |
The compact and lightweight EYE Sensor has to be attached to temperature-sensitive cargo items to be tracked and monitored - the protective bag, outer corrugated carton, container, barrel, pallet, etc. Vehicle GPS tracker receives readings from each sensor over the air at configurable intervals and sends this data as iBeacon or Eddystone profile to a server for analysis combined with the actual temperature, humidity, and its GNSS location details. | The compact and lightweight EYE Sensor has to be attached to temperature-sensitive cargo items to be tracked and monitored - the protective bag, outer corrugated carton, container, barrel, pallet, etc. Vehicle GPS tracker receives readings from each sensor over the air at configurable intervals and sends this data as iBeacon or Eddystone profile to a server for analysis combined with the actual temperature, humidity, and its GNSS location details. | ||
Dedicated software developed by a telematics service provider determines and displays all EYE Sensors (thus, tagged items) locations based on proximity to the vehicle tracker and the parameters they track. Because of that, the cargo of cold chain lorry can be monitored via PC, laptop or smartphone in real-time this way notably improving the efficiency of goods management, logistics operations and preventing losses or thefts. But we are not stopping there… | Dedicated software developed by a telematics service provider determines and displays all EYE Sensors (thus, tagged items) locations based on proximity to the vehicle tracker and the parameters they track. Because of that, the cargo of cold chain lorry can be monitored via PC, laptop or smartphone in real-time this way notably improving the efficiency of goods management, logistics operations and preventing losses or thefts. But we are not stopping there… | ||
+ | |||
+ | == Topology == | ||
+ | [[File:Topogogy EYE Sensor Temperatute Use.png|center|alt=|border|frameless|898x898px]] | ||
==What you need for a solution?== | ==What you need for a solution?== | ||
*'''FMx1YX''' device ([https://wiki.teltonika-gps.com/view/FMB130 '''FMB130''']is taken as example) which has the ability to connect [https://wiki.teltonika-gps.com/view/EYE_SENSOR_/_BTSMP1 '''EYE SENSOR'''] | *'''FMx1YX''' device ([https://wiki.teltonika-gps.com/view/FMB130 '''FMB130''']is taken as example) which has the ability to connect [https://wiki.teltonika-gps.com/view/EYE_SENSOR_/_BTSMP1 '''EYE SENSOR'''] | ||
*The [https://wiki.teltonika-gps.com/view/FMB130_First_Start#How_to_insert_Micro-SIM_card '''SIM card'''] in order to get data to your server | *The [https://wiki.teltonika-gps.com/view/FMB130_First_Start#How_to_insert_Micro-SIM_card '''SIM card'''] in order to get data to your server | ||
− | *[https://wiki.teltonika-gps.com/view/EYE_SENSOR_/_BTSMP1 '''EYE Sensor'''] | + | *[https://wiki.teltonika-gps.com/view/EYE_SENSOR_/_BTSMP1 '''EYE Sensor'''] to get temperature data |
+ | |||
+ | == Installation == | ||
+ | 1. Install the tracker and connect to power | ||
+ | |||
+ | 2. Install EYE Sensors in the required places | ||
+ | |||
+ | 3.Configure the device as described below | ||
+ | |||
+ | ==Configuration== | ||
+ | |||
+ | ==='''1. Prerequisites:'''=== | ||
+ | ====1.1. Read through [https://wiki.teltonika-gps.com/view/FMB130_First_Start First start guide]==== | ||
+ | ====1.2. Understanding of possible [https://wiki.teltonika-gps.com/view/FMB130_System_settings#Sleep_Mode Sleep modes].==== | ||
+ | ==='''2. Configuring TEMPERATURE TRACKING WITH BLE SENSORS'''=== | ||
+ | [[File:ImageCodec8e.png|left|thumb]] | ||
+ | Codec settings: | ||
+ | *<span style="background-color:#91b9d4;">113</span> – Data protocol | ||
+ | <br /> | ||
+ | |||
+ | |||
+ | [[File:Gprs settings.png|left|thumb|229x229px]] | ||
+ | |||
+ | |||
+ | Parameter ID – Parameter name GPRS settings: | ||
+ | |||
+ | *<span style="background-color:#91b9d4;">2001</span> – APN | ||
+ | *<span style="background-color:#91d4b9;">2002</span> – APN username (if there are no APN username, empty field should be left) | ||
+ | *<span style="background-color:#b991d4;">2003</span> – APN password (if there are no APN password, empty field should be left) | ||
+ | <br /> | ||
+ | <br /> | ||
+ | |||
+ | [[File:Server settings.png|left|thumb|231x231px]] | ||
+ | Server settings: | ||
+ | |||
+ | *<span style="background-color:#b9d491;">2004</span> – Domain | ||
+ | *<span style="background-color:#d491b9;">2005</span> – Port | ||
+ | *<span style="background-color:#d4b991;">2006</span> – Data sending protocol (0 – TCP, 1 – UDP) | ||
+ | |||
+ | |||
+ | <br /> | ||
+ | <br /> | ||
+ | |||
+ | |||
+ | |||
+ | ===='''2.1 Configuring BLE Sensors'''==== | ||
+ | '''Step 1:''' Check EYE App Settings: | ||
+ | |||
+ | #Make sure that name of the sensor is default length (10 symbols) in [[EYE SENSOR / BTSMP1#Configure%20window|EYE App Basic Configuration window]] | ||
+ | #Note what Packet settings you have set in [[EYE SENSOR / BTSMP1#Configure%20window|EYE App Basic Configuration window]] | ||
+ | |||
+ | '''Step 2:''' Configure FM device using Teltonika configurator: | ||
+ | |||
+ | #In [[FMB120 Bluetooth® settings|Bluetooth®]] settings Enable Bluetooth®, set this setting as either "Enable (hidden)" or "Enable (visible)", otherwise Bluetooth® will be disabled; | ||
+ | #In [[FMB120 Bluetooth® 4.0 settings|Bluetooth® 4.0]] settings: | ||
+ | ##set Non Stop Scan to "Disable", configure "Update Frequency" and "Scan duration" as 30 seconds. These settings will bring the best results for BLE scanning with our device; | ||
+ | ##In [[FMB120 Bluetooth® 4.0 settings#Advanced%20Mode|Bluetooth® 4.0 settings Advanced Mode Settings]] Load EYE Sensor preset according to packet settings in EYE app(if you do not have preset you can download them from below table) | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Parsing information== | ||
+ | |||
+ | ==='''1.Prerequisites:'''=== | ||
+ | |||
+ | ====1.1. Open [https://wiki.teltonika-gps.com/view/Opening_TCP/UDP_port TCP/UDP port]==== | ||
+ | |||
+ | ====1.2. Read Java parser [https://wiki.teltonika-gps.com/view/Java_Parser_First_Start_Guide first start guide]==== | ||
+ | |||
+ | ==='''2. Parsing example:'''=== | ||
+ | {| class="nd-othertables_2" style="width:100%;" | ||
+ | ! rowspan="1" style="width:100%; vertical-align: middle; text-align: center;" |Unparsed received data in hexadecimal stream | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |000000000000008F080100000177B0A5F838000000000000000000004400280D0000001F09EF00F0001504B301B40051005200590098000B42307443 | ||
+ | 0F8244000011001812002D13FFE85400BE5500005A0000970000A800000AF10000601A53000000005703CB6B986400002E | ||
+ | 97660000000069023B33856B000065B27B000000007D00000000BD000000000184<span style="background:#0b9768">0080000030000005</span>0100005C92 | ||
+ | |||
+ | |} | ||
+ | {| class="nd-othertables_2" style="width:100%;" | ||
+ | |- | ||
+ | ! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |AVL Data Packet Part | ||
+ | ! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |HEX Code Part | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Zero Bytes | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Data Field Length | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 8F | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Codec ID | ||
+ | | style="vertical-align: middle; text-align: center;" |08 (Codec 8) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | Number of Data 1 (Number of Total Records) | ||
+ | | style="vertical-align: middle; text-align: center;" |01 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Timestamp | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 01 77 B0 A5 F8 38 (Thursday, February 18, 2021 3:43:00 PM GMT+02:00) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Priority | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Longitude | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Latitude | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Altitude | ||
+ | | style="vertical-align: middle; text-align: center;" |00 44 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Angle | ||
+ | | style="vertical-align: middle; text-align: center;" |00 28 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Satellites | ||
+ | | style="vertical-align: middle; text-align: center;" |0D | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Speed | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |Event IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |N of Total ID | ||
+ | | style="vertical-align: middle; text-align: center;" |1F | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |N1 of One Byte IO | ||
+ | | style="vertical-align: middle; text-align: center;" |09 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 1’st IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |EF (AVL ID: 239, Name: Ignition) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 1’st IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 2’nd IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |F0 (AVL ID: 240, Name: Movement) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 2’nd IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 3’rd IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |15 (AVL ID: 21, Name: GSM Signal) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 3’rd IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |04 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |4'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |B3 (AVL ID: 179, Name: Digital Output 1) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |4'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |01 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |5'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |B4 (AVL ID: 180, Name: Digital Output 2) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |5'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |6'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |51 (AVL ID: 81, Name: Vehicle Speed) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |6'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |7'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |52 (AVL ID: 82, Name: Accelerator Pedal Position) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |7'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |8'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |59 (AVL ID: 89, Name: Fuel level) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |8'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |9'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |98 (AVL ID: 152, Name: Geofence zone 05) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |9'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |N2 of Two Byte IO | ||
+ | | style="vertical-align: middle; text-align: center;" |0B | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 1’st IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |42 (AVL ID: 66, Name: External Voltage) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 1’st IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |30 74 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 2’nd IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |43 (AVL ID: 67, Name: Battery Voltage) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 2’nd IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |0F 82 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 3’rd IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |44 (AVL ID: 68, Name: Battery Current) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 3’rd IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |4'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |11 (AVL ID: 17, Name: Axis X) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |4'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 18 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |5'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |12 (AVL ID: 18,Name: Axis Y) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |5'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |0F 8A | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |6'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |13 (AVL ID: 19, Name: Axis Z) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |6'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |FF E8 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |7'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |54 (AVL ID: 84,Name: Fuel level) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |7'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 BE | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |8'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |55 (AVL ID:85, Name: Engine RPM) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 8’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |9'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |5A (AVL ID:90, Name: Door Status) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 9’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |10'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |97 (AVL ID:151, Name: Battery Temperature) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |10'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |11'th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |A8 (AVL ID: 168, Battery Voltage) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |11'th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |N4 of Four Byte IO | ||
+ | | style="vertical-align: middle; text-align: center;" |0A | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |1'st IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |F1 (AVL ID: 241, Name: Active GSM Operator) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 1’st IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 60 1A | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 2’nd IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |53 (AVL ID: 83, Name: Fuel Consumed) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 2’nd IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 3’rd IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |57 (AVL ID: 87, Name: Total Mileage) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 3’rd IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |03 CB 6B 98 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 4’th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |64 (AVL ID: 100, Name: Program Number) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 4’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 2E 97 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 5’th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |66 (AVL ID: 102, Name: Engine Worktime) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 5’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 6’th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |69 (AVL ID: 105, Name: Total Mileage (counted)) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 6’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |02 3B 33 85 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 7’th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |6B (AVL ID: 107, Name: Fuel Consumed(counted)) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 7’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 65 B2 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 8’th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |7B (AVL ID: 123, Name: Control State Flags) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 8’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 9’th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |7D (AVL ID: 125, Name: Harvesting Time) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 9’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |10’th IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |BD (AVL ID: 189, Name: Cruise Time) | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |10’th IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |N8 of Eight Byte IO | ||
+ | | style="vertical-align: middle; text-align: center;" |01 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |1'st IO ID | ||
+ | | style="vertical-align: middle; text-align: center;" |<span style="background:#0b9768">84 (AVL ID: 132, Name: Security State Flags)</span> | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | 1’st IO Value | ||
+ | | style="vertical-align: middle; text-align: center;" |<span style="background:#0b9768">00 80 00 00 30 00 00 05</span> | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" | Number of Data 2 (Number of Total Records) | ||
+ | | style="vertical-align: middle; text-align: center;" |01 | ||
+ | |- | ||
+ | | style="vertical-align: middle; text-align: center;" |CRC-16 | ||
+ | | style="vertical-align: middle; text-align: center;" |00 00 5C 92 | ||
+ | |} | ||
+ | |||
+ | Security State Flag Examples: | ||
+ | *1) Locked doors <span style="background:#0b9768">00 80 00 00 30 00 00 05</span> | ||
+ | *2) Unlocked doors <span style="background:#d4f991">00 80 00 00 00 00 00 05</span> | ||
+ | |||
+ | Convert HEX value to BIN value: | ||
+ | |||
+ | Then count 28'th BIT from the back (28'th bit value shows locked/unlocked states) | ||
+ | *1) 100000000000000000000000001<span style="background:#0b9768">1</span>0000000000000000000000000101 | ||
+ | *2) 100000000000000000000000000<span style="background:#d4f991">0</span>0000000000000000000000000101 | ||
+ | If car is locked value is <span style="background:#0b9768">1</span> and if car is unlocked value is <span style="background:#d4f991">0</span> | ||
+ | |||
+ | To test the car unlocking and locking use these GPRS commands | ||
+ | *1) To unlock all doors use this command: "lvcanopenalldoors" | ||
+ | *2) To lock all doors use this command: "lvcanclosealldoors" | ||
+ | |||
+ | [[Category: Usage scenarios]] |
Latest revision as of 15:28, 28 December 2023
Main Page > General Information > Usage scenarios > TEMPERATURE TRACKING WITH BLE SENSORSINTRO
The temperature tracking and monitoring industry has a multi-billion-dollar economic and environmental impact worldwide. It is constantly changing and adapting to growing consumer demands. But to remain competitive and profitable, cold chain logistics fleets have to look for innovative and efficient solutions. Bluetooth® technology, combined with vehicle GPS trackers and sensors, opens up new possibilities for fleet and cargo monitoring.
Solution description
To solve the challenges mentioned above, we use the SPECIAL category GPS tracker FMB140 or other FMB EYE Sensor - the brand-new BLE based Teltonika accessory with smart features and extensive functionality set including ID signal transmission, temperature, humidity, and internal battery level tracking.
How it works - the FMB models is based on the FMB platform and supports wireless Bluetooth® LE connectivity, so it can effectively communicate with Bluetooth® devices such as sensors. To ensure the best results, the tracker should be installed in a cold chain vehicle and configured the usual way in the spot where its Bluetooth® antenna is not covered by bulky metal parts nearby.
The compact and lightweight EYE Sensor has to be attached to temperature-sensitive cargo items to be tracked and monitored - the protective bag, outer corrugated carton, container, barrel, pallet, etc. Vehicle GPS tracker receives readings from each sensor over the air at configurable intervals and sends this data as iBeacon or Eddystone profile to a server for analysis combined with the actual temperature, humidity, and its GNSS location details.
Dedicated software developed by a telematics service provider determines and displays all EYE Sensors (thus, tagged items) locations based on proximity to the vehicle tracker and the parameters they track. Because of that, the cargo of cold chain lorry can be monitored via PC, laptop or smartphone in real-time this way notably improving the efficiency of goods management, logistics operations and preventing losses or thefts. But we are not stopping there…
Topology
What you need for a solution?
- FMx1YX device (FMB130is taken as example) which has the ability to connect EYE SENSOR
- The SIM card in order to get data to your server
- EYE Sensor to get temperature data
Installation
1. Install the tracker and connect to power
2. Install EYE Sensors in the required places
3.Configure the device as described below
Configuration
1. Prerequisites:
1.1. Read through First start guide
1.2. Understanding of possible Sleep modes.
2. Configuring TEMPERATURE TRACKING WITH BLE SENSORS
Codec settings:
- 113 – Data protocol
Parameter ID – Parameter name GPRS settings:
- 2001 – APN
- 2002 – APN username (if there are no APN username, empty field should be left)
- 2003 – APN password (if there are no APN password, empty field should be left)
Server settings:
- 2004 – Domain
- 2005 – Port
- 2006 – Data sending protocol (0 – TCP, 1 – UDP)
2.1 Configuring BLE Sensors
Step 1: Check EYE App Settings:
- Make sure that name of the sensor is default length (10 symbols) in EYE App Basic Configuration window
- Note what Packet settings you have set in EYE App Basic Configuration window
Step 2: Configure FM device using Teltonika configurator:
- In Bluetooth® settings Enable Bluetooth®, set this setting as either "Enable (hidden)" or "Enable (visible)", otherwise Bluetooth® will be disabled;
- In Bluetooth® 4.0 settings:
- set Non Stop Scan to "Disable", configure "Update Frequency" and "Scan duration" as 30 seconds. These settings will bring the best results for BLE scanning with our device;
- In Bluetooth® 4.0 settings Advanced Mode Settings Load EYE Sensor preset according to packet settings in EYE app(if you do not have preset you can download them from below table)
Parsing information
1.Prerequisites:
1.1. Open TCP/UDP port
1.2. Read Java parser first start guide
2. Parsing example:
Unparsed received data in hexadecimal stream |
---|
000000000000008F080100000177B0A5F838000000000000000000004400280D0000001F09EF00F0001504B301B40051005200590098000B42307443
0F8244000011001812002D13FFE85400BE5500005A0000970000A800000AF10000601A53000000005703CB6B986400002E 97660000000069023B33856B000065B27B000000007D00000000BD00000000018400800000300000050100005C92 |
AVL Data Packet Part | HEX Code Part |
---|---|
Zero Bytes | 00 00 00 00 |
Data Field Length | 00 00 00 8F |
Codec ID | 08 (Codec 8) |
Number of Data 1 (Number of Total Records) | 01 |
Timestamp | 00 00 01 77 B0 A5 F8 38 (Thursday, February 18, 2021 3:43:00 PM GMT+02:00) |
Priority | 00 |
Longitude | 00 00 00 00 |
Latitude | 00 00 00 00 |
Altitude | 00 44 |
Angle | 00 28 |
Satellites | 0D |
Speed | 00 00 |
Event IO ID | 00 |
N of Total ID | 1F |
N1 of One Byte IO | 09 |
1’st IO ID | EF (AVL ID: 239, Name: Ignition) |
1’st IO Value | 00 |
2’nd IO ID | F0 (AVL ID: 240, Name: Movement) |
2’nd IO Value | 00 |
3’rd IO ID | 15 (AVL ID: 21, Name: GSM Signal) |
3’rd IO Value | 04 |
4'th IO ID | B3 (AVL ID: 179, Name: Digital Output 1) |
4'th IO Value | 01 |
5'th IO ID | B4 (AVL ID: 180, Name: Digital Output 2) |
5'th IO Value | 00 |
6'th IO ID | 51 (AVL ID: 81, Name: Vehicle Speed) |
6'th IO Value | 00 |
7'th IO ID | 52 (AVL ID: 82, Name: Accelerator Pedal Position) |
7'th IO Value | 00 |
8'th IO ID | 59 (AVL ID: 89, Name: Fuel level) |
8'th IO Value | 00 |
9'th IO ID | 98 (AVL ID: 152, Name: Geofence zone 05) |
9'th IO Value | 00 |
N2 of Two Byte IO | 0B |
1’st IO ID | 42 (AVL ID: 66, Name: External Voltage) |
1’st IO Value | 30 74 |
2’nd IO ID | 43 (AVL ID: 67, Name: Battery Voltage) |
2’nd IO Value | 0F 82 |
3’rd IO ID | 44 (AVL ID: 68, Name: Battery Current) |
3’rd IO Value | 00 00 |
4'th IO ID | 11 (AVL ID: 17, Name: Axis X) |
4'th IO Value | 00 18 |
5'th IO ID | 12 (AVL ID: 18,Name: Axis Y) |
5'th IO Value | 0F 8A |
6'th IO ID | 13 (AVL ID: 19, Name: Axis Z) |
6'th IO Value | FF E8 |
7'th IO ID | 54 (AVL ID: 84,Name: Fuel level) |
7'th IO Value | 00 BE |
8'th IO ID | 55 (AVL ID:85, Name: Engine RPM) |
8’th IO Value | 00 00 |
9'th IO ID | 5A (AVL ID:90, Name: Door Status) |
9’th IO Value | 00 00 |
10'th IO ID | 97 (AVL ID:151, Name: Battery Temperature) |
10'th IO Value | 00 00 |
11'th IO ID | A8 (AVL ID: 168, Battery Voltage) |
11'th IO Value | 00 00 |
N4 of Four Byte IO | 0A |
1'st IO ID | F1 (AVL ID: 241, Name: Active GSM Operator) |
1’st IO Value | 00 00 60 1A |
2’nd IO ID | 53 (AVL ID: 83, Name: Fuel Consumed) |
2’nd IO Value | 00 00 00 00 |
3’rd IO ID | 57 (AVL ID: 87, Name: Total Mileage) |
3’rd IO Value | 03 CB 6B 98 |
4’th IO ID | 64 (AVL ID: 100, Name: Program Number) |
4’th IO Value | 00 00 2E 97 |
5’th IO ID | 66 (AVL ID: 102, Name: Engine Worktime) |
5’th IO Value | 00 00 00 00 |
6’th IO ID | 69 (AVL ID: 105, Name: Total Mileage (counted)) |
6’th IO Value | 02 3B 33 85 |
7’th IO ID | 6B (AVL ID: 107, Name: Fuel Consumed(counted)) |
7’th IO Value | 00 00 65 B2 |
8’th IO ID | 7B (AVL ID: 123, Name: Control State Flags) |
8’th IO Value | 00 00 00 00 |
9’th IO ID | 7D (AVL ID: 125, Name: Harvesting Time) |
9’th IO Value | 00 00 00 00 |
10’th IO ID | BD (AVL ID: 189, Name: Cruise Time) |
10’th IO Value | 00 00 00 00 |
N8 of Eight Byte IO | 01 |
1'st IO ID | 84 (AVL ID: 132, Name: Security State Flags) |
1’st IO Value | 00 80 00 00 30 00 00 05 |
Number of Data 2 (Number of Total Records) | 01 |
CRC-16 | 00 00 5C 92 |
Security State Flag Examples:
- 1) Locked doors 00 80 00 00 30 00 00 05
- 2) Unlocked doors 00 80 00 00 00 00 00 05
Convert HEX value to BIN value:
Then count 28'th BIT from the back (28'th bit value shows locked/unlocked states)
- 1) 10000000000000000000000000110000000000000000000000000101
- 2) 10000000000000000000000000000000000000000000000000000101
If car is locked value is 1 and if car is unlocked value is 0
To test the car unlocking and locking use these GPRS commands
- 1) To unlock all doors use this command: "lvcanopenalldoors"
- 2) To lock all doors use this command: "lvcanclosealldoors"