Hallo ich habe 2 Sensoren angeschlossen und den 4,7kohm Wiederstand .
Beim auslesen der Temperatur bekomme ich immer nur den fehlerwert -127°
was mache ich falsch ?
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// WiFi Zugangsdaten
const char* ssid = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxxxxxxxx";
// Telegram Bot Token und Chat ID
const char* botToken = "xxxxxxxxxxxxxxxx";
const char* chatId = "xxxxxxxxxx";
#define ONE_WIRE_BUS_1 4 //alter text #define ONE_WIRE_BUS_1 4
#define ONE_WIRE_BUS_2 4 //alter text #define ONE_WIRE_BUS_2 4
#define TEMPERATURE_PRECISION 9
const unsigned long BOT_MTBS = 1000; // Durchschnittliche Zeit zwischen Scan-Nachrichten
unsigned long bot_lasttime; // Zeitpunkt der letzten Nachrichtenüberprüfung
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
WiFiClientSecure secured_client;
UniversalTelegramBot bot(botToken, secured_client);
DeviceAddress sensor_1 = {0x28, 0xC1, 0xCF, 0x43, 0xD4, 0xE1, 0x3C, 0xB8};
DeviceAddress sensor_2 = {0x28, 0x47, 0x39, 0x46, 0xD4, 0xDE, 0x36, 0x10};
OneWire oneWire_in(ONE_WIRE_BUS_1); //_1
OneWire oneWire_out(ONE_WIRE_BUS_2); //_1
DallasTemperature sensor_inhouse(&oneWire_in);
DallasTemperature sensor_outhouse(&oneWire_out);
DeviceAddress insideThermometer, outsideThermometer;
unsigned long previousMillis = 0;
const unsigned long interval = 1 * 60 * 60 * 1000; // Alle Stunde in Millisekunden
const uint32_t verzHell = 6000; // sollte sicher 1-2 Minuten sein
const uint32_t verzDunkel = 6000;
const uint32_t maxlaufzeit = 40000; // entsp. anpassen
const int hell = 1023;
const int dunkel = 1013;
// Pin´s
const byte btnAuf = D5; // Taster
const byte btnAb = D6;
const byte esOben = D2; // Endschalter
const byte esUnten = D1;
const byte motorAuf = D8; // Motoransteuerung
const byte motorAb = D7;
// Hilfsmerker
bool manAuf;
bool manAb;
bool autoAuf; //auto Türe öffnen
bool autoAb; //auto Türe schließen
bool oben;
bool unten;
const byte ldrpin = A0; // analoger LDR Pin
int ldr;
void handleNewMessages(int numNewMessages);
float temperatur;
void setup() {
Serial.begin(115200);
Serial.println("Dallas Temperature Control Library Demo - TwoPin_DS18B20");
sensor_inhouse.begin();
sensor_outhouse.begin();
configTime(0, 0, "pool.ntp.org"); // UTC-Zeit über NTP abrufen
secured_client.setTrustAnchors(&cert); // Root-Zertifikat für api.telegram.org hinzufügen
// Verbindung zum WLAN herstellen
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Verbindung zum WLAN wird hergestellt...");
}
Serial.println("Verbunden mit dem WLAN!");
pinMode(btnAuf, INPUT_PULLUP);
pinMode(btnAb, INPUT_PULLUP);
pinMode(esOben, INPUT_PULLUP);
pinMode(esUnten, INPUT_PULLUP);
pinMode(motorAuf, OUTPUT);
pinMode(motorAb, OUTPUT);
}
void loop() {
if (millis() - bot_lasttime > BOT_MTBS) {
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while (numNewMessages) {
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
bot_lasttime = millis();
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
sensor_inhouse.requestTemperatures();
float tempC_inhouse= sensor_inhouse.getTempCByIndex(0);
String answer_inhouse= "Die aktuelle Temperatur im Innenbereich beträgt: " + String(tempC_inhouse) + " Grad Celsius";
bot.sendMessage(chatId, answer_inhouse,"");
sensor_outhouse.requestTemperatures();
float tempC_outhouse= sensor_outhouse.getTempCByIndex(0);
String answer_outhouse= "Die aktuelle Temperatur im Außenbereich beträgt: " + String(tempC_outhouse) + " Grad Celsius";
bot.sendMessage(chatId, answer_outhouse,"");
Serial.print("Requesting temperatures...");
sensor_inhouse.requestTemperatures();
sensor_outhouse.requestTemperatures();
Serial.println(" done");
Serial.print("Inhouse: ");
Serial.println(sensor_inhouse.getTempCByIndex(0));
Serial.print("Outhouse: ");
Serial.println(sensor_outhouse.getTempCByIndex(0));}
ldr = analogRead(A0); // LDR einlesen
autoAuf = LDRdunkelhell();
autoAb = LDRhelldunkel();
manAuf = !digitalRead(btnAuf);
manAb = !digitalRead(btnAb);
oben = !digitalRead(esOben);
unten = !digitalRead(esUnten);
Klappe(); // Klappe steuern
}
void handleNewMessages(int numNewMessages) {
for (int i = 0; i < numNewMessages; i++) {
telegramMessage &msg = bot.messages[i];
if (msg.text == "/temperatur") {
sensor_inhouse.requestTemperatures();
float tempC_inhouse= sensor_inhouse.getTempCByIndex(0);
String answer_inhouse= "Die aktuelle Temperatur im Innenbereich beträgt: " + String(tempC_inhouse) + " Grad Celsius";
bot.sendMessage(msg.chat_id, answer_inhouse,"");
sensor_outhouse.requestTemperatures();
float tempC_outhouse= sensor_outhouse.getTempCByIndex(0);
String answer_outhouse= "Die aktuelle Temperatur im Außenbereich beträgt: " + String(tempC_outhouse) + " Grad Celsius";
bot.sendMessage(msg.chat_id, answer_outhouse,"");
}
}
}
void Klappe() {
static uint32_t start;
static uint32_t auszeit;
bool aus=true;// Motor ist aus
if ((manAuf || autoAuf ) && aus) { // Klappe auf
Serial.println("Klappe auf fahren");
digitalWrite(motorAuf, HIGH);
digitalWrite(motorAb, LOW);
start = millis();
}
else if ((manAb || autoAb) && aus) { // Klappe zu
Serial.println("Klappe zu fahren");
digitalWrite(motorAuf, LOW);
digitalWrite(motorAb, HIGH);
start = millis();
}
else if (manAb) digitalWrite(motorAuf, LOW); // manuell wechseln
else if (manAuf) digitalWrite(motorAb, LOW);
if (millis() - start > maxlaufzeit || oben) { // oben stop
digitalWrite(motorAuf, LOW);
}
if (millis() - start > maxlaufzeit || unten) { // unten stop
digitalWrite(motorAb, LOW);
}
if (digitalRead(motorAuf) == HIGH || digitalRead(motorAb) == HIGH) {
auszeit = millis();
}
if (millis() - auszeit > 100) aus = true;
else aus = false;
}
bool LDRhelldunkel() {
static uint32_t vorhin;
static bool merker;
bool ret;
ret = false;
if ( ldr < dunkel) {
if (millis() - vorhin >= verzDunkel && !merker) {
Serial.print("es ist dunkel Wert "); Serial.println(ldr);
ret = true;
merker = true;
// Nachricht an Telegram senden
bot.sendMessage(chatId, "Guten Nacht wir gehen Schlafen!", "");
}
}
else {
vorhin = millis();
merker = false;
}
return (ret);
}
bool LDRdunkelhell() {
static uint32_t vorhin;
static bool merker;
bool ret;
ret = false;
if ( ldr > hell) {
if (millis() - vorhin >= verzHell && !merker) {
Serial.print("es ist hell Wert "); Serial.println(ldr);
ret = true;
merker = true;
// Nachricht an Telegram senden
bot.sendMessage(chatId, "Guten Morgen wir sind Draussen!", "");
}
}
else {
vorhin = millis();
merker = false;
}
return (ret);
}