A physical dial showing network usage

Similar projects worth following
This is a "hack day" project to visualise the network usage at an event. It is Arduino based using a Wiznet network board, a servo, and a short strip of addressable LEDs.

The heart of the system is an Arduino clone that is requesting the information, decoding it, calculating the rate since the last sample, and moving a servo to the correct position for that value. Addressable LEDs were also added that follow the position of the arrow to add a little glow. 

The Arduino connects to a Monowall firewall and polls for the current downstream usage using an API for the web interface. 

The case is an old Apple screen case. The internal frame was laser cut from some recycled plastic, and the arrow is 3D printed.

  • 1 × Arduino Pro Nano I used a cheap clone
  • 1 × WIZ550io Ethernet adapter
  • 1 × Servo One designed for model aircraft
  • 1 × Addressable LED strip "Neopixel" compatible
  • 1 × FTDI Adapter Used both for programming and supplying 3.3V for the Ethernet adapter

View all 6 components

  • Where is the code?

    Alistair MacDonald08/19/2014 at 20:45 0 comments

    in all honesty it is a mess having been produced in the sleep deprived haze of the hack day and needs both tidying up and commenting. I should get this done soon and uploaded to GitHub.

  • The Monowall Stats API

    Alistair MacDonald08/19/2014 at 18:59 0 comments

    The API I am using to access the usage data from the Monowall firewall is intended for use on the web admin interface but can be used for anything. Unlike the rest of the interface that is written in PHP, this is written in C to make it more efficient.

    The actual call is simple if you know about. Just type http://firewall.ip.address/stats.cgi?interface in to your browser replacing the interface with the WAN name from https://firewall.ip.address/interfaces_assign.php .

    This will return 3 numbers. The first is the time of the request, second is the data downloaded, and the third is the data uploaded. You will need to use the last reading and the current one to calculate the actual throughput.

  • The issue of authentication

    Alistair MacDonald08/12/2014 at 17:00 0 comments

    Currently the Arduino is connecting directly to the Monowall firewall on port 80 and requesting "/stats.cgi?vr0". This is an endpoint for the Web GUI API to monitor network usage in real time. vr0 is the name in the Interface on the WAN side.

    In the HTTP headers we are sending "Authorization: Basic ****************************" where the starts are replaced with "username:password" base 64 encoded. This works well, but the password is as good as in the clear so is a bit of a security issue. Even if we have a secure connection between the firewall and the Speed-o-meter anyone administering the firewall will also be sending the password insecurely.

    The solution to this is to use as HTTPS connection to the firewall, but the Arduino is not powerful enough to use HTTPS on its own. Normally I would proxy the request via a server that can connect via HTTPS, and this is what I started to do, but then I decided will look at creating a Monowall plugin. This plugin will either give access to the bandwidth data without authentication or encryption, or perhaps push the data to the Arduino. Watch this space.

  • System diagram added

    Alistair MacDonald08/12/2014 at 16:46 0 comments

    I have uploaded a diagram of how the system works, and how it fits in to the network.

  • Schematic Uplaoded

    Alistair MacDonald08/10/2014 at 23:41 0 comments

  • Video Uploaded

    Alistair MacDonald08/10/2014 at 15:46 0 comments

    I took the opportunity to link the Speed-o-meter in to Maker Space's network on Saturday to create a short demonstration video. Enjoy.

View all 6 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates