dali2mqtt 有线网关
dali2mqtt 是一款支持 DALI2 转换到 mqtt 协议的有线网关,用于dali 灯具接入 home assistant,也可以用于通过mqtt控制dali灯具,同时支持websocket,适配各类中控系统。
主要特点
- dali2 协议,支持短地址扫描、分配、全部初始化等功能;
- Homeassistant 自动发现(DT6/DT8),便于管理;
- 处理器为 eps32,资源充足、省电环保;
- 有线网络,稳定可靠;
- 支持 mqtt 和 websocket 连接,信息完全同步;
- ha 下打开或关闭组,组内灯具状态会相应更新;
- 组状态可以自定义(组内灯全开则组状态为开,或只有一盏开则为开);
- 自带管理界面,直观寻灯、分组和控制,调试方便;
- DIN 导轨支持,便于放置配电箱;
- 单路 DALI, 4个接线柱,便于接线;
- 220v误接保护,工程适用;
- 需要外接 dail电源,本网关不指供dali电源。
接口说明
- RJ45插座:用于接入到交换机。
- type-c插座:设备供电(5-24V,500ma)。
- led指示灯:
- NET:闪烁表示无有线网络,常亮表示已获取IP地址。
- RX: 闪亮表示正在从总线接收数据,无接收熄灭
- TX:闪亮表示正在向总线发送数据,无发送熄灭
- MQTT:闪烁表示未连接,常亮表示已接入服务器。

使用方法
- 安装 mqtt 服务器,并在homeassistant上配置完成;
- 先将网关接入带有电源的dail总线,然后插上网线,最后插上typec电源;
- 等待网关获取ip地址(网络led常亮),从浏览器上访问设备:http://d2m.local;也可以从路由器上查看获取的地址,以下假设获取的地址为 192.168.1.99;
- 输入用户名 d2m 和 密码 dali2mqtt,进入 mqtt 配置页面,配置地址和端口,提交后设备会重启;
- 待设备重启完成,再次刷新浏览器,进入命令界面,点击“扫描”去发现总线上的灯具并同步到mqtt,也可以通过多功能按键操作;
- 多功能键操作:
- 单击:用于在全开和全关之间来回切换,按一下全开,再按全关;
- 双击:用于扫描总线上的灯具,同时向mqtt服务㗊上报结果,可以多次扫描更新;
- 长按(2秒以上,5秒以下):对新灯具分配短地址;
- 长按(6秒以上):删除所有已分配的地址;
- 长按(15秒以上):临时初始化web登录密码为 dali2mqtt;

网关管理界面操作
- 进入管理界面:在同一网络下的电脑或手机的浏览器里输入网关地址,如 http://d2m.local 或 http://192.168.1.99, 打开网关管理页面(用户名为 d2m,初始密码为 dali2mqtt);
- 配置管理:选择”配置”,进入配置页面:
- mqtt 服务器:输入mqtt服务器的 ip 地址(如192.168.1.200)和端口(如1883),根据服务器的配置情况输入用户名和密码,按 {提交} 进行上传,此时网络会重启,等待网关重新启动并获取ip地址(网络灯长亮);
- 网络参数:可设置静态地址和wifi等参数,缺省状态下是DHCP获取地址;
- 网关参数:设置网关的名称(显示在web页面)和web密码(6字符以上,如为空白则为初始密码 dali2mqtt,用户名为 d2m);
- 配置文件:下载配置是将所有的配置可以下载成 json 文件,用于备份;恢复配置用于将备份的配置恢复到设备,请先选择备份文件名;

- 灯具操作:选择”灯控”,进入灯具控制页面。页面会显示扫描后发现的所有灯具和分组信息:
- 单击短地址进入找灯模式,此灯闪烁10秒钟;
- 双击短地址可以更改地址;
- 双击灯具名字可以更改名字;
- 直接点击某灯具的分组编号即可将其加入或离开这一分组;
- 滑动亮度或色温滑块可以直接控制灯具的亮度和色温;

