#include #include #include // светодиод. пин 3 #define ledPin 3 // переменная, характеризующая текущее состояние светодиода (вкл/выкл) boolean LEDstatus = LOW; // переменная состояния подключения к брокеру boolean cnct = 0; void callback(char* topic, byte* payload, unsigned int length); ///////////// сетевые настройки //////////////// // MAC адрес Arduino byte mac[] = { 0x1A, 0x1D, 0xF6, 0x31, 0x09, 0x86 }; // ip адресс Arduino IPAddress ip(10, 36, 1, 73); // ip адресс MQTT брокера mosquitto byte server[] = { 10, 36, 1, 18 }; // данные для подключения к MQTT брокеру mosquitto (логин и пароль) const char* mqtt_username = "ЛОГИН_ДЛЯ_ПОДКЛЮЧЕНИЯ_К_mosquitto"; const char* mqtt_password = "ПАРОЛЬ_ДЛЯ_ПОДКЛЮЧЕНИЯ_К_mosquitto"; EthernetClient ethClient; PubSubClient client(server, 1883, callback, ethClient); //////// пожключаюсь к брокеру mqtt /////// boolean reconnect() { Serial.println("Trying to connect to mqtt"); while (cnct == 0){ Serial.print("."); if (client.connect("ArdClient", mqtt_username, mqtt_password)) { client.subscribe("/r1"); Serial.println("Connected to: /r1"); Serial.println("Connection was successful"); cnct = 1; } } Serial.println(""); return client.connected(); } ///////////////////////////////// void setup() { // выключаем сразу светодиод digitalWrite(ledPin, LOW); pinMode(ledPin, OUTPUT); Serial.begin(9600); // запускаю сеть на arduino Ethernet.begin(mac, ip); Serial.print("ip address arduino: "); Serial.println(Ethernet.localIP()); // подключаюсь к брокеру reconnect(); } void loop() { client.loop(); } // работа с брокером void callback(char* topic, byte* payload, unsigned int length) { payload[length] = '\0'; Serial.print("Topic: "); Serial.println(String(topic)); if (String(topic) == "/r1") { String value = String((char*)payload); LEDstatus = value.substring(0, value.indexOf(';')).toInt(); Serial.print("LEDstatus= "); Serial.println(LEDstatus); digitalWrite(ledPin, LEDstatus); } }