Mobile App communication with Inverter through Bluetooth

With Internet of Things (IoT) adoption, OEMs are building connected products. The first step to build connected ecosystem is to enable wireless communication on edge devices. The objective of this blog is to help how to use the Bluetooth technologies to communicate with devices wirelessly. Problem We are working with leading solar inverter manufacturer. They have requirement to monitor power generation, storage and consumption of remotely deployed rooftop solar panels. As remote location does not have GSM connectivity, it’s always challenge to retrive data. Considering scale and low cost business model, Bluetooth technology was clear choice solution. Solution We have build Mobile app that interact with Inverter over Bluetooth. Providing reliable and cost effective solution to the end user is main motto behind this. User has to pair with Inverter and click few buttons to retrive data. The same data would be uploaded to cloud when Mobile comes in wi-fi or data coverage. package com.example.bluetoothconnection; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } Source 1. Starting code The first programming step is to create a new Android Application Project in Android Studio. Doing so will generate code similar to that in Source 1. The first thing the program should do is determine if the Android device supports Bluetooth. To do this, create a BluetoothAdapter object using the function getDefaultAdapter(). If this returns null, then the Android device does not support Bluetooth. Source 2 shows how to do this. Add this code to OnCreate(). package com.example.bluetoothconnection; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter == null) {...

Geofencing in iOS

Description : This blog introduces you to use geofencing is iOS with in-build method of LocationManager. Geofencing uses global positioning system(GPS) to identify users geographical boundary. Now days geofencing would be too much useful in Internet of Things (IOT) application. As it can gives you position of user and also assigned some boundary with them. Geofencing is most accurate with WI-FI ON irrespective of it is connected to any network or not. Implentation : These are the 2 packages in objective c use to implement geofence : #import <Foundation/Foundation.h> #import <CoreLocation/CoreLocation.h> Which you can included inside LocationManager.  Now will consider one example to elaborate the implementation of geofence. Consider user is wanted to go to location A. At this point we can start or define boundary of user with location A. Support of this methods are above iOS 7.0 version.     if(![CLLocationManager locationServicesEnabled])     {         //You need to enable Location Services     }         CLLocationDegrees latitude = //Latitude of location A     CLLocationDegrees longitude =//Longitude of location A     CLLocationCoordinate2D centerCoordinate = CLLocationCoordinate2DMake(latitude, longitude);     CLLocationDistance regionRadius = //Radius as per your requirement but as per iOS suggestion it should be above 250-300 meter. NSString *identifierId = //Any unique value for geofence identifying.     CLRegion * region = nil;     if([version floatValue] >= 7.0f)      {         region =  [[CLCircularRegion alloc] initWithCenter:centerCoordinate                                              radius:regionRadius   identifier:identifierId];     }         [locationManagers startMonitoringForRegion:region];     After...

Industrial Internet of Things (IIoT)

The Industrial Internet of Things (IIoT) is the latest wave of technological change will transform companies and countries opening up a new era of economic growth and competitiveness. We see a future where the intersection of people, data and intelligent machines will have far-reaching impacts on the productivity, efficiency and operations of industries around the world. It will bring unprecedented opportunities to business and society. It will combine the global reach of the Internet with a new ability to directly control the physical world, including the machines, factories and infrastructure that define the modern landscape.   However, like the Internet was in the late 1990s, the Industrial Internet of Things is currently in its early stages. Many important questions remain, including how it will impact existing industries, value chains, business models and workforces, and what actions business and government leaders need to take now to ensure long-term success. According to WEF USA Industrial Internet Report Industrial Internet of Things (IIoT) will change the basis of competition, redraw industry boundaries and create a new wave of disruptive companies, just as the current Internet has given rise to Amazon, Google and Netflix. However, the vast majority of organizations are still struggling to understand the implications of the Industrial Internet on their businesses and industries. For these organizations, the risks of moving too slowly are real. Opportunities and benefits The industry disruption will come from new value creation made possible by massive volumes of data from connected products, and the increased ability to make automated decisions and take actions in real time. The key business opportunities will be found in four major...

Key Factors for Developing Successful Enterprise Mobility Applications

The first step to develop Enterprise mobility application is to plan an effective strategy. Next step involves planning and building enterprise mobility apps. We all know that more and more businesses are trying to harness the countless possibilities that result in huge profits. Research firm Gartner estimates that 82% of mobile phones across the world will be smartphones in 2016, up by 12% from 2015 while mobile phone shipments are set to increase by to 1.96 billion this year. The global shipments will be up by 2.6% in 2016, and will cross 2 billion by 2018 , creating huge opportunities for consumer-oriented businesses. Also, consumer-facing mobile app development will continue to outpace development of Web apps and application development in general through 2016. Following are some key factors that enterprises should consider in order to build highly resilient mobile enterprise applications and ensure their enterprise-wide acceptance and roll-out. 1. Clarity of business goals and objectives Before even determining the target platforms for which you will develop the mobile app, or beginning the development itself, have a clear vision of the goals you want to achieve. To be specific, have a concrete business case in your hands that justifies your investment in the mobile enterprise application development initiative. The goals could be to : Enhance your customer’s perception of brand experience Increase the business momentum of your workforce and partners Attract new customers and generate revenue opportunities Enhance your current customers’ experience Showcase your organization as a progressive-entity or a thought leader in your niche 2. Build apps keeping end users in mind Another important factor to consider before initiating...

iOS Application Testing using TestFlight

The blog is for beginners in iOS application development. If you have started building iOS application and wondering how to test it then TestFlight is the best option. TestFlight requires your account on apple store. Supported Platform : TestFlight supports iOS 8 or greater than that. Types of Testing on TestFlight : Internal testing Beta testing Internal Testing : Internal testing does not require to review and approve your app from apple store.  It allows 25 internal testers.For both internal and beta testing you just require emailId of the testers on which they are going to install there app. Beta Testing :  Beta testing require to review and approve your app from apple store. It might take approximately 5-6 days to review and approve from apple store. Once it is approved it will b available for beta testers. It allows 1000 beta testers. Every time you release your app on test flight for beta testing it requires to review and approve from apple store. But after first approval , next time it takes approximate 5-6 hours to approve. Steps to Follow : TestFlight needs Distribution Provisioning Profile to build an app file of your application. You can create this from your apple account and select this from Build settings. Below is the image just for your reference :   Download and install Application Loader to upload your app on iTunnes. Give the proper version while creating app file of your application. After uploading the app file on iTunnes using application loader. Then from apple developer console dashboard you can select the TestFlight Tab add submit the latest build for approval. Also you can add the...

Android Geofence – Entry and Exit

Geofencing allows you to send notifications to your users in Android. when they are in the vicinity of, for example, your store. By doing so, you only provide your users with information relevant to them and increase your app usage, foot-traffic and conversion.Using Android Geofencing ,we are identify Exit and Entry point of users. A Geofence is a virtual perimeter around a location. You can create Geofences of 50 to 50.000 meters radius to send location-based notifications to users approaching, for example, your stores, coffee shops or events. Create Geofences Creating Geofences in the Plot Dashboard is as easy as riding your bike. You can search for a place or address and then set the name and radius of the Geofence. Creating Geofences on a map gives you perfect control of where your users will receive your Location Based Notifications. public Geofence toGeofence() { // Build a new Geofence object return new Geofence.Builder() .setRequestId(Long.toString(id)) .setTransitionTypes(transitionType) .setCircularRegion(latitude, longitude, radius) .setExpirationDuration(expirationDuration) .build(); } Geofence Enter When user exit the geofence , user getting trigger and showing that you are entering geofence. public class ReceiveTransitionsIntentService extends IntentService { @Override protected void onHandleIntent(Intent intent) { int transition = LocationClient.getGeofenceTransition(intent); if ((transition == Geofence.GEOFENCE_TRANSITION_ENTER) || (transition == Geofence.GEOFENCE_TRANSITION_EXIT)){ if (transition == Geofence.GEOFENCE_TRANSITION_ENTER) { //bussiness logic AlarmManager alarmManager=(AlarmManager)getSystemService(Context.ALARM_SERVice); Intent broadcast_intent = new Intent(this, GeofencigNotificationReciever.class); broadcast_intent.putExtra("EventId", eventId); //data to pass broadcast_intent.putExtra("TransitionType", transitionType); PendingIntent pendingIntent=PendingIntent.getBroadcast(this, 0, broadcast_intent, 0); alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pendingIntent); } } } }   Geofence Exit When user exit the geofence,user getting trigger and showing that you are exit geofence. public class ReceiveTransitionsIntentService extends IntentService { protected void onHandleIntent(Intent intent) { int transition = LocationClient.getGeofenceTransition(intent);...