分类 网络 下的文章

我的智能设备都是在Home Assistant下控制的,小米设备控制插件用的是Xiaomi Miot For HomeAssistant

这个插件很棒,也是之前唯一可用的小米LOT插件,好多年了al-one一直在全力更新,最近更是更新了一个大的1.X版本。不过大版本略有些小问题。

周中小米官方突然更新了一个Xiaomi Home Integration for Home Assistant,很快star就达到了10K+。

今天新装了一个HA,跑了一下ha_xiaomi_home,对于我来说两者使用功能上差距不大。

小米的可控实体更多一些,一些触发型设备(如按键开关)也有了(触发是不可以的),网关的控制也有了一些,看到了虚拟事件实体(还不知道是否可用)。

两个插件实现逻辑不同,一个是推,一个是拉。Xiaomi Miot使用的是轮询的方法,每分钟查询一次数据,属于拉数据;xiaomi_home用推数据,时效性上更有保证。

因为我基本上都是用的脚本查询设备状态、控制设备状态。脚本本身cron的周期是1分钟,所以对于我来说,两者使用上没啥区别。

小米官方给的逻辑图:
1.jpg

我已经把我的家居控制脚本改为了官方插件版,简单测试了一下基本都正常。持续观察一下。

qbittorrent

qBittorrent

qBittorrent,老牌的开源下载工具,部署到docker上,实现离线下载,

docker qbittorrent

docker hub: https://hub.docker.com/r/linuxserver/qbittorrent

docker run -d \
  --name=qbittorrent \
  -e WEBUI_PORT=8080 \
  -p 8080:8080 \
  -v /root/qbittorrent/config:/config \
  -v /root/download:/downloads \
  --restart always \
  linuxserver/qbittorrent

默认用户名密码是:admin adminadmin
正常情况下如果主机是非localhost的话,就应该报错: Invalid Username or Password.

原因: https://github.com/qbittorrent/qBittorrent/issues/11680
大概意思是升级4.2之后,除了本机,默认密码都不能登陆。

解决方法:

修改文件 qbittorrent/config/qBittorrent/qBittorrent.conf 加一行

WebUI\Password_PBKDF2="@ByteArray(ARQ77eY1NUZaQsuDHbIMCA==:0WMRkYTUWVT9wVvdDtHAjU9b3b7uB8NR1Gur2hmQCvCDpm39Q+PsJRJPaCU51dEiz+dTzh8qbPsL8WkFljQYFQ==)"

这样就可以用admin:adminadmin登陆了,注意需要先停止容器再修改文件,否则无效。

取消掉WEB UI登陆密码

如果有映射外网出口的就不能这样了
1.png

速度一般般,离线下载无所谓了。
2.png

NAS

我的DOCKER宿主机和NAS不是一个机器,两个分别是ALL IN NOE下的一台虚拟机。
所以我需要把下载目录挂载到NAS下。

编辑文件
nano /etc/fstab

//192.168.1.12/MOVIE    /root/download    cifs    username=guest,password=guest    0    0

解决权限问题 **
//192.168.1.12/MOVIE    /root/download    cifs    username=guest,password=guest,uid=911,gid=911    0    0

//192.168.1.12/MOVIE    /root/download    cifs    username=guest,password=guest,dir_mode=0777,file_mode=0777    0    0

执行挂载
mount -a

小坑

挂载NAS后,发现不能下载了,目测这基本就是权限问题了,

drwxr-xr-x 4  911  911 4096 Jan  4 21:40 config

drwxr-xr-x 2 root root    0 Jan  5 10:27 downloads

不能直接 chmod 777 重启之后重新挂载,权限就又变回去了。
第一个简单粗暴,好用不安全;第二个更好一些。两个方法,都可以,问题不大。

1.
dir_mode=0777,file_mode=0777
2.
uid=911,gid=911

Aria2

另外我还试了Aria2,不太好用。

简单备忘一下,完。

WeChatFerry

WeChatFerry 是一款 Hook PC WeChat 构建的微信机器人项目。

项目地址:
github: https://github.com/lich0821/WeChatFerry

wcfhttp

wcfhttp 是 WeChatFerry 的客户端,通过 http api 方式通讯。方便任何语言,任何形式与 WeChatFerry 通讯。

# 安装
pip install --upgrade wcferry

# 启动
wcfhttp --cb http://your_host:your_port/callback

callback

