Batterie Funk Windmesser, Barometer über Arduino
Moderator: Co-Administratoren
- Helikiller
- Beiträge: 143
- Registriert: 10.09.2014, 06:53
- Wohnort: 21438 Brackel
Batterie Funk Windmesser, Barometer über Arduino
Anbei ein paar Fotos:
LG Helikiller
Meine CCU2; 605 Kanäle in 180 Geräten + RaspiMatic P3 98 Kanäle in 31 Geräten
Meine CCU2; 605 Kanäle in 180 Geräten + RaspiMatic P3 98 Kanäle in 31 Geräten
- Helikiller
- Beiträge: 143
- Registriert: 10.09.2014, 06:53
- Wohnort: 21438 Brackel
Re: Batterie Funk Windmesser, Barometer über Arduino
So jetzt habe ich die Verbindung der nRF24L01+ hinbekommen.
Aber leider wird in meinem Fall das Licht in LUX nicht übertragen. Hat jemand eine Idee oder Hinweis?
Hier der Code für den "Empfaenger_105_MEGA2560"
Aber leider wird in meinem Fall das Licht in LUX nicht übertragen. Hat jemand eine Idee oder Hinweis?
Hier der Code für den "Empfaenger_105_MEGA2560"
Code: Alles auswählen
// Versionsbezeichner "homeduino_21.ino / Stand: 2014.09.13";
// fuer Arduino Mega 2560 mit Arduino 1.6.4
// Verfasser: Eugen Stall
// diese Software erlaubt die Steuerung der Pinfunktionen mit einfachen Browserbefehlen
// verwendete Quellen fuer libraires und Programme siehe Beschreibung und Erläuterungen im Quelltext
// die aktuellste Version ist immer hier:
// http://www.stall.biz/?project=homeduino-der-universelle-lanwlan-arduino-fur-die-hausautomation
// Sytemvariablen anlegen:
// Arduino_105_IP = String
// Arduino_105_wind_max = Zahl
// Arduino_105_wind_avg = Zahl
// Arduino_105_barometer = Zahl
// Arduino_105_battery = Zahl
// Arduino_105_solar = Zahl
// Arduino_105_light = Zahl
////////////////////////////////////////////////////////////////////////
#include <Ethernet.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
#include <Time.h>
#include <TimeAlarms.h>
////////////////////////////////////////////////////////////////////////
//Netzwerk-Konfiguration muss individuell hier eingegeben werden
byte ip[] = {192, 168, 178, 105}; //das ist die IP des Arduino //<<user-eingabe<<
byte mac[] = { 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xC5 }; //nur 1x im Netz //<<user-eingabe<<
byte ccu[] = {192, 168, 178, 109 }; //das ist die IP der CCU //<<user-eingabe<<
byte gateway[] = { 192, 168, 178, 99 }; // Gateway
byte dnsserver[] = { 192, 168, 178, 99 }; // DNS Server
byte subnet[] = { 255, 255, 255, 0 }; // Subnet
String hm_systemvariable = "Arduino_105_";
int RETRY = 5; // Anzahl versuche etwas an die CCU zu senden.
EthernetClient client;
RF24 radio (3, 2);
const int num_reps = 100;
uint8_t PIPE_NAME[7] = {"NET"};
unsigned long delta_time = 3600000; // jede Stunde werden alle Inputs aktualisiert
unsigned long delta_tx = 500; //in ms, minimaler Abstand der Telegramme an die CCU
unsigned long next_tx = 0;
boolean maxTimeExpired = false;
float deltaT = 0.2;
float deltaH = 1;
int data[12];
int datum;
float temp_tur;
String I;
char status;
double T, P, p0, a;
float last_lux_value;
double last_baro_value;
double last_baroT_value;
float airPressure;
float deltaAirPress = 1;
float windSpeed;
float deltaWindSpeed = 2.5;
float batteryState;
float deltaBatteryState = 0.1;
float solarState;
float deltaSolarState = 0.1;
int luminosity;
int deltaLuminosityPercent = 5;
void setup()
{
Serial.begin(57600); //Pins 10,11,12 & 13 fuer ethernet shield verwendet
printf_begin();
setTime(1, 1, 1, 1, 1, 1); // set any dummy Time... (01:01:01 1.1.2001)
Serial.println("Starting Setup");
Ethernet.begin(mac, ip, dnsserver, gateway, subnet);
delay(1000);
Serial.println("Ethernet Setup done");
int result = client.connect(ccu, 8181);
Serial.print("Connected to CCU with Statuscode:");
Serial.println(result);
IPAddress myIp = Ethernet.localIP();
Serial.print("LocalIP:");
Serial.println(Ethernet.localIP());
char myIpString[24]; //IP auslesen
sprintf(myIpString, "%d.%d.%d.%d", myIp[0], myIp[1], myIp[2], myIp[3]);
I = myIpString;
// Update der IP in Homematic, dann sieht man am Timestamp die Startzeit des Arduino
client.println("GET /xy.exe?antwort=dom.GetObject('" + hm_systemvariable + "IP" + "').State('" + I + "')");
client.println();
delay(5000);
Serial.println("Starting Radio Setup");
radio.begin();
radio.openReadingPipe(1, PIPE_NAME);
radio.startListening();
radio.enableDynamicPayloads();
radio.setDataRate(RF24_250KBPS);
radio.printDetails();
Serial.println("NET Initialisiert");
Serial.println("57600 BAUD Initialisiert");
delay(3000);
Alarm.timerRepeat(60 * 60, UpdateAll); // Ein volles Update alle 60 min.
// client.println();
}
void loop()
{
// Hier sind keine Digitalen Trigger vorhanden, also koennen die Eingaenge einfach alle 30 Secs abgefragt werden.
checkRadio();
maxTimeExpired = false;
for (int i = 0; i < 60; i++) {
Alarm.delay(3000);
checkRadio();
}
}
void UpdateAll() {
maxTimeExpired = true;
}
boolean set_sysvar(String befehl) {
for (int j = 0; j < RETRY; j++) {
Ethernet.begin(mac, ip);
while (millis() < next_tx) {
delay(1000);
} //warten bis time > next_tx oder timeout
int result = 1;
next_tx = millis() + delta_tx;
if (!client.connected()) {
Serial.print("Stopping closed Connection.");
Serial.print("LocalIP:");
Serial.print(Ethernet.localIP());
client.flush();
client.stop();
Serial.println(". Initiating Connection.");
result = client.connect(ccu, 8181);
}
if (result == 1 || client.connected())
{
Serial.print("Connected. Command = ");
Serial.print(befehl);
client.println(befehl);
client.println();
Serial.println(". Disconnecting...");
client.stop();
return true;
} else {
Serial.print("Problem Connecting. Got Error Code:");
Serial.println(result);
}
}
return false;
}
String constructCommand(String name, String value) {
return "GET /xy.exe?antwort=dom.GetObject('" + hm_systemvariable + name + "').State(" + value + ")";
}
void checkRadio() {
if (!radio.available())
return;
uint16_t data[6];
radio.read(&data, 12);
float maxWind = float(data[0]) / 12;
float avgWind = float(data[1]) / 12;
float pressure = float(data[2]) / 12;
float battery = float(data[3]) / 12;
float solar = float(data[4]) / 12;
uint16_t light = data[5];
Serial.print("Maximaler Wind: ");
Serial.print(maxWind);
Serial.print(" km/h / ");
Serial.print("Durchschnittlicher Wind: ");
Serial.print(avgWind);
Serial.print(" km/h / Light: ");
Serial.print(light);
Serial.print(" lux / Baro: ");
Serial.print(pressure, 2);
Serial.println(" hPa");
Serial.print("Batteriespannung: ");
Serial.print(battery);
Serial.print(" V / ");
Serial.print("Solarspannung: ");
Serial.print(solar);
Serial.println(" V");
set_sysvar(constructCommand("wind_max", String(maxWind, 1)));
if (battery > 0.0) {
set_sysvar(constructCommand("wind_avg", String(avgWind, 1)));
set_sysvar(constructCommand("barometer", String(pressure, 1)));
set_sysvar(constructCommand("battery", String(battery, 1)));
set_sysvar(constructCommand("light", String(light, 1)));
set_sysvar(constructCommand("solar", String(solar, 1)));
}
}
LG Helikiller
Meine CCU2; 605 Kanäle in 180 Geräten + RaspiMatic P3 98 Kanäle in 31 Geräten
Meine CCU2; 605 Kanäle in 180 Geräten + RaspiMatic P3 98 Kanäle in 31 Geräten
-
- Beiträge: 12886
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1584 Mal
- Danksagung erhalten: 221 Mal
Re: Batterie Funk Windmesser, Barometer über Arduino
prüfe mal die "get" - zeilen ggf fehlen da anführungsseichen...?? ( noch mal mit dem original vergleichen )
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
- Helikiller
- Beiträge: 143
- Registriert: 10.09.2014, 06:53
- Wohnort: 21438 Brackel
Re: Batterie Funk Windmesser, Barometer über Arduino
Ich habe folgendes:dondaik hat geschrieben:prüfe mal die "get" - zeilen ggf fehlen da anführungsseichen...?? ( noch mal mit dem original vergleichen )
Code: Alles auswählen
String constructCommand(String name, String value) {
return "GET /xy.exe?antwort=dom.GetObject('" + hm_systemvariable + name + "').State(" + value + ")";
}
LG Helikiller
Meine CCU2; 605 Kanäle in 180 Geräten + RaspiMatic P3 98 Kanäle in 31 Geräten
Meine CCU2; 605 Kanäle in 180 Geräten + RaspiMatic P3 98 Kanäle in 31 Geräten
Re: Batterie Funk Windmesser, Barometer über Arduino
Kurzes Feedback von meiner Installation.
Ich habe den Code etwas angepasst, da ich immer mal wieder einen eingefrorenen Arduino hatte. Ich denke das Problem lag bei einer nicht 100% stabilen Stromversorgung. Aus diesem Grund habe ich in die Zu- und Ableitung zum DC/DC WAndler noch einen 100uF Elko eingebaut. Zudem initialisiere ich das NRF Modul bei jedem Aufruf neu, nur um sicher zu gehen.
Weiter hatte ich eine Kollision mit der NRF Frequenz und meinem WLAN. Default mässig senden diese auf Kanal 76 (RF24 Lib). Der Kanal ist 2'400 + Kanal in MHz. Somit ist Kanal 76 in der Nähe von WLAN Kanal 11-13 bei 2.4GHz WLAN vor allem dann ein Problem, wenn auch noch mit grosser Bandbreite (40MHz) gesendet wird. Bei mir stören die sich jeweils gegenseiteitig. Kanal 11 ist bei 2462 MHz bei 40MHz Bandbreite gibt es noch jeweils 20MHz drunter und drüber somit landet Kanal 76 vom NRF sauber in der WLAN Übertragung (NRF : 2476MHz / WLAN bei Kanal 11 & 40MHz Bandbreite : 2442 - 2482 MHz).
Zudem habe ich dem NRF am SMA Anschluss eine "richtige" WLAN Antenne verpasst. Nun läuft alles wieder problemlos.
Update des Codes erfolgt bald.
Ich habe den Code etwas angepasst, da ich immer mal wieder einen eingefrorenen Arduino hatte. Ich denke das Problem lag bei einer nicht 100% stabilen Stromversorgung. Aus diesem Grund habe ich in die Zu- und Ableitung zum DC/DC WAndler noch einen 100uF Elko eingebaut. Zudem initialisiere ich das NRF Modul bei jedem Aufruf neu, nur um sicher zu gehen.
Weiter hatte ich eine Kollision mit der NRF Frequenz und meinem WLAN. Default mässig senden diese auf Kanal 76 (RF24 Lib). Der Kanal ist 2'400 + Kanal in MHz. Somit ist Kanal 76 in der Nähe von WLAN Kanal 11-13 bei 2.4GHz WLAN vor allem dann ein Problem, wenn auch noch mit grosser Bandbreite (40MHz) gesendet wird. Bei mir stören die sich jeweils gegenseiteitig. Kanal 11 ist bei 2462 MHz bei 40MHz Bandbreite gibt es noch jeweils 20MHz drunter und drüber somit landet Kanal 76 vom NRF sauber in der WLAN Übertragung (NRF : 2476MHz / WLAN bei Kanal 11 & 40MHz Bandbreite : 2442 - 2482 MHz).
Zudem habe ich dem NRF am SMA Anschluss eine "richtige" WLAN Antenne verpasst. Nun läuft alles wieder problemlos.
Update des Codes erfolgt bald.
CCU-2, Historian und ioBroker auf Odroid HC
11x HM-CC-RT-DN, 5x HM-TC-IT-WM-W-EU, 1x HM-WDS10-TH-O, 1x HM-WDS40-TH-I, 3x HM-Sec-SC-2, 2x HM-LC-Bl1-FM, 3x HM-LC-Sw2-FM, 2x HM-LC-SW1-FM, 1x HM-Sec-RHS
11x HM-CC-RT-DN, 5x HM-TC-IT-WM-W-EU, 1x HM-WDS10-TH-O, 1x HM-WDS40-TH-I, 3x HM-Sec-SC-2, 2x HM-LC-Bl1-FM, 3x HM-LC-Sw2-FM, 2x HM-LC-SW1-FM, 1x HM-Sec-RHS
Re: Batterie Funk Windmesser, Barometer über Arduino
Hallo,
ich finde das Projekt so klasse das ich es glatt nachgebaut habe.
Für den Aussensensor kommt zum Einsatz
1x Arduino ProMini 3,3V
http://www.aliexpress.com/item/1pcs-lot ... 51276.html
1x BMP 180 Barometer
http://www.aliexpress.com/item/The-new- ... 25012.html
1x Regensensor
http://www.aliexpress.com/item/3-3-5V-R ... 26481.html
1x Step Up Converter
http://www.aliexpress.com/item/Ultra-sm ... 09053.html
1x NRF24L01+ 2,4Ghz Transceiver
http://www.aliexpress.com/item/4pcs-NRF ... 80205.html
Wenn die ersten Sensoren / die Funkverbindung zum ArduinoMega steht werde ich um folgende Sensoren erweitern:
Regenmenge, Wind, Windrichtung. Dazu bin ich auf diesen Ersatzsensor gestoßen:
http://www.froggit.de/product_info.php/ ... solar.html
Nun zu meinem Problemchen:
Ich bin aber gerade am Verzweifeln da das Sketch für den ProMini nicht Kompiliert wird.
Ich erhalte folgende Fehlermeldung:
Die RF24 Library für den NRF24L01+ habe ich hier her: https://github.com/maniacbug/RF24
Ist das die Richtige Library?
Vlt. kann mir jemand ein komplettes Sketch inkl Library's zur verfügung stellen.
Danke Gruß
Rene
ich finde das Projekt so klasse das ich es glatt nachgebaut habe.
Für den Aussensensor kommt zum Einsatz
1x Arduino ProMini 3,3V
http://www.aliexpress.com/item/1pcs-lot ... 51276.html
1x BMP 180 Barometer
http://www.aliexpress.com/item/The-new- ... 25012.html
1x Regensensor
http://www.aliexpress.com/item/3-3-5V-R ... 26481.html
1x Step Up Converter
http://www.aliexpress.com/item/Ultra-sm ... 09053.html
1x NRF24L01+ 2,4Ghz Transceiver
http://www.aliexpress.com/item/4pcs-NRF ... 80205.html
Wenn die ersten Sensoren / die Funkverbindung zum ArduinoMega steht werde ich um folgende Sensoren erweitern:
Regenmenge, Wind, Windrichtung. Dazu bin ich auf diesen Ersatzsensor gestoßen:
http://www.froggit.de/product_info.php/ ... solar.html
Nun zu meinem Problemchen:
Ich bin aber gerade am Verzweifeln da das Sketch für den ProMini nicht Kompiliert wird.
Ich erhalte folgende Fehlermeldung:
Code: Alles auswählen
Aussensensor.ino: In function 'void setup()':
Aussensensor.ino:121:34: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'uint64_t {aka long long unsigned int}' [-fpermissive]
In file included from Aussensensor.ino:24:0:
H:\Documents\Arduino\libraries\RF24-master/RF24.h:324:8: error: initializing argument 1 of 'void RF24::openWritingPipe(uint64_t)' [-fpermissive]
void openWritingPipe(uint64_t address);
^
Aussensensor.ino: In function 'void transmit(float, float, float, uint16_t, float, float)':
Aussensensor.ino:269:34: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'uint64_t {aka long long unsigned int}' [-fpermissive]
In file included from Aussensensor.ino:24:0:
H:\Documents\Arduino\libraries\RF24-master/RF24.h:324:8: error: initializing argument 1 of 'void RF24::openWritingPipe(uint64_t)' [-fpermissive]
void openWritingPipe(uint64_t address);
^
Fehler beim Kompilieren.
Ist das die Richtige Library?
Vlt. kann mir jemand ein komplettes Sketch inkl Library's zur verfügung stellen.
Danke Gruß
Rene
- Helikiller
- Beiträge: 143
- Registriert: 10.09.2014, 06:53
- Wohnort: 21438 Brackel
Re: Batterie Funk Windmesser, Barometer über Arduino
Hallo Rene!
Ich habe folgende Lib verwendet.
LG Helikiller
Ich habe folgende Lib verwendet.
LG Helikiller
- Dateianhänge
-
- RF24-master.zip
- Library
- (203.33 KiB) 169-mal heruntergeladen
Re: Batterie Funk Windmesser, Barometer über Arduino
Hi,
leider brachte die Library auch keinen Erfolg
Welches Arduino IDE verwendet Ihr? ich habe 1.6.4 derzeit und verwende den Code von der Startseite.
Komischer Weise läuft das für den Homedino auch nicht. gleiche Fehlermeldung.
kann mir jemand mal bitte ein komplettes Sketch inkl. Library's zur Verfügung stellen.
Vielen Dank
Gruß
Rene
leider brachte die Library auch keinen Erfolg
Welches Arduino IDE verwendet Ihr? ich habe 1.6.4 derzeit und verwende den Code von der Startseite.
Komischer Weise läuft das für den Homedino auch nicht. gleiche Fehlermeldung.
kann mir jemand mal bitte ein komplettes Sketch inkl. Library's zur Verfügung stellen.
Vielen Dank
Gruß
Rene
-
- Beiträge: 12886
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1584 Mal
- Danksagung erhalten: 221 Mal
Re: Batterie Funk Windmesser, Barometer über Arduino
das thema: sketsch wird nicht übersetzt hatte ich auch mal bzw kommt jetzt ab und an auch.. es hilft meist ide neu starten um die fehlermeldungen verschwinden zu lassen.. denke es liegt am java. ansonsten ist meine vermutung das sich bei mir sonderzeichen eingeschlichen haben welche ärger machen da wollte auch das sketsch von eugen nicht übersetzt werden - mit seinen libs ...
ach: und mal die temp-ordner leeren.
ach: und mal die temp-ordner leeren.
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
Re: Batterie Funk Windmesser, Barometer über Arduino
Hi,
ich bin auf das Thema gestoßen, als ich nach Arduino und Windmessung gegoogelt habe.
Bin selber gerade dabei mir eine Wetterstation mit allen möglichen Sensoren zu basteln.
Was mich konkret interessieren würde:
Helikiller hat auf dem ersten Foto einen Li-ion Charger (TP4056) und am 2. Foto sieht man glaub ich eine Solarzelle.
Da ich meine Wetterstation ebenfalls mit diesen Charger + einer Li-ion Zelle austatten möchte, die über Solar geladen wird, würde mich der Aufbau dahinter interessieren.
Wie sind der Akku und die "Last" verkabelt? Ich hab schon viele Anleitungen gesehen, die den Charge + Akku + Last einfach parallel verkabeln. Andererseits hab ich gelesen, dass das für den Akku eher nicht so toll ist.
Kann mir vielleicht wer weiterhelfen? Ist eine parallele Verkabelung bei niedrigen Strömen evtl. doch gar kein so großes Problem?
Vielen Dank schon mal - würd mich echt freuen
ich bin auf das Thema gestoßen, als ich nach Arduino und Windmessung gegoogelt habe.
Bin selber gerade dabei mir eine Wetterstation mit allen möglichen Sensoren zu basteln.
Was mich konkret interessieren würde:
Helikiller hat auf dem ersten Foto einen Li-ion Charger (TP4056) und am 2. Foto sieht man glaub ich eine Solarzelle.
Da ich meine Wetterstation ebenfalls mit diesen Charger + einer Li-ion Zelle austatten möchte, die über Solar geladen wird, würde mich der Aufbau dahinter interessieren.
Wie sind der Akku und die "Last" verkabelt? Ich hab schon viele Anleitungen gesehen, die den Charge + Akku + Last einfach parallel verkabeln. Andererseits hab ich gelesen, dass das für den Akku eher nicht so toll ist.
Kann mir vielleicht wer weiterhelfen? Ist eine parallele Verkabelung bei niedrigen Strömen evtl. doch gar kein so großes Problem?
Vielen Dank schon mal - würd mich echt freuen