error on addting sensor code

hi

im new on this arduino and still learning i have some trouble on compiling code on If / else if / else im getting error of "expected unqualified-id before 'else'"

on this part i always stuck with error

void loop()
{
if(wifiConnected){
upnpBroadcastResponder.serverLoop();

relay1->serverLoop();
relay2->serverLoop();
relay3->serverLoop();
relay4->serverLoop();
relay5->serverLoop();
relay6->serverLoop();
relay7->serverLoop();
relay8->serverLoop();
}
}

int readSensor = digitalRead(sensor);
else if(readSensor == HIGH){
//tone(relay,1000);
digitalWrite(relay2,LOW);
Serial.println("HIGH");
}else{
digitalWrite(relay2,HIGH);
Serial.println("LOW");
}
//delay(100);
}

void Relay1On() {
Serial.print("Switch Relay 1 turn on ...");
digitalWrite (D1,LOW);
}

void Relay1Off() {
Serial.print("Switch Relay 1 turn off ...");
digitalWrite (D1,HIGH);
}

thank you in advance

More details please, including the full code and error message

Please follow the advice on posting a programming question given in Read this before posting a programming question

In particular note the advice to Auto format code in the IDE and to use code tags when posting code here as it prevents some combinations of characters in code being interpreted as HTML commands such as italics, bold or a smiley character, all of which render the code useless

void loop()
{
   if(wifiConnected){
      upnpBroadcastResponder.serverLoop();
      
      relay1->serverLoop();
      relay2->serverLoop();
      relay3->serverLoop();
      relay4->serverLoop();
      relay5->serverLoop();
      relay6->serverLoop();
      relay7->serverLoop();
      relay8->serverLoop();
   }
}

Code after that isn't in a function, hence the error.

Please remember to use code tags when posting code.

hi this is the full code

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiUdp.h>
#include <functional>
#include "switch.h"
#include "UpnpBroadcastResponder.h"
#include "CallbackFunction.h"

int sensor = 10;

// prototypes
boolean connectWifi();

//on/off callbacks 
void Relay1On();
void Relay1Off();
void Relay2On();
void Relay2Off();
void Relay3On();
void Relay3Off();
void Relay4On();
void Relay4Off();
void Relay5On();
void Relay5Off();
void Relay6On();
void Relay6Off();
void Relay7On();
void Relay7Off();
void Relay8On();
void Relay8Off();

// Change this before you flash
const char* ssid = "Nabster";
const char* password = "my pass";

boolean wifiConnected = false;

UpnpBroadcastResponder upnpBroadcastResponder;

Switch *relay1 = NULL;
Switch *relay2 = NULL;
Switch *relay3 = NULL;
Switch *relay4 = NULL;
Switch *relay5 = NULL;
Switch *relay6 = NULL;
Switch *relay7 = NULL;
Switch *relay8 = NULL;

void setup()
{
 pinMode (10,INPUT);
 pinMode (D1, OUTPUT);
 pinMode (D3, OUTPUT);
 pinMode (D4, OUTPUT);
 pinMode (D5, OUTPUT);
 pinMode (D6, OUTPUT);
 pinMode (D7, OUTPUT);
 pinMode (D8, OUTPUT);
 digitalWrite (D1,HIGH);
 digitalWrite (D2,HIGH);
 digitalWrite (D3,HIGH);
 digitalWrite (D4,HIGH);
 digitalWrite (D5,HIGH);
 digitalWrite (D6,HIGH);
 digitalWrite (D7,HIGH);
 digitalWrite (D8,HIGH);
 Serial.begin(9600);
   
  // Initialise wifi connection
  wifiConnected = connectWifi();
  
  if(wifiConnected){
    upnpBroadcastResponder.beginUdpMulticast();
    
    relay1 = new Switch("Relay 1", 80, Relay1On, Relay1Off);
    relay2 = new Switch("Relay 2", 81, Relay2On, Relay2Off);
    relay3 = new Switch("Relay 3", 82, Relay3On, Relay3Off);
    relay4 = new Switch("Relay 4", 83, Relay4On, Relay4Off);
    relay5 = new Switch("Relay 5", 84, Relay5On, Relay5Off);
    relay6 = new Switch("Relay 6", 85, Relay6On, Relay6Off);
    relay7 = new Switch("Relay 7", 86, Relay7On, Relay7Off);
    relay8 = new Switch("Relay 8", 87, Relay8On, Relay8Off);

    Serial.println("Adding switches upnp broadcast responder");
    upnpBroadcastResponder.addDevice(*relay1);
    upnpBroadcastResponder.addDevice(*relay2);
    upnpBroadcastResponder.addDevice(*relay3);
    upnpBroadcastResponder.addDevice(*relay4);
    upnpBroadcastResponder.addDevice(*relay5);
    upnpBroadcastResponder.addDevice(*relay6);
    upnpBroadcastResponder.addDevice(*relay7);
    upnpBroadcastResponder.addDevice(*relay8);
  }
}
 
void loop()
{
	 if(wifiConnected){
      upnpBroadcastResponder.serverLoop();
      
      relay1->serverLoop();
      relay2->serverLoop();
      relay3->serverLoop();
      relay4->serverLoop();
      relay5->serverLoop();
      relay6->serverLoop();
      relay7->serverLoop();
      relay8->serverLoop();
	 }
}

// put your main code here, to run repeatedly:
int readSensor = digitalRead(sensor);
   else if(readSensor == HIGH){
      //tone(relay,1000);
      digitalWrite(relay2,LOW);
      Serial.println("HIGH");
  }else{
      digitalWrite(relay2,HIGH);
      Serial.println("LOW");
   }
  //delay(100);
}

