偶然发现机柜的智能PDU卖得非常贵,上千元,简直要飞天了。何不自己改一下呢?
说做就买,先买个普通的PDU
花了点时间画下原理图,
然后嘉立创下单白嫖一下PCB
有6个2.54的排针,用于固件刷入
G是GND
T是TX
R是RX
V是3.3V电源
0是GPIO0 刷固件时需要下拉到GND
R是ESP12S的RST管脚
PCB 3D图
PCB成品完成
刷的ESPHOME固件,接入HOME ASSISTANT
源码如下
substitutions:
device_name: smartpdu
friendly_name: smartpdu
relay_pin: GPIO15 #继电器
usemac: "true"
mqtt_name: smartpdu_266706
esphome:
name: ${friendly_name}
friendly_name: ${friendly_name}
name_add_mac_suffix: true
esp8266:
board: nodemcuv2
# Enable Home Assistant API
api: ##接入ha
encryption:
key: "u5dq18s4BOlFDRzWo7nD0zol61A5Rj7RVNTvQfsJDoE="
reboot_timeout: 0s ##没有接入ha时 重启限时,0S为不重启
ota: ##ESPhome远程刷固件
- platform: esphome
password: "b8765680b840009d6a389a7273b788ca"
# Enable logging
logger:
baud_rate: 0
captive_portal:
mqtt: ##MQTT 传输协议,不需要可以关闭
broker: 192.168.3.6 # mqtt服务器ip/域名
username: homeassistant # 账号
password: gahngie8kieraibeiMoh7iv7sheethie3fu1ezae7maiPhaiw7ahyoe8geij7out # 密码
reboot_timeout: 0s
topic_prefix: '${mqtt_name}'
web_server: ## web控制,添加了这2行,就可以在网页输入内网ip即可控制设备以及上传固件升级;
port: 80
local: true
wifi:
networks:
- ssid: AP530-2.4G
password: 'zzc198456'
- ssid: wushi-2.4
password: '++0123--'
manual_ip:
static_ip: 192.168.3.137 ##固定此设备IP地址;
gateway: 192.168.3.1 ##路由器、网关地址;
subnet: 255.255.255.0 ##子网掩码;
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: '${friendly_name}_wifi '
password: "++0123--"
reboot_timeout: 0s ##没有接入WIFI时 重启限时,0S为不重启
uart:
tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 4800
parity: NONE
stop_bits: 2
switch:
- platform: gpio #继电器
pin: $relay_pin
name: "${friendly_name}_relay"
id: "${friendly_name}_relay"
restore_mode: ALWAYS_ON #启动时将初始化为ON
sensor:
- platform: bl0939
update_interval: 2s
voltage:
name: "${friendly_name}_Voltage"
id: "${friendly_name}_Voltage"
current_2:
name: "${friendly_name}_Current"
id: "${friendly_name}_Current"
#filters:
# - lambda: return x - 0.32; #校准系数,原始值减这个数得到最终值
active_power_2:
name: "${friendly_name}_Power"
id: "${friendly_name}_Power"
filters:
- lambda: return x * -1; # 校准系数,原始值乘这个数得到最终值
energy_2:
name: "${friendly_name}_Energy"
id: "${friendly_name}_Energy"
filters:
- lambda: return x * -1; # 校准系数,原始值乘这个数得到最终值
energy_total:
name: "${friendly_name}_EnergyTotal"
id: "${friendly_name}_EnergyTotal"
filters:
- lambda: return x * -1; # 校准系数,原始值乘这个数得到最终值
- platform: uptime
id: uptime_s
update_interval: 2s
- platform: wifi_signal #WiFi信号强度
name: "${friendly_name}_WiFi_Signal"
update_interval: 2s
time:
- platform: homeassistant
id: homeassistant_time
最终成品图