Ich habe eine Bienenstock-Waage gebaut und das Gewicht wird über einen Esp32 mithilfe der Arduino Iot Cloud auf ein Dashboard gesendet. Das Problem ist jetzt das der Esp32 nur selten was sendet. Das Komische ist das irgendwie ein "Zeitmuster" hat. Was ich damit meine ist das der Esp32 die ganze Nacht lang sendet und in der Früh ca.9 Uhr aufhört. Am tag sendet er nur selten meist nach einen Reset ein paar Minuten. Durch diese Erkenntnis glaube ich das Vermutung 2 am wahrscheinlichsten ist.
Der Aufbau ist folgender (ESP32 -> Ein/Aus-Schalter->Powerbank(30.000mAh) und diese Powerbank ist noch mit einem kleinem Photovoltaik Modul verbunden das die Powerbank "dauerhaft" aufgeladen wird.)
Meine 3 Vermutungen sind:
-
Irgendwo ein Wackelkontakt des Schalters (ich habe einen kleinen Schalter eingebaut mit dem man die Stromversorgung des Esp32 Aus/Ein-schalten kann.
-
Der Esp32 wird über eine Powerbank versorgt, und ich glaube das der Esp32 zu wenig Strom "zieht" das sich die Powerbank automatisch abschaltet.
-
Verbindungsprobleme mit dem WLAN, also das die Internet Verbindung zu schlecht ist.
Vielleicht ist es einer dieser Probleme oder ein anderer. Ich bin Ratlos, also bitte ich um Hilfe.
Der Code (Vielleicht ist der das Problem
):
#include "thingProperties.h"
#include <HX711.h>
#include <Adafruit_BusIO_Register.h>
#include <Adafruit_I2CDevice.h>
#include <Adafruit_I2CRegister.h>
#include <Adafruit_SPIDevice.h>
#include <Wire.h>
HX711 scale;
const int LOADCELL_DOUT_PIN = 21;
const int LOADCELL_SCK_PIN = 22;
const unsigned long MESS_INTERVAL = 3500;
const unsigned long DURCHSCHNITT_PERIODE = 4 * 60 * 60 * 1000; // 4 Stunden in Millisekunden
unsigned long letztemesszeit = 0;
unsigned long lasttime = 0;
unsigned long now = 0;
float aktuellezeit = 0;
float Gewicht = 0.0;
float gewicht = 0.0;
boolean h4;
void setup() {
Serial.begin(9600);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
scale.set_offset(232534);
scale.set_scale(28.493797);
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
h4 = true;
status = false;
}
void loop() {
if (ArduinoCloud.connected()) {
status = true;
}
else {
status = false;
}
ArduinoCloud.update();
//------------------------
aktuellezeit = millis();
if (aktuellezeit - letztemesszeit >= MESS_INTERVAL) {
letztemesszeit = aktuellezeit;
if (scale.is_ready()) {
gewicht = scale.get_units(10);
gewicht_kg = gewicht / 1000.0;
if (h4) {
Gewicht = gewicht_kg;
h4 = false;
}
//24h-----------------------
if (aktuellezeit >= DURCHSCHNITT_PERIODE) {
Gewicht = gewicht_kg;
letztemesszeit = aktuellezeit;
}
gewicht_kg_24 = gewicht_kg - Gewicht;
} else {
Serial.println("Error");
status = false;
}
}
}
void onGewichtKgChange() {
// Add your code here to act upon GewichtKg change
}
/*
Since GewichtKg24 is READ_WRITE variable, onGewichtKg24Change() is
executed every time a new value is received from IoT Cloud.
*/
void onGewichtKg24Change() {
// Add your code here to act upon GewichtKg24 change
}
/*
Since Status is READ_WRITE variable, onStatusChange() is
executed every time a new value is received from IoT Cloud.
*/
void onStatusChange() {
// Add your code here to act upon Status change
}