callback 可以是本机也可以远端。
doc 中描述机器人通过 PSOT 回调 callback 地址。
用 PHP 接收 callback post 数据有一点要注意。数据并不在 $_POST 数组中,而是在 php://input 中,用 file_get_contents('php://input') 来接收数据。

doc

wcfhttp 运行成功后,控制台打印 doc 地址:http://0.0.0.0:9999/docs
所有的API DOCS里都有,页面上还可以做简单的Execute,十分方便。

msg-types 接口 返回数据 demo
{
  "status": 0,
  "message": "成功",
  "data": {
    "types": {
      "0": "朋友圈消息",
      "1": "文字",
      "3": "图片",
      "34": "语音",
      "37": "好友确认",
      "40": "POSSIBLEFRIEND_MSG",
      "42": "名片",
      "43": "视频",
      "47": "石头剪刀布 | 表情图片",
      "48": "位置",
      "49": "共享实时位置、文件、转账、链接",
      "50": "VOIPMSG",
      "51": "微信初始化",
      "52": "VOIPNOTIFY",
      "53": "VOIPINVITE",
      "62": "小视频",
      "66": "微信红包",
      "9999": "SYSNOTICE",
      "10000": "红包、系统消息",
      "10002": "撤回消息",
      "1048625": "搜狗表情",
      "16777265": "链接",
      "436207665": "微信红包",
      "536936497": "红包封面",
      "754974769": "视频号视频",
      "771751985": "视频号名片",
      "822083633": "引用消息",
      "922746929": "拍一拍",
      "973078577": "视频号直播",
      "974127153": "商品链接",
      "975175729": "视频号直播",
      "1040187441": "音乐链接",
      "1090519089": "文件"
    }
  }
}

chatgpt

对接chatgpt api。我的信用卡无法绑定chatgpt。所以使用 Free ChatGPT API Key 提供的免费 API KEY 使用 gpt-3.5-turbo 模型。

github: https://github.com/chatanywhere/GPT_API_free

应用

这次主要是对接 chatgpt 做一个聊天机器人。
用作消息推送,监控报警,定时消息都是OK的。

注意

任何 hook 都有风险,使用 WeChatFerry 应该会有微信号被ban的风险。最好用小号,且和大号不是同一个实名(不实名也可以)。因为腾讯实行的是连坐制。同一个实名下的所有号一起封。

不要发送大量信息,敏感信息,容易触发微信风控机制。另外据说发送GPT消息的尤其容易被封。

大量重复内容会被封号?!

我给bot开启了一个debug,忘记关了,两个同样弱智的机器人不停地互怼,跑了1天多的时间,发了可能有几万条消息?(计数器只看到99+)。
1.jpg
难道说大量重复内容不会封号?还是说风控逻辑是对单个微信发很多消息不受限?

由此能简单推测,风控的不是消息的数量,而是消息的范围?

发送人数每人发送数量影响范围影响烈度
1人10条110
10人1条101
10人群1条10-1-

如果这样假设成立,那么在很多群里,发送很多信息就是最危险的,再@的话,会更加危险。

什么时候会封号?

@lich0821 建议不封号的办法是不用微信,看来不封号只是过程,封号才是归宿。
持续观察。

更新
D3
大概挂机2.5天后,发现掉线了,上服务器看了一下,这样了:
2.png

重新登录,还能登录,没有封号,算是一次警告?【这是新环境登录的正常掉线】
持续观察。

D5
又过了两天,目前正常,只推送了少量消息,发送了一些CRON测试。
3.jpg

持续观察。

D7
又过了两天,推送消息都正常,机器人没有掉线。
难道第一次掉线是因为互怼了大量消息导致的?
持续观察。

D9
中间服务器重启,微信忘记开,停了半天,其他时间都正常在线,推送消息数量少。
也就差不多这样了。

D30~40
? 不记得多少天了,目前正常。

FUSION 360

FUSION 360 LOGO

WHY

我画图一直都用的sketchup,我一般只画一些木工草图,所以sketchup非常够用且适用。

后来我开始使用3D打印机,发现sketchup就不是那么的够用了,只能勉强对付。本着能不学习就坚决不学习的态度一直坚持不换。

直到,我准备构建一台木工用CNC,并且要用CNC做减材加工,要草图,生成实物模型,编写工法,生成G代码。我发现sketchup真的是不行了。所以我打算学习一款3D建模软件。

比较发现FUSION 360,机械设计,增材,减材,激光雕刻都可以,好像还挺适合我。而且个人用户是免费使用的。总之sketchup这种非参数化的建模软件肯定是不行了。

