feature/InfluxDB-Connection-Update #1
24
firmware/config.h
Executable file → Normal file
|
@ -23,23 +23,31 @@
|
|||
#define DELAY_LOOP_MS 50
|
||||
#define POWERSAVING_SLEEP_S 600
|
||||
#define EMERGENCY_SLEEP_S 172800 // Sleep for 2 days to recover
|
||||
#define RESET_ESP_TIME_INTERVAL_MS 3600000
|
||||
#define WIND_SENSOR_MEAS_TIME_S 15.0
|
||||
|
||||
#define ENERGY_SAVING_ITERATIONS 30
|
||||
#define WIFI_MINIMUM_SIGNAL_QUALITY 10 // percent
|
||||
#define RESET_ESP_TIME_INTERVAL_MS 3600000
|
||||
|
||||
klaute marked this conversation as resolved
Outdated
|
||||
#define WIND_SENSOR_MEAS_TIME_S 15.0
|
||||
// thingiverse anomometer settings: https://www.thingiverse.com/thing:2559929/files
|
||||
#define ROTOR_LENGTH_CM 8.25
|
||||
#define ROTOR_LENGTH_M (ROTOR_LENGTH_CM / 100.0)
|
||||
#define ROTOR_LENGTH_KM (ROTOR_LENGTH_M / 1000.0)
|
||||
#define SEC_TO_HOUR_FACTOR (60.0 * 60.0)
|
||||
//#define ROTOR_LENGTH_KM (ROTOR_LENGTH_M / 1000.0) // configuration example for generalization
|
||||
f marked this conversation as resolved
Outdated
f
commented
Ist dass der Faktor, der sich aus der Messung mit deinem gekauften Windmessgerät gergeben hat? Ich erinnere mich dunkel, dass du was von 10x geschrieben hattest. Ist dass der Faktor, der sich aus der Messung mit deinem gekauften Windmessgerät gergeben hat? Ich erinnere mich dunkel, dass du was von 10x geschrieben hattest.
klaute
commented
Ja richtig das sind die Faktoren und Divisoren die man braucht um v=u * 2 * pi * r / t_meas * Korrekturfaktor zu berechnen. Vorher stand im Code die Zahl 2.4 ohne einen Kommentar. Prinzipiell würde ich gerne die user config so umbauen das man dort nur noch sein eigenes wlan konfiguriert. Der Rest der dort drin ist unterscheidet sich nicht deutlich von dem was in der config.h enthalten ist. Die Trennung zwischen user und der generellen config ist da sehr verweichlicht. Zudem sind in der config.h Konstanten enthalten deren Werte zum Beispiel Array Indizes entsprechen und somit nie angepasst werden. Ich bin generell für ein Refactoring. Auch von den verschachtelten loop-Funktionen. Ja richtig das sind die Faktoren und Divisoren die man braucht um v=u * 2 * pi * r / t_meas * Korrekturfaktor zu berechnen. Vorher stand im Code die Zahl 2.4 ohne einen Kommentar.
Prinzipiell würde ich gerne die user config so umbauen das man dort nur noch sein eigenes wlan konfiguriert.
Der Rest der dort drin ist unterscheidet sich nicht deutlich von dem was in der config.h enthalten ist. Die Trennung zwischen user und der generellen config ist da sehr verweichlicht. Zudem sind in der config.h Konstanten enthalten deren Werte zum Beispiel Array Indizes entsprechen und somit nie angepasst werden.
Ich bin generell für ein Refactoring. Auch von den verschachtelten loop-Funktionen.
f
commented
Ja bin ich auch voll dafür! Ja bin ich auch voll dafür!
|
||||
//#define SEC_TO_HOUR_FACTOR (60.0 * 60.0) // configuration example for generalization
|
||||
#define MPS_CORRECT_FACT 9.28
|
||||
#define COUNT_TO_KMH ((TWO_PI * ROTOR_LENGTH_KM / WIND_SENSOR_MEAS_TIME_S) * SEC_TO_HOUR_FACTOR)
|
||||
//#define COUNT_TO_KMH ((TWO_PI * ROTOR_LENGTH_KM / WIND_SENSOR_MEAS_TIME_S) * SEC_TO_HOUR_FACTOR) // configuration exampe for generalization
|
||||
#define COUNT_TO_MPS (TWO_PI * ROTOR_LENGTH_M / WIND_SENSOR_MEAS_TIME_S)
|
||||
// only this define is used for calculation, all other before are only used to describe the math v_wind = correction_factor * rotations * 2 * pi * radius / time_of_measurement_in_sec
|
||||
// and if required the result has t be multiplied by another factor to convert it from m/s
|
||||
#define WINDSPEED_FACTOR (COUNT_TO_MPS * MPS_CORRECT_FACT)
|
||||
klaute marked this conversation as resolved
Outdated
f
commented
Ist das die Callback-URL, wenn der Wind zu stark weht? Ist das die Callback-URL, wenn der Wind zu stark weht?
Es wäre gut, wenn man das Feature an/ausschalten könnte, da es schon sehr spezifisch auf deinen Anwendungsfall gestrickt ist.
|
||||
|
||||
#define HTTP_CALL_ON_WINDSPEED_EXCEED_MPS 5.0 // 5.0 m/s == 18 km/h
|
||||
#define HTTP_CALL_ON_WINDSPEED_INTERVAL_S 60 // it's required to be bigger than WIND_SENSOR_MEAS_TIME_S
|
||||
#define HTTP_CALL_ON_WINDSPEED_URL "http://192.168.0.250:3001/button-windspeedexceed?event=click"
|
||||
// china aliexpress anemometer settings (calculation unknown) <add link here>
|
||||
//#define WINDSPEED_FACTOR 2.4
|
||||
|
||||
// enable HTTP_CALL_ON_WINDSPEED_EXCEED in config_user.h to enable this feature
|
||||
#define HTTP_CALL_ON_WINDSPEED_EXCEED_MPS 5.0 // 5.0 m/s == 18 km/h
|
||||
#define HTTP_CALL_ON_WINDSPEED_INTERVAL_S 60 // it's required to be bigger than WIND_SENSOR_MEAS_TIME_S
|
||||
#define HTTP_CALL_ON_WINDSPEED_URL "http://192.168.178.100:3001/button-windspeedexceed?event=click"
|
||||
|
||||
#define BAT_LOW_VOLTAGE 3.6
|
||||
#define BAT_EMERGENCY_DEEPSLEEP_VOLTAGE 3.5
|
||||
|
|
|
@ -41,8 +41,8 @@ const char *INFLUXDB_PASS = "password";
|
|||
// InfluxDB2 credentials
|
||||
klaute marked this conversation as resolved
Outdated
f
commented
Sind die Zugangs-Daten bei Version 1 und 2 so unterschiedlichen? Könnte man das nicht zusammenfassen in einen "connection string" oder so? Sind die Zugangs-Daten bei Version 1 und 2 so unterschiedlichen? Könnte man das nicht zusammenfassen in einen "connection string" oder so?
klaute
commented
Das sind einzelne Parameter die man dem Init übergeben muss. Zumindest ist es so lesbar. Das sind einzelne Parameter die man dem Init übergeben muss. Zumindest ist es so lesbar.
|
||||
const char *INFLUXDB_URL = "http://192.168.0.123:3124";
|
||||
const char *INFLUXDB_ORG = "home_org";
|
||||
const char *INFLUXDB_BUCKET = "mybucket;
|
||||
const char *INFLUXDB_TOKEN = "your api tiken";
|
||||
const char *INFLUXDB_BUCKET = "mybucket";
|
||||
klaute marked this conversation as resolved
Outdated
f
commented
" fehlt. " fehlt.
klaute
commented
Erledigt Erledigt
|
||||
const char *INFLUXDB_TOKEN = "your api token";
|
||||
klaute marked this conversation as resolved
Outdated
|
||||
|
||||
// Device name
|
||||
// WARNING: Keep the name short! If your access point did not show up, you
|
||||
|
|
|
@ -75,15 +75,7 @@ void setup()
|
|||
// the time in seconds to wait for the user to configure the device
|
||||
wifiManager.setTimeout(WIFI_CONFIG_PORTAL_TIMEOUT_S);
|
||||
|
||||
#ifndef SLEEP_IF_NO_WLAN_CONNECTION
|
||||
// do not sleep, repeat connecting
|
||||
while
|
||||
#endif
|
||||
#ifdef def SLEEP_IF_NO_WLAN_CONNECTION
|
||||
// stop connecting after fail to connect to wifi
|
||||
if
|
||||
#endif
|
||||
(!wifiManager.autoConnect(wifiName.c_str(), "DEADBEEF"))
|
||||
while (!wifiManager.autoConnect(wifiName.c_str(), "DEADBEEF"))
|
||||
{
|
||||
debug("WiFi connection failed, try again in 5 seconds...");
|
||||
klaute marked this conversation as resolved
Outdated
f
commented
Das ist ziemlich dirty gelöst und meine Arduino-IDE weigert sich sogar, das zu compilieren. Auch wenn es ein paar bytes verschenkt ist, wäre es schöner, einfach immer was Das ist ziemlich dirty gelöst und meine Arduino-IDE weigert sich sogar, das zu compilieren. Auch wenn es ein paar bytes verschenkt ist, wäre es schöner, einfach immer was ```while``` stehen zu lassen und dann ein ```#ifdef`` in der schleife rein.
|
||||
// If autoconnect to WLAN failed and no client connected, go to deep sleep
|
||||
|
@ -198,7 +190,8 @@ void loop()
|
|||
#endif
|
||||
|
||||
#ifdef WEBUPDATER_FEATURE
|
||||
if (UPDATE_WEBSERVER_INTVERVAL_S * 1000 / DELAY_LOOP_MS <= update_webserver_cnt) {
|
||||
if (UPDATE_WEBSERVER_INTVERVAL_S * 1000 / DELAY_LOOP_MS <= update_webserver_cnt)
|
||||
{
|
||||
update_webserver_cnt = 0;
|
||||
doWebUpdater();
|
||||
}
|
||||
|
@ -223,8 +216,11 @@ void loop()
|
|||
void _loop() {
|
||||
|
||||
#ifdef HTTP_CALL_ON_WINDSPEED_EXCEED
|
||||
if (HTTP_CALL_ON_WINDSPEED_INTERVAL_S * 1000 / DELAY_LOOP_MS > update_windspeed_exceed_cnt) {
|
||||
if (sensors[SENSOR_WINDSPEED]) {
|
||||
if (HTTP_CALL_ON_WINDSPEED_INTERVAL_S * 1000 / DELAY_LOOP_MS > update_windspeed_exceed_cnt)
|
||||
{
|
||||
if (sensors[SENSOR_WINDSPEED])
|
||||
{
|
||||
// read from windspeed sensor
|
||||
currentSensorData[SENSOR_WINDSPEED] = sensors[SENSOR_WINDSPEED]();
|
||||
|
||||
if (currentSensorData[SENSOR_WINDSPEED] >= HTTP_CALL_ON_WINDSPEED_EXCEED_MPS)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include <InfluxDbClient.h> // from bib manager
|
||||
klaute marked this conversation as resolved
Outdated
f
commented
Die wird für version 1 gebraucht. Die wird für version 1 gebraucht.
klaute
commented
Erledigt Erledigt
|
||||
|
||||
#include "config_user.h"
|
||||
|
||||
#if INFLUXDB_VERSION == 1
|
||||
|
||||
#include <ESP8266Influxdb.h> // https://github.com/hwwong/ESP8266Influxdb
|
||||
|
||||
Influxdb _influxdb(INFLUXDB_HOST, INFLUXDB_PORT);
|
||||
|
||||
|
@ -82,6 +82,8 @@ void pushToInfluxDB(String device, float sensorValues[]) {
|
|||
|
||||
#elif INFLUXDB_VERSION == 2
|
||||
|
||||
#include <InfluxDbClient.h> // from bib manager
|
||||
|
||||
// Data point
|
||||
Point sensor(DEVICE_NAME);
|
||||
|
||||
|
|
Für welchen Windsensor sind diese Bemaßungen? Ist das von einem Eigenbau oder von dem welchen wir von Aliexpress gekauft hatten?
Das Feature hat bereits ein gleichnamiges #define in der user config mit dem man es aktivieren kann.