- 分组操作:选择”组控”,进入分组控制页面:
- 单击短地址进入找灯模式,此组所有灯闪烁10秒钟;
- 双击组名可以更改名字;
- 双击类型可以更改灯具类型(255为双色温);
- 滑动亮度或色温滑块可以直接控制灯具的亮度和色温;
- 直接点击组内某灯具编号即可将其加入或离开这一分组;

- 灯具配置:选择”灯具”页面,选择某一灯具后(需要单击 保存 才能保存到网关和灯具):
- 可以输入渐变速率和渐变时间;
- 可以读出网关缓存的场景数据,或直接输入后保存到网关和灯具;

- 常用命令:选择”命令”页面:
- 全部打开:切换所有灯具全开亮度(100%);
- 全部关闭:切换所有灯具全关亮度(0%);
- 闪烁寻灯:用于灯具定位,相应灯具会闪烁10秒钟,短地址有效值为0-79,其中64-79表示组0到组15;
- 扫描设备 :扫描总线上所有短地址,并上传到mqtt服务器;
- 同步已发现设备:将之前扫描到的灯具信息上传到mqtt服务㗊(不扫描总线),当接通mqtt服务器时会自动执行此操作;
- 为新设备分配地址: 为新灯具分配短地址(已分配短地址的不受影响);
- 删除地址:用于删除某一地址(需要根据提示输入后确认),短地址有效值为0-63;
- 删除所有地址:删除所有短地址,然后可以重新分配(需要根据提示输入后确认);
- 网关初始化:删除网络所有配置后重启(需要根据提示输入后确认),灯具不受影响;

- 固件管理:选择”固件”页面后:
- 在线升级:如有新固件,系统在升级后会重启;如果没有新固件;会提示不需要升级;