PS: sketchup从被google收购再到被卖掉,这么多年,不能说是毫无变化吧,可以说是一成未变。

心得体会

FUNSION 360还是很容易上手的,有2,3个小时就基本上能入门。几天下来就能熟练的操作一些常用工具。简单的非曲面建模都没啥问题。

难的是融会贯通,最难得是建模的思维方式。

学习线路

段位1,基础操作

1,全网FUSION 360教程搜索第一名:
Learn Autodesk Fusion 360 in 30 Days for Complete Beginners! 2023 EDITION - Product Design Online
这套教程前面看看还不错,后面涉及到建模思维的时候,就很难懂。除非英语很棒。不过没有关系,有中文重制版的。
不能YouTube的,B站有搬运字幕版,建议直接看下面的中文重制版。

2,中文重制版
30天掌握3D打印建模 之 Autodesk Fusion 360
这个教程很毛躁,作者也是新手,边学变教,入门已经足够了,重点是常用工具的基本操作。
建议视频1.5~2.0倍快速过,过完把例子自己做一遍,做不出来就再过一遍。

段位2,进阶学习

B站作者:牛角书生的六维空间,作者应该是从业人员,公司换软件换门派到360,作为进阶教程非常不错。
他的很多思路都是从从业的角度出发的,教程实用型非常高。
https://space.bilibili.com/521196019/video?tid=0&special_type=&pn=1&keyword=&order=pubdate

段位3,练习实例

找到3D制造,这个UP主很厉害,分享了很多案例。他的视频全是建模过程,没有讲解,有的操作速度很快,看一遍肯定是不行,要多看几遍,一个一个过。
全网最强大师傅,https://space.bilibili.com/564155225/?spm_id_from=333.999.0.0

段位4,设计自己需要的模型

努力做任何自己需要的东西,做不出来就再看以上教程。

段位5,建模思维

这块几乎找不到什么靠谱的内容。因为国内FUSION 360用的少?生产制造领域用的少?没啥市场?只能修行在个人了。

关于CRM

因为国内做机加工的全部都在用UG,所以国内几乎没有什么FUSION 360的CRM教程。只有几个零星的360操作演示,甚至他们自己都没有搞清楚CRM各个工法的作用。

能找到的唯一比较不错的是台湾的一位老师分享的教程,他们机构好像也是autodesk的合作机构,注意这套教程也算"官方"了。
https://www.youtube.com/watch?v=YecrGPDKC3c&list=PLjXU8TrJFkY4n_X8VeivCgHj0Bb7TpU39 【基础】
https://www.youtube.com/watch?v=dlUHkPkOe7s&list=PLjXU8TrJFkY5El6HB0nTd1iaDsR4Jc2h0 【进阶】


资料整理

官方教程:
https://help.autodesk.com/view/fusion360/CHS/
https://gitee.com/lonelybinary/arduino/tree/master/src

实例

1.png

我从来没有使用过远程SMB,因为我都用RDP,所以没有这个使用场景。

现在有一个环境需要访问内网的SMB。感觉很简单和远程RDP一样,映射一个TCP端口出来,连接地址加上对外网的端口号,完事。
6445 -> 445
\\smb.domain.com:6445

不行...

查得:WIN映射网络不支持非默认端口,也就是说 :xxx 一定是不行的。
查得:通过系统端口转发可以解决。

1.查询并关闭445端口占用

netstat -ano | findstr 445

服务 - Server,启动类型改为“禁用”,并停止服务,重启一下。

2.转发命令

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=smb.domain.com connectport=6445

这样就搞定了 \\127.0.0.1 即可。

3.尾巴

电脑重启后会失效。查询一下端口转发还在,但是感觉并没有激活,需要再执行一次命令才能生效。
这好办新建:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\smb.bat

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=smb.domain.com connectport=6445

这样就可以了

4.安全

这样内网的SMB就会暴露在公网,即使换了端口,也会被扫描到,存在安全隐患,建议增加防火墙规则,把端口放到IP白名单后面。

参考:
https://www.cnblogs.com/kimshen/p/15660852.html

小米电视播放器很拉胯,读取NAS很扯。直接DOCKER下装个jellyfin。

docker run -d \
--name jellyfin \
-p 8096:8096 \
--restart=always \
-v /root/jellyfin/config:/config \
-v /root/jellyfin/cache:/cache \
-v /root/download:/media \
jellyfin/jellyfin

电视上装上 Android TV Client for Jellyfin 就可以了

下一个最新版本:
https://github.com/jellyfin/jellyfin-androidtv/releases