手机控制NodeMCU实现远程电脑开关机

NodeMCU实现远程电脑开关机

    • 1.确认PC主板支持WOL(Wake on Lan)
    • 2.阿里云物联网平台设置
    • 3.NodeMCU(开机棒)部分程序编写
    • 4.编译手机App(仅支持Android)
    • 5.PC上运行关机检测脚本,并设置为开机运行

在公司经常需要远程连接家里的台式电脑,如果家里的台式机已经开机并安装了teamview,自然能很开心的连回去,可是家里的电脑并不会24小时开机备用,试过一段时间用时开机的方法,但是暂时不需要的时候也不能关机呀,关机了可没人给我再开机了。如果能随时开关家里的电脑,想想都美滋滋了!
本着节能(money)环保的期望,自己研究了一下远程开关机的方法,目前能想到这个方法应该是操作最简单 (只需写软件),最安全(不用改电脑任何硬件),最省钱(只要买一个NodeMCU 15rmb左右),只要写一个手机app连接到阿里云服务器 ,改一下NodeMCU程序也连接到阿里云服务器,撸个Python在电脑后台还是连接到阿里云服务器,通过阿里云服务器来将app的消息分发给NodeMCU触发电脑开机,将关机指令分发给电脑执行关机,而且这个阿里云服务器还是几乎免费的,这样不管身在何处,只要手机有网络,NodeMCU和电脑连接同一个的路由器在局域网内,就能通过手机APP控制家里的电脑开关机了,而且NodeMCU可以放在家里的任意地方,只要能保持连接路由器即可,我放在了路由器旁边,用路由器后面的USB接口供电 。下面就分享方法给有同样需求的小伙伴了

下面的方法默认你已经会:

  1. 搭建ESP8266 RTOS开发环境
  2. 搭建 Android studio 开发环境
  3. 搭建 Python 开发环境和安装第三方库(MQTT client)

1.确认PC主板支持WOL(Wake on Lan)

首先需要在BIOS里面设置打开WOL功能,这个可以根据主板型号找一下步骤,由于每个厂商主板的设置方法都不一样,这里就不详述了。在主板上打开WOL功能后,WIN10还需要修改网卡属性里面的电源管理,选择允许设备唤醒计算机
手机控制NodeMCU实现远程电脑开关机_第1张图片
设置完成后需要确认局域网内能通过WOL唤醒电脑,测试方法:

  • 手机安装Wake On Lan 这个app,进入后添加设备,输入台式电脑的Ethernet 网卡MAC 地址(可以在cmd下用ipconfig /all获取),也可以用app的扫描功能找到设备
  • 将电脑关机,然后检查有线网卡的黄灯应该保持常亮状态,如果没有亮说明WOL功能未开启成功,需要重新确认主板和系统设置
  • 在app上后点击唤醒设备,如果能正常开机说明前面设置成功

2.阿里云物联网平台设置

