Arduino mit 6x DS18B20 und NRF24L01
NRF24L01 – Board Schematic & Pin-Out
Library http://tmrh20.github.io/RF24/
nRF24L01_Product_Specification_v2_0
DS18B20
Sensor 01 (Raumtemperatur): 0x10, 0xC4, 0x1E, 0x0A, 0x03, 0x08, 0x00, 0xEF
Sensor 02: 0x28, 0xFF, 0x0C, 0x0C, 0x86, 0x16, 0x04, 0xEF
Sensor 03: 0x28, 0xFF, 0xB2, 0x89, 0x90, 0x16, 0x05, 0x9F
Sensor 04: 0x28, 0xFF, 0x46, 0xC5, 0x86, 0x16, 0x05, 0x4F
Sensor 05: 0x28, 0xFF, 0x81, 0x93, 0x90, 0x16, 0x05, 0x76
Sensor 06: 0x28, 0xFF, 0xC7, 0x2E, 0x91, 0x16, 0x04, 0xFA
Raspberry Pi 3 mit NRF24L01
von hier: https://tutorials-raspberrypi.de/funkkommunikation-zwischen-raspberry-pis-und-arduinos-2-4-ghz/
sudo apt-get update
sudo apt-get upgrade
wget http://tmrh20.github.io/RF24Installer/RPi/install.sh
chmod +x install.sh
./install.sh
cd rf24libs/RF24
sudo apt-get install python-dev libboost-python-dev
sudo apt-get install python-setuptools
sudo apt-get install librrd-dev // !!!!
RRDTOOL
rrdtool create waermepumpe_temps.rrd --step 60 \
DS:t01:GAUGE:150:0:100 \
DS:t02:GAUGE:150:0:100 \
DS:t03:GAUGE:150:0:100 \
DS:t04:GAUGE:150:0:100 \
DS:t05:GAUGE:150:0:100 \
DS:t06:GAUGE:150:0:100 \
RRA:AVERAGE:0.5:1:14400 \
RRA:AVERAGE:0.5:1440:3600 \
RRA:MAX:0.5:1440:3600 \
RRA:MIN:0.5:1440:3600
/*
Copyright (C) 2017 Christian Bauer <oe3cjb@qth.at>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*/
#include <rrd.h>
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
#include <unistd.h>
#include <RF24/RF24.h>
using namespace std;
RF24 radio(22,0);
bool radioNumber = 1;
/********************************/
// Radio pipe addresses for the 2 nodes to communicate.
const uint8_t pipes[][6] = {"Waerm","reuaB"};
int main(int argc, char** argv){
typedef struct {
long t01;
long t02;
long t03;
long t04;
long t05;
long t06;
} sensoren;
sensoren wp;
int rrd_argc = 3;
char* rrd_argv[]={"update","/home/pi/waermepumpe_temps.rrd",NULL,NULL};
cout << "Starte Wärmepumpen-Temperatur-Logger!" << endl;
// Setup and configure rf radio
radio.begin();
radio.setDataRate(RF24_250KBPS);
// optionally, increase the delay between retries & # of retries
radio.setRetries(15,15);
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
radio.startListening();
// forever loop
while (1)
{
// if there is data ready
if ( radio.available() )
{
// Dump the payloads until we've gotten everything
stringstream workhorse;
string rrd_update_string;
// laenge = radio.getDynamicPayloadSize();
// Fetch the payload, and see if this was the last one.
while(radio.available()){
// radio.read( &got_time, sizeof(unsigned long) );
radio.read( &wp, sizeof(wp) );
}
// Ausgeben, was empfangen wurde
//cout << "rrdtool update ~/waermepumpe_temps.rrd N:" << ((float) wp.t01)/100 << ":" << ((float) wp.t02)/100 << ":" << ((float) wp.t03)/100 << ":" << ((float) wp.t04)/100 << ":" << ((float) wp.t05)/100 << ":" << ((float) wp.t06)/100 << endl;
workhorse << "N:" << ((float) wp.t01)/100 << ":" << ((float) wp.t02)/100 << ":" << ((float) wp.t03)/100 << ":" << ((float) wp.t04)/100 << ":" << ((float) wp.t05)/100 << ":" << ((float) wp.t06)/100;
//rrd_update_string << "N:" << ((float) wp.t01)/100 << ":" << ((float) wp.t02)/100 << ":" << ((float) wp.t03)/100 << ":" << ((float) wp.t04)/100 << ":" << ((float) wp.t05)/100 << ":" << ((float) wp.t06)/100;
rrd_update_string = workhorse.str();
const char* cstr1 = rrd_update_string.c_str();
cout << rrd_update_string << endl;
rrd_argv[2] = (char *) cstr1;
rrd_clear_error();
rrd_update(rrd_argc,rrd_argv);
}
delay(5000); //Delay after payload responded to, minimize RPi CPU time
} // forever loop
return 0;
}
rrdtool graph bild.png \
#!/bin/sh
rrdtool graph waermepumpe.png --width 640 --height 480 \
DEF:temp01=waermepumpe_temps.rrd:t01:AVERAGE \
DEF:temp02=waermepumpe_temps.rrd:t02:AVERAGE \
DEF:temp03=waermepumpe_temps.rrd:t03:AVERAGE \
DEF:temp04=waermepumpe_temps.rrd:t04:AVERAGE \
DEF:temp05=waermepumpe_temps.rrd:t05:AVERAGE \
DEF:temp06=waermepumpe_temps.rrd:t06:AVERAGE \
LINE2:temp01#00FF00:Zimmer \
LINE2:temp02#FFB400:Heizung-IN \
LINE2:temp03#FF0000:Heizung-OUT \
LINE2:temp05#0000FF:Quelle-IN \
LINE2:temp04#00FFFF:Quelle-OUT \
LINE2:temp06#990099:Wasserspeicher
USERNAME="wetterkamera"
PASSWORD="Kj69Ap"
SERVER="192.168.29.164"
# local directory to pickup *.tar.gz file
FILE="/home/pi"
# remote server directory to upload backup
BACKUPDIR="/"
# login to remote server
ftp -n -i $SERVER <