When I got all this data logged and running, I wanted an easier way to show data than spreadsheets or queries. The end goal was actual graphs to show trends and what not. Introducing “phpgraphlib”. This is an open source piece of code built to implement charts/graphs into webpages with ease. This took a bit of work, but here’s the idea behind it:
- Be able to load a web page and show trends/data
- Pull this information on demand from a database
Once the tinkering was over, I had a working dashboard to pull two images and show them in a webpage that refreshes every 60 seconds. I ended up going a little overboard in customization, but it happens. Here’s the final build:
- Built a script that runs two sets of data and groups by hour: humidity and temperature
- Have a cron running every 5 minutes to compile this data into two separate PNG images to pull up online
- Have a dashboard that refreshes every minute and shows both of these images
At this point in time, you can see the graphs here: http://aasullivan.com/arduino/dashboard.html
Here’s where things started to get a little more complex. At this point, I have a wireless system to transmit data from multiple nodes to a central hub (node0) which collects and shows the data via serial connection.
The general idea/goal is this:
- Arduino Nodes send data to central node
- Central node is connected to home network and sends this data to a LAMP server (Linux-Apache-Mysql-PHP)
- The server takes this data, breaks it into a mysql statement, and pushes it into the database to log
This was a pretty straightforward process but took a lot of planning before taking this on to ensure everything went smoothly. I’m not going into detail for setting up a LAMP server but there is a massive amount of information online for this. If you have an old computer kicking around you could run as a headless server or want to run it as a VM, it will take anywhere from 15-20 minutes to fully install and be ready for this.
I’ll break this down into different parts:
- Mysql database set up (database/tables)
- PHP script to accept the data and log this
- PHP script to show information in webpage
- Actual Arduino code to compile then send this
This is the second part of the series for my Arduino wireless project I’ve been working on for a couple weeks now. You can start reading from the first post: http://aasullivan.com/?p=1146.
We have the idea, now we have to build it. I have three Arduinos set up at this point in this manner:
- (1) Set up as wireless receiver/hub; this will read data, print to Serial and log to ethernet eventually
- (2) Transmitters which simply read data every ~5 seconds to blindly send to receiver (node 0)
This layout will allow me to test from a couple devices to make sure the layout of the node IDs will work properly and be read properly as well. I ran into my first set of issues at this point: I can only read one Arduino at a time off Serial from the IDE, so went and imaged an older Dell D630 to handle the receiving end of things to troubleshoot the payload issues I ran into. Continue reading Arduino Wireless Logging, Post Two: The Design
I’ve had a number Arduino systems for some time now along with a large number of RF24 wireless modules and DHT11 humidity/temperature sensors. The idea I’ve had for some time is this:
- Arduino with a DHT11 sensor and RF24 wireless device pull then transmit data.
- Data goes to secondary hub/master Arduino using an RF24 module along with an Ethernet adapter (Wiznet 5100)
- This master hub then pushes the data to a web server containing a mysql database to log and store the information
Simple right? Wrong. This has been a project for the better part of 8 months now with little working results. Right up until the amazing “maniacbug” user built the RF24-master library for Arduino to handle most of the payload and data transactions. At this time, I have a working prototype and will keep posting information on this project soon! Stay tuned!
So I go in waves of games, projects, ideas, etc. Latest is Fallout Shelter on Android and it is massively addicting. The basic concept is this: You are the Overseer of a Vault, and you need to build it to keep people happy and maintain resources while unlocking new costumes and weapons.
TL;DR: Sims with the wasteland housing.
So this game is a riot, and it was wonderful right up until it crashed and wiped away all my content, including paid for bits. Reached out for a refund but didn’t hear anything as of today (3 days later). Onto the next bit: Lucky Patcher is an ungodly useful tool in these situations. That’s all I’m saying 😉
Lately I’ve been engrossed in a project to add some monitoring to my home. This includes temperature and humidity readings, along with monitoring for windows and doors eventually. This will be built almost entirely using Arduinos wherever possible.
To have a remotely viewable home dashboard to monitoring the house
Use Arduinos and cheap parts from Amazon to build this and code myself
At this point, I’ve built some of the systems but greatly need to expand upon this. More updates to (hopefully) come!
Had the idea in my head for a while now about doing a fileserver build to put all my media in one place. This includes years of movies, music and TV shows along with about 100GB of music rips. The goals of this were pretty simple:
- Have some form of redundancy, most likely in a RAID 1 or RAID 5 format
- Have enough horsepower to stream movies/videos on the fly, including conversions
- Have enough storage for all my current collection (~1.5TB) and future
At this point, I had some extra components lying around and got a sweet deal on an ASUS 990X motherboard and a set of 6 hard drives. Let’s get to the specs:
- ASUS 990X Sabertooth motherboard
- Corsaid 500W PSU
- Mushkin 240GB SSD
- (6) 750GB WD Black hard drives
- AMD 3.5GHz 8-Core CPU
- Hyper 212 Evo CPU cooler
- AMD 7770 GPU card with 2GB GDDR5 RAM
- Rosewill Stealth tower
- (2) Inline SATA power cords
- (6) 90 Degree SATA cables
So I’ve been working with this project off and on, mainly off due to time constraints with a new work shift/promotion. I’ve split the logs and dashboard readouts to allow for easier pulling of individual data. What this allowed me to do was to couple this with WordPress using iFrame to load the individual pieces. I then set up multiple pages for each PHP document to allow the refreshes to work normally. I’ve build and gotten a working version of a single ping test, so that’s off the checklist. My next goal is to build a queue of sorts to pull information from for a polling cycle depending on type of test, then run the tests I want. I’m starting with ICMP, but hope to go for basic SNMP once this works out. Stay tuned as always!
Been debating on how to keep an eye on my home network and decided to take a swing at getting a monitoring system built from scratch to build my coding skills more. General idea:
- Have a list of devices stored in a database with information such as IPs and names
- Pull this device list, and run a ping sweep on all devices to test for activity/status
- Log this into the database for reference
- Build a lightweight front end to show this information at a glance
At this point, I’ve gotten a basic running version of this on a dedicated Linux system (Ubuntu 12.04LTS with a LAMP install). It’s extremely fast and runs every 5 minutes out of a cron entry. I’ve gotten most of the items done:
- Database has multiple devices which can be added through front end GUI based off PHP
- GUI (webpage) refreshes every 60 seconds and shows the last pull status along with logs from recent pulls to look for trends
- Cron entry kicks off Perl poller that pulls information from DB and pings each device; 10 devices in less than a second total
- Stable and has been working without issue for a few days now
I’ve also gone and tested a few of the devices, unplugging them and what not and still show up without issue. Mind you, this is a dirty way to show this information and needs cleaning, but it works. Next goals are to clean up the dashboard a bit, maybe add a search tool in the near future and some color logging to note the bad devices. Who knows, maybe a ticket system in the future? Stay tuned as always!