Как узнать MAC-адрес с помощью NodeMCU при подключении к Wi-Fi?

Я новичок в использовании NodeMCU и IOT. Я тестирую NodeMCU (ESP8266), чтобы иметь возможность подключиться к серверу pubnub. Взяли код с GitHub, но есть ошибка

'mac was not declared in this scope' 

и еще какая-то ошибка.

Кто-нибудь может сказать, в чем проблема?

Этот код взят со страницы pubnub на github — https://github.com/pubnub/arduino

Код:-

#include <Ethernet.h>

#include <PubNub.h>



void setup() {
    /* For debugging, set to speed of your choice */
    Serial.begin(9600);

    /* If you use some other HW, you need to do some other
       initialization of it here... */
    Ethernet.begin();

    /* Start the Pubnub library by giving it a publish and subscribe
       keys */
    PubNub.begin(publisher key, subscriber key);
}

void loop() {
    /* Maintain DHCP lease. For other HW, you may need to do
       something else here, or maybe nothing at all. */
    Ethernet.maintain();

    /* Publish message. You could use `auto` here... */
    PubNonSubClient *pclient = PubNub.publish(pubchannel, "\"message\"");
    if (!pclient) return;
    PublishCracker cheez;
    cheez.read_and_parse(pclient);
    /** You're mostly interested in `outcome()`, and,
        if it's "failed", then `description()`. 
    */
    Serial.print("Outcome: "); Serial.print(cheez.outcome());
    Serial.print(' '); Serial.println(cheez.to_str(cheez.outcome()));
    Serial.print("description: "); Serial.println(cheez.description());
    Serial.print("timestamp: "); Serial.println(cheez.timestamp());
    Serial.print("state: "); Serial.print(cheez.state());
    Serial.print(' '); Serial.println(cheez.to_str(cheez.state()));
    pclient->stop();

    /* Wait for news. */
    PubSubClient *sclient = PubNub.subscribe(subchannel);
    if (!sclient) return; // error
    String msg;
    SubscribeCracker ritz(sclient);
    while (!ritz.finished()) {
        ritz.get(msg);
        if (msg.length() > 0) {
            Serial.print("Received: "); Serial.println(msg);
        }
    }
    sclient->stop();

    delay(1000);
}



error :-
  sketch_jan17a:28:47: error: 'pubchannel' was not declared in this scope

     PubNonSubClient *pclient = PubNub.publish(pubchannel, "\"message\"");

                                               ^

sketch_jan17a:44:46: error: 'subchannel' was not declared in this scope

     PubSubClient *sclient = PubNub.subscribe(subchannel);

                                              ^

Multiple libraries were found for "Ethernet.h"
 Used: C:\Users\sultan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\Ethernet
 Not used: C:\Program Files (x86)\Arduino\libraries\Ethernet
exit status 1
'mac' was not declared in this scope

, 👍0


1 ответ


Лучший ответ:

2

Я не верю, что у вас есть модуль Wiznet Ethernet, подключенный к вашему NodeMcu. Библиотека Ethernet предназначена для чипов Wiznet для проводной локальной сети. Вы хотите использовать Wi-Fi NodeMcu. Для этого в ядре esp8266 имеется библиотека ESP8266WiFi. Он имеет тот же API, что и другие библиотеки WiFi, основанные на библиотеке Arduino WiFi. Таким образом, вы можете изменить примеры Wi-Fi библиотеки pubnub Arduino. Только измените #include <WiFi101.h> на #include <ESP8266WiFi.h>. (И удалите #include <SPI.h> .)

,

да, никакой ошибки после этого нет. Но теперь пишет: «Ошибка компиляции для платы NodeMCU 1.0 (модуль ESP-12E)». У меня узел mcu 2, но я не могу найти его в настройках платы. что делать?, @Sultan Morbiwala

если это «Ошибка компиляции...», значит, произошла ошибка компиляции., @Juraj

не волнуйся, понял, @Sultan Morbiwala