网络寻租

Programmer, Gamer, Hacker

消费级计算机生态位

| Comments

根据不同需求,适合普通家庭选购的计算机硬件类型有这些:

大系统

跑操作系统,主机体积不敏感,性能强劲。

  • 顶级性能:远算速度最快,能力最强的CPU/GPU/NPU,用来进行编译,打游戏,视频编码,跑神经网络运算等等。
  • 高性能:主流CPU/GPU,用于程序员的日常使用,打普通游戏
  • 持续运行:低待机功耗最新制程intel CPU,低功耗主板,用来跑应用服务,和存储服务。

小系统

跑操作系统,体积敏感,性能满足需要即可。

  • 运算节点:瘦客户机,满足终端需要的性能就好。用途比如小孩学习,简单信息处理等。
  • IO控制平台:树莓派现在价格太贵,选用其它类派系统,只要有GPIO输入输出可以控制设备即可。
  • 多媒体接入:各种电视盒子,带有需要的视频音频解码功能。
  • 手机:随身电脑,性能其实已经逼近大系统了。

嵌入式系统

不跑操作系统,烧录特定的程序,带有特定的外设。

  • 8266/esp32:开放的嵌入式硬件,有arduino,esphome等平台可以用。

带娃户外方案

| Comments

带娃户外目的:防止近视需要每天户外阳光2小时,以及运动

南昌场地:

  • 城区和郊区有无数的公园,户外运动设施。
  • 沿河公园,城市内河沿河绿道,十几公里的路线很多。
  • 很多小区都有很好的内部户外活动区域和小孩活动设施,混进去一个个玩下来不重样。
  • 有一些收费的户外娱乐场所。

可以进行的活动:

  • 玩场地有的项目
  • 滑板车,自行车骑行
  • 跳绳
  • 足球,篮球
  • 坐下来看看书

下雨天:只能室内活动:

  • 每个区都有好几个大商场,可以室内活动
  • 大量的室内的儿童活动中心,收费玩一天
  • 科技馆,图书馆,博物馆

远端零热水方案

| Comments

家里厨房和卫生间很可能不在一个地方,热水器距离卫生间过远,需要热水的时候就要等很久。 为了能够让家里的水龙头立刻就有热水出来,需要改装。

循环水方案

热水器到所有的热水出口设置一个循环水路,里面接一个水泵,如果需要用热水,提前开启水泵,整个循环水路里面就都是热水了。

缺点是需要遥控器来控制水泵开启,也要等一会儿。如果一直开启水泵,电费很贵。

直接放水方案

如果距离不远,直接开启水,等到热水即可。问题一个是浪费水,一个是需要等待。其实水很便宜,浪费一些说不定比改装便宜。

小厨宝方案

远端下面装一个小厨宝,入口对接热水器和冷水用阀门切换,大量用水接热水器,少量热水接冷水。可以达到立刻用热水的目的。

家庭网络没必要上万兆

| Comments

现在家庭网络普遍使用的是千兆,是否有必要升级呢?

首先看需求。可能带宽不够的情况:

  • 大文件拷贝?只是少数情况,稍微多等一下就好。
  • 远程游戏和高清视频?4K屏幕,60hz刷新率,需要带宽11.4Gbps,10G可能都不够,但是视频传输可以压缩,80MB/s应该够了。

然后如果需要改造升级,需要考虑:

  • 速度卡在瓶颈,硬盘瓶颈200MB/s就很多了,换用SSD或者NVME提升明显。
  • 更换设备要全部换,路由器,双端的网卡,万兆的商用退役设备很便宜,光口短距离也可以用电缆直连,不需要光电转换模块,如果想买新的设备,2.5G的TP-Link价格也下来了,还有便宜的2.5G网卡。
  • 万兆的设备功耗更大,也需要考虑进来。
  • 如果需要提升延迟,那么最大的提升就是无线换有线,升级速率提升不大。

所以我考虑的方案:

  • 如果没有出现性能瓶颈,不需要升级,需求还不够强烈。
  • 如果要升级,少数需要高速的网络单独买2.5G交换机加上2.5G网卡,或者万兆的交换机,单独组一个高速子网就好。

