Things used in this project

Hardware components:
AT&T IOT Starter Kit
This great kit has a NXP FRDM-K64F MCU and an Avnet M14A2A Cellular Shield
×1
Grove 20starter 20kit 20plus 20  20intel c2 ae 20iot2 01
SeeedStudio Grove starter kit plus for Intel Edison
Simply a must have for quick prototyping!
×1
Rain/Snow Sensor
×1
Adafruit ds18b20 weatherproof temperature sensor
×1
Software apps and online services:
AT&T M2X
AT&T Flow
Data stream network%402x
PubNub Publish/Subscribe API
mbed cloud IDE and Compiler
Hand tools and fabrication machines:
Armmbedlogo
ARM mbed mbed

Code

SnowmeltC/C++
The snowmelt code is hosted at developer.mbed.org. From here, you can easily import it to your mbed IDE workspace. Just follow the link https://developer.mbed.org/users/petehoffswell/code/SnowMelt_Dist/
https://developer.mbed.org/users/petehoffswell/code/SnowMelt_Dist/
PubNub EON ChartsHTML
This code reads data and plots the data in various ways.
<html>
  <head>
    <script type="text/javascript" src="https://pubnub.github.io/eon/v/eon/1.0.0/eon.js"></script>
    <link type="text/css" rel="stylesheet" href="https://pubnub.github.io/eon/v/eon/1.0.0/eon.css"/>
  </head>
  <body>

    <center><h1>Smowmelt Monitor</h1></center>
    <div id="airtemp">Air Temp</div>
    <div id="probe0"></div>
    <div id="probe-overtime"></div>
    <div id="light"></div>
    <div id="wind"></div>

    <script>
      var pubnub = new PubNub({
        publishKey: 'pub-KEY',
        subscribeKey: 'sub-KEY'
      });
      eon.chart({
        pubnub: pubnub,
        channels: ['SnowMelt'],
        history: true,
        transform: function(m) {
          return {
            eon: {
              probe0: m.eon.probe0
            }
          }
        },
        generate: {
          bindto: '#probe0',
          data: {
            type: 'gauge',
          },
          gauge: {
            label:{
                format: function(value, ratio){
                  return value;
                  },
                },
            min: 0,
            max: 80
          },
          color: {
            pattern: ['#FF0000', '#FFFF00', '#00FF00'],
            threshold: {
              values: [20, 35, 50]
            }
          }
        }
       });
    </script>


    <script>
      var pubnub = new PubNub({
        publishKey: 'pub-c-1aa40d5d-c3f2-4694-a46c-9959c4573ce5',
        subscribeKey: 'sub-c-3c30710c-c491-11e6-add0-02ee2ddab7fe'
      });
      eon.chart({
        pubnub: pubnub,
        channels: ['wx'],
        history: true,
        transform: function(m) {
          return {
            eon: {
              temperature: m.eon.temperature
            }
          }
        },
        generate: {
          bindto: '#airtemp',
          data: {
            type: 'gauge',
          },
          gauge: {
            label:{
                format: function(value, ratio){
                  return value;
                  },
                },
            min: 0,
            max: 80
          },
          color: {
            pattern: ['#FF0000', '#FFFF00', '#00FF00'],
            threshold: {
              values: [20, 35, 50]
            }
          }
        }
       });
    </script>


    <script>
      var channel = "SnowMelt";
      eon.chart({
        channels: [channel],
        history: true,
        flow: true,
        transform: function(m) {
          return {
            eon: {
              probe0: m.eon.probe0
            }
          }
        },

        pubnub: pubnub,
        limit: 144,
        generate: {
          bindto: '#probe-overtime',
          data: {
            type: 'area',
            labels: true
          },
          axis: {
             x: {
               label: ""
             },
             y: {
               label: ""
            }
          },
          tooltip: {
            show: true
          },
          point: {
            show: true
          }
        }
      });
    </script>



    <script>
      var channel = "SnowMelt";
      eon.chart({
        channels: [channel],
        history: true,
        flow: true,
        transform: function(m) {
          return {
            eon: { light: m.eon.light }
          }
        },

        pubnub: pubnub,
        limit: 144,
        generate: {
          bindto: '#light',
          data: {
            type: 'area',
            labels: true
          },
          axis: {
             x: {
               label: ""
             },
             y: {
               label: ""
            }
          },
          tooltip: {
            show: true
          },
          point: {
            show: true
          }
        }
      });
    </script>

    <script>
      var channel = "wx";
      eon.chart({
        channels: [channel],
        history: true,
        flow: true,
        transform: function(m) {
          return {
            eon: {
                wind_mph: m.eon.wind_mph,
                wind_gust_mph: m.eon.wind_gust_mph,
                   }
          }
        },

        pubnub: pubnub,
        limit: 144,
        generate: {
          bindto: '#wind',
          data: {
            type: 'area',
            labels: true
          },
          axis: {
             x: {
               label: ""
             },
             y: {
               label: ""
            }
          },
          tooltip: {
            show: true
          },
          point: {
            show: true
          }
        }
      });
    </script>

<!--
   <iframe allowfullscreen="" border="0" frameborder="0" height="530" mozallowfullscreen="" scrollong="no" src="https://live1.brownrice.com/embed/cityofholland1/?skin=glow" width="740"></iframe>
-->
</body>
</html>

Credits

Pete2014
Pete Hoffswell

Network Engineer for All the People. Internet advocate. Microcontroller Fan. Maker.

Replications

Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Barbecue Planner with Amazon DRS integration
Advanced
  • 130
  • 3

Full instructions

A barbecue shaped alarm that tells you when it’s going to be barbecue weather. It will order your supplies through the Amazon DRS system.

Catch the Tennis ball
Advanced
  • 253
  • 7

Work in progress

Use Nvidia GPU accelerated OpenVX to track a Tennis ball

Amazon DRS Weight Sensor
Advanced
  • 1,072
  • 5

Work in progress

This device tracks the use of any product and automatically reorders it from Amazon when it is about to run out without your interaction.

Flying Manatee
Advanced
  • 1,240
  • 7

The Flying Manatee flaps its wings in reaction to motion. It's a great project to get you started with simple DIY maker projects.

Mailbox 2.0
Advanced
  • 2,793
  • 78

Work in progress

Real time notifications for when your precious packages and letters arrive.

Mailbox 2.0

Team CKTS

SmartWindow
Advanced
  • 7,889
  • 125

Full instructions

A window that tints itself according to how much light is incident upon it. You can also control the window with an iOS application!

SmartWindow

Team TINTerns

ProjectsCommunitiesContestsLiveJobsBetaFree StoreBlogAdd projectSign up / Login
Respect project