一些小技巧

在Powershell里输入wsl可以直接打开wsl,并且能够直接进入当前目录中.

alias pythons=/root/work/crypto_bots/.venv/bin/python
alias giteasshkey=’eval “$(ssh-agent -s)” && ssh-add ~/work/gitea_id_rsa’

这两个alias能够方便使用python及gitea提交代码

wsl2的网络修复

最近解决了一下ai助手的问题, 得到的结论是,只要想去解决,就没有什么解决不了的问题.

起因是wsl里vscode的AI助手无法启动,包括context7,github copilot chat,cline等都无法使用,但是偶然间发现windows下的插件居然可以, 于是考虑是FQ的问题. 之前在wsl里已经用了proxychains来运行python命令,无法全局,也无法给AI助手使用. 但是安装全局又过于麻烦(windows已经有了). 于是搜索其他解决方案.

最终发现wsl2有一个mirror模式,可以用主机的代理来让wsl2体验无感FQ, 具体配置搜索了google及MSFT的网页, 得到以下配置:

在个人目录下创建.wslconfig文件

[wsl2]
memory=4GB # 分配给 WSL 2 的内存大小
processors=2 # 分配给 WSL 2 的 CPU 核心数
localhostForwarding=true # 是否启用 localhost 转发

[experimental]
autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
networkingMode=mirrored # 开启镜像网络
dnsTunneling=true # 开启 DNS Tunneling
firewall=true # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间

填入如上的配置,重启wsl即可

此配置生效后, 可以通过127.0.0.1来访问wsl2里的flask程序, 也不再需要通过查找地址来访问了.

无题

双11购买了一个igreen的投屏器, 感觉作用不大, 于是退货.

在投屏界面发现一个提示,不符合法律法规的视频不让投屏,OMG,怎么做到的.

买了投屏器,然后就是想要使用键盘鼠标, 于是找到vhusbarm, 插在raspberrypi和路由器上, mac上安装一个server, 还真可以, 但是有延迟, 投屏也不是非常顺畅.

后来想为什么要投屏?因为mac放到了机柜, 为什么放到机柜, 因为放显示器旁IP无法正常获取, 导致了很多功能都缺失, 突发奇想, 把路由器改为中继模式, 于是,问题解决.遂将MAC搬回到显示器旁.

华硕的MESH是个什么东东, 感觉作用不大, 问题一堆, 卧室的SHARP也用不了172net, 改为中继也解决了.

周末收拾了一堆旧的破铜烂铁, 统统卖掉, 咱也40了, 得向前看.

一个小感悟,旧的东西,要派上用场之前三思, 我不值得更好,更有价值的东西吗?

买东西之前也要三思, 我不值得顶配的东西吗, 不值得品质更优秀,而不是性价比高的东西吗?

又到了一年双11, 似乎又有一些感触, 以上.

wget https://www.virtualhere.com/sites/default/files/usbserver/vhusbdarm

chmod +x vhusbdarm

sudo ./vhusbdarm -b # 以后台模式运行

 

 

sudo apt update

sudo apt install cmake libavahi-compat-libdnssd-dev libssl-dev

git clone https://github.com/FD-/RPiPlay.git

cd RPiPlay

mkdir build && cd build

cmake ..

make

sudo make install

整理一下车载的定位和开锁

目标:使用到的从淘宝淘来的各种芯片,加上从chatgpt里学习到的各种知识, 尽量使用目前手头上的工具,重整了一个新的车载定位开锁。

新意:能够定位开锁及并且留出备份,1开锁能够当esp32无法工作时,不至于被锁门外.2当没有wifi时,能够继续上报定位.

开锁实现:使用了一个蓝牙开锁芯片,接近时输出一个短时间电平,达到开锁目标,但是由于只支持短时间高电平,无法兼容钥匙需要的低电平开/关锁.且需要和esp32开锁gpio共同做出”与门”开关.(任意低电平则输出低).

在组成与门开关时,需要注意esp32的gpio可以配置open-drain,从而直接能够接到开锁点,但蓝牙开锁芯片无法做到,而需要两者同时控制开关锁时,需要重新设计,考虑了使用反向器,等方案,最终找到一个三极管实现方案.

esp32 gpio设置为open-drain,接在2N2222的c极,同时c极上拉电阻10k到电源3.3V,同时B极接蓝牙开锁/关锁的点加接1K限流电阻, e极接地,组成一个低位开关.当esp32为低时,开锁点位拉低,当蓝牙开锁芯片输出高时,三极管导通从而拉低开锁点位,这个设计能够不相互干扰,达到目的.估算 钥匙开锁需要10mA的电流,此方案电路满足要求.

