在‘;之前应为Arduino错误主表达式)’;代币

在‘;之前应为Arduino错误主表达式)’;代币,arduino,arduino-ide,nodemcu,adafruit,ifttt,Arduino,Arduino Ide,Nodemcu,Adafruit,Ifttt,我在nodemcu板上运行这段代码时,不断出现错误 //Google Assistant Home Automation #include < ESP8266WiFi.h > #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #define Relay1 D1 #define Relay2 D2 #define Relay3 D3 #define

我在nodemcu板上运行这段代码时,不断出现错误

//Google Assistant Home Automation
#include < ESP8266WiFi.h >
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

#define Relay1            D1
#define Relay2            D2
#define Relay3            D3
#define Relay4            D4

#define WLAN_SSID       "   ----   "             // Your SSID
#define WLAN_PASS       "  ----  "        // Your password

/************************* Adafruit.io Setup
*********************************/

#define AIO_SERVER      "io.adafruit.com" //Adafruit Server
#define AIO_SERVERPORT  1883
#define AIO_USERNAME    "   -----   "            // Username
#define AIO_KEY         "      ------------      "   // Auth Key

//WIFI CLIENT WiFiClient client;

Adafruit_MQTT_Client mqtt(& client, AIO_SERVER, AIO_SERVERPORT,
    AIO_USERNAME, AIO_KEY);

Adafruit_MQTT_Subscribe Light1 = Adafruit_MQTT_Subscribe(& mqtt,
    AIO_USERNAME"/feeds/Relay1"); // Feeds name should be same everywhere
Adafruit_MQTT_Subscribe Light2 = Adafruit_MQTT_Subscribe(& mqtt,
    AIO_USERNAME "/feeds/Relay2"); Adafruit_MQTT_Subscribe Light3 =
        Adafruit_MQTT_Subscribe(& mqtt, AIO_USERNAME "/feeds/Relay3");
Adafruit_MQTT_Subscribe Light4 = Adafruit_MQTT_Subscribe(& mqtt,
    AIO_USERNAME "/feeds/Relay4");

void MQTT_connect();

void setup() {
    Serial.begin(115200);

    pinMode(Relay1, OUTPUT); pinMode(Relay2, OUTPUT);
    pinMode(Relay3, OUTPUT); pinMode(Relay4, OUTPUT);
    // Connect to WiFi access point.   Serial.println(); Serial.println();   Serial.print("Connecting to ");  
    Serial.println(WLAN_SSID);

    WiFi.begin(WLAN_SSID, WLAN_PASS); while (WiFi.status() !=
        WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    } Serial.println();

    Serial.println("WiFi connected"); Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    mqtt.subscribe(& Light1); mqtt.subscribe(& Light3); mqtt.subscribe(& Light2); mqtt.subscribe(& Light4);
}

void loop() {
    MQTT_connect();


    Adafruit_MQTT_Subscribe * subscription; while ((subscription =
        mqtt.readSubscription(20000))) {
        if (subscription == & Light1) {
            Serial.print(F("Got: "));
            Serial.println((char *)Light1.lastread);
            int Light1_State = atoi((char *)Light1.lastread);
            digitalWrite(Relay1, Light1_State);

        }
        if (subscription == & Light2) {
            Serial.print(F("Got: "));
            Serial.println((char *)Light2.lastread);
            int Light2_State = atoi((char *)Light2.lastread);
            digitalWrite(Relay2, Light2_State);
        }
        if (subscription == & Light3) {
            Serial.print(F("Got: "));
            Serial.println((char *)Light3.lastread);
            int Light3_State = atoi((char *)Light3.lastread);
            digitalWrite(Relay3, Light3_State);
        }
        if (subscription == & Light4) {
            Serial.print(F("Got: "));
            Serial.println((char *)Light4.lastread);
            int Light4_State = atoi((char *)Light4.lastread);
            digitalWrite(Relay4, Light4_State);

        }
    }

}

