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 <