NodeMCU menyelesaikan DNS lokal Raspberry melalui mDNS

Saya telah menetapkan alamat .local di Raspberry Pi, dan dapat diakses dari PC di alamat raspberrypi.local.

Sekarang saya ingin bisa membuat permintaan HTTP dari NodeMCU ke Raspberry menggunakan alamat .local-nya.

Saya menemukan jawaban ini yang menyebutkan bahwa NodeMCU perlu menyetel penyelesai mDNS: penyelesaian nodemcu ESP8266 DNS lokal raspberry

Bagaimana cara mengatur mDNS itu di NodeMCU?


person JavaScript Warrior    schedule 25.05.2017    source sumber


Jawaban (1)


Menemukan solusinya!

Berikut kode yang dikomentari.

Anda perlu menyertakan perpustakaan ESP8266WiFi dan ESP8266mDNS.

// hostString will be used to identify this device, 
// but not relevant as we're not providing mDNS services
char hostString[16] = {0};

void findMDNS() {
  // Need to make sure that we're connected to the wifi first
  while (WiFi.status() != WL_CONNECTED) {
    delay(250);
    Serial.print(".");
  } 

  if (!MDNS.begin(hostString)) {
    Serial.println("Error setting up MDNS responder!");
  }

  // We now query our network for 'device-info' service
  // over tcp, and get the number of available devices 
  int n = MDNS.queryService("device-info", "tcp");
  if (n == 0) {
    Serial.println("no services found");
  }
  else {
    for (int i = 0; i < n; ++i) {
      // Going through every available service,
      // we're searching for the one whose hostname 
      // matches what we want, and then get its IP
      if (MDNS.hostname(i) == RASPBERRY_HOSTNAME) {
        JENKINS_HOST = String(MDNS.IP(i)[0]) + String(".") +\
          String(MDNS.IP(i)[1]) + String(".") +\
          String(MDNS.IP(i)[2]) + String(".") +\
          String(MDNS.IP(i)[3]);
      }
    }
  }
}
person JavaScript Warrior    schedule 26.05.2017