探索X12的万能遥控器另类玩法,最近看到大家都在玩x12我也简单尝试了一下。根据自己的设计思路编写了一下x12的固件,目前由于能力有限,有些功能还是不是很完善,比如电量显示啊,红外编码发射啊,这些,后续慢慢完善吧,欢迎大佬指点。
固件设计思路
固件下载
请到我博客x12页面下载release固件.最后一个为最新固件(备注:因博客缓存问题,不是第一次打开该页面时会加载上次打开缓存的页面,最好重新刷新一下浏览器,最新的内容就自动同步了)。
固件下载地址
上手指南
- 刷新完固件后断电一次,然后重新上电查看是否有CMMCC_x12开头的固件,如果有则是刷机成功了。下面开始配网流程.
- 配网流程为连接wifi热点,输入wifi用户名和密码即可
- 最好配置网络完毕后,配置一下mqtt的服务器信息,当然是用udp通信也是可以的,但是还是建议是用mqtt服务,比较稳定.配置mqtt可以通过我提供的udp脚本也可以在配置WiFi的时候同步配置,我提供的udp脚本基于python编写,需要会运行简单的python脚本和环境.测试工具包看后面链接
- 配置完mqtt协议之后可以通过我提供的几个python脚本进行查看,是否有日志输出。
- 录入红外编码,就是对你这x12设备一顿乱按,然后查看python的mqtt信息输出的ircode_id,每条指令对应一个ID,记录下来即可。这个是你成功控制设备的第一步
- 发送指定控制设备发送特定红外编码,包括定时任务,延时功能等.
协议具体的json指令
UDP协议通信
- x12监听本机端口10182
10182端口为用户指令接收端口
- x12会向局域网内设备10181端口广播json信息
10181端口为设备向用户的局域网所有设备广播的消息的端口
MQTT协议通信
- 监听的主题
[mac_address] 是你的mac地址,都为小写,比如 ecfabc6a3ef8
device/x12/[mac_address]/sensor (定时发送信息主题,间隔5秒)
device/x12/[mac_address]/set (接收来自用户指令的专用主题)
device/x12/[mac_address]/status (发送设备的状态信息,比较杂乱,比如用户查看版本信息、任务信息、延时信息等)
device/x12/[mac_address]/ir (广播设备接收的红外编码信息,用户需要监听本主题来查看录入红外编码的ID)
- 设备基本信息
发送:
{"cmd":"device report"}`
回复:
{"type":"x12","mac":[mac_address],"ip":"192.168.3.21","version":"0.1.0"}
- 重启设备
发送{"cmd":"reboot"}
- 设置MQTT服务器信息
{"mac" : mac_address,"setting": {"mqtt_server":"1.0.0.0","mqtt_port":1883,"mqtt_username":"x12","mqtt_password":"123"}}
- 查看固件版本
{"mac" : mac_address,"version":"null"}
- 发送红外指令
{"mac" : mac_address,"action":{"id":137}}
- 通信协议mqtt升级
{"mac" : mac_address,"ota":"http://10.0.0.1/x12.bin"}
- 自动检查升级
{"cmd":"checkAutoUpgrade"}
- 设备内置4组定时任务,查看定时任务为:
{"mac" : mac_address,"task":"1"}
{"mac" : mac_address,"task":"2"}
{"mac" : mac_address,"task":"3"}
{"mac" : mac_address,"task":"4"}
- 设置定时任务:
{"mac" : mac_address,"task_0":{"hour":23,"minute":51,"repeat":127,"action":1,"ircode_id":0}}
{"mac" : mac_address,"task_1":{"hour":20,"minute":30,"repeat":127,"action":1,"ircode_id":0}}
{"mac" : mac_address,"task_2":{"hour":10,"minute":18,"repeat":127,"action":1,"ircode_id":1}}
{"mac" : mac_address,"task_3":{"hour":6,"minute":30,"repeat":127,"action":1,"ircode_id":1}}
其中127为代表一周的每一天的编码值,比如1111111,表示每天都有效,这个值当做2进制转换为10进制为127,第一位代表周一,第二位代表周二,最后一位代表周日
- 查看延时任务
{"mac" : mac_address,"delay":{"status":-1}}
- 设置延时任务
{"mac" : mac_address,"delay":{"status":1,"action":1,"times":10,"ircode_id":0}}
status为1表示有效。times是表示延时的分钟数,单位为分钟,ircode_id为录入的红外编码ID
- OTA web升级
x12IP地址,端口为8088 比如 http://192.168.2.100:8088
- 按钮的功能
按钮长按5秒为重新配置网络,
按钮长按10秒为清空所有用户配置信息恢复出厂设置,
按钮按一次为发送设备的基本信息和控制led灯
- 固件测试工具助手代码包
本代码包主要为python代码编写,测试本固件需要了解基本的python知识和通信知识,
会运行基本的python脚本,门槛有点高蛤。
[程序包地址]( https://code.5288z.com/zhangyuqing/X12_Debug)