9 Sept 2015

DIY IOT : Collecting Remote Data over the Internet

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)

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.

33 comments:

  1. 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

    ReplyDelete
  2. Hello, 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

    ReplyDelete
  3. negative 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.
    this page

    ReplyDelete
  4. I really appreciate this wonderful post that you have provided for us. I assure this would be beneficial for most of the people.
    Shortener

    ReplyDelete
  5. 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

    ReplyDelete
  6. Thanks for sharing your valuable information to us, it is very useful
    data science

    ReplyDelete

  7. Such 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.

    ReplyDelete
  8. Such a very useful article. Very interesting to read this article. I have learn some new information.thanks for sharing. ExcelR

    ReplyDelete
  9. I feel very grateful that I read this. It is very helpful and very informative and I really learned a lot from it.
    ExcelR Business Analytics Course

    ReplyDelete
  10. 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.

    ReplyDelete
  11. I 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.
    data science course in mumbai

    ReplyDelete
  12. The information provided on the site is informative. Looking forward more such blogs. Thanks for sharing .
    Artificial Inteligence course in Varanasi
    AI Course in Varanasi

    ReplyDelete
  13. 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!

    Digital marketing course

    ReplyDelete

  14. Thank you for taking the time and sharing this information with us
    Python Training In Hyderabad

    ReplyDelete
  15. I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article.

    Simple Linear Regression

    ReplyDelete
  16. 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
  17. 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!
    Data Analytics courses

    ReplyDelete
  18. 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!
    data scientist training and placement

    ReplyDelete
  19. 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.
    https://iimskills.com/data-science-courses-in-westminster/


    ReplyDelete
  20. 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.
    Data science courses in Dubai

    ReplyDelete
  21. 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!
    Data science Courses in Canada

    ReplyDelete
  22. I couldn’t stop reading! The blog is clear, concise, and full of useful takeaways.
    Data science Courses in London

    ReplyDelete
  23. 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!
    Data science courses in Glasgow

    ReplyDelete
  24. 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!
    Data science Courses in Ireland

    ReplyDelete
  25. Great stuff! These Digital Marketing Courses in Bangalore are perfect for job seekers and professionals.

    ReplyDelete
  26. This 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!
    Online Data Analytics Courses

    ReplyDelete
  27. Your insights are well-articulated and informative, making complex concepts easy to understand.
    Data Analytics Courses In Chennai

    ReplyDelete
  28. 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!
    Data Analytics Courses In Bangalore

    ReplyDelete
  29. This DIY guide on collecting remote data over the internet is a fantastic resource for IoT enthusiasts. Thank you for the detailed instructions!
    digital marketing course in chennai fees

    ReplyDelete
  30. "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!"
    Data Science Scope in India

    ReplyDelete