笔记本结合台式机开发方案

| Comments

作为程序员,需要移动工作,同时开发环境也比较复杂,便携的笔记本性能不够,就算是再好的笔记本也会有功耗墙来阻止性能的发挥。

我的方案是:便携笔记本电脑结合强力台式机进行开发。方法是这样的:

编辑代码需要快速反应,所以编辑代码还是要在笔记本里面,修改自动推到台式机上。

1
lsyncd -nodaemon -insist -delay 0 -rsyncssh user/workspace/project/ pc user/workspace/project/

台式机有代码和开发环境,跑代码在后台tmux里面,如果不用了就休眠 sudo systemctl hibernate 需要使用的时候就用wakeonlan唤醒,ssh登录上去进行操作。

1
wakeonlan MAC; while [ True ] ; do ssh pc ; sleep 1 ; done

笔记本转发台式机的开发环境网站端口到本地,循环监控保证断点续连。

1
while [ True ] ; do ssh -N -L localhost:3000:localhost:3000 pc ; sleep 1 ; done

如果是在外面,需要想办法连回家,我的实现方式是家里面有一台24小时开机的服务器,跑wireguard,路由器有外网ip和ddns,转发wireguard端口, 这样我在外面就可以通过ddns的地址连到wireguard端口,进入家庭内网了。

其它考虑:

  • 跑通之后,就可以只用轻量级笔记本了,但是轻量级笔记本还是需要使用网页,看视频,开IDE,性能也不能太差。
  • 有的时候不需要使用台式机的时候会忘记休眠,可以写一个脚本断开一段时间后自动休眠。

智能家居之灯光改造方案

| Comments

灯光控制有几类需求:

  • 只需要开关:普通灯
  • 调整亮度:渐开渐关的效果更舒服
  • 冷暖双色调光:主流需要调整灯光颜色就只需要冷暖
  • 颜色调光:一般情况下不需要,家里不是舞厅

控制灯光最好的方法还是有线方法:

  • 灯线都走电箱,控制器都放电箱导轨上面。
  • 用模块控制:开关模块,LED 0-10v调光模块,调色模块。
  • 开关控制走485总线或者KNX总线,485转IP,上面还可以再用home assistant控制。

image

这样价格可能高一些,但是有线带来的稳定性不是无线可以比拟的。

不过大家一般不会在装修阶段思考清楚这样设计,最后主要还是改造方案。

  • 网络方面最好采用zigbee协议,只组网,更少干扰。
  • 改造主要几个维度:是否换智能灯,开关是否有零线,是否多控。

如果灯具是智能灯,开关通断会影响智能灯的工作,必须保持常通的模式。

  • 有的智能灯支持凌动开关的模式,原理就是开关保持常连,按一下就是快速断开连上,智能灯可以识别这个脉冲变化切换开关,但是对电源有冲击,个人觉得最好不要用。
  • 有的智能灯有的支持433射频开关,这样废弃掉旧的开关,用无线433射频开关控制。
  • 如果实在不行,就只能用无线开关接入,用home assistant总控配置了。

如果是非智能灯,需要购买一个智能通断模块,放在开关处或者灯处。

  • 一般电灯开关的走线方式是只走一根火线,开关控制火线的通断,火线再接到灯上,零线连到灯。
  • 这种情况下,智能模块放到开关处就没有零线了,需要购买单火的智能模块,原理是保持一个微弱的电流让智能模块工作, 副作用是灯那边也有电流,可能出现微亮的情况。如果是zigbee模块,这个电流就比较小,影响不大。
  • 如果不想用单火模块,就需要把智能模块放在灯上面,开关保持常闭,另外接无线开关(同上面智能灯的方法)。

如果灯具需要多控,分情况:

  • 如果火线的入口和出口都在一个开关处,只要换一个单火模块串进来就可以了。
  • 如果不在一个开关处,可以串联起来,用凌动开关,这样一个开关发出脉冲信号,通断模块就可以开关。

智能家居之全屋音乐方案

| Comments

