『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 3182|回复: 12

[教程系列] 利用mqtt判断windows电脑是否开机

[复制链接]

3

主题

36

帖子

328

积分

论坛分享达人

积分
328
金钱
292
HASS币
0
发表于 2022-4-23 12:21:20 | 显示全部楼层 |阅读模式
本帖最后由 tent 于 2022-4-23 12:24 编辑

本人新手小白,办公室电脑因为单位防火墙屏蔽端口,无法通过ping命令探查电脑是否开机,目前安装的pci远程开关机卡接入米家第三方平台,homeassistant可以通过小爱同学控制开关机,但是无法获取开关机状态。研究了半天,终于找到一个不错的办法,介绍一下,看看是否有人需要。
用的软件:1. mqtt broker,自行搭建即可,我用的emqx
                  2. mqtt client,安装在需要监控开关状态的电脑,使用mosquitto,因为可以通过批处理文件执行信息发布
                  3. Node red,订阅mqtt信息,进而判断开关机状态。
关于mqtt broker的搭建这里就不介绍了。
首先需要电脑在开关机时自动发布mqtt信息,这个可以通过如下方法实现:
1. 电脑端:安装mosquitto,利用记事本编辑两个个批处理文件(*.bat),里面分别利用mosquitto_pub发布信息"on"、"off"
    命令如下: C:\"Program Files"\mosquitto\mosquitto_pub -h localhost -p port -t username -P password -t "office_computer"  -m "on"
    安装目录和红字自行替换,on 和 off分别编辑两个bat文件。
2. 电脑端:选择"运行"--输入"gpedit.msc",打开"本地组策略编辑器",选择"计算机配置"--"windows设置"--"脚本(启动/关机)",里面的启动和关机分别选择上面建好的on和off脚本文件。这样在开机和关机时,会主动发送mqtt信息到服务器
3. Node-red内设置mqtt订阅office_computer主题,通过收到消息,来确定开关状态。

NR

NR

评分

参与人数 1金钱 +20 收起 理由
+ 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

0

主题

15

帖子

714

积分

高级会员

Rank: 4

积分
714
金钱
699
HASS币
0
发表于 2022-4-23 13:18:49 | 显示全部楼层
牛!!!!!
回复

使用道具 举报

39

主题

1259

帖子

5214

积分

论坛元老

Rank: 8Rank: 8

积分
5214
金钱
3950
HASS币
20
发表于 2022-4-23 13:34:14 | 显示全部楼层
论坛有你更精彩
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

71

主题

1146

帖子

6311

积分

论坛元老

Rank: 8Rank: 8

积分
6311
金钱
5160
HASS币
30
发表于 2022-4-24 03:28:13 | 显示全部楼层
有点意思
回复

使用道具 举报

11

主题

164

帖子

1792

积分

金牌会员

Rank: 6Rank: 6

积分
1792
金钱
1628
HASS币
0
发表于 2022-4-24 08:21:32 | 显示全部楼层
是不是加个定时推送状态更好,外网有的时候要是开关状态丢包了就不好了
回复

使用道具 举报

35

主题

978

帖子

4499

积分

论坛元老

Rank: 8Rank: 8

积分
4499
金钱
3521
HASS币
20
发表于 2022-4-24 08:37:17 | 显示全部楼层
楼主大神,小白都是买现成的硬件的,比如小白我 目前涂鸦的开机卡,配合Teamviewer,挺好用的
回复

使用道具 举报

3

主题

36

帖子

328

积分

论坛分享达人

积分
328
金钱
292
HASS币
0
 楼主| 发表于 2022-4-24 11:06:29 | 显示全部楼层
735473216 发表于 2022-4-24 08:21
是不是加个定时推送状态更好,外网有的时候要是开关状态丢包了就不好了

最初用emqx就是看到里面有个插件,客户端上下线会发送webhook,也就是说开机批处理里加上mosquitto_sub的命令,让开机就连接mqtt服务器端,这样就会随时知道是不是处于开机状态,不过后来发现直接发布信息页挺方便,就没有搞这个webhook的了
回复

使用道具 举报

0

主题

25

帖子

1824

积分

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1799
HASS币
0
发表于 2022-4-24 16:18:50 | 显示全部楼层
谢谢大佬分享,不过我的开机却没有发出mqtt 上线信息,下线到没问题,手动都能发出去
有解决方法么》。《

顺便想把hass 的device_tracker添加上去,这样直接在HASS就能一眼看出来是否开机了(手动没问题)
C:\"rogram Files"\mosquitto\mosquitto_pub -h localhost -p port -t username -P password -t  "homeassistant/device_tracker/自己填名称/config" -f .\device_tracker.json

device_tracker.json 的文件内容
{
  "name": "自己填名称",
  "unique_id": "自己填唯一ID",
  "platform": "mqtt",
  "state_topic": "homeassistant/自己填名称/status",
  "payload_home": "online",
  "payload_not_home": "offline",
  "device": {
    "identifiers": "自己填",
    "name": "自己填",
    "sw_version": "自己填",
    "model": "自己填",
    "manufacturer": "自己填"
  }
}
回复

使用道具 举报

43

主题

407

帖子

3613

积分

元老级技术达人

积分
3613
金钱
3201
HASS币
136
发表于 2022-4-24 17:08:25 | 显示全部楼层
方法很好。试了下。很方便实现了。
回复

使用道具 举报

3

主题

36

帖子

328

积分

论坛分享达人

积分
328
金钱
292
HASS币
0
 楼主| 发表于 2022-4-24 20:48:08 | 显示全部楼层
dreyo 发表于 2022-4-24 16:18
谢谢大佬分享,不过我的开机却没有发出mqtt 上线信息,下线到没问题,手动都能发出去
有解决方法么》。《 ...

我也不太清楚你的是什么情况,是刚开机网络没连好?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-20 06:38 , Processed in 0.059764 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表