魔豆外围设备接入和管理API

硬件组成

魔豆路由器 魔豆棒(为例) 魔豆按键(为例)

一般使用模式

  1. 魔豆路由器作为载体,魔豆棒作为外围设备的一个接入口,魔豆按键作为一个外围设备的例子。
  2. 使用魔豆按键通过魔豆棒传递特定数据或指令到魔豆路由器,路由器根据设定的规则来展示这
  3. 些数据或者执行这些指令。魔豆棒由魔豆路由器系统自带程序完成初始化,类似魔豆按键的外
  4. 围设备,需要在路由器上执行匹配动作,完成设备和路由器的匹配和注册工作。完成匹配与注
  5. 册之后,魔豆路由器便可处理来自外围设备的消息了。

提供的APIs

  1. 匹配api在调用“开始匹配”后将会被加锁,直到调用“结束匹配”后锁被释放;
  2. 修改api在调用“开始修改”后将会被加锁,直到调用“结束修改”后锁被释放;
  3. 注册api在调用“开始注册”后将会被加锁,直到调用“结束注册”后锁被释放;
  4. 在加锁情况下调用“开始**”api,将返回busy
  5. 获取列表api可以获取当前的设备列表与已注册的列表。
  6. 获取可接入到魔豆棒应用(与按键联动)的脚本、可执行程序信息。

魔豆棒探活

  1. GET /api/mdbang/ping
  2. return
  3. code: -1, msg:”请等待”}
  4. or
  5. return
  6. code: 1, msg:”设备不在线“}
  7. or
  8. return
  9. code: 0, msg:”设备在线“}

匹配

  • 开始匹配:

    1. GET /api/mdbang/matchStart
    2. return
    3. { code: -1, msg:"busy" }
    4. or
    5. return
    6. { code: 0, msg:"ok" }
  • 尝试匹配:

    1. GET /api/mdbang/matchTry
    2. return
    3. { code: -1, msg:"no match" }
    4. or
    5. return
    6. {
    7. code: 0,
    8. devid:"the id",
    9. msg:"ok"
    10. }
  • 结束匹配:

    1. GET /api/mdbang/matchEnd
    2. return
    3. { code: 0, msg: "ok" }

解匹配

  • 开始解匹配:

    1. POST /api/mdbang/disMatchStart
    2. post data:{
    3. "devid" : "00"~"99"
    4. }
    5. return
    6. { code: -1, msg:"busy" }
    7. or
    8. return
    9. { code: 0, msg:"ok" }
  • 尝试解匹配:

    1. POST /api/mdbang/disMatchTry
    2. post data:{
    3. "devid" : "00"~"99"
    4. }
    5. return
    6. { code: -1, msg:"no dis match" }
    7. or
    8. return
    9. {
    10. code: 0,
    11. devid:"the id"
    12. }
  • 结束解匹配:

    1. POST /api/mdbang/disMatchEnd
    2. post data:{
    3. "devid" : "00"~"99"
    4. }
    5. return
    6. { code: 0, msg: "ok" }

列表

  • 开始修改列表:

    1. GET /api/mdbang/listModifyStart
    2. return
    3. { code: -1, msg:"busy"}
    4. or
    5. return
    6. { code: 0, msg:"ok" }
  • 添加匹配设备到列表:

    1. POST /api/mdbang/listAddDevice
    2. post data:{
    3. "devid" : "00"~"99"
    4. "alias" : "xxxx"
    5. }
    6. return { code: -1, msg:"exist"}
    7. or
    8. return { code: 0, msg:"ok" }
  • 从列表删除匹配设备:

    1. POST /api/mdbang/listRmDevice
    2. post data:{
    3. "devid" : "00"~"99"
    4. }
    5. return { code: -1, msg:"error"}
    6. or
    7. return { code: 0, msg:"ok" }
  • 修改匹配设备备注到列表:

    1. POST /api/mdbang/listRepAlias
    2. post data:{
    3. "devid" : "00"~"99"
    4. "alias" : "xxxx"
    5. }
    6. return { code: -1, msg:"error"}
    7. or
    8. return { code: 0, msg:"ok" }
  • 结束修改列表:

    1. GET /api/mdbang/listModifyEnd
    2. return { code: 0, msg: "ok" }

