前言

網路上有許多mDNS相關教學,但實際使用他們附上的代碼,卻無法使用,查找國外網站折騰了一番,終於找到解決辦法,提供給有這個問題的你。

如果你還不會燒入esp8266,或者還卡在程式碼不知如何下手,請點擊下面連結。

百寶箱-智能家電設置系列#0(附上連結)- [教學] 自製homekit物件!DIY homekit物件!

 

DNS

電腦需要知道其IP地址才能將請求發送到網站。DNS是一種將網站的域名轉換為其IP地址的方法。網路上有很多DNS服務器。每個DNS服務器都有一長串域名及其對應的IP地址。設備可以連接到DNS服務器並發送域名,然後DNS服務器將使用所請求站點的IP地址進行響應。
DNS查找在後台進行:當你在瀏覽器中訪問網站時,它將首先向DNS服務器發送請求(這意味著計算機知道DNS服務器本身的IP地址),等待響應查找,然後將實際請求發送到正確的IP地址。
 

mDNS

DNS非常適合Internet上的普通站點,但是大多數本地網絡沒有自己的DNS服務器,代表無法使用域名訪問本地設備,而使用IP地址則陷入困境...
 
幸運的是,還有另一種方法:mDNS。
mDNS使用帶有.local後綴的域名,例如: http://esp8266.local 如果你的電腦需要向以.local結尾的域名發送請求,它將向支持mDNS的LAN上的所有其他設備發送多播查詢,並要求具有該特定域名的設備標識自己。名稱正確的設備將以另一個多播響應並發送其IP地址。現在你的電腦知道設備的IP地址,它可以發送正常的請求了。

在esp8266專題之中,它可以將你的網路位址http://localhost設定為自選區網名稱,例如: http://esp8266.local

 

實際代碼

建議:打開arduino ide->檔案->範例->esp8266mDNS->mDNS_Web_Sever 查看範例

於arduino ide 在你的檔案中插入以下代碼

於起始位置呼叫:

#include <ESP8266mDNS.h>

 

於void setup()之內插入:

if (!MDNS.begin("esp8266")) {
    Serial.println("Error setting up MDNS responder!");
    while (1) {
      delay(1000);
    }
  }

Serial.println("mDNS responder started");

 MDNS.addService("http", "tcp", 80)

//esp8266可以自己改,而網址會是http://esp8266.local ,若改為12345則為 http://12345.local

 

於void loop()之內插入: 

MDNS.update();

 

注意:

另外對於windows用戶需要下載bonjour才支援mDNS,可至apple官網下載,http://www.apple.com/support/bonjour/

macOSX或iOS用戶已經支援不用下載,Linux用戶需要下載 Avahi ,http://avahi.org/

 

後記

使用mDNS就可以應變自家數據機每次分配不同的區網網址,對於使用http連結控制esp系列都有很大的幫助。

接下來我會提供更多幫助你建立自己的智慧家庭器具。

 

 

 

若你還想知道更多esp相關教學,例如讓esp與區網做連接,請點擊以下連結,有更詳細的教學。

百寶箱-智能家電設置系列#0(附上連結)- [教學] 自製homekit物件!DIY homekit物件!

 

 

※ 若有任何侵權問題麻煩告知,收到通知會立即撤下。

 

 

 

arrow
arrow
    創作者介紹
    創作者 chien chien 97 的頭像
    chien chien 97

    電子煙百寶箱

    chien chien 97 發表在 痞客邦 留言(0) 人氣()