NiceLeeのBlog 用爱发电 bilibili~

一个弱鸡应用的诞生(4)-总结

2019-09-17
nIceLee

阅读:


最初要做的是随时随地获取家里Wifi连接的设备状态,也就是有几台终端在线。
随着程序逐渐搭建完毕,顺手又加了一个远程控制手机录制直播的idea(因为功能早就做过附加工作量不大嗯哼)。
程序dex包已经编译好,接下来讲讲怎么部署环境吧。

需要什么

  • 一台Android手机(可以不必Root)
    • 安装Termux(需要wget/vi/sshd/curl/grep)
    • 安装Termux:Tasker
    • 安装Tasker
    • 不咋会的可以看看前面的博文
  • 一个Github账号
  • 一个编译好的dex程序NinjaV4.dex

如何部署

Github

  • 新建一个用于鉴权的token
  • 新建一个Repo(可以是私有),例如AbcTest
  • 为了方便识别在线设备,添加对MAC地址的备注,如online-devices/remarks.txt
    2b:2b:2b:2b:2b:2b 我的PC
    2b:2b:2b:2b:2b:2c 我的手机
    

Termux

  • 将程序拷至Termux
    #执行的时候请去掉注释
    cd ~
    mkdir -p ~/workspace/ninjaV4/config
    cd ~/workspace/ninjaV4/config
    #下载配置文件
    wget -O crypto-js.min.js https://gitee.com/NiceLeee/NinjaV4/raw/master/src/resources/crypto-js.min.js
    wget -O app.config.sample https://gitee.com/NiceLeee/NinjaV4/raw/master/auto-install/app.config.sample
    ## 接下来将ninjaV4.dex复制到workspace
    cd ~/workspace/ninjaV4
    wget -4 -O ninjaV4.dex https://github.com/nICEnnnnnnnLee/NinjaV4/releases/download/1.0.0/NinjaV4-1.0.0.dex
    
  • 做好配置
    cd ~/workspace/ninjaV4/config
    vi app.config
    
  • 配置要点
    # 监听端口,用于局域网内对设备的控制,如果更改,需要修改涉及到的Tasker脚本  
    httpServerPort = 8888
    # 下载文件夹,程序有啥要下载的东西都放这里
    downloadDir = download/
    # token 用于访问github
    token = xxxxxxxx
    # 在线设备上传的位置
    #例如访问{nICEnnnnnnnLee}的{AbcTest}仓库的{online-devices/onlines.txt}可以看到我的WiFi设备状态
    url_onlineDevices = https://api.github.com/repos/nICEnnnnnnnLee/AbcTest/contents/online-devices/onlines.txt
    # 对MAC地址的备注,例如访问{nICEnnnnnnnLee}的{AbcTest}仓库的{online-devices/remarks.txt}
    url_markOfMacs = https://raw.githubusercontent.com/nICEnnnnnnnLee/AbcTest/master/online-devices/remarks.txt
    # 云端命令获取并执行的周期(单位:min)
    taskPeriod = 5
    # 用于云端下发命令
    url_taskToDo = https://raw.githubusercontent.com/nICEnnnnnnnLee/AbcTest/master/task/todo.txt
    # 用于命令执行情况上报
    url_taskReport = https://api.github.com/repos/nICEnnnnnnnLee/AbcTest/contents/task/report.txt
    
  • 写好Tasker运行脚本
    mkdir -p ~/.termux/tasker
    cd ~/.termux/tasker
    echo "curl http://127.0.0.1:8888/onliner/status/upload" > wifi_status_upload.sh
    echo "exit"  >> wifi_status_upload.sh
    echo "curl http://127.0.0.1:8888/cloud/run" > get_command_and_run.sh
    echo "exit"  >> get_command_and_run.sh
    
  • 运行 为了节省空间,直接将日志定位到了null。
    初次测试最好看看控制台输出,配置好以后可以不用管。
    cd ~/workspace/ninjaV4
    nohup dalvikvm -cp ninjaV4.dex nicelee.server.MainServer >/dev/null 2>&1 &
    

Tasker

  • 周期性触发WiFi状态上传
    • Tasker添加任务
    • 弹出对话框,选择插件
    • 弹出对话框,选择termux:task
    • 弹出对话框,选择脚本wifi_status_upload.sh
    • 建议每30分钟触发一次
  • 周期性触发云端命令获取并执行
    • Tasker添加任务
    • 弹出对话框,选择插件
    • 弹出对话框,选择termux:task
    • 弹出对话框,选择脚本get_command_and_run.sh
    • 建议每5分钟触发一次

如何使用

同一局域网内

假设手机IP为:192.168.0.101
浏览器访问http://192.168.0.101:8888/,可以得到如下结果:

根据提示操作即可。
例如直播录制测试状态查询:

远程操作

  • 查看家内的WiFi连接状态
    在Github对应的Repo路径查看即可

  • 让家内的Android设备执行某些特定操作
    • 因为是每5分钟取一次,有一定延迟。
    • 编辑配置指定好的位置的文件,如task/todo.txt
  • 任务格式说明
    • 任务编号: 需要严格递增,编号超过99999以后从0开始
    • 计划时间: 假设18:15,18:20各取一次任务,企划在18:18,18:19的任务都将在18:20左右执行,且执行顺序没法确定
    • 命令内容: 与局域网内各命令的网址URL一致,例如:
      • 录制b站某主播: /live/start?liver=bili&id=6&qn=10000
      • 录制斗鱼某主播: /live/start?liver=douyu&id=233223&qn=0
      • 停止所有录制: /live/stopAll
      • 更新WiFi设备连接状态: /onliner/status/upload
        任务编号 计划时间 命令内容
        1 2019-09-16 14:14 /test
        2 2019-09-16 14:14 /cloud/history/delete
        3 2019-09-17 18:18 /onliner/status/upload
        4 2019-09-17 18:19 /onliner/status/upload
        5 2019-09-17 18:45 /onliner/status/upload
        6 2019-09-17 20:46 /onliner/status/upload
        

内容
隐藏