D1 nodemcu always on (connect to relay 4 ch) when nodemcu is connected online to wifi

I use a 4 channel relay, why when nodemcu is connected online to wifi one of the led relays connected to D1 is always on?
even though the D1 button in the Blynk application is off.

Thankyou for the response…!

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxx";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "PULPSTONE";
char pass[] = "internet";
bool pirEnabled = false;
  int control4DigitalPins = param.asInt();
  if(control4DigitalPins == 1){
    digitalWrite(D1, HIGH);
    digitalWrite(D2, HIGH);
    digitalWrite(D3, HIGH);
    digitalWrite(D7, HIGH);
    digitalWrite(D1, LOW);
    digitalWrite(D2, LOW);
    digitalWrite(D3, LOW);
    digitalWrite(D7, LOW);
BLYNK_WRITE(V3){  // button in switch mode
    pirEnabled = true;  
    pirEnabled = false;    
#define DHTPIN 2          // What digital pin we're connected to
#define ledPower 16
// Uncomment whatever type you're using!
#define DHTTYPE DHT11     // DHT 11
//#define DHTTYPE DHT22   // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21   // DHT 21, AM2301
SimpleTimer timer;
// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
  int h = dht.readHumidity();
  int t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
  int p=digitalRead(14);
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
 if((p==HIGH) && (pirEnabled == true)){
 Blynk.notify("Gerakan terdeteksi");
void setup()
  pinMode (ledPower,OUTPUT);
  digitalWrite (ledPower, HIGH);
  Serial.begin(9600); // See the connection status in Serial Monitor
  Blynk.begin(auth, ssid, pass);
  // Setup a function to be called every second
  timer.setInterval(10000L, sendWifi);
  timer.setInterval(1000L, sendSensor);
void sendWifi()
  Blynk.virtualWrite(V2, map(WiFi.RSSI(), -105, -40, 0, 100) );
void loop()
  Blynk.run(); // Initiates Blynk
  timer.run(); // Initiates SimpleTimer

You appear to be saying that you have a button widget in the app connected to pin D1.
I assume that you have other button widgets attached to pins D2-4 as well?

If this is the case then you should switch to using digital pins for all of these buttons.
You’ll also need pinMode statements for D1 - D4 in your void setup.


this is my blynk apps widget