目标:每个房间都有音箱,可以通过手机以及智能中控根据需要在每个房间播放音乐。 可以同时播放同一首,也可以不同房间播放不同的音乐。

选择协议:airplay2,支持多个音箱同时播放,并且有时序控制保持播放进度一致。 可以用iphone手机控制播放什么音乐,同时linux也有插件可以输出到airplay。

选用设备:如果有钱每个房间丢一个homepod,但是价格比较贵,我的方案是用便宜的电视盒子做主机, 操作系统armbian,按照这里的教程编译安装Shairport Sync这种开源的airplay2实现。 设备选择M401A电视盒子或者N1,usb声卡PCM2704,音箱找一个淘宝桌面音箱就可以。

ubuntu接入airplay方法如下,然后就可以局域网内自动发现和手动选择输出设备了。

1
2
3
4
sudo apt-get install paprefs pulseaudio-module-raop

# 处理pulseaudio问题
sudo ln -s /usr/lib/pulse-13.99.1/ /usr/lib/pulse-13.99

价格:电视盒子72,usb声卡20,音箱158,控制通断的wifi开关插座20。

实现的场景: – 想要听音乐的时候,用HA开启wifi开关,手机音乐软件播放音乐,选择airplay输出的音箱。 – 未来还可以接入Home Assistant,armbian里面跑VLC telnet,HA控制播放声音提醒。

为什么要搞智能家居

| Comments

在入住了新买的二手房之后,我研究和实施了简单的智能家居改造,现在基本成型,我认为现阶段智能家居已经足够亲民,可以推荐给所有人了。

首先是智能家居的必要性,为什么有必要搞智能家居?智能家居到底有什么东西?智能家居没有必要搞?

智能家居的准备:

  • 电器接入:可以控制和观察的电器都智能化,主要有电灯,空调温度控制,湿度控制,窗帘电机等。
  • 传感器接入:每个房间的温湿度,人在传感器,门窗开关传感器。
  • 智能化控制逻辑:根据传感器的状态,以及预设的逻辑,来进行智能化操作。

做到上面几个层面,就可以进行下面的操作:

可视化和可控化:可以观察到全家的灯光,电器使用状态,并且可以控制。 这是我觉得最大的好处,配置好之后手机上面一张户型图标好各种电灯电器,一目了然地掌握家里的状态:

image

场景化:使用家庭空间本质是场景化的,比如正在工作,休息,娱乐,会去调整家电(比如开关某些灯,开启电视,关闭窗帘,放下投影幕布等),手动调整比较费力,一键进入场景,就可以同时控制多个家电进入状态。

智能化:配上传感器之后,就可以根据传感器判断状态,把本来需要人工判断和处理的事情都智能化,比如:

  • 接近到家自动开空调,到家开灯播放音乐
  • 早上自动开热空调,开灯,帮助起床
  • 厕所,储物室根据人在自动开关灯
  • 下雨了自动关灯

构建方法:

  • 智能控制中心采用home assistant,开源的智能家居系统,可以接入大量的设备,包括米家,各大空调品牌的智能设备。
  • 传感器,开关等智能节点购买zigbee的设备,专门用来做智能家居的协议,更稳定。有线控制其实更稳定,但是需要装修阶段搞定,并不适合所有人。
  • 购买zigbee usb网关(sonoff品牌的那个),用 z2m 接入所有第三方的zigbee设备,先上网站看看设备是否可以接入再购买。
  • 设备要能够直接接入home assistant,不要用第三方的网关和主控,因为不够开放,不能把所有的设备都接入到一个地方,智能化操作就受到很大限制。
  • home assistant可以对接homekit,手机siri可以语音发出命令控制全屋电器。

改造智能家居现在已经不怎么花钱了,费用:

  • home assistant 闲置主机,电视盒子刷系统100多,拼多多可以直接买刷好系统的。
  • zigbee usb网关:100
  • 全屋灯智能改造:一个灯的zigbee通断模块50,一起预估500。
  • 各种传感器:移动传感器,门窗开关传感器,根据需要加,一个30左右。闲鱼有便宜的京鱼座套装,90元带有开关,门磁,插座,人体传感。
  • 窗帘电机:300一个,根据需要加。我觉得太贵没有加。
  • 智能家电:空调,新的空调都智能化了,基本大品牌都可以直接接入home assistant。