void MQTT_connect() {
    int8_t ret;

    if (mqtt.connected()) {
        return;
    }

    Serial.print("Connecting to MQTT... ");

    uint8_t retries = 3;
    while ((ret = mqtt.connect()) != 0) {
        Serial.println(mqtt.connectErrorString(ret));
        Serial.println("Retrying MQTT connection in 5 seconds...");
        mqtt.disconnect();
        delay(5000);
        retries--;
        if (retries == 0) {
            while (1);
        }
    } Serial.println("MQTT Connected!");
}
//谷歌家庭自动化助手
#包括
#包括“Adafruit_MQTT.h”
#包括“Adafru_MQTT_Client.h”
#定义关系1 D1
#定义关系2 D2
#定义关系3 D3
#定义关系4 D4
#定义WLAN_SSID“----//您的SSID
#定义WLAN_PASS“----”//您的密码
/*************************Adafruit.io设置
*********************************/
#定义AIO_服务器“io.adafruit.com”//adafruit服务器
#定义AIO_服务器端口1883
#定义AIO_用户名“------”//用户名
#定义AIO_键“-----------”//Auth键
//WIFI客户端WiFiClient客户端;
Adafru MQTT_客户端MQTT(&客户端、AIO_服务器、AIO_服务器端口、,
AIO_用户名、AIO_密钥);
Adafruit_MQTT_Subscribe Light1=Adafruit_MQTT_Subscribe(&MQTT),
AIO_用户名“/feeds/Relay1”);//提要的名称在任何地方都应该相同
Adafruit_MQTT_Subscribe Light2=Adafruit_MQTT_Subscribe(&MQTT),
AIO_用户名“/feed/Relay2”);Adafruit_MQTT_3=
Adafruit_MQTT_Subscribe(&MQTT,AIO_用户名“/feeds/Relay3”);
Adafruit_MQTT_Subscribe Light4=Adafruit_MQTT_Subscribe(&MQTT),
AIO_用户名“/feeds/Relay4”);
void MQTT_connect();
无效设置(){
序列号开始(115200);
pinMode(继电器1,输出);pinMode(继电器2,输出);
引脚模式(继电器3,输出);引脚模式(继电器4,输出);
//连接到WiFi接入点。Serial.println();Serial.println();Serial.print(“连接到”);
Serial.println(WLAN_SSID);
WiFi.begin(WLAN\u SSID,WLAN\u PASS);while(WiFi.status()=
WL(已连接){
延迟(500);
连续打印(“.”);
}Serial.println();
Serial.println(“WiFi连接”);Serial.println(“IP地址”);
Serial.println(WiFi.localIP());
mqtt.subscribe(&Light1);mqtt.subscribe(&Light3);mqtt.subscribe(&Light2);mqtt.subscribe(&Light4);
}
void循环(){
MQTT_connect();
Adafruit_MQTT_订阅*订阅;而((订阅)=
mqtt.readSubscription(20000))){
如果(订阅==&Light1){
连续打印(F(“Got:”);
Serial.println((char*)Light1.lastread);
int Light1_State=atoi((char*)Light1.lastread);
数字写入(Relay1,Light1_状态);
}
如果(订阅==&Light2){
连续打印(F(“Got:”);
Serial.println((char*)Light2.lastread);
int Light2_State=atoi((char*)Light2.lastread);
数字写入(Relay2,Light2_状态);
}
如果(订阅==&Light3){
连续打印(F(“Got:”);
Serial.println((char*)Light3.lastread);
int Light3_State=atoi((char*)Light3.lastread);
数字写入(Relay3,Light3_状态);
}
如果(订阅==&Light4){
连续打印(F(“Got:”);
Serial.println((char*)Light4.lastread);
int Light4_State=atoi((char*)Light4.lastread);
数字写入(Relay4,Light4_状态);
}
}
}
void MQTT_connect(){
国际贸易;
if(mqtt.connected()){
返回;
}
Serial.print(“连接到MQTT…”);
uint8_t重试次数=3次;
而((ret=mqtt.connect())!=0){
Serial.println(mqtt.connectErrorString(ret));
println(“在5秒内重试MQTT连接…”);
mqtt.disconnect();
延迟(5000);
重试--;
如果(重试次数==0){
而(1),;
}
}Serial.println(“MQTT已连接!”);
}
它在前几行中也出现了一个错误#define Relay1 D1

在我删除了D1、D2、D3和D4之后,我得到了一个错误

“')之前应为主表达式错误

这条线

数字写入(Relay4,Light4_状态)


D1、D2、D3、D4不是I/O端口号。替换为1、2、3、4。@MichaëlRoy D1、D2。。对于每个电路板变型,应为引脚_arduino.h中定义的常数。不能将D1替换为1。映射是不同的。我能知道我的代码中是否有错误吗