NodeMCU แก้ไข DNS ในเครื่องของ Raspberry ผ่าน mDNS

ฉันได้ตั้งค่าที่อยู่ .local บน Raspberry Pi แล้ว และสามารถเข้าถึงได้จากพีซีบนที่อยู่ raspberrypi.local

ตอนนี้ฉันต้องการส่งคำขอ HTTP จาก NodeMCU ไปยัง Raspberry โดยใช้ที่อยู่ .local

ฉันพบคำตอบนี้ซึ่งระบุว่า NodeMCU จำเป็นต้องมีชุดตัวแก้ไข mDNS: การแก้ไข nodemcu ของ ESP8266 DNS ท้องถิ่นของราสเบอร์รี่

ฉันจะตั้งค่า mDNS นั้นบน NodeMCU ได้อย่างไร


person JavaScript Warrior    schedule 25.05.2017    source แหล่งที่มา


คำตอบ (1)


พบวิธีแก้ปัญหา!

นี่คือรหัสความคิดเห็น

คุณต้องรวมไลบรารี ESP8266WiFi และ 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