ESP8266 digital input stays low

Hi there,
I wanted to use some reed switches for my project.
But once they are triggered, they doesn’t change status anymore.
Connected 3 of them to GND and D2,D5,D6. (same process works with using tasmota and the same switches)
Using NodeMCU / ESP8266, code below. Maybe someone has an idea :slight_smile:

int switchReed=4;

void setup(){
  pinMode(switchReed, INPUT);
  Serial.begin(9600);
}

void loop(){
  
  if (digitalRead(switchReed)==LOW){
    Serial.println("Your Door is Closed");
  }
  else {
    Serial.println("Your Door is Open");
  }
  delay(1);
}

Also if anyone has a hint on how to integrate 3 switches into following code, would be much appreciated.

/************************( Importieren der genutzten Bibliotheken )************************/
#include "ThingSpeak.h"
#include "RunningMedian.h"
#include <ESP8266WiFi.h>
#include "DHT.h"    

            

       
/********************( Definieren der Globale Variablen und Konstanten)********************/
float t;                                      // Variable zum Speichern der Temperatur
float h;                                      // Variable zum Speichern der Luftfeuchtigkeit
                          

#define DHTPIN 5          // Hier die Pin Nummer eintragen wo der Sensor angeschlossen ist
#define DHTTYPE DHT22     // Hier wird definiert was für ein Sensor ausgelesen wird. In 
DHT dht(DHTPIN, DHTTYPE); // unserem Beispiel möchten wir einen DHT11 auslesen, falls du 
                          // ein DHT22 hast einfach DHT22 eintragen


unsigned long ThingspeakLastLogTime = 0;
unsigned long SensorenLetzteAktualisierung;   // Hilfsvariable für Zeitmessung
int ThingspeakSampleTime = 60000;             // Die schnellste Sample Time ist 15s ich empfehle 
                                              // 60s zu verwenden oder 300 Sekunden 
                                              
int SensorenSampleTime = 1;                   // Zeit in s für Aktualisierung der
                                          
RunningMedian Mediant = RunningMedian(10);// Initialisieren von Median mit Anzahl Messwerten    
RunningMedian Medianh = RunningMedian(10);

WiFiClient  client;
int status = WL_IDLE_STATUS;
/**********************************(Thingspeak Eistellungen)*******************************/
unsigned long myChannelNumber = XXXXX;         // Deine ThingSpeak Kanal Nummer
const char * myWriteAPIKey = "XXXXX"; // Dein ThingSpeak API Key

/************************************(Wifi Einstellungen)**********************************/
char ssid[] = "XXXXX";               // Deine Wlan SSID (name)
char pass[] = "XXXXX";             // Dein Wlan Passwort

/*******************************************(setup)****************************************/
void setup() {

  WiFi.begin(ssid, pass);             // Wlan Aktivieren und mit definiertem Netzwerk verbinden
  ThingSpeak.begin(client);           // ThingSpeak Client starten
  
  Serial.begin(9600);                 // Serial Monitor starten
  Serial.println("DHT11 Testprogramm");
  dht.begin();                        // DHT11 Library  starten
}

/*************************************(Hauptprogramm)**************************************/
void loop() {

  if (millis() - SensorenLetzteAktualisierung > (SensorenSampleTime*1000)) {
    Mediant.add(dht.readTemperature()); // Messwert hinzufügen
    t = Mediant.getAverage();           // Mittelwert auslesen
    
    Medianh.add(dht.readHumidity());    // Messwert hinzufügen
    h = Medianh.getAverage();           // Mittelwert auslesen
  }
  
  
/*********************( Überprüfen ob alles richtig Ausgelesen wurde )*********************/ 
  if (isnan(h) || isnan(t)) {       
    Serial.println("Fehler beim auslesen des Sensors!");
    return;
  }

  // Nun senden wir die gemessenen Werte an den PC diese werden wir im Seriellem Monitor sehen
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(h);                  // Ausgeben der Luftfeuchtigkeit
  Serial.print("%\t");              // Tabulator
  Serial.print("Temperatur: ");
  Serial.print(t);                  // Ausgeben der Temperatur
  Serial.write('°');                // Schreiben des ° Zeichen
  Serial.println("C");
  SensorenLetzteAktualisierung=millis();  // Letzte Aktualisierung speichern
   MesswerteSenden();               // Funktion zum Senden der Messwerte aufrufen                  
   delay(2000);
}

/*********************(Funktion um Daten an Thingspeak zu senden)**************************/
void MesswerteSenden() {
  
  if (millis() - ThingspeakLastLogTime > ThingspeakSampleTime) {
    ThingSpeak.setField(1, t);
    ThingSpeak.setField(2, h);
    ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
    ThingspeakLastLogTime = millis();
  }
}

Credits to www.bastelgarage.ch for the 2nd code :slight_smile:

I'm stupid, switched INPUT to INPUT_PULLUP and now it works..