The New IoT Standard: Any App for Any Device Using Any Data Format. Mike Weiner Product Manager, Omega DevCloud KORE Telematics



Similar documents
Number Representation

2011, The McGraw-Hill Companies, Inc. Chapter 3

Encoding Text with a Small Alphabet

The string of digits in the binary number system represents the quantity

Computer Science 281 Binary and Hexadecimal Review

Numbering Systems. InThisAppendix...

Data Storage 3.1. Foundations of Computer Science Cengage Learning

DNA Data and Program Representation. Alexandre David

Useful Number Systems

Levent EREN A-306 Office Phone: INTRODUCTION TO DIGITAL LOGIC

Chapter 4: Computer Codes

Base Conversion written by Cathy Saxton

Systems I: Computer Organization and Architecture

Data Storage. Chapter 3. Objectives. 3-1 Data Types. Data Inside the Computer. After studying this chapter, students should be able to:

Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)

LSN 2 Number Systems. ECT 224 Digital Computer Fundamentals. Department of Engineering Technology

ECE 0142 Computer Organization. Lecture 3 Floating Point Representations

Oct: 50 8 = 6 (r = 2) 6 8 = 0 (r = 6) Writing the remainders in reverse order we get: (50) 10 = (62) 8

The Answer to the 14 Most Frequently Asked Modbus Questions

The programming language C. sws1 1

Machine Architecture and Number Systems. Major Computer Components. Schematic Diagram of a Computer. The CPU. The Bus. Main Memory.

Binary Number System. 16. Binary Numbers. Base 10 digits: Base 2 digits: 0 1

plc numbers Encoded values; BCD and ASCII Error detection; parity, gray code and checksums

INTERNATIONAL TELECOMMUNICATION UNION

Binary Representation. Number Systems. Base 10, Base 2, Base 16. Positional Notation. Conversion of Any Base to Decimal.

Informatica e Sistemi in Tempo Reale

This section describes how LabVIEW stores data in memory for controls, indicators, wires, and other objects.

HOMEWORK # 2 SOLUTIO

Chapter 2: Basics on computers and digital information coding. A.A Information Technology and Arts Organizations

CSI 333 Lecture 1 Number Systems

1. Give the 16 bit signed (twos complement) representation of the following decimal numbers, and convert to hexadecimal:

Storing Measurement Data

2010/9/19. Binary number system. Binary numbers. Outline. Binary to decimal

Simple Image File Formats

Counting in base 10, 2 and 16

To convert an arbitrary power of 2 into its English equivalent, remember the rules of exponential arithmetic:

This 3-digit ASCII string could also be calculated as n = (Data[2]-0x30) +10*((Data[1]-0x30)+10*(Data[0]-0x30));

How To Write Portable Programs In C

EE 261 Introduction to Logic Circuits. Module #2 Number Systems

CDA 3200 Digital Systems. Instructor: Dr. Janusz Zalewski Developed by: Dr. Dahai Guo Spring 2012

Number Systems. Introduction / Number Systems

Pemrograman Dasar. Basic Elements Of Java

SQL Server An Overview

Computers. Hardware. The Central Processing Unit (CPU) CMPT 125: Lecture 1: Understanding the Computer

Chapter 5. Binary, octal and hexadecimal numbers

Numeral Systems. The number twenty-five can be represented in many ways: Decimal system (base 10): 25 Roman numerals:

Technical Information. Digital Signals. 1 bit. Part 1 Fundamentals

DATA_TYPE Values and Data File Storage Formats

Digital System Design Prof. D Roychoudhry Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Memory Systems. Static Random Access Memory (SRAM) Cell

Lecture 2. Binary and Hexadecimal Numbers

Modbus and ION Technology

Section 1.4 Place Value Systems of Numeration in Other Bases

Data Storage: Each time you create a variable in memory, a certain amount of memory is allocated for that variable based on its data type (or class).

Caml Virtual Machine File & data formats Document version: 1.4

Unsigned Conversions from Decimal or to Decimal and other Number Systems

SYMETRIX SOLUTIONS: TECH TIP August 2015

Digital codes. Resources and methods for learning about these subjects (list a few here, in preparation for your research):

CS101 Lecture 11: Number Systems and Binary Numbers. Aaron Stevens 14 February 2011

Goals. Unary Numbers. Decimal Numbers. 3,148 is s 100 s 10 s 1 s. Number Bases 1/12/2009. COMP370 Intro to Computer Architecture 1

Binary Representation

Data Storage. 1s and 0s

Digital Logic Design. Introduction

Life of a Packet CS 640,

NUMBER SYSTEMS. William Stallings

TFTP Trivial File Transfer Protocol. TFTP Usage and Design. TFTP Usage and Design (cont.) References: RFC 783, Transfer files between processes.

Disassembling a Windows Wave File (.wav)

Modbus and ION Technology

Application Note. Introduction AN2471/D 3/2003. PC Master Software Communication Protocol Specification

Instruction Set Architecture (ISA)

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

