One of the primary requirements for IOT - the "Internet of Things" is to collect data from remote devices over a TCP/IP internet connection and use the same for analysis. Since the number of devices is expected to be very large -- far larger than the the number of IPv4 IP addresses that are possible, it is expected that IPv6 addressing will be used. However the sluggish rollout of IPv6 enabled network devices has necessitated the usage of intermediate "broker" services that allow the collection of data from devices and then publish the same for subsequent analytics.
This post will describe the architecture of such a system and provide sample codes that can be used to get a basic IOT Sensor Data collection.
Since the data will be travelling over the internet, the edge device must be a TCP/IP enabled computing device to which the sensor is connected. The simplest possible computer would be a Raspberry Pi2 or Arduino Yún or similar machine, running on some lightweight flavour Unix or Linux. So in this case the sensor will be simulated by a small shell program that, in this case, emits two pieces of data (a) a sensor ID and (b) a numeric value, of temperature or pressure or voltage, that has been recorded by the sensor. With a real sensor device, this program will collect, or read it, from the sensor through a device driver program.
Once the data is available to a shell program ( we will call it ISD_pushData.sh ) it must be pushed into a central server and the easiest way to do it is using the curl command that is available in any Unix distribution. Where does one find such servers?
Companies like Carriots and GroveStream offer services that allows one to define a "device" that uses curl to send data in JSON or XML format to a datastream where it is stored for subsequent analysis. Carriots in fact offers a free service in which one can connect up to ten devices from which to collect, store and display data. Simple tutorials are available through which one can learn "How to send a stream using curl" and "How to create triggers" that will initiate actions based on the value of data that is received.
After working through these tutorials it becomes very evident that a similar service can be created on a Apache/MySQL/PhP platform that is widely available from any webhosting service like x10hosting or hostinger. The free versions are good enough for our purpose. This post in tweaking4all shows how this can be done and is forms the basis of this post.
What we need is (a) MySQL table to store the data (b) a shell program that will send data using curl to a destination URL on the web server and (c) a PhP program, available at the destination URL, that will accept data passed as parameters and insert it into the MySQL table.
The SQL command to create the MySQL table looks like this : ( Create_IOT_SensorData.sql)
This PhP program (ISD_pushData.php) that sits on the web server and accepts the data
The PhP program on the web server accepts the data from the following shell (ISD_pushData.sh) program, running on the remote Linux machine. Instead of reading a value from the sensor, the program is generating a random number and sending it.
In fact, the PhP push program on the server is not only inserting the data into the MySQL table but is also acting as a trigger by sending two different types of mail depending on the value of the data that is received from the remote sensor.
Once the data is available in the MySQL table, it can be displayed (using ISD_viewData.php) as
In fact, one can run the shell script on any machine and the new value will appear when this pages is refreshed!
It is also possible to visualize the data graphically (using ISD_graphData.php)
All the codes used in creating this post are available on Github. The graph has been created with free tools available from JpGraph and the specific graph shown here is based on the sample shown here.
In this post we have demonstrated how data lying on remote Linux machine ( that is possibly connected to a physical sensor ) can be pushed into webserver and subsequently used for data analytics.
This post will describe the architecture of such a system and provide sample codes that can be used to get a basic IOT Sensor Data collection.
Since the data will be travelling over the internet, the edge device must be a TCP/IP enabled computing device to which the sensor is connected. The simplest possible computer would be a Raspberry Pi2 or Arduino Yún or similar machine, running on some lightweight flavour Unix or Linux. So in this case the sensor will be simulated by a small shell program that, in this case, emits two pieces of data (a) a sensor ID and (b) a numeric value, of temperature or pressure or voltage, that has been recorded by the sensor. With a real sensor device, this program will collect, or read it, from the sensor through a device driver program.
Once the data is available to a shell program ( we will call it ISD_pushData.sh ) it must be pushed into a central server and the easiest way to do it is using the curl command that is available in any Unix distribution. Where does one find such servers?
Companies like Carriots and GroveStream offer services that allows one to define a "device" that uses curl to send data in JSON or XML format to a datastream where it is stored for subsequent analysis. Carriots in fact offers a free service in which one can connect up to ten devices from which to collect, store and display data. Simple tutorials are available through which one can learn "How to send a stream using curl" and "How to create triggers" that will initiate actions based on the value of data that is received.
After working through these tutorials it becomes very evident that a similar service can be created on a Apache/MySQL/PhP platform that is widely available from any webhosting service like x10hosting or hostinger. The free versions are good enough for our purpose. This post in tweaking4all shows how this can be done and is forms the basis of this post.
What we need is (a) MySQL table to store the data (b) a shell program that will send data using curl to a destination URL on the web server and (c) a PhP program, available at the destination URL, that will accept data passed as parameters and insert it into the MySQL table.
The SQL command to create the MySQL table looks like this : ( Create_IOT_SensorData.sql)
CREATE TABLE `IOT_SensorData` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'unique ID',
`event` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Event Date and Time',
`sensorID` VARCHAR(30 ) NOT NULL COMMENT 'Unique ID of the sensor',
`Value` NUMERIC( 4,1 ) NOT NULL COMMENT 'Value of data recorded'
);
This PhP program (ISD_pushData.php) that sits on the web server and accepts the data
<?php
// Connect to MySQL
include("dbConnect.php");
$con = mysql_connect($MyHostname, $MyUsername, $MyPassword) or die(mysql_error());
if (!$con)
{
die("Could not connect: 1" . mysql_error());
}
mysql_select_db($MyDBname) or die(mysql_error());
// Prepare the SQL statement
$SQL = "INSERT INTO IOT_SensorData (sensorID ,Value) VALUES ('".$_GET["sensorID"]."', '".$_GET["Value"]."')";
// Execute SQL statement
mysql_query($SQL,$con);
// Send Mail
$mailMSG = $SQL;
$mailDEST = "someone@somewhere.com";
if ($_GET["Value"] > 50){
$mailSUB = "Warning : Value HIGH";
} else {
$mailSUB = "Value Normal";
}
mail($mailDEST,$mailSUB,$mailMSG);
?>
The PhP program on the web server accepts the data from the following shell (ISD_pushData.sh) program, running on the remote Linux machine. Instead of reading a value from the sensor, the program is generating a random number and sending it.
p1="http://prithwis.x10.bz/IOT/ISD_pushData.php?sensorID="
sensorID="1003B"
p2="&Value="
Value=$(shuf -i 1-80 -n 1) # random number being generated for Value
URL=$p1$sensorID$p2$Value
echo $URL
# -------------------------------------------------------
curl $URL
In fact, the PhP push program on the server is not only inserting the data into the MySQL table but is also acting as a trigger by sending two different types of mail depending on the value of the data that is received from the remote sensor.
Once the data is available in the MySQL table, it can be displayed (using ISD_viewData.php) as
In fact, one can run the shell script on any machine and the new value will appear when this pages is refreshed!
It is also possible to visualize the data graphically (using ISD_graphData.php)
All the codes used in creating this post are available on Github. The graph has been created with free tools available from JpGraph and the specific graph shown here is based on the sample shown here.
In this post we have demonstrated how data lying on remote Linux machine ( that is possibly connected to a physical sensor ) can be pushed into webserver and subsequently used for data analytics.
This is very inspirational and a very motivating material for all of us. I am glad that I have seen this post. The things that was acknowledge by our works will surely help us to achieve more awards in our life in the future. This website will surely help us in our battles that we will face
ReplyDeleteHello, I tried to download mosquitto-1.4.3-install-win32.exe (~200 kB) (Native build, Windows Vista and up). But version 1.4.3 is not available, version 1.4.12 is available. When I tried to install it Windows Defender is saying, "Virus Detected, removing it" and not allowing installation. What should I do? Is it safe to disable Defender for the installation? I downloaded from Vietnam, and KAIST, South Korea, but with same result. Thanks. Susmit Sen
ReplyDeletenegative entries for five minutes. After five minutes, they're cleared from your cache. But if you'd like, you can force XP not to cache these negative entries, so that you'll never run into this problem.
ReplyDeletethis page
I really appreciate this wonderful post that you have provided for us. I assure this would be beneficial for most of the people.
ReplyDeleteShortener
Graphical OLAP devices are utilized to show information in 2D or 3D cross tabs and outlines and charts with simple rotating of pivot.data science course in pune
ReplyDeleteThanks for sharing your valuable information to us, it is very useful
ReplyDeletedata science
ReplyDeleteSuch a very useful article. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. I would like to state about something which creates curiosity in knowing more about it. It is a part of our daily routine life which we usually don`t notice in all the things which turns the dreams in to real experiences. Back from the ages, we have been growing and world is evolving at a pace lying on the shoulder of technology."data science courses" will be a great piece added to the term technology. Cheer for more ideas & innovation which are part of evolution.
Such a very useful article. Very interesting to read this article. I have learn some new information.thanks for sharing. ExcelR
ReplyDeleteI feel very grateful that I read this. It is very helpful and very informative and I really learned a lot from it.
ReplyDeleteExcelR Business Analytics Course
Such a great blog, Internet of Things is able to collect data from remote devices over internet and send data for analysis. We can place the IoT environmental sensors on vehicles, devices and things which help you to see everything you need from anywhere.
ReplyDeleteI finally found great post here.I will get back here. I just added your blog to my bookmark sites. thanks.Quality posts is the crucial to invite the visitors to visit the web page, that's what this web page is providing.
ReplyDeletedata science course in mumbai
The information provided on the site is informative. Looking forward more such blogs. Thanks for sharing .
ReplyDeleteArtificial Inteligence course in Varanasi
AI Course in Varanasi
Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!
ReplyDeleteDigital marketing course
ReplyDeleteThank you for taking the time and sharing this information with us
Python Training In Hyderabad
I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article.
ReplyDeleteSimple Linear Regression
The Best article I Had Read Useful To All The Aspirants
ReplyDeleteDevOps Training in Hyderabad
DevOps Course in Hyderabad
Data Science Courses Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained!
ReplyDelete
ReplyDeleteThanks For Sharing The Wonderfull Content With Us !
Best Degree College In Hyderabad
Best Degree College In Attapur
Top And Best BBA College In Hyderabad
Top And Best B.Com College In Hyderabad
I've read this post and if I could I desire to suggest you some interesting things or suggestions. Perhaps you could write next articles referring to this article. I want to read more things about it!
ReplyDeleteData Analytics courses
Excellent work done by you once again here. This is just the reason why I’ve always liked your work. You have amazing writing skills and you display them in every article. Keep it going!
ReplyDeletedata scientist training and placement
Thank you for explaining process of collecting remote data so clearly.I really appreciate the way you broke everything down step by step—it made it so much easier to follow.
ReplyDeletehttps://iimskills.com/data-science-courses-in-westminster/
Great DIY project on collecting remote data over IoT! Your step-by-step instructions are clear and easy to follow, making it accessible for both beginners and experienced enthusiasts.
ReplyDeleteData science courses in Dubai
nice article
ReplyDeleteData science Courses in London
This DIY IoT guide on collecting remote data over HTTP is really insightful. It’s a fantastic way to get hands-on experience with IoT concepts. Thanks for sharing this detailed tutorial!
ReplyDeleteData science Courses in Canada
I couldn’t stop reading! The blog is clear, concise, and full of useful takeaways.
ReplyDeleteData science Courses in London
Great DIY guide on collecting remote data via IoT! This post is really helpful for anyone looking to build IoT systems that can gather data from remote locations. The steps and examples you’ve provided make the process more understandable. Thanks for sharing such practical knowledge for IoT enthusiasts!
ReplyDeleteData science courses in Glasgow
This post provides a fantastic DIY guide for setting up an IoT system that collects remote sensor data over the internet. The use of a simple shell script to simulate sensor data and push it to a MySQL database via a PHP script is a great way to get started with Iot. It's also impressive that the post goes further to include email alerts based on data thresholds and graphical data visualization. A great resource for anyone interested in building an IoT system from scratch!
ReplyDeleteData science Courses in Ireland
Great stuff! These Digital Marketing Courses in Bangalore are perfect for job seekers and professionals.
ReplyDeleteThis is a fantastic article on DIY IOT : Collecting Remote Data over the Internet! I really appreciate how you broke down the subject into easy-to-understand steps. Your examples were very helpful, and I learned a lot. Keep up the great work, and I’m excited to read more!
ReplyDeleteOnline Data Analytics Courses
Your insights are well-articulated and informative, making complex concepts easy to understand.
ReplyDeleteData Analytics Courses In Chennai
Your tutorial on enabling/disabling a button dropdown is simple yet effective. It’s a great resource for developers learning Java and J2EE. Well done!
ReplyDeleteData Analytics Courses In Bangalore
This DIY guide on collecting remote data over the internet is a fantastic resource for IoT enthusiasts. Thank you for the detailed instructions!
ReplyDeletedigital marketing course in chennai fees
"Great post! I found the information you shared to be incredibly insightful and well-researched. Your explanation of the topic was clear and easy to understand, and I especially appreciated the practical tips you included. Looking forward to reading more of your content in the future!"
ReplyDeleteData Science Scope in India