Log RuuviTags data to SQLite database and Dweet.io and show charts on the RPi's website
Clone or download
dimamedia Update ruuvitag-logger.py
Repaired bug in checking for missing database table.
Latest commit 0da8494 Apr 8, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
templates Update ruuvitag.html Apr 3, 2017
LICENSE Initial commit Mar 30, 2017
README.md Update README.md Mar 31, 2017
ruuvitag-logger.py Update ruuvitag-logger.py Apr 8, 2017
ruuvitag-web.py Create ruuvitag-web.py Mar 30, 2017

README.md

RuuviTag-logger

Log RuuviTags data to SQLite database and Dweet.io and show charts on the RPi's website

Charts demo: https://dima.fi/ruuvitag-logger/

Used elements

Install

Create ruuvitag folder in pi's home:

$ mkdir /home/pi/ruuvitag

Put files like this:

ruuvitag
 |- ruuvitag-logger.py
 |- ruuvitag-web.py
 |- templates
      |- ruuvitag.html

Setup logger

Edit ruuvitag-logger.py file and set desired settings.

List and name your tags:

tags = {
    'CC:CA:7E:52:CC:34': '1: Backyard',
    'FB:E1:B7:04:95:EE': '2: Upstairs',
    'E8:E0:C6:0B:B8:C5': '3: Downstairs'
}

Chose RuuviTag's data format:

  • 1 - Weather station firmware
  • 3 - Sensor tag firmware (in development)
dataFormat = '1'

If you want to use Dweet.io, enable it and set Thing name:

dweet = True # Enable or disable dweeting True/False
dweetUrl = 'https://dweet.io/dweet/for/' # dweet.io url
dweetThing = 'myHomeAtTheBeach' # dweet.io thing name

Script will put all Tag's sensors in one dweet for one Thing.

{
	'TAG_NAME1 temperature': VALUE,
	'TAG_NAME1 humidity': VALUE,
	'TAG_NAME1 pressure': VALUE,
	'TAG_NAME2 temperature': VALUE,
	'TAG_NAME2 humidity': VALUE,
	'TAG_NAME2 pressure': VALUE,
	etc...
}

If you want to save data to local database, enable it:

db = True # Enable or disable database saving True/False
dbFile = '/home/pi/ruuvitag/ruuvitag.db' # path to db file

Script will automatically create ruuvitag.db file and table for sensor data.

Set execution rights to the file:

$ chmod 755 ruuvitag-logger.py

Now you can try to run it manually:

$ ./ruuvitag-logger.py
OR
$ /home/pi/ruuvitag/ruuvitag-logger.py
OR
$ python3 ruuvitag-logger.py

Set crontab to run logger automatically every 30 mins:

Add this line to the /etc/crontab file

*/30 *  * * *   pi      /home/pi/ruuvitag/ruuvitag-logger.py > /home/pi/ruuvitag/ruuvitag.log 2> /home/pi/ruuvitag/ruuvitag.err

Cron will output success log to ruuvitag.log file and errors to ruuvitag.err file.

Setup web-server

Edit ruuvitag-web.py file.

Set charting period in days:

N = 30 # show charts for 30 days

Set execution rights to the file:

$ chmod 755 ruuvitag-web.py

Now you can try to run it manually with sudo:

$ sudo ./ruuvitag-web.py
OR
$ sudo /home/pi/ruuvitag/ruuvitag-web.py
OR
$ sudo python3 ruuvitag-web.py

To run script in background, use nohup:

$ sudo nohup ./ruuvitag-web.py &

The server's output log will be in nohup.out file.

Server will listen requests in 80 port as normal web server do. Just open Raspberry's IP address in your browser.

To change page layout or to add more stuff, tinker with templates/ruuvitag.html template file.