This week I updated the documentation, wrote installation instructions for Raspbian, Pidora and Arch Linux, updated the Dashboard a bit and fixed two memory leaks using valgrind.
Besides programming I also created a website for the project that contains project description, full documentation, screenshots and link to a demo version of the Dashboard. I wrote a post about the Dashboard on the official Raspberry Pi forum and got some positive feedback.
Read more →
This update is for weeks 6 and 7, because I was on holiday last Thursday through Tuesday and could not write an update last weekend.
In week 6 I fixed a few bugs in Dashboard mostly related to login issues and removed a major memory leak from angular-google-chart that was causing the Dashboard to freeze.
In week 7 I added support for logged data to the Dashboard. Now the user can change the time frame for history graphs and appropriate data is loaded from logger backend.
Read more →
This week I worked on backend logger. I used RRDtool for storing the information. The information is available through the REST api.
The logger stores CPU-usage, CPU-temperature, memory, network-throughput and storage-throughput information for this hour, day, week, month and year.
Next week I will be working on displaying the logged information in the dashboard. I will also try to provide direct access to RRDtool graphs from the REST api.
Next weekend I am going on holiday from Thursday to Monday and I will not have access to the internet, so I will not post an update next week.
Read more →
This week I was working on the dashboard. It is implemented in AngularJS as a single page JavaScript app. Layout is done using Bootstrap. I use Google Charts for displaying graphs.
I have implemented pages for CPU, memory, network and storage information with graphs.
Graphs display history information for values, but the app will currently freeze if left open too long, because too much data accumulates. I will fix this problem after the value logger is implemented.
Read more →
This week I was working on a JavaScript library for accessing REST api. I implemented it as a jQuery plugin. It contains functions for ajax request to REST api, formatting the numbers and calculating rate for throughput.
I also wrote documentation for the library.
I have created an example page, that displays some data from REST api with the new RPiJS plugin.
Next week I will start creating the Dashboard using AngularJS.
Read more →
This week I was working on basic modules of the REST api. Values are logically grouped in different modules. Each module collects its values, and the code from last week takes care of user management and parsing the values to JSON. I have also documented the REST api interface with descriptions of all values that are currently available.
Modules that I have developed:
memory - info about memory and swap usage cpu - info about cpu usage, load average, uptime and temperature network - info about available network interfaces, their IP, MAC addresses and number of bytes/packets send and received on each interface storage - info about mounted devices, used space on device and throughput read and write info I spent quiet some time developing code for gathering network device information, so I wrote a short guide with code for anyone interested: Get IP, IPv6 and MAC addresses using ioctl and procfs on Linux in C.
Read more →
Getting IP, IPv6 and MAC addresses on Linux is no easy task if you do not use ifconfig. The information on the internet is not very good, and the process is quite complicated. I have spent most of yesterday writing the code, so I decided to describe it here.
The whole code can be found at the bottom.
Listing the interfaces The first thing we need to do is get the names of network interfaces available on the system.
Read more →
This week I was working on the security part of REST api. I have made HTTP auth login option based on Monkey’s auth plugin. I have added the configuration files in which, the access permission are set. Then I have created a mock-up module, and written the code to parse it to JSON.
Besides coding I spent a lot of time thinking how the different parts of code will work together.
Read more →
I have been selected for this year’s Google Summer of Code. I will be coding for Monkey project.
Monkey project is a lightweight and powerful web server and development stack for GNU/Linux. It has been designed to be very scalable with low memory and CPU consumption, the perfect solution for embedded devices. Made for ARM, x86 and x64.
My project is Raspberry Pi Dashboard. I will be coding a REST api interface using Duda IO, to access various hardware features of Raspberry Pi, such as CPU and memory usage, GPIO, etc.
Read more →
Game cubes consist of 4 wooden blocks. Primery box with LED display, slave box connected by RF link and two secondary boxes connected only with IR signals. Pairs of boxes are connected with 5 IR lines, with which we can detect passage. The two pairs are connected with CC1101 wireless module. Each box has a 2S LiPo battery and a soft power button. On primary box is an LED display.
Read more →