『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 681|回复: 18

[经验分享] 用 esp8266 最小系统板实现 DDNS (不免费)

[复制链接]

30

主题

107

帖子

475

积分

中级会员

Rank: 3Rank: 3

积分
475
金钱
368
HASS币
0
发表于 2024-3-27 17:57:47 | 显示全部楼层 |阅读模式
本帖最后由 inevitab 于 2024-3-27 20:37 编辑

一、注意事项

1、本方法不需要esp8266有什么附加硬件,只需要esp8266最小系统板,能通电运行就可以。

2、不需要home assistant,不需要网关、中控、服务器

3、本方法需要你有一个属于自己的一级域名,你可能要花钱购买一个域名,所以标题里特意说明“不免费”

如果你不知道哪里可以买到便宜的域名,可以考虑到这里 www.namecheap.com 购买 ".store" 后缀的域名,首年0.98美元,续费1.78美元。


二、我们使用 dns.he.net 的api来更改域名解析,用dns.he.net的原因是它的api极其简单,从而可以减少esp8266的代码量。

1、到 dns.he.net 注册一个账号。

2、 到你的域名供应商里将你的域名原来的 nameserver 全部删除,添加 ns1.he.net ns2.he.net ns3.he.net ns4.he.net ns5.he.net 这5个nameservers (注意,会导致你的原来的dns解析记录全部丢失!)。

3、登录 dns.he.net ,添加你的域名:

屏幕截图 2024-03-27 173158.png

屏幕截图 2024-03-27 173233.png

4、添加你要用来实现ddns的域名,可以直接是上面那个域名,也可以是一个子域名,我喜欢用子域名:

屏幕截图 2024-03-27 173630.png

“IPv4 Address”不用管,点击选中“Enable entry for dynamic dns”后,“IPv4 Address”会自动变成 127.0.0.1。

5、生成 api key 并记录下来:

屏幕截图 2024-03-27 173855.png

屏幕截图 2024-03-27 173932.png


三、esphome代码:

esphome:
  name: esphome-diy-01
  friendly_name: ESPHome_Diy_01

esp8266:
  board: esp01_1m

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
    key: "改成你自己的"

ota:
  password: "改成你自己的"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Diy-01 Fallback Hotspot"
    password: "改成你自己的"


  on_connect:
    then:
      - http_request.get:
          url: ${dns_api_url}
          verify_ssl: false

# 让设备开启网页功能
web_server:
  port: 80
  
captive_portal:
    
substitutions:
  ddns_domain: "改成你在步骤二(4)里添加的ddns域名"
  he_api_key: "改成你在步骤二(5)里获取到的api key"
  dns_api_url: "https://${ddns_domain}:${he_api_key}@dyn.dns.he.net/nic/update?hostname=${ddns_domain}"

http_request:
  timeout: 20s

interval:
  - interval: 5min
    then:
      - http_request.get:
          url: ${dns_api_url}
          verify_ssl: false

代码实现esp8266开机并连上wifi后更新一次ddns域名,然后每隔5分钟(不要太频繁,免得超过api的限制)更新一次。


四、验证:esp8266重新开机,到域名dns列表里查看ip是否由原来的 127.0.0.1 变成其他IP,如果是的话,就说明成功了。

屏幕截图 2024-03-27 175459.png


评分

参与人数 3金钱 +29 收起 理由
1252 + 5 一直等的就是这东西,太强了!.
demacia + 8 我来瀚思就为看你!
sorrypqa + 16 高手,这是高手!

查看全部评分

回复

使用道具 举报

50

主题

1300

帖子

4892

积分

论坛DIY达人

积分
4892
金钱
3592
HASS币
20
发表于 2024-3-27 19:42:33 | 显示全部楼层
这是隐形大佬呀!这么好玩的东西都搞出来了……
回复

使用道具 举报

17

主题

419

帖子

1887

积分

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1468
HASS币
0
发表于 2024-3-27 19:52:28 | 显示全部楼层
用免费的吧  
duckdns
一个号可以5个域名
虽然域名长了点
回复

使用道具 举报

11

主题

286

帖子

2023

积分

金牌会员

Rank: 6Rank: 6

积分
2023
金钱
1737
HASS币
0
发表于 2024-3-27 20:17:40 | 显示全部楼层
那我用NO-IP的DDNS  算幾級域名啊??一直搞不太懂  
lee357.ddns.net   
回复

使用道具 举报

30

主题

107

帖子

475

积分

中级会员

Rank: 3Rank: 3

积分
475
金钱
368
HASS币
0
 楼主| 发表于 2024-3-27 20:36:06 | 显示全部楼层
george65 发表于 2024-3-27 20:17
那我用NO-IP的DDNS  算幾級域名啊??一直搞不太懂  
lee357.ddns.net

这是二级域名。
回复

使用道具 举报

1

主题

46

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
金钱
234
HASS币
0
发表于 2024-3-28 17:40:32 | 显示全部楼层
george65 发表于 2024-3-27 20:17
那我用NO-IP的DDNS  算幾級域名啊??一直搞不太懂  
lee357.ddns.net

很简单,你看有几个小数点就是几级域名,比如baidu.com就是一级,pan.baidu.com就是二级
回复

使用道具 举报

11

主题

286

帖子

2023

积分

金牌会员

Rank: 6Rank: 6

积分
2023
金钱
1737
HASS币
0
发表于 2024-3-28 19:36:31 | 显示全部楼层
李凯 发表于 2024-3-28 17:40
很简单,你看有几个小数点就是几级域名,比如baidu.com就是一级,pan.baidu.com就是二级 ...

原來可以這麼判斷  這樣我就懂了
回复

使用道具 举报

4

主题

65

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
金钱
220
HASS币
0
发表于 2024-4-2 15:39:23 | 显示全部楼层
忽然想到个问题:这种是否可以实现把目前的公网IP通过MQTT的形式发回HA,或者在WEB界面上直接显示呢?
回复

使用道具 举报

30

主题

107

帖子

475

积分

中级会员

Rank: 3Rank: 3

积分
475
金钱
368
HASS币
0
 楼主| 发表于 2024-4-2 16:11:25 | 显示全部楼层
george65 发表于 2024-3-28 19:36
原來可以這麼判斷  這樣我就懂了

也不一定, china.com.cn 、 gd.gov.cn 是一级域名
回复

使用道具 举报

30

主题

107

帖子

475

积分

中级会员

Rank: 3Rank: 3

积分
475
金钱
368
HASS币
0
 楼主| 发表于 2024-4-2 16:12:47 | 显示全部楼层
1252 发表于 2024-4-2 15:39
忽然想到个问题:这种是否可以实现把目前的公网IP通过MQTT的形式发回HA,或者在WEB界面上直接显示呢? ...

这个是什么意思呢? 有了ddns,所有需要用到ip的地方改用域名就行,不用管ip是多少。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 20:36 , Processed in 0.079104 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表