In this two-part series, I will try to share why we have chosen Apache Nifi as a choice for an IoT Implementation for handling real-time data flow.
There was a need for near real-time data processing requirements for one of IoT project which has multiple integration touch points that’s when I was evaluating different options such as Kapacitor, Apache Storm, Apache Kafka. When I encountered Apache Nifi as a data flow engine which was used NSA was curious to explore. Initially thought it might be a complex attempt but seems to be an easy go once we started exploring. So before trying to share my use cases on when to use Apache Nifi from my own context, would try to quickly have an understanding what is a real-time data processing.
Real-Time Data Processing:
Typically stream of data flowing at very high response rate which needs to be processed for gaining insights. Though the term “real-time” itself would be subjective based on the context or usage. Typically, we need to process the data with zero latency.
The following were some of the challenges we were encountering in a typical IoT Implementation:
- Need to track the flow of data across the information value chain
Once data is ingested into the processing flow there could be different data processing requirements such as:
- Threshold Checks
- Initiating business events
- Need to make sure that data flow is seamless and if there are problems it could be isolated without impacting each other
- Enable handle different protocol such as MQTT, JSON, HTTP
- Integration requirements through API, validation needs with Regular Expression
- Need to handle DB Operations on the way of data flow was also a key requirement
- The performance needs to be optimal to manage flow requirements.
- Need for parallelism required across different data flow points was also a key aspect into our considerations
Needless to say that there were other constraints on resources such as Time and People. In the next part we will discuss what is Apache Nifi and how it handles these challenges.
This post is to understand the various aspects of the user interface of a web based dashboard. This is an attempt to understand the little details and insights a dashboard can provide visually. This would help to increase the knowledge on the dashboard design and development. The Analysis is AS I SEE IT.
This dashboard indicates excellent design using Material Design concepts using Paper-cards. This also happens to be good example of gamification for maintaining good health. The data is obtained from Android mobile phones with Accelerometer sensors data integeration.
As soon as you login you will see the given dashboard, which will give the following insights.
- How much you have walked against the goal. Goals Vs Achieved
- Against the goal how much is each activity contributes is given in circle with different color indicators.
- Data in different Unit of measurements on a given day such as Minutes, Distance, Calories & Steps
- Also list of recent activities ordered by date combined with the activity is provided as well.
- Personal records shows the key achievements.
- Distance travelled in terms of summary is provided as well.
Dashboard across periods:
- If we look further down it has facility to analyse data on Day, Week and Month.
- You can also analyse the data in Time, Steps, Distance, Calories, Heart Rate and Weight
- The data can also be filtered based on the various activities such as Walk, Running, Cycling, etc.,
Dashboard over a monthly calendar:
- Here the maximum activity flagged nicely.
- The activity summary is mentioned over a line bar
- The current date is displayed in a different color for identification of current date
- The weekly total is provided on the extreme right over the respective weeks
In continuation to my earlier post, I’m trying to explore ARIMA using an Example. In this post we will go into each step in detail how we can accomplish ARIMA based forecasting for a problem.
Step 1: Problem Identification or Our Scenario
We are going to consider the past history of time series data on the Household Power consumption and use that data to forecast using ARIMA. There is also a research paper published in Proceedings of the International MultiConference of Engineers and Computer Scientists 2013 Vol I, on the same dataset analysing the performance between ARMA and ARIMA. Our post will focus on step by step accomplishing forecast using R on the same dataset for ease of use for Beginners. Sooner or later we will evaluate tools such as AutoBox, R which can be used for solving this problems.
Step 2: Data Gathering or Identification of dataset
The dataset we are going to use would be a dataset on Individual household electric power consumption available in UCI Repository under the URL: https://archive.ics.uci.edu/ml/datasets/Individual+household+electric+power+consumption. This dataset is a multivariate dataset. Please check this link to understand the difference between univariate, bivariate and multivariate.
Quick Summary of the Dataset:
You can open this semicolon delimited text file in Excel and make the necessary steps on the wizard you will be having an excel sheet with the data as given below. I was able to load rows only up to 1048576. The actual total number of rows in the text file is 2075260. Whoa..
Next to do the Step 3: preliminary analysis we can use R as a tool. For using R as a tool we need to load this data into R and for analysing it. For this I can save this excel sheet in CSV format or in XLS format and the import into R as outlined in my other post or using this link. I’m using RStudio for the purpose and demonstrating the data loading process in the screenshots in the subsequent sections.
First the installation had shown some error, after that in the subsequent attempt the installation of gdata was successful. Now we can load the library using the command library(gdata). After we which we have loaded powerData variable with the data available in the CSV file for further analysis and we can view the data using View. Please check the console window for the code.
In the next post we will do some preliminary analysis on this data which we have loaded.
Word “ARIMA” in Tamil language the means Lion.
Everybody is curious and anxious enough to know what the future holds? It’s always exciting to know about it. Though there are various forecasting models available in this post we will look at ARIMA. Welcome to the world of Forecasting with ARIMA.
What is ARIMA?
ARIMA is a forecasting technique. ARIMA– Auto Regressive Integrated Moving Average the key tool in Time Series Analysis. This link from Penn State University gives good introduction on the time series fundamentals.
What is the purpose?
To Forecast. The book Forecasting: principles and practice gives a very good understanding to the whole subject. You can read it online.
What kind of business problems it can solve?
To give examples the following are some of the use cases of ARIMA.
- Forecast revenue
- Forecast whether to buy a new asset or not
- Forecast of currency exchange rates
- Forecast consumption of energy or utilities
What is mandate to get started?
- It is very important to have clarity on what to forecast. Example if you want to forecast revenue whether it is for a product line, demography, etc., has to be analysed before venturing on to the actual task.
- Period or the horizon in which the forecast is to be done is also crucial. Example: Monthly, Quarterly, Half-yearly etc.,
What are the preferred pre-requisites on data for Time series forecasting?
Updated after comment from tomdireill:
- Data should be part of time series. That is data which is observed sequentially over time.
- It can be seasonal. Means it should have highs and lows. As per the notes from Duke University it can be also applied on flat pattern less data too.
- It should have trend of increasing or decreasing
can be handled as outlined here http://www.unc.edu/~jbhill/tsay.pdf
Ok, Now we got to understand what is essential to get started on forecasting, before we devolve lets work on the steps.
5 Steps towards forecasting:
In the next post we will take up an example and work on the above steps one by one. Keep waiting.
Recently during my interaction with one of our colleagues there came a discussion about using the same database replicated or making available across multiple locations. In the advent of various connectivity options exists these days and when people are talking about cloud based apps and implementation why is this need. This post is a search of an answer for that.
Business needs for multi-location enterprise solutions:
- Requires using one application across the enterprise to ensure data integrity and single version of truth.
- Get to know the data of what’s happens in other locations or other manufacturing or outlets.
- Helps to plan and react better based on the data insights available from other locations.
- Process control and improvement across the enterprise with a single solution
- Low training cost
Challenges in accomplishing these business needs:
- Lack of connectivity or poor connectivity between the locations
- Higher bandwidth costs or complex internet solutions required to support the enterprise needs
- No control or process enablement in the locations or facilities
- Enterprise applications does not support the scenarios of multi-location with better control on data and process
- Processes and applications established at locations without understanding the impact of connectivity and process issues
- Limited accountability and responsibility at the locations in comparison with corporate or head quarters
Solutions or options are available for us:
- If we are very sure about the connectivity and availability we can adopt cloud based solution which resolves problems for once for all
- When there is connectivity issues, we might need to resort to Database synchronization options which would be more feasible to manage enterprise applications
The key things to these kind of scenarios is to identify the following with respect to data:
- Who is the data owner?
- Who has to create it?
- Where it has to be created?
- Who is going to consume it?
- Is it required real-time?
- What controls to be established upon the data?
Related articles for more reading:
Whenever we develop an Web Application for displaying realtime or near realtime charts there would be a need to refresh the page at regular intervals to fetch the data and display. This is essential for the following reasons:
- To ensure that we display the latest details to the end users
- To provide interactive update which gives good look & feel for the end users
- Will help in avoiding taking wrong decisions or delayed information
- Can help in analyzing the current situation instead of past history
In one of the recent initiatives I was working on I have to refresh the chart for displaying the current data available at a manufacturing facility in near-real time. The user interface was developed with HTML5 + CSS3 and AngularJS. I came across this post found in codeforgeek.com by Shahid Shaikh which helps to refresh the DIV using the interval. Very useful post indeed.
I used ChartJS + AngularJS for my own implementation. I used REST API developed based on Web API 2 with Dapper ORM to interact with my Datawarehouse.
I’ve been experimenting Power BI recently for a proof of concept development on building a simple dashboard to display the consumption of electricity across different equipments. This dashboard was being built on a datawarehouse DB. Following are some of the observations I found in my initial experimentation with it. Neverthless there could be lot of promise in the latest releases. I leave it to the viewers to check Power BI in their own discretion.
- Unable to provide custom label the axis
- Drill down capabilities are limited
- Close integration with Power View only
- Limited documentation on the deployment scenarios
- Inability to export to multiple formats
- Facility to develop color or formatting based on expressions (As of 30th April 2015 they have started working on it)
- Limitations on data sources exists
These are all some of the limitations based on my exploration.