探索X12万能遥控器固件的另类玩法

探索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)

666,支持大神

6B了啊,会写固件的大佬就是不一样