Introduction: An important part of IOT is the use of smart devices for mobile access to data. Just about everyone has multiple mobile devices, such as phones and tablets. These can be used as user interface portals using their existing internet connectivity to effectively provide a zero-cost ability to interface into the IOT infrastructure.
Choosing a device platform
The mobile device market is dominated by Apple and Android. Apple provides relatively a well controlled environment which easy to use, and you know what you're dealing with. Developers must set up an Apple Developer account. You can load systems onto your own iOS device for testing. For dissemination more broadly you need to register with the Apple Store and have the application approved through the Apple processes. Some of the value added services for Apple are:
Android gives a great deal more flexibility but no two Android platforms that are the same. It is not possible to develop a generic Android app and having it working seamlessly on every vendor's platform or the huge range of tablets and mobile devices. Typical developments done in Java under Android Studio and there are good Android training resources available. Android also allows you to code cut in C or C++ and there's an Android native development kit that lets you do whatever you want. Android apps can be tested on a target device or an Android simulator which gives you some flexibility in allowing you to test and develop your devices although you either an emulator or a simulator for each individual device. Apps require prior approval to distribute via the Google Play Store.
Typically the mobile device is used for user interface and communications but they are also used for commissioning, monitoring and testing your deployed Internet of Things devices. Mobile device interfaces come into play here in terms of development tools and configuration tools. One approach is to develop a fairly rich app to run on the device which requires the skill sets to design the user interface and all of the custom software to run on the platform.
Use of web browsers
An alternative approach is to use the standard web browser running on the mobile device and then develop your application for your users as a web app. This approach can employ low-resourced lightweight web servers running on your Thing that then can directly serve to the mobile device with connectivity via Bluetooth, LE or WiFi either directly from the device via a communications gateway.
The Thing can also communicate up to the cloud where software can serve via a web server back down to the users web browser running on the standard mobile device.
The big benefit of this approach is you avoid having to instal anything on the mobile device, and this is quite a friendly environment particularly if you're dealing with corporate structures where there are constraints on limitations on what people can put onto their devices. Also, you are then able to implement the user interface behind firewalls.
One issue is that developers are limited in terms of what a lightweight web server can actually do in terms of serving HTML directly to the mobile device. However and approach called client side scripting allow scripts to be run on the mobile device and use the power of the mobile device's embedded computer freeing up the microcontroller in your Thing to just focus on delivering data. Using this architecture, the scripts can be sourced from a cloud server or even directly from some serving points that can serve scripts onto the mobile device, so your not relying on the connectivity to your Thing or its processing and storage.
This can get a little complicated to implement, but it's well worth considering if you want to go down the path of having a highly capable user interface, but not to go to the trouble, expense and difficulty of developing a native application to run on the device. Also you don't want to burden the Thing or the communications gateway with the processing burden and storage and power burden of serving the user interface, you can do this via third-party web servers and the like.
Another emerging aspect of mobile device applications is the concept of intelligent virtual assistants to help interact with IOT devices. This is primarily being explored by the big consumer players like Microsoft, Apple and Google and applied to consumer devices including integration with cars.
Typically users are able to interact with the IOT system using mobile devices, however the ideal system is to have little or no necessity for a user interface. For example, in home automation the ideal system is to have the complexity completely hidden so the user has the safest, environmentally friendly, livable home possible without having to think about it.
Edited by Tim Kannegieter