C++ Language Tutorial

Binary Numbering Systems

The use of binary codes to represent characters

Solution for Homework 2

BA-35 Solar Quick Reference Guide

A White Paper about. MiniSEED for LISS and data compression using Steim1 and Steim2

PRODUCT MANUAL SKX OPEN SKX ADVANCE ZN1RX-SKXOPEN. Edition 2 Version 1.1

THE BINARY NUMBER SYSTEM

UNDERSTANDING SMS: Practitioner s Basics

Computer Science 217

Positional Numbering System

Chapter 7D The Java Virtual Machine

SAS Data Set Encryption Options

End-to-End M2M and IoT Services

2 ASCII TABLE (DOS) 3 ASCII TABLE (Window)

Big Data & Scripting Part II Streaming Algorithms

Process Control and Automation using Modbus Protocol

CS321. Introduction to Numerical Methods

Introduction to M2M Technologies What Wireless or Wired Option is Right For Your Company or Products

Decimal to Binary Conversion

Digital Design. Assoc. Prof. Dr. Berna Örs Yalçın

Field Properties Quick Reference

Advanced Tutorials. Numeric Data In SAS : Guidelines for Storage and Display Paul Gorrell, Social & Scientific Systems, Inc., Silver Spring, MD

Technical Support Bulletin Nr.18 Modbus Tips

Variables, Constants, and Data Types

University of Hull Department of Computer Science. Wrestling with Python Week 01 Playing with Python

Transcription:

The New IoT Standard: Any App for Any Device Using Any Data Format Mike Weiner Product Manager, Omega DevCloud KORE Telematics

About KORE The world s largest M2M/IoT services provider 12 Carriers Enterprise Ready Over 110 Countries 3.5 Million KORE makes true global coverage a reality with ten cellular partners and two satellite partners, covering the entire globe With geo-redundant data centers and serving a variety of Fortune 500 leaders, KORE s team of more than 75 developers is ready to support any level of enterprise-grade project KORE provides its clients with unparalleled worldwide coverage and support with offices in 5 countries and by actively doing business in over 110 countries With more than 3.5 Million active units, KORE is the world s largest independent global provider of connectivity and application enablement As the world s largest independent global M2M/IoT services provider, we provide our customers with the most effective services for connectivity and application enablement. Doing business in over 110 countries across the globe and maintaining strong network relationships with leading carrier providers, KORE is able to provide unparalleled M2M/IoT enabling services. - Alex Brisbourne, CEO of KORE

Iot Growth This is the largest growth in the history of humans Janus Bryzek (forbes.com) Gartner claims that the Internet of Things was the most hyped technology in 2014, and for good reason 30 25 Online Machines GE estimates that the Industrial Internet has the potential to add $10 to $15 trillion to the global GDP over the next 20 years Connected Devices (billions) 20 15 10 Gartner estimates that connected things will exceed 25 billion by 2020 5 0 2010 2015 2020 Mobile Phones PCs & laptops Tablets Other "Things" Data Source: The Internet of Things, MIT Technology Review

How Connected Devices Communicate It s all ones and zeroes Manufacturers either encode their device data into a custom format, or into a human-readable encoding such as ASCII. Data transmission is typically sent via TCP or UDP protocols and facilitated via a radio or satellite signal, often through a major cellular/data carrier. GSM HSPA Satellite Wi-Fi Etc. 0110 0110 0011 1101 1110 0001 TCP/UDP 2.4m/s,1236812s,330036s,98.6f

The Problem(s) How can I develop against so many unknowns? There are no formatting standards across device manufacturers Different units Different formats Different delimiters Different encoding = The same headache There are often no persistent standards even for a single device A simple firmware update can change the structure of the message, ultimately bringing your application to a halt $ $ $ Sooner or later you will need to change or update your devices Are your existing devices subpar? Is your carrier turning down 2G or 3G service? Changing devices means you will have to redevelop parts of your application

Message Formats Differ by Manufacturer ultimately driving demand for standardization Message formats and encoding differ by device manufacturer. Consider the following GPS data: $$35890104727109 9,4003,2015/04/21, 17:42:48,39.24506, -84.38529,255.2, 0,0.0,10,0.9,11.9,16,1, 1,0,0.0,0.0,0,1,1,1## 00 00 01 4D 53 83 3F 34 61 66 38 66 34 37 62 63 41 6E 64 72 6F 69 64 20 34 2E 34 40 17 64 37 61 CD B3 DE CC 43 9F 4A 3B 8D 1A BB C3 7F 63 41 23...

ASCII vs Custom Encoding Data 1010 ASCII is a characterencoding scheme that portrays data in humanreadable text. ASCII supports 127 characters in total, the majority of which you can type via your keyboard. ASCII messages are simple to understand and can typically be parsed through the use of a delimiter (typically a comma). vs Custom Encoding enables devices to encode subsets of the message into a variety of different data types. These data types can be proprietary to the manufacturer or be standard data types such as strings, integers, floats, etc. Although more difficult to work with, custom-encoded messages typically condense the overall size of the message.