由于家里的宽带没有独立的外网IP地址的,手机无法直接将WOL唤醒封包发送到处于局域网的NodeMCU,需要经过服务器转发信息,这里使用阿里物联网平台,只要注册一个账号,每个月有100万条免费的消息,用来做开关机电脑绰绰有余了。

  1. 先注册阿里云账号(这里也略过) https://www.aliyun.com/
  2. 在产品页面中找到物联网平台进入并申请开通手机控制NodeMCU实现远程电脑开关机_第2张图片
  3. 待审核开通成功后,进入物联网平台的控制台,找到产品->创建产品->基础服务 后点下一步手机控制NodeMCU实现远程电脑开关机_第3张图片
  4. 进入新增产品页面,填写产品名称后完成手机控制NodeMCU实现远程电脑开关机_第4张图片
  5. 产品创建完成后,进入设备界面,创建三个设备分别分给NodeMCU/手机app/PC登录使用,创建设备后会生成设备连接需要的三元组(如下图三组信息),分别复制保存三个设备的三元组,后面需要负责到每个设备运行的程序里面手机控制NodeMCU实现远程电脑开关机_第5张图片
  6. 创建完三个设备后,界面如图手机控制NodeMCU实现远程电脑开关机_第6张图片
  7. 创建完三个设备后,需要设置三个设备间消息转发的规则,点击 规则引擎 ->创建规则 设置消息转发规则手机控制NodeMCU实现远程电脑开关机_第7张图片
    8.先创建手机发消息给NodeMCU的转发规则手机控制NodeMCU实现远程电脑开关机_第8张图片
    8.点击 编写SQL 编写app_2_mcu转发规则手机控制NodeMCU实现远程电脑开关机_第9张图片
  8. 处理数据部分字段写power_on,表示把app发送的带有power_on的字段转发给NodeMCU进行处理手机控制NodeMCU实现远程电脑开关机_第10张图片
  9. 进入对该数据的转发规则手机控制NodeMCU实现远程电脑开关机_第11张图片
  10. 设置对该数据的操作,转发给remote_pc产品的NodeMCU/update 手机控制NodeMCU实现远程电脑开关机_第12张图片
  11. 重复7-11 操作,创建app消息里的power_off字段转发给computer的规则,设置完成后如图手机控制NodeMCU实现远程电脑开关机_第13张图片
    手机控制NodeMCU实现远程电脑开关机_第14张图片
  12. 启动前面设置的两个规则,阿里云部分设置完成手机控制NodeMCU实现远程电脑开关机_第15张图片

3.NodeMCU(开机棒)部分程序编写

  1. 搭建ESP8266开发环境,参照 https://github.com/espressif/ESP8266_RTOS_SDK
  2. 使用官方提供的link Kit SDK,成功连接上阿里云,参照https://github.com/espressif/esp-aliyun
  3. 将官方提供的LintKit里的https://github.com/espressif/esp-aliyun/blob/master/examples/mqtt/mqtt_example/main/mqtt_example.c替换为https://github.com/rxly/RemotePCPower/blob/master/NodeMCU/mqtt_example.c
  4. 修改NodeMCU设备对应的三元组信息和需要唤醒PC的mac 地址手机控制NodeMCU实现远程电脑开关机_第16张图片
  5. 手机控制NodeMCU实现远程电脑开关机_第17张图片

4.编译手机App(仅支持Android)

  1. Android App source code放在这个地址:https://github.com/rxly/RemotePCPower/tree/master/android_app
  2. clone下来后需要修改mobile_app设备对应的三元组信息手机控制NodeMCU实现远程电脑开关机_第18张图片
  3. 修改完成后编译app即可以在手机上运行,远程电脑如果允许下面讲到的python脚本,会显示会远程电脑处于开机状态,能控制电脑开机,如果远程电脑没有运行该脚本,则显示打开远程电脑,按开机键会打开远程电脑
    手机控制NodeMCU实现远程电脑开关机_第19张图片

5.PC上运行关机检测脚本,并设置为开机运行

  1. 安装Python解释器,建议安装免费的Pycharm IDE,并安装paho mqtt client三方库
  2. 将https://github.com/rxly/RemotePCPower/tree/master/PC下的两个文件保存到本地,修改power_off.py里面PC设备对应的三元组手机控制NodeMCU实现远程电脑开关机_第20张图片
  3. 设置此电脑 -> 管理 ->任务计划程序->创建任务,按下图依次设置手机控制NodeMCU实现远程电脑开关机_第21张图片
    手机控制NodeMCU实现远程电脑开关机_第22张图片
    手机控制NodeMCU实现远程电脑开关机_第23张图片
    关机检测部分全部设置完成

到这里应该就能用手机app控制电脑开关机了,如果中间有什么不清楚的地方,请留言说明,我看到后会补齐

你可能感兴趣的:(IOT,MQTT,Android,开关机,远程控制电脑,Python)