如何做到不带包随时远程工作

| Comments

需求

外出的时候,如果没有带笔记本,只能刷手机浪费时间,如果能够随时远程工作就好了。

首先外出的时候如果带了包,就可以装轻薄笔记本, 但是带包加上带笔记本比较麻烦,有没有随身的解决方案?

实现方法

首先不考虑随身设备本地开发,准备多套环境太麻烦了,并且性能不够。 开发主力机平时放在家里,随身的设备远程连进来。

方法:找电信运营商要到外部IP,路由器端口转发到本地电脑ssh端口。 ssh协议是安全的,不用担心暴露出去。

本地电脑开放ssh协议,通过密钥登录,开发环境用 tmux + emacs,可以在终端里面进行开发工作。

外出设备是难点,显示和输入必须随身。

输入设备:

  • emacs快捷键是组合键,必须用键盘,不能通过触摸屏解决,同时键盘操作效率才过的去。
  • 随身蓝牙键盘的体积必须能够放到口袋里,不方便带就不愿带了。
  • 键盘的键位必须是标准的,非标键位使用太难受。
  • 综上所述,考察了现在能够买到的价格适中的产品,选用BOW的HB188s

显示设备:

  • 不考虑笔记本电脑和平板,不能放进口袋的设备都不方便,不考虑。
  • 所以只能是手机,屏幕尽量大。
  • 考虑折叠屏手机:现在设备还是太贵,不考虑。

手机软件用termius,免费版本就可以用需要的功能了,可以保持ssh连接, 同时带有端口转发功能,可以把开发机上的web app转发到手机里面,用浏览器看效果。

效果

开发状态

以后出门只需要多带这个折叠键盘在口袋里,就可以保证随时随地进行开发工作了。适用场景:

  • ssh连服务器开发
  • emacs访问本地的个人笔记
  • emacs开发各种程序

遗留问题:

  • 屏幕还是小了一些,需要换大屏幕手机。
  • termius + tmux + emacs下中文输入法很不方便,显示错位。
  • 必须要有台面,不能坐下就可以做事。

更合理的文件备份方法

| Comments

重要资料需要通过备份保证不丢失,这里整理一下我研究的备份策略。

首先资料应该远程备份,不能和当前的存储介质在一个区域,不然出事了就一起完蛋了。

资料备份应该自动和定期,手动太繁琐,很容易坚持不下去。不定期备份起不到备份的效果。

资料应该可以增量备份,不然空间占用太多。

增量备份需要和备份比较计算,所以远端机器必须参与计算。 现在大家常用的工具是rsync,但是并不能很好地做到增量计算。

我推荐用borgbackup, 服务器安装borgbackup之后,并不需要跑服务,执行备份的时候,会通过ssh执行服务器端的可执行文件来跑服务器的工作,架构比较简单。 其它还有一些工具都比较重量级需要跑服务,就不推荐了。

安装:sudo apt install borgbackup

本地机器可以通过命令行工具查看备份,比较备份结果,把某个历史镜像加载到本地,具体可以看教程, 或者快速例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mkdir -p ~/data/workspace/borg
cd ~/data/workspace/borg

borg init -e none backup
borg create backup::1 data
borg create backup::2 data
borg list backup
# 1                                    Wed, 2020-10-28 13:55:56 [xxx]
# 2                                    Wed, 2020-10-28 13:56:13 [xxx]

# 换名称
borg create backup::`date +%FT%T` data

# list files
borg list backup::2
# recover
borg extract backup::1
borg extract backup::1 data/a.txt

borg delete backup::1

borg diff backup::1 2

# 加载备份到本地,可以拷贝需要恢复的文件出来
borg mount
borg umount

如果需要定期备份到远端, 本地机器加上一个cronjob定期跑备份即可:

1
2
crontab -e
1 14 * * * ~/scripts/backup_laptop.sh

脚本内容在这里