- 在线升级:如有新固件,系统在升级后会重启;如果没有新固件;会提示不需要升级;
mqtt topic 和 websocket
以下说明中,{macaddress}为网关mac地址,需要从配置中查找(不是路由器上发现的mac地址)。{adr}为短地址,有效值为00-79,2位数字,0-9需要写成00-09,64-79表示组0到组15。
websocket 的连接地址为: ws://d2m.local/ws. 发送命令的格式为json, 以扫描总线灯具为例: {“device”:”d2m_{macaddress}/{adr}”, “set”:{“command”:”scan”}},也就是将topic和payload合并为一个json语句,device的值是topic里的地址部分,set的值就是payload。
- 扫描总线灯具并同步到mqtt:
- topic: d2m_{macaddress}/00/set
- payload: {“command”:”scan”}
- 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/00/set -m “{\“command”\”:”scan”}” 即可
- 网关反馈灯具配置 或 NULL
- 将网关已发现的灯具同步到mqtt(不扫描):
- topic: d2m_{macaddress}/00/set
- payload: {“command”:”sync”}
- 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/00/set -m “{\“command”\”:”sync”}” 即可
- 网关反馈灯具配置 或 NULL
- 上报当前灯具状态:
- topic: d2m_{macaddress}/{adr}/set
- payload: {“command”:”pubstate”}
- 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/00/set -m “{\“command”\”:”pubstate”}” 即可
- 网关反馈灯具当前状态(以色温灯为例): d2m_{macaddress}/00/status {“state”:”ON”,”color_temp”:2500,”color_mode”:”color_temp”}
- 如果{adr}为255则上传所有灯具,否则为单灯
- 设置亮度:
- topic: d2m_{macaddress}/{adr}/set
- payload: {“state”:”ON”,”brightness”:{value}}
- {value} 为亮度(0-254,0为关闭,254为全亮)
- 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/03/set -m “{\“state":\“ON\”,\“brightness\“:231}” 则短地址为3的灯具亮度调整为231
- 网关反馈的topic中将set替换成status,payload不变:d2m_{macaddress}/{adr}/status {“state”:”ON”,”brightness”:{value}}
- 设置色温:
- topic: d2m_{macaddress}/{adr}/set
- payload: {“state”:”ON”,”color_temp”:{value}}
- {value} 为kelvin表示的色温(2000-6535)
- 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/03/set -m “{\“state\”:\“ON\”,\“color_temp\“:2500}” 则短地址为3的灯具色温调整为2500
- 网关反馈的topic中将set替换成status, payload中增加”color_mode”:d2m_{macaddress}/{adr}/status {“state”:”ON”,”color_temp”:{value},”color_mode”:”color_temp”}
- 同时设置亮度/色温
- topic: d2m_{macaddress}/{adr}/set
- payload: {“state”:”ON”,”brightness”:{bvalue},”color_temp”:{cvalue}}
- {bvalue} 为亮度(0-254,0为关闭,254为全亮)
- {cvalue} 为kelvin表示的色温(2000-6535)
- 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/03/set -m “{\“state\”:\“ON\”,\“brightness\“:231,\“color_temp\“:2500}” 则短地址为3的灯具色温调整为2500的同时将亮度调整到231
- 网关反馈的topic中将set替换成status, payload中增加”color_mode”:d2m_{macaddress}/{adr}/status {“state”:”ON”,”brightness”:{bvalue},”color_temp”:{cvalue},”color_mode”:”color_temp”}
- 设置颜色(以RGBW为例)
- topic: d2m_{macaddress}/{adr}/set
- payload: {“state”:”ON”,”color”:{“r”: {rvalue}, “g”:{gvalue}, “b”: {bvalue}, “w”:{wvalue} }}
- {r/b/g/wvalue} 分别为红、绿、蓝、白通道亮度(0-254,0为关闭,254为全亮)
- 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/03/set -m “{\“state\”:\“ON\”,\“color\”:{\“r\“:125, \“g\“:135, \“b\“:145, \“w\“:155}}” 则短地址为3的灯具颜色调整到RGBW(125, 135, 145, 155)
- 网关反馈的topic中将set替换成status, payload中增加”brightness”:d2m_{macaddress}/{adr}/status {“state”:”ON”,”brightness”:{bvalue},”color”:{“r”: {rvalue}, “g”:{gvalue}, “b”: {bvalue}, “w”:{wvalue} }
- 进入场景:
- topic: d2m_{macaddress}/{adr}/set
- payload: {“scene”:{value}}
- {value} 为场景编号(0-15),以mosquitto为例,在mqtt服务上输入 mosquitto_pub -t “d2m_244cab05c094/03/set” -m “{\“scene\“:0}” 则短地址为3的灯具进入场景15
- 网关无反馈。
网络
- 开机时如果插上网线,则有线获取有线网络ip地址;
- 如果1分钟内没有有效ip地址,则关闭有线网络,开启wifi sta 模式,寻找ap并接入;
- 如果5次尝试仍不能接入ap,则自动开启 ap 模式,其wifi ssid 以 d2m- 开头后跟 mac 地址,如 d2m-c049ef3f40b4,密码为1234567890;
- wifi 开启后,再插入有线电缆无效,系统不再检测有线网络;
其他说明
- web 初始访问用户名为 d2m,密码为 dali2mqtt;
- 鼠标悬停在命令/短地址等上面会有提示信息;
- 网关进行扫描时,将扫描发现的设备信息同步保存到网关缓存并上传到mqtt服务器;如果有灯具未被发现,可能需要多次扫描;
- v1.2.0版本以后开机时不再主动扫描,只在连上mqtt服务器时执行上传操作,首次使用需要人工扫描后才能在mqtt服务器上出现;
- 由于dali系统短地址随机分配,删除后再分配的短地址会和原来不一致,建议删除功能慎用;
分组变动后需重新扫描才能更新到homeassistant;- 无网络情况下,可以直接使用多功能键进行操作;
- 网关采用 esp32 模组,每个模组有4个mac地址(wifi, ap, bluetooth, ethernet),网关配置中的mac是wifi的mac,所以当接入有线网络时,和路由器上发现的mac并不一致,mqtt命令的操作以网关配置中的mac为准;
- 网关不提供总线电源。