The Difficulty of Interpreting Custom Encoding E = mc, what? Lack of visualization Encoding Endianness Variety of data types Custom data types Dynamic lengths Linear parsing Rigid output Very tedious big endian unicode exponent 0xF1 bytes fixed length BCD unsigned int float packed BCD little endian 0101 bits concurrency mantissa boolean integer headers double float hexadecimal radix singed integer

Interpreting Custom Binary Encoding Step 1: Understand the device message 00 00 01 4D 53 83 3F 5F 38 65 35 64 34 37 39 34 61 66 38 66 34 37 62 63 41 6E 64 72 6F 69 64 20 34 2E 34 40 43 9F 4A 3B 8D 74 C8 C0 55 18 A0 BA F6 0A B4 3F 72 76 50 40 02 D2 09 00 00 00 00 00 00 00 00 BD 5C 2F 66 BD 20 22 79 What you see above is a 600-bit message sent from an Android device. This binary message is portrayed in hexadecimal notation in order to save space. Remember that all devices communicate with ones and zeroes. Let s begin deciphering and parsing the message

Interpreting Custom Binary Encoding Step 2: Take a chunk of data, if you can find it 00 00 01 4D 53 83 3F 5F 38 65 35 64 34 37 39 34 61 66 38 66 34 37 62 63 41 6E 64 72 6F 69 64 20 34 2E 34 40 43 9F 4A 3B 8D 74 C8 C0 55 18 A0 BA F6 0A B4 3F 72 76 50 40 02 D2 09 00 00 00 00 00 00 00 00 BD 5C 2F 66 BD 20 22 79 According to the documentation of the device, bits 345-409 are the longitude location of the device The hexadecimal value of the device s longitude in this case is: C0 55 18 A0 BA F6 0A B4 The binary equivalent of this value is: 11000000 01010101 00011000 10100000 10111010 11110110 00001010 10110100

Interpreting Custom Binary Encoding Step 3: Determine the endianness of the value 00 00 01 4D 53 83 3F 5F 38 65 35 64 34 37 39 34 61 66 38 66 34 37 62 63 41 6E 64 72 6F 69 64 20 34 2E 34 40 43 9F 4A 3B 8D 74 C8 C0 55 18 A0 BA F6 0A B4 3F 72 76 50 40 02 D2 09 00 00 00 00 00 00 00 00 BD 5C 2F 66 BD 20 22 79 To further complicate matters, some devices generate data left-to-right, while others do it right-to-left. This is referred to as endianness. Big Endian conveys the most significant byte in the smallest memory address. Little Endian conveys the least significant byte in the smallest memory address. You ll need to consult the device s documentation to determine which endianness your device uses.

Interpreting Custom Binary Encoding Step 4: Determine the data type and convert the value 00 00 01 4D 53 83 3F 5F 38 65 35 64 34 37 39 34 61 66 38 66 34 37 62 63 41 6E 64 72 6F 69 64 20 34 2E 34 40 43 9F 4A 3B 8D 74 C8 C0 55 18 A0 BA F6 0A B4 3F 72 76 50 40 02 D2 09 00 00 00 00 00 00 00 00 BD 5C 2F 66 BD 20 22 79 Following the device s documentation, we know that this value is a double precision (64-bit) float Floats are positive & negative numbers that support decimals to a varying degree of precision Typically your programming language will provide an easy conversion class or method (e.g., C# s BitConverter) to derive the value: -84.3848102

Interpreting Custom Binary Encoding Step 5: Repeat the process for each value 00 00 01 4D 53 83 3F 5F 38 65 35 64 34 37 39 34 61 66 38 66 34 37 62 63 41 6E 64 72 6F 69 64 20 34 2E 34 40 43 9F 4A 3B 8D 74 C8 C0 55 18 A0 BA F6 0A B4 3F 72 76 50 40 02 D2 09 00 00 00 00 00 00 00 00 BD 5C 2F 66 BD 20 22 79 Repeat the process for each pertinent value and ignore the values you don t need. Note that not all values will be 64-bit floats. You will need to understand how to convert multiple data types and perhaps even custom data types. Be careful, if you make a mistake early all trailing data will also be incorrect.

So Why Custom Encoding? Smaller data size = lower cost Most data service providers charge by data usage Smaller data size = lower cost Consider the longitude value: -84.3848519 ASCII 8 bits per character -84.3848519 = 11 characters 8 x 11 = 88 bits (11 bytes of data) Custom Encoding -84.3848519 is a float data type Single Float = 32 bits (4 bytes of data) Double Float = 64 bits (8 bytes of data)

IoT Development Made Easy via Omega DevCloud Let us show you how we do it

The Benefits of Middleware Focus on building your application, not integration Modularizing development by leveraging middleware will help protect you from needing to redevelop your user-facing application when devices or their message structures change. It will also alleviate the time, cost, and overhead of continually needing to redeploy your application as you onboard new devices.

Questions?