void Relay1On() {
    Serial.print("Switch Relay 1 turn on ...");
    digitalWrite (D1,LOW); 
}

void Relay1Off() {
    Serial.print("Switch Relay 1 turn off ...");
    digitalWrite (D1,HIGH); 
}

void Relay3On() {
    Serial.print("Switch Relay 3 turn on ...");
    digitalWrite (D3,LOW); 
}

void Relay3Off() {
    Serial.print("Switch Relay 3 turn off ...");
    digitalWrite (D3,HIGH); 
}

void Relay4On() {
    Serial.print("Switch Relay 4 turn on ...");
    digitalWrite (D4,LOW); 
}

void Relay4Off() {
  Serial.print("Switch Relay 4 turn off ...");
  digitalWrite(D4,HIGH); 
}

void Relay5On() {
    Serial.print("Switch Relay 5 turn on ...");
    digitalWrite (D5,LOW); 
}

void Relay5Off() {
    Serial.print("Switch Relay 5 turn off ...");
    digitalWrite (D5,HIGH); 
}

void Relay6On() {
    Serial.print("Switch Relay 6 turn on ...");
    digitalWrite (D6,LOW); 
}

void Relay6Off() {
    Serial.print("Switch Relay 6 turn off ...");
    digitalWrite(D6,HIGH); 
}
void Relay7On() {
    Serial.print("Switch Relay 7 turn on ...");
    digitalWrite (D7,LOW); 
}

void Relay7Off() {
    Serial.print("Switch Relay 7 turn off ...");
    digitalWrite (D7,HIGH); 
}

void Relay8On() {
    Serial.print("Switch Relay 8 turn on ...");
    digitalWrite (D8,LOW); 
}

void Relay8Off() {
  Serial.print("Switch Relay 8 turn off ...");
  digitalWrite(D8,HIGH); 
}

// connect to wifi – returns true if successful or false if not
boolean connectWifi(){
  boolean state = true;
  int i = 0;
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");
  Serial.println("Connecting to WiFi");

  // Wait for connection
  Serial.print("Connecting ...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    if (i > 10){
      state = false;
      break;
    }
    i++;
  }
  
  if (state){
    Serial.println("");
    Serial.print("Connected to ");
    Serial.println(ssid);
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
  }
  else {
    Serial.println("");
    Serial.println("Connection failed.");
  }
  
  return state;
}

the 8 channel relay is working but im trying to put PIR sensor on this code so i can add on my nodemcu

this is my error

Arduino: 1.8.13 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:1MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"





















echo:116:4: error: expected unqualified-id before 'else'

    else if(readSensor == HIGH){

    ^

echo:120:4: error: expected unqualified-id before 'else'

   }else{

    ^

echo:125:1: error: expected declaration before '}' token

 }

 ^

exit status 1

expected unqualified-id before 'else'



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

See reply #2

Here is a portion of your code formatted better to show code blocks, indentation and functions

void loop()
{
  if (wifiConnected)
  {
    upnpBroadcastResponder.serverLoop();
    relay1->serverLoop();
    relay2->serverLoop();
    relay3->serverLoop();
    relay4->serverLoop();
    relay5->serverLoop();
    relay6->serverLoop();
    relay7->serverLoop();
    relay8->serverLoop();
  }
}

// put your main code here, to run repeatedly:
int readSensor = digitalRead(sensor);
else if (readSensor == HIGH)
{
  //tone(relay,1000);
  digitalWrite(relay2, LOW);
  Serial.println("HIGH");
}
etc, etc, etc

As AWOL has suggested and I hope that you can see, there is code not in a function, hence the error. Where should the loop() function end ?

void loop()
{
if(wifiConnected){
upnpBroadcastResponder.serverLoop();

relay1->serverLoop();
relay2->serverLoop();
relay3->serverLoop();
relay4->serverLoop();
relay5->serverLoop();
relay6->serverLoop();
relay7->serverLoop();
relay8->serverLoop();
}
} <=== closing bracket of loop
so the code in red is
not
inside any function
// put your main code here, to run repeatedly:
int readSensor = digitalRead(sensor);
else if(readSensor == HIGH){
//tone(relay,1000);
digitalWrite(relay2,LOW);
Serial.println("HIGH");
}else{
digitalWrite(relay2,HIGH);
Serial.println("LOW");
}
//delay(100);

}
best regards Stefan

Well, where is that function?

UKHeliBob:
Here is a portion of your code formatted better to show code blocks, indentation and functions

void loop()

{
 if (wifiConnected)
 {
   upnpBroadcastResponder.serverLoop();
   relay1->serverLoop();
   relay2->serverLoop();
   relay3->serverLoop();
   relay4->serverLoop();
   relay5->serverLoop();
   relay6->serverLoop();
   relay7->serverLoop();
   relay8->serverLoop();
 }
}

// put your main code here, to run repeatedly:
int readSensor = digitalRead(sensor);
else if (readSensor == HIGH)
{
 //tone(relay,1000);
 digitalWrite(relay2, LOW);
 Serial.println("HIGH");
}
etc, etc, etc




As AWOL has suggested and I hope that you can see, there is code not in a function, hence the error. Where should the loop() function end ?

Thank you MASTER you save my day god bless you and keep save
i manage to fix another error thank you again MASTER! :kissing:

Thank you MASTER

Hold on a minute. I am certainly not a master of anything or anyone, and in any case AWOL was the first one to point out the problem here. I just pointed it out in another way