定位设计,原始定位是按照wifi连接上后,通过wifi发送定位数据来实现,此方案限于必须链接WiFi才能发送, 后来测试发现,使用ec800M,不打开GPS定位时,使用数据流量发送较为稳定,于是加入当wifi不存在时,ec800M来发送数据的备用方案.软件里设计为先通过wifi的sock尝试发送,出现exception后,继续尝试用ec800m发送,每次发送都时如此,ec800m的AT发送数据目前测试较为正常.

省电:为了省电,这次也做了相应的优化,首先是链接wifi的方式,之前是15秒休眠+5秒连接固定wifi, 改为8秒休眠,唤醒后先扫描列表,如果存在则继续尝试连接,否则进入休眠循环,扫描wifi列表的时间大约为2.5s.另外尝试使用at命令对EC800M进行休眠操作,然而可能是开发板限制无法达到,退而求其次的使用三极管并联作为低位开关,控制ec800M电路的上下电,同时配合at+qpowd先将模块关机.控制电路通断的GPIO2,同时也是控制GPS模块休眠, 能够在ESP32休眠时,保持电平状态.选择使用三个2N2222并联作为低位开关,估算EC800M开机最大电流为500MA,平均每个三极管需要166mA,平均下来B极电流需要10mA,采用310欧姆电阻.

另外,采用了淘宝上的主从蓝牙,当汽车ACC开关打开时,主蓝牙上电自动搜索连接从蓝牙,从蓝牙的status脚连接到GPIO4, 作为判断ACC是否打开.软件里,休眠唤醒之后,判断GPIO4的状态,如若ACC启动,则启动定位发送线程,启动GPS及EC800M.

当前这个方案的电路测试如下,整个休眠时,电路功率约为130mW, 当GPS启动时约为280mW, 再加上ec800M启动时,约为450mW.

网络二三事

这两天把网络整了一下,主要是遇到两个契机:一个是看到人说ipv6配合hy2使用效果更好,实际上我已经早有此意,一直没有去做,另外一个就是hy2出现了不稳定的情况,虽然有备用机,但是实测发现已经无法满足日常python的正常运行,于是做了以下改变:

把tencent上改为ipv6来连接l.jatus.top和l2.jatus.top

把macmini放到了机箱里,wifi连接路由器,ipv6就正常了,困扰了好久的ipv6获取不到也自己好了.mac上的连接也使用ipv6,目前连接到试用的amazon korea主机上.

NAS不知道啥问题也获取不到ipv6,发现是网口不知道如何又自己绑定了虚拟路由器,删除后正常.

貌似目前还是正常, 延时也比较能接受,唯一的问题是,好像之前嫌弃的singarpore小鸡突然支愣起来,延时大降,ipv6表现也很稳.

 

macos折腾小记

macmini4用过一段时间确实挺不错,各方面都中规中矩,各种应用程序都很方便的安装管理,其中stash和homeassistant的问题比较多:

1,upnp问题,upnp在stash没有打开时正常,一旦打开就无法检测到router了,原因时tun代替了en0导致搜索不到组播包,修改方法也简单,执行命令时指定en0即可,或者alias upnpc=’upnpc -i en0′

2,atv的HA插件也是无法运行,即使输入ip地址也无法搜索到设备,但是atvremote命令可以看到,最后查到是HA调用atv搜索时scan方法传入了一个参数,最后解决方法是修改HA源码,这个问题最终原因还没查到,有空再研究。

3,另外一个是macos的IPv6问题,这个问题是比较棘手,最开始可以,后来莫名其妙就不行了,于是跟grok问了一下并且做了各种测试,发现问题出现在npd缓存上,使用npd -c清空缓存重新获取,就可以了。AI能够协助解决问题,但是过程也是很漫长,需要不断尝试给他喂各种结果,还要主导整个流程,不能只跟着AI走。

4,腾讯云服务器要到期了,目前看似乎续期意义不大,最主要的一个问题是,如何解决内外网的切换,在外部网络使用macos的https代理服务器能够正常,但是在内部网络似乎是有问题的,这一点上目前的alteratives似乎都不太好操作,如果能够解决这个问题,就可以完全放弃这个轻量云。其他的服务包括python云等都不需要。

 

蛇年开始,添置macmini

蛇年开始了,今年开年可能是到目前最有时间写东西的一年,年前置添一台macmini常开机作为服务器,在上面鼓捣了HA和一个自定义代理,跨年这段时间工作良好,反映mac电脑的稳定性,也确实很能打,除此之外还有装windows虚拟机, stash软件,zerotier,orbstack等。暂时还没进入生产力阶段。

