Hallo,
ich habe einen Arduino Nano, mit einem Ethernet Shield und einem DHT22-Sensor.
Nun messe ich die Temperatur und Feuchtigkeit, gebe sie als Debug Meldung aus und versende sie als MQTT Nachricht.
Beim Hochlagen erhalte ich folgende Info:
Der Sketch verwendet 23238 Bytes (75%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1570 Bytes (76%) des dynamischen Speichers, 478 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Wenig Arbeitsspeicher verfügbar, es können Stabilitätsprobleme auftreten.
...den Code kann ich eigentlich kaum noch reduzieren, hab schon allen Luxus rausgeschmissen
Meine Code sieht so aus, startet wie gewünscht und nach ein paar Minuten erhalte ich keine Ausgabe mehr und es wird auch keine MQTT-Nachricht mehr versendet.
#include <SimpleDHT.h>
#include "PubSubClient.h"
int dataPinSensor1 = 6;
SimpleDHT22 dht1(dataPinSensor1);
int timer = 0; //damit ich die Zeit nicht in der delay-Funktion abwarten muss!
#define CLIENT_ID "NanoKeller"
#define debug true
#define sendtimer 1000 //ca. 1.5 gesendete pro Min bei 15.000
// ethernet interface ip address
byte ipfixed[]={192,168,0,180};
uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x06};
#include <UIPEthernet.h>
EthernetClient ethClient;
PubSubClient mqttClient;
byte temperature1 = 0;
byte humidity1 = 0;
void setup() {
Serial.begin(115200);
Ethernet.begin(mac,ipfixed);
// setup mqtt client
mqttClient.setClient(ethClient);
mqttClient.setServer("192.168.0.175",1883);
if(debug)
Serial.println(F("MQTT client configured"));
}
void readDHT22() {
int err = SimpleDHTErrSuccess;
if ((err = dht1.read(&temperature1, &humidity1, NULL)) != SimpleDHTErrSuccess) {
if(debug)
Serial.print("Communication error with Sensor 1, err="); Serial.println(err);delay(1000);
return;
}
if(debug)
{
Serial.print((int)temperature1); Serial.print(" *C, ");
Serial.print((int)humidity1); Serial.println(" % humidity");
}
}
void sendMQTTData() {
char msgBuffer[7];
if(mqttClient.connect(CLIENT_ID)) {
mqttClient.publish("Keller/temp1", dtostrf(temperature1, 6, 2, msgBuffer));
mqttClient.publish("Keller/humid1", dtostrf(humidity1, 6, 2, msgBuffer));
}
}
void loop() {
timer = timer + 1;
if(timer >= sendtimer){
readDHT22();
sendMQTTData();
timer = 0;
}
delay(1);
}
Wer kann mir hier sagen warum und was ich verbessern könnte?!?!
Eine Fehlermeldung bekomme ich nicht, es läuft einfach gar nichts mehr -bis zum Reset.