Skip to the content.

dali2mqtt 有线网关

dali2mqtt 是一款支持 DALI2 转换到 mqtt 协议的有线网关,用于dali 灯具接入 home assistant,也可以用于通过mqtt控制dali灯具,同时支持websocket,适配各类中控系统。

主要特点

接口说明

体积小巧

使用方法

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

系统拓扑图

网关管理界面操作

  1. 进入管理界面:在同一网络下的电脑或手机的浏览器里输入网关地址,如 http://d2m.local 或 http://192.168.1.99, 打开网关管理页面(用户名为 d2m,初始密码为 dali2mqtt);
  2. 配置管理:选择”配置”,进入配置页面:
    • mqtt 服务器:输入mqtt服务器的 ip 地址(如192.168.1.200)和端口(如1883),根据服务器的配置情况输入用户名和密码,按 {提交} 进行上传,此时网络会重启,等待网关重新启动并获取ip地址(网络灯长亮);
    • 网络参数:可设置静态地址和wifi等参数,缺省状态下是DHCP获取地址;
    • 网关参数:设置网关的名称(显示在web页面)和web密码(6字符以上,如为空白则为初始密码 dali2mqtt,用户名为 d2m);
    • 配置文件:下载配置是将所有的配置可以下载成 json 文件,用于备份;恢复配置用于将备份的配置恢复到设备,请先选择备份文件名; 配置界面
  3. 灯具操作:选择”灯控”,进入灯具控制页面。页面会显示扫描后发现的所有灯具和分组信息:
    • 单击短地址进入找灯模式,此灯闪烁10秒钟;
    • 双击短地址可以更改地址;
    • 双击灯具名字可以更改名字;
    • 直接点击某灯具的分组编号即可将其加入或离开这一分组;
    • 滑动亮度或色温滑块可以直接控制灯具的亮度和色温; 灯控界面
  4. 分组操作:选择”组控”,进入分组控制页面:
    • 单击短地址进入找灯模式,此组所有灯闪烁10秒钟;
    • 双击组名可以更改名字;
    • 双击类型可以更改灯具类型(255为双色温);
    • 滑动亮度或色温滑块可以直接控制灯具的亮度和色温;
    • 直接点击组内某灯具编号即可将其加入或离开这一分组; 组控界面
  5. 灯具配置:选择”灯具”页面,选择某一灯具后(需要单击 保存 才能保存到网关和灯具):
    • 可以输入渐变速率和渐变时间;
    • 可以读出网关缓存的场景数据,或直接输入后保存到网关和灯具; 灯具配置
  6. 常用命令:选择”命令”页面:
    • 全部打开:切换所有灯具全开亮度(100%);
    • 全部关闭:切换所有灯具全关亮度(0%);
    • 闪烁寻灯:用于灯具定位,相应灯具会闪烁10秒钟,短地址有效值为0-79,其中64-79表示组0到组15;
    • 扫描设备 :扫描总线上所有短地址,并上传到mqtt服务器;
    • 同步已发现设备:将之前扫描到的灯具信息上传到mqtt服务㗊(不扫描总线),当接通mqtt服务器时会自动执行此操作;
    • 为新设备分配地址: 为新灯具分配短地址(已分配短地址的不受影响);
    • 删除地址:用于删除某一地址(需要根据提示输入后确认),短地址有效值为0-63;
    • 删除所有地址:删除所有短地址,然后可以重新分配(需要根据提示输入后确认);
    • 网关初始化:删除网络所有配置后重启(需要根据提示输入后确认),灯具不受影响; 常用命令
  7. 固件管理:选择”固件”页面后:
    • 在线升级:如有新固件,系统在升级后会重启;如果没有新固件;会提示不需要升级; 固件管理

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。

  1. 扫描总线灯具并同步到mqtt:
    • topic: d2m_{macaddress}/00/set
    • payload: {“command”:”scan”}
    • 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/00/set -m “{\“command”\”:”scan”}” 即可
    • 网关反馈灯具配置 或 NULL
  2. 将网关已发现的灯具同步到mqtt(不扫描):
    • topic: d2m_{macaddress}/00/set
    • payload: {“command”:”sync”}
    • 以mosquitto为例,在mqtt服务上输入 mosquitt_pub -t d2m_c049ef3f40b4/00/set -m “{\“command”\”:”sync”}” 即可
    • 网关反馈灯具配置 或 NULL
  3. 上报当前灯具状态:
    • 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则上传所有灯具,否则为单灯
  4. 设置亮度:
    • 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}}
  5. 设置色温:
    • 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”}
  6. 同时设置亮度/色温
    • 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”}
  7. 设置颜色(以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} }
  8. 进入场景:
    • 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
    • 网关无反馈。

网络

  1. 开机时如果插上网线,则有线获取有线网络ip地址;
  2. 如果1分钟内没有有效ip地址,则关闭有线网络,开启wifi sta 模式,寻找ap并接入;
  3. 如果5次尝试仍不能接入ap,则自动开启 ap 模式,其wifi ssid 以 d2m- 开头后跟 mac 地址,如 d2m-c049ef3f40b4,密码为1234567890;
  4. wifi 开启后,再插入有线电缆无效,系统不再检测有线网络;

其他说明

  1. web 初始访问用户名为 d2m,密码为 dali2mqtt;
  2. 鼠标悬停在命令/短地址等上面会有提示信息;
  3. 网关进行扫描时,将扫描发现的设备信息同步保存到网关缓存并上传到mqtt服务器;如果有灯具未被发现,可能需要多次扫描;
  4. v1.2.0版本以后开机时不再主动扫描,只在连上mqtt服务器时执行上传操作,首次使用需要人工扫描后才能在mqtt服务器上出现;
  5. 由于dali系统短地址随机分配,删除后再分配的短地址会和原来不一致,建议删除功能慎用;
  6. 分组变动后需重新扫描才能更新到homeassistant;
  7. 无网络情况下,可以直接使用多功能键进行操作;
  8. 网关采用 esp32 模组,每个模组有4个mac地址(wifi, ap, bluetooth, ethernet),网关配置中的mac是wifi的mac,所以当接入有线网络时,和路由器上发现的mac并不一致,mqtt命令的操作以网关配置中的mac为准;
  9. 网关不提供总线电源。