注册

  • 开始注册:

    1. GET /api/mdbang/registerStart
    2. return { code: -1, msg:"busy"}
    3. or
    4. return { code: 0, msg:"ok" }
  • 注册设备:

    1. POST /api/mdbang/registerAddDevice
    2. post data:{
    3. "devid" : "00"~"99"
    4. }
    5. return { code: -1, msg:"error"}
    6. or
    7. return { code: 0, msg:"ok" }
  • 注册设备的操作方法:

    1. POST /api/mdbang/registerAddOps
    2. post data:{
    3. "devid" : "00"~"99"
    4. "cmd" : "0"~"255"
    5. "op" : "xxxx(reboot)"
    6. "alias" : "xxxx"
    7. }
    8. return { code: -1, msg:"error"}
    9. or
    10. return { code: 0, msg:"ok" }
  • 删除已注册设备:

    1. POST /api/mdbang/registerRmDevice
    2. post data:{
    3. "devid" : "00"~"99"
    4. }
    5. return { code: -1, msg:"error"}
    6. or
    7. return { code: 0, msg:"ok" }
  • 删除已注册设备的操作方法:

    1. POST /api/mdbang/registerRmOps
    2. post data:{
    3. "devid" : "00"~"99"
    4. "cmd" : "0"~"255"
    5. }
    6. return { code: -1, msg:"error"}
    7. or
    8. return { code: 0, msg:"ok" }
  • 修改已注册设备的操作方法:

    1. POST /api/mdbang/registerRepOps
    2. post data:{
    3. "devid" : "00"~"99"
    4. "cmd" : "0"~"255"
    5. "op" : "xxxx(reboot)"
    6. "alias" : "xxxx"
    7. }
    8. return { code: -1, msg:"error"}
    9. or
    10. return { code: 0, msg:"ok" }
  • 生效注册:

    1. GET /api/mdbang/registerCommit
    2. return { code: -1, msg:"error"}
    3. or
    4. return { code: 0, msg:"ok" }
  • 结束注册:

    1. GET /api/mdbang/registerEnd
    2. return { code: 0, msg: "ok" }

读取状态

  • 获取列表状态(已匹配并为被注册的设备):

    1. GET /api/mdbang/listGetFullList
    2. return
    3. {
    4. "netid": "10",
    5. "devices": [{
    6. "devid": "1",
    7. "alias": key 1
    8. }, {
    9. "devid": "2",
    10. "alias": key 2
    11. }]
    12. }
  • 获取注册状态

    1. GET /api/mdbang/registerGetFullList
    2. return
    3. {
    4. "netid": "10",
    5. "devices": [{
    6. "devid": "20",
    7. "alias": key 1”,
    8. "ops": [{
    9. "cmd": "7",
    10. "alias": "时钟",
    11. "op": "clock &"
    12. }]
    13. }, {
    14. "devid": "15",
    15. "alias": key 2”,
    16. "ops": [{
    17. "cmd": "7",
    18. "alias": "时钟",
    19. "op": "clock &"
    20. }]
    21. }]
    22. }

读取可调用程序列表

  1. GET /api/mdbang/getActions
  2. return {
  3. "13504053": {
  4. "package_id": "com.modouwifi.vpnss",
  5. "name": "app-ss-vpn",
  6. "actions": {
  7. "start_shadow_socks": {
  8. "id": "start_shadow_socks",
  9. "name": "打开SS-VPN",
  10. "relative": true,
  11. "cmd": "/data/apps/14156393/./init start",
  12. "is_sync": false
  13. },
  14. "stop_shadow_socks": {
  15. "id": "stop_shadow_socks",
  16. "name": "关闭SS-VPN",
  17. "relative": true,
  18. "cmd": "/data/apps/14156393/./init stop",
  19. "is_sync": false
  20. }
  21. },
  22. "id": "13504053"
  23. }
  24. }

两份文件

  • /data/conf/mdbang.list

    该文件维护着已匹配的设备id以及他们的备注信息

  • /data/conf/mdbang.conf

    该文件维护着已注册的设备信息和对应的操作方法,系统会根据这份文件的信息,来自动调度和处理已注册的操作方法。