假期折腾记录:

小米路由器在不刷第三方固件下,打开了ssh,安装zerotier,tinyproxy,至少在http层面能够访问武汉家庭设备,并且保持了打开小米路由器app的功能,增加定时更新外网ip地址功能。

小米电视内置了http proxy,所有app都会自动连接到厦门的代理,app可用性增加。通过mac上的HA能控制放行来源的ip地址,在厦门的路由器上做端口映射。电视adb仍然需要手动打开。

两台asus路由器组mesh可以正常工作,达到全屋覆盖的效果。

思考了一下,还是没有刷asus路由器的第三方固件,于是无法更新dnsmasq的域名自定义功能,phicomm的探测器无法直接定向到HA发送数据。

用心聆听这个世界。

记录对NAS的代码级修改

NAS自带的squid好用,但是webUI极其难用,于是搜索了配置的方法,记录下来(以下改动需要修改配置文件,因此不能在网页上修改,否则覆盖):

  • 在/share/CACHEDEV1_DATA/.qpkg/ProxyServer/opt/etc/acl.conf里增加

acl allowed_user_agents browser User-Agent ^Mozilla/5.0 (Linux; Android 10; K).*

过滤browser user-agent使之能够无感代理

  • /share/CACHEDEV1_DATA/.qpkg/ProxyServer/opt/etc/acl_http.conf

http_access allow allowed_user_agents
cache_peer 192.168.50.157 parent 7890 0 default
never_direct allow allowed_user_agents

 

  • http_access allow allowed_user_agents
    • 允许特定用户代理(浏览器/客户端)的HTTP访问
  • cache_peer 192.168.50.157 parent 7890 0 default
    • 配置上级代理服务器
    • IP地址为192.168.50.157
    • 监听端口7890
    • 作为默认父代理
  • never_direct allow allowed_user_agents
    • 对于允许的用户代理,始终通过父代理转发请求,不直接连接目标服务器

 

git仓库使用ssh的实践

最开始把github用上了ssh key,感觉挺好,于是想着把gitea也整一个,实际上遇到一些小问题,但是都克服了,记录一下:

因为gitea使用http是已经正常,打开ssh,上传了key之后,还是连接不上,调试一下发现了是用户名gitea没有给出权限,于是把gitea加入到了sshd_config里面,这里有点问题,网页上如果改动会覆盖这个修改。后面继续测试发现与本机公用一个sshd还是无法正常使用git命令(拉取代码仓库),于是放弃这种做法。

在google上先搜搜,发现一个更好的做法,在QNAP上安装Gitea – Cloud Mount

创建一个用户并且使用这个用户启动gitea,

直接修改Gitea对应的qpkg目录(例如/share/CACHEDEV1_DATA/.qpkg/Gitea)里的Gitea.sh脚本,将其中start里的直接运行Gitea改成

export $USER = git
……
sudo -u $USER ./gitea web &

这样,运行/etc/init.d/Gitea.sh restart后,Gitea的web服务就以git用户来运行了。

这个做法的好处是用户有自己的个人文件夹,用于存放ssh等配置,端口就不能共用。

目前没有创建特殊账户,默认gitea账号,文件夹为/tmp,感觉像是临时文件夹,重新开机后可能就没有了。

在app.ini的配置中,需要修改以下几行:

Gitea的很多配置是通过文件…/.qpkg/Gitea/custom/conf/app.ini设置的,

打开Gitea built-in SSH需要修改如下设置:

[server]
... ...
START_SSH_SERVER = true
SSH_PORT = xxxx
SSH_ROOT_PATH = /share/homes/git/.ssh

代表指定端口及启动sshd服务器,最后大功告成。

最后clone的时候发现,用jatushome.myqnapcloud.com需要很长时间,然而jatushome.asuscomm.com则不需要,发现是ipv6导致,ipv6连接失败后才尝试ipv4,ipv6不行的原因是路由器上默认把ipv6防火墙打开了。关闭后正常。

11月,世界

11月世界上发生了很多事情,但是又好像什么都没发生。

西方大国又换了领导人,他重新崛起了,BTC也突破了高点,然而我的账户仍然没有太大变化,错失了一个机会。或许这是一个并不属于我的机会,所以没有什么可惜的。

没有形成自己的思维体系,所以不太可能抓住这种机会。不可能只依靠一个算法,重要的是需要自己的一套能够让自己心悦诚服的体系,这需要一个过程,需要很多次的实践,而不是一蹴而就。

虽然账户上没有increment number,但我的投资体系也经历了住一次考验,验证了可行性,也不是没有收获。