MoreRSS

site iconWulu修改

程序员、教育者,专注于STEAM教育和开源资源推广。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Wulu的 RSS 预览

使用 Home Assistant 将米家设备接入 HomeKit 教程

2025-05-09 23:44:15

本教程帮助你把常用的米家设备都接入HomeKit,这样就可以通过Siri来控制住处中的智能设备。

具体原理是:使用树莓派安装 Home Assistant,通过 Home Assistant 的小米官方集成连接米家设备。通过 Home Assistant 中的 HomeKit Bridge 集成,将米家设备桥接到 Apple HomeKit。这样就可以通过Apple的家庭应用和Siri来控制这些设备,即使它们不支持HomeKit。

目录

我的树莓派配置

Raspberry Pi 5 4gb
OS: Raspberry Pi OS Lite
Kernel: Linux 6.12.20+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.20-1+rpt1~bpo12+1 (2025-03-19) aarch64 GNU/Linux

1. 安装 Home Assistant

Home Assistant 支持多种安装方式,大致有三种方法:

  1. 安装 Home Assistant OS 操作系统
  2. 通过 Docker 容器安装
  3. 直接安装 Home Assistant Core(逐步弃用,从 Home Assistant 2025.6 版本开始,此安装方式将进入为期六个月的弃用期。)

Home Assistant 官方已提出计划逐步停止对 Home Assistant Core 安装方式的官方支持。建议采用第一种或者第二种方法。

为了便于管理,我选择使用 Docker Compose 来安装 Home Assistant。参考官方教程docker-compose.yml 如下:

~/docker/homeassistant/docker-compose.yml
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
restart: unless-stopped
privileged: true
network_mode: host

安装完成后,通过浏览器访问树莓派的 IP 地址加 8123 端口 (例如 http://树莓派IP:8123)。首次访问会进入 Home Assistant 初始化向导,按照提示设置管理员账户和密码。

image.png

2. 安装与配置 Home Assistant 社区商店

2.1 安装 HACS

配置完 Home Assistant 后,我们需要安装 HACS(Home Assistant Community Store)。你可以将其理解为 Home Assistant 的应用商店,通过 HACS 我们能够安装第三方集成来增强 Home Assistant 的功能。后续我们需要通过 HACS 来安装小米官方的 Home Assistant 集成。

参考 HACS安装指南,我们需要进入容器内部执行安装脚本。

docker exec -it homeassistant bash
wget -O - https://get.hacs.xyz | bash -

安装成功后,退出容器,然后重启容器。这一步骤很重要,配置HACS前必须重启Home Assistant。

~/docker/homeassistant/
exit
docker compose restart

2.2 配置 HACS

接下来我们需要初始化 HACS,你可以参考此教程或按照下图步骤配置。注意,你需要提前注册一个 Github 账号。

在“设置”中打开“设备与服务”

image.png

点击“添加集成”,搜索并选择“HACS”

image.png

根据指引逐步操作,打开提示中的网址,登录 GitHub,输入授权码。

image.png
image.png
image.png

看到下图界面,就说明 HACS 以及安装成功了。

image.png

指派设备可以先选“跳过并完成”。

image.png

3. 将米家设备接入 HomeAssistant

3.1 安装 Home Assistant 米家官方集成

小米在2024年年底推出了官方的 Home Assistant 集成 (Xiaomi Home)。经过多个版本迭代,目前已趋于稳定可用。这意味着我们多了一个官方选择,而不必像以往主要依赖社区维护的 “Xiaomi Miot Auto” 集成 。当然,你依然可以选择使用“Xiaomi Miot Auto”集成,对于某些特定设备或追求稳定性的场景,它可能仍有优势。你可以参考我写的另一篇教程:https://wulu.zone/posts/mi-iot-homekit

接下来,我们安装米家官方集成以将米家设备接入HomeAssistant。

进入 HACS 页面,找到“Xiaomi Home”。

image.png

点“下载”,然后确认下载。

image.png

同样地,安装完集成之后需要重启 HomeAssistant。

~/docker/homeassistant/
docker compose restart

3.2 配置 Xiaomi Home

接下来,我们配置 Xiaomi Home 将米家设备接入 Home Assistant。注意,配置 Xiaomi Home 前需要重启 HomeAssistant。

点击“设置”,选择“设备与服务”

image.png

点击“添加集成”,搜索并选择“Xiaomi Home”

image.png
image.png

登录小米账号以获取设备信息。

image.png
image.png

在登录认证过程中,如果遇到类似下图的错误提示,通常是因为集成默认使用 homeassistant.local:8123作为OAuth2 认证跳转地址。你可以通过修改路由器或者本地 host,将 homeassistant.local 指向你安装了 Home Assistant 的设备。也可以直接在地址栏修改地址,将homeassistant.local改为对应设备的 IP, 然后刷新网页完成认证。

认证成功后,该页面会自动关闭跳转回 Home Assistant,之后按照指引完成剩余的设备添加步骤即可。

image.png

4. 桥接米家设备到 HomeKit

接下来,我们通过 HomeKit Bridge 将 Home Assistant 中设备桥接到 HomeKit。

4.1 在 Home Assistant 中添加 HomeKit Bridge 集成

首先,我们要添加 HomeKit Bridge 集成。点击“设置”,进入“设备与服务”页面。

image.png

搜索“homekit”,点击“Apple”

image.png

点击添加“HomeKit Bridge” 集成,按照指引完成添加。

image.png

需要注意的是,如果你希望桥接传感器类型的设备(如温湿度传感器),确保在“要包含的域”中勾选“Sensor”选项,这个选项默认是未勾选的。

image.png

4.2 在 HomeKit Bridge 中禁用不必要的实体

HomeKit Bridge 会自动识别 Home Assistant 中的设备。在将其同步到 Apple 家庭 App 之前,建议先检查并禁用一些不需要桥接的实体。

否则可能会出现以下情况:例如,当将小米智能插座添加到 HomeKit 时,插座会被识别为三个设备,除了开关之外,其中插座的指示灯被识别为灯具,插座温度也被误认为环境温度传感器。这可能不是我们期望看到的结果。

在 HomeKit Bridge 的详情页面,点击“配置”

image.png
image.png

在“排除的实体”列表中,依次添加要排除的实体

image.png

4.3 将 HomeKit Bridge 添加到苹果家庭

最后,将配置好的 HomeKit Bridge 添加到你的 Apple 家庭 App 中。点击界面左下角的通知按钮,查看 homekit 的配对二维码。

image.png
image.png

打开“家庭”应用,点击左上角的“+”号,选择“添加配件”。扫描上个步骤的得到的二维码,点击“添加到家庭”。在加入过程中,可能会提示“未认证设备”,点击“仍要添加”。然后完成剩余步骤,逐个添加设备。完成后,你就能用 Siri 控制你的智能设备了。

5. 常见问题

Siri 回复设备没有回应?

通过上述方法添加设备后,只能在同一局域网内控制该设备。如果出现这种情况,请检查手机是否连接到家庭网络,并进一步确认 Home Assistant 服务状态是否正常。

如何通过 Siri 在局域网外控制家里的设备?

你需要有一个家庭中枢,比如 HomePod 或者 Apple TV。

更新小米集成相关问题

小米官方的 Home Assistant 集成现在还处于早期开发阶段,版本更新时可能会存在破坏性更新。更新前要注意查看更新说明。

其他问题

其他问题?欢迎在评论区留言讨论!

参考链接

https://www.home-assistant.io/installation/linux/#install-home-assistant-container

https://hacs.xyz/

https://hacs.xyz/docs/use/download/download/#to-download-hacs

https://github.com/XiaoMi/ha_xiaomi_home

Docker容器中的定时任务:使用Supercronic运行Python脚本

2025-04-23 20:06:09

上一篇文章中,我介绍了 eudic-maimemo-sync 项目——利用 Python 脚本调用欧路词典墨墨背单词的开放API将生词本自动同步到墨墨背单词,并演示了如何用 Docker 将其部署到树莓派上,每天自动执行同步。

这篇文章,我想分享我在配置 Docker 容器实现定时任务时遇到的一个问题,以及我是如何解决它的:我最初在容器内使用标准的 Cron 服务来调度 Python 脚本。但我发现,即使把环境变量传入了容器,Cron 触发脚本时依然读不到这部分配置,导致 Python 读取不到 API 密钥。原因是 Cron 不会继承容器的环境变量,它运行在相对隔离的环境中。

为了解决这个问题,我开始在网上搜索并向大语言模型求助,最后得到几个可能的方案:

  • .env 文件直接挂载进容器,让脚本从指定路径读取
  • entrypoint.sh 文件中,读取环境变量,然后显式地将它们写入 crontab 文件或注入到 Cron 进程环境中
  • 使用 Supercronic 或其他替代 Cron 方案

虽然前两种方法可行,但需要额外的配置和脚本处理。经过测试,我最终选择了 Supercronic。它是一个与 Cron 语法兼容、专为容器设计的任务调度工具,用法和原生 Cron 几乎一致,且能够直接继承容器内的环境变量,大大简化了配置过程。将 Cron 替换为 Supercronic 后,问题就迎刃而解了。

如果你有同样的需求,想要通过容器定时运行 Python 脚本或其他程序,我推荐试试 Supercronic。我精简了eudic-maimemo-sync 项目,编写一个基础示例 docker-python-supercronic-example。示例中展示了如何在 Docker 容器里配置 Supercronic,并定时执行 Python 脚本,供大家参考。


接下来我讲讲如何使用这个示例:

.
├── Dockerfile          # 用于构建包含 Supercronic 的 Python 镜像
├── docker-compose.yml  # 容器部署的配置
├── entrypoint.sh       # 生成 crontab 并启动 Supercronic 的脚本
├── test.py             # 按计划运行的示例 Python 脚本
└── requirements.txt    # Python 依赖项

开始使用

  1. 克隆此仓库

    git clone https://github.com/emuqi/docker-python-supercronic-example.git
    cd docker-python-supercronic-example
  2. 为你的架构选择 Supercronic

    Dockerfile 默认配置为 ARM64 架构。对于其他架构(例如 x86_64),需要修改 Dockerfile

    访问 Supercronic Releases,找到适合你的 CPU 架构的 安装说明。安装说明内一般会包含要添加到 Dockerfile 的代码。

    替换以下部分:

    # 最新版本请访问 https://github.com/aptible/supercronic/releases
    # 根据你的CPU架构选择合适的 Supercronic 版本
    ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.33/supercronic-linux-arm64 \
    SUPERCRONIC_SHA1SUM=e0f0c06ebc5627e43b25475711e694450489ab00 \
    SUPERCRONIC=supercronic-linux-arm64
    RUN curl -fsSLO "$SUPERCRONIC_URL" \
    && echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \
    && chmod +x "$SUPERCRONIC" \
    && mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \
    && ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic
  3. 创建 .env 文件用于设置环境变量

    CUSTOM_MESSAGE=来自计划任务的问候!
    CRON_SCHEDULE=*/5 * * * *  # 每 5 分钟运行一次
  4. 构建并启动容器

    docker compose up -d --build
  5. 检查日志以验证程序是否按预期运行

    docker logs my_python_cron_job

    你应该能看到类似下面的日志输出:

    my_python_cron_job  | time="2025-04-23T18:53:00+08:00" level=info msg="Python script start" channel=stdout iteration=0 job.command="/usr/local/bin/python /app/test.py" job.position=0 job.schedule="* * * * *"
    my_python_cron_job  | time="2025-04-23T18:53:00+08:00" level=info msg="Message: Hello World!" channel=stdout iteration=0 job.command="/usr/local/bin/python /app/test.py" job.position=0 job.schedule="* * * * *"
    my_python_cron_job  | time="2025-04-23T18:53:00+08:00" level=info msg="job succeeded" iteration=0 job.command="/usr/local/bin/python /app/test.py" job.position=0 job.schedule="* * * * *"

配置

环境变量

变量 描述
TZ 容器时区
CRON_SCHEDULE 用于调度的 Cron 表达式
CUSTOM_MESSAGE 传递给 Python 脚本的示例变量

Cron 计划表达式示例

  • * * * * * - 每分钟
  • */5 * * * * - 每 5 分钟
  • 0 * * * * - 每小时(0分时)
  • 0 0 * * * - 每天午夜
  • 0 18 * * * - 每天下午 6:00

自定义

  1. 用你自己的 Python 脚本替换或修改 test.py
  2. 通过编辑 .env 文件或 docker-compose.yml 中的 environment: 部分来扩展或覆盖变量。添加的任何新变量(例如 NEW_VAR=value)都将被加载到容器中。
  3. 将所需的任何依赖项添加到 requirements.txt
  4. 重新构建并运行容器:docker-compose up -d --build

树莓派 | 欧路词典生词本 & 墨墨背单词 云同步教程 (eudic-maimemo-sync)

2025-04-16 16:32:43

在浏览网页时,我常用欧路词典的“欧路翻译”浏览器插件进行划词翻译。这个插件会自动记录查阅过的单词,并将其添加到欧路词典的生词本中。 然而,在单词记忆方面,我更习惯使用“墨墨背单词”。

因此,我在寻找一种方法,将欧路词典的生词本同步到墨墨背单词的词库。这样,我就可以用自己习惯的软件来记忆日常阅读中遇到的生词了。

欧陆墨墨.png

后来我发现,这两个软件其实都提供开放 API。于是,我开发了 eudic-maimemo-sync 工具,实现欧路词典生词本到墨墨背单词云词库的自动同步。同时,我还将其部署在树莓派上,让它每天自动运行,实现了生词本的无缝同步。

image.png

接下来,我将介绍如何配置和使用这个工具,并分享开发过程中遇到的一些问题和解决方法。也欢迎大家贡献代码或提出建议。

目录

eudic-maimemo-sync 使用教程

1. 下载代码安装依赖

前置条件:已安装 Python 3 环境

下载代码:

git clone https://github.com/eMUQI/eudic-maimemo-sync.git

安装依赖:

cd eudic-maimemo-sync
pip install -r requirements.txt

2. 配置环境变量

接下来,需要配置环境变量。首先,复制 .env.example.env

2.1 欧路词典相关配置

  • 获取欧路词典 API 密钥

    访问此页面,登录后,获取你的API密钥。并将获取到的 API 密钥填入.env文件中的EUDIC_API_KEY字段。

    image.png
  • 获取生词本 ID

    运行 get_wordbook_id.py,查看生词本信息,记下你需要同步的生词本 ID。

    python get_wordbook_id.py
    image.png

    将需要同步的生词本 ID 填入 .env 中的 EUDIC_CATEGORY_ID

2.2 墨墨背单词相关配置

  • 获取墨墨背单词 API 密钥

    打开墨墨背单词手机 App,进入「我的」-「更多设置」-「实验功能」-「开放 API」,生成并复制 API 密钥,然后将其填入 .env 文件中的 MOMO_API_KEY 字段。

  • 获取云词库 ID

    运行 get_notepad_id.py,查看云词库信息,记住你需要同步的云词库 ID。

    python get_notepad_id.py
    image.png

    将需要同步的词库 ID 填入 .env 文件中的 MOMO_NOTEPAD_ID 字段。

3. 手动同步

运行 sync.py,即可手动触发一次同步。

python sync.py

4. 自动同步(部署到树莓派上或者其他 Linux 设备)

确保部署前已经成功手动运行过 python sync.py,验证配置无误。

使用Docker

我个人比较喜欢用 Docker, 隔离性好,依赖管理简单,不会弄乱系统的环境。在我的树莓派 5 上运行良好,额外的性能开销在可接受范围内。

创建一个 docker-compose.yml 配置文件:

services:
  eudic-maimemo-sync:
    image: ghcr.io/emuqi/eudic-maimemo-sync:latest
    container_name: eudic-maimemo-sync
    restart: unless-stopped
    env_file:
      - .env
    # volumes:
    #   - ./words_data.txt:/app/words_data.txt # 如果想查看单词记录,取消此行和上一行的注释
    environment:
      - TZ=Asia/Shanghai
      - RUN_ON_STARTUP=true # 设置为 true 时,容器每次启动时会执行一次同步任务
      # CRON 定时任务表达式配置:
      # 示例:每小时的第 0 分钟执行(即整点执行)
      # - CRON_SCHEDULE=0 * * * *
      # 示例:每天凌晨 3:15 执行
      - CRON_SCHEDULE=15 3 * * *
      # 请确保所有必需的环境变量(如 EUDIC_API_KEY 等)已在 .env 文件中定义或在此处直接指定。
    healthcheck:
      # Test if the supercronic process is running
      test: ["CMD-SHELL", "pgrep supercronic || exit 1"]
      interval: 2m
      timeout: 5s
      retries: 3
      start_period: 10s

你可以通过 CRON_SCHEDULE 来设置任务的运行周期:

  • CRON_SCHEDULE=0 * * * *: 每小时的第 0 分钟执行(即整点执行)
  • CRON_SCHEDULE=15 3 * * *: 每天凌晨 3:15 执行

在相同目录下创建一个 words_data.txt 文件,用于记录同步的单词列表,方便调试或查看。如果不需要,可以跳过此步。

touch words_data.txt

启动容器

docker compose up -d

其他方式

你还可以使用 cron 或者 systemctl 的方式来定时运行这个同步脚本。如果你熟悉这些工具的配置,欢迎分享你的方法或提交 Pull Request。


开发中遇到的问题

  1. 欧路词典 API 的 User-Agent 要求: 欧路词典 API 对请求的 User-Agent 有特定要求,不接受 Python HTTP 库(如 requests)的默认 User-Agent。因此,在与该 API 交互时,必须显式设置一个浏览器类型的 User-Agent,以确保请求被正确处理。本项目中,我采用了 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36

  2. 墨墨背单词 API 云词库格式: 墨墨背单词 API 文档中关于添加单词到云词库所需的数据格式说明不够清晰。文档中只说明数据类型是 string,但未明确其具体结构。经过试验,结构为以井号 # 开头的行作为分类标记(例如日期),换行后紧跟该分类下的单词,每个单词独占一行。下一个分类同样以 # 开头的标记开始。如 #20250415\napple\nboy#20250416\ncat

    #20250415
    apple
    boy
    #20250416
    cat
  3. Docker 中定时任务:从 Cron 到 Supercronic 的迁移: 一开始,我尝试在 Docker 容器内部署 Cron 来定时执行 Python 任务。但是,Cron 任务默认在隔离的、极简的环境中执行,无法直接继承 Docker 容器启动时定义的环境变量(例如 API 密钥等配置)。虽然有方法可以间接加载,但配置比较繁琐。于是我迁移到了 SupercronicSupercronic 是一款专为容器环境设计的 Cron 实现,它兼容标准的 Crontab 语法,还能继承容器的环境变量。如果你有类似的项目,推荐你使用 Supercronic 作为替代方案。

最后,欢迎提交 Pull Requests 或 Issues 到 eudic-maimemo-sync。有任何想法,也欢迎在下方留言。

相关链接

在 AI 时代,我为什么写博客?

2025-03-04 21:07:40

这两天,在 Hacker News 上看到 Giles Thomas 的两篇文章,深有感触。

第一篇是 《On the benefits of learning in public》,讲述了 "learn in public" 的好处,比如能够巩固和深化知识。我写的大多数文章其实都是教程,也算是 "learn in public" 的一种实践,但我有时会怀疑这些教程是否真的有意义,因为它们看起来很简单、基础,似乎谁都能写,不够深刻。我会质疑那些记录基础操作步骤的文章是否值得发布——毕竟它们有时看起来只是对官方文档的简单复述,或是任何开发者通过Google都能找到的常见解决方案。如果说只是为了记录下来,方便以后自己查询,也许它们呆在个人知识库就足够了。

这篇文章给了我启发:他把自己写的教程描述为“我希望在刚开始学习时就能找到的文章”("tutorials that I wished someone else had written for me before I started trying to learn this stuff")。这句话让我豁然开朗:即使是简单的教程,只要它能够帮助初学者少走弯路,就有其独特价值。这在很大程度上消除了我的疑虑,给了我很大的鼓舞,因为这也正是一直以来我希望自己的文章能够达到的标准。

比如我的这两篇文章,或许就是某个人摸索时的及时雨:

https://wulu.zone/posts/whisper-cn

https://wulu.zone/posts/mi-iot-homekit

另一篇是 《It's still worth blogging in the age of AI》,这篇文章探讨了在人工智能普及的时代,博客写作的意义。在他的上一篇文章登上 Hacker News 热门后,一个常见的问题浮现:如果人们都在使用 ChatGPT、Claude 和 DeepSeek 获取信息,谁还会阅读博客内容?除了 AI,还有谁会阅读你写的内容?Giles 认为是值得的,并且给出了他的思考。我觉得如果你是博客作者,你能在其中找到共鸣,推荐大家去看。

我为什么写博客?

读完这两篇文章,我再次思考:我为什么写博客?这个问题其实早已存在。从为了满足自己拥有网站的虚荣心而搭建博客的最初时期,到随性有灵感时更新,再到中途停笔的时期,到最后现在有意识地重新开始写作。这种问题总会反复出现。

尽管与作者笔耕不辍不同,我的博客更新并不频繁,不太算是一个经常写博客的人。但文章中提到的几点博客写作的价值依然让我共鸣:

  1. 知识结构化:将知识记录下来帮助自己更好地掌握,而且也方便后续查询
  2. 成就感:当别人阅读并从我的文章中获益时带来的那种多巴胺刺激
  3. 个人品牌:通过博客创建一个能展示自己思想观点的作品集

我认可费曼学习法和 "learn in public" 等观念,就像文章提到的“如果你不能向一个聪明且感兴趣的听众解释清楚某件事,那么你就没有真正理解它。”。写作是思考的升华过程。当我们将想法用自己的语言阐述时,思维才得以精细的加工。而且为了准确表达,我常常会查阅额外资料,这本身是一个深度学习的过程。

记录下这些教程还有一个好处:文字是对抗遗忘的工具。记忆并不那么可靠,记录下来后,回头再看当时写下的文章,能够帮助自己回溯。文字能够复现消逝的自我。


另一方面,写作对我而言除了是一种思想训练和学习方式,更是一种存在的证明。在《直视骄阳》这本书中了解到波动影响理论后(在我的《2024 读书总结》中有提到,如果你感兴趣的话),我发现写作能有效缓解我的存在焦虑。

刚接触互联网时,我就读到了《欺骗的艺术》这本书,了解了社会工程学,对在互联网上分享信息产生了警惕。这种警惕加上我的性格特点,导致我一直以来很少在互联网上透露个人信息,甚至很少写一些感想类的文章。我的博客大多数聚焦于技术分享,个人观点则被谨慎地隔离在外。

直到经历了一场深刻的心理危机,接受心理咨询并广泛阅读心理学和哲学书籍后,我的世界观发生了微妙的转变。我开始渴望与人连接,期待真诚的交流。这种认识让我开始思考在博客上分享更多个人感想的可能。虽然仍有矛盾和犹豫,但我开始相信,适度的自我揭示和真诚分享不仅是自我成长的一部分,也可能为他人提供某种共鸣或安慰。我期待我的文字能够帮助人,与更多人产生联系,传播那或许是非常微小但真实的影响。

写作帮助我整理思绪,获得分享的快感,同时也是应对生活空虚感的方式。即便有时感觉像 Giles 文章中提到的 "feel like you're shouting into the void" (就像对着虚空喊叫),但偶尔从“虚空”传来的一条留言、一个点赞,都将成为继续前行的动力。

AI 时代的写作价值

在AI盛行的时代,我认为坚持写作变得更加重要。从我的理解来看,现阶段的大语言模型本质上还是基于概率的文本生成,而每个人独特的思考和写作方式是无法被完全替代的。当越来越少的人选择写作,那些仍然坚持的声音反而变得更加珍贵,更加真实,充满温度和灵魂。写作不仅是信息的传递,更是人类思想和情感的独特表达。

这就是为什么,尽管面对AI的崛起,我依然相信博客写作的价值——它帮助我思考,连接他人,留下我存在的印记,同时也为这个世界贡献一份真实的人类声音。

题外话:一个邀请

在浏览 Hacker News 的关于上面文章的评论区时,我被 Aditya Athalye 的做法所吸引——他学习Derek Sivers和patio11的做法,在他的网站放了一份“长期邀约”。

我觉得这种方式很吸引我,我也想学习这种方式,以下是我的对所有人发起的邀请:

如果你对我的文章,或者我所讨论的任何主题感兴趣,欢迎你给我发送邮件。我的邮箱地址是:[email protected]

我会不定期查看邮件,可能我无法及时回复,但我承诺只要你是以友善和尊重的态度联系我,我一定会回应。每一次真诚的交流都可能成为意外的收获和启发,或许这也是在AI时代写博客和保持人际连接的另一种价值所在。

谢谢你的阅读!期待收到你的来信。

记录 DIY 更换 CASIO G-SHOCK GBA-800 电池过程

2025-02-27 00:04:29

最近动手给我的 CASIO G-SHOCK GBA-800 更换了电池,记录一下过程。参考教程在文末,建议先看完两个视频再动手。

注意:自行更换电池可能会影响手表防水性能,并存在进灰等风险。

需要准备的工具

  • 镊子
  • 螺丝刀
  • CR2016电池(建议选松下,和出厂时一致)
  • 防静电手套以避免指纹和灰尘(如果有的话)

操作步骤

1. 拆出后盖

用螺丝拧开后盖。然后取下这个膜,记住这个膜的方向。

2. 打开电池扣取出电池

打开后盖,取下中间的厚后,可以看到机芯模块。用镊子插入左图箭头所示缝隙,向右撬开电池盖。

缓慢地取出电池,需要注意,电池和电池盖之间有胶,所以要慢慢撕下来。

IMG_8691 (中).jpg

3. 更换电池

然后,换入新电池。这款手表的电池型号是 CR2016。放入电池后将电池盖向下按,扣回去。

4. 短接AC和地

按照电池盖上的说明,用镊子短接AC和地。

IMG_8694 (中).jpg

5. 盖上覆膜和安装好密封圈

将覆膜按初始状态放回,注意区分正反面。然后安装密封圈(黑色橡胶环),请参考右图箭头所示位置,确保密封圈正确放入对应槽内。

随后,可以利用这个机会用酒精棉片轻轻清洁表壳内部边缘和外壳,去除积累的汗渍和污垢。注意不要让酒精接触到电子元件,并确保完全干燥后再继续下一步。

6. 装回后盖,大功告成

拧螺丝时要注意,不要直接拧紧。先将四个螺丝全部拧入,再依次拧紧。

注意事项

  • 强烈建议看完两个参考视频后再动手
  • 整个过程大约需要15-20分钟,建议在光线充足、干净的桌面上操作
  • 更换电池后,手表需要重新设置时间和日期
  • 如果操作后发现手表功能异常,建议尽快送专业维修点检查

如果你决定自行更换电池,那么祝你好运!

参考

卡西欧 G-SHOCK GBA-800 使用手册

https://www.youtube.com/watch?v=8MBkgxxEeI8

https://www.bilibili.com/video/BV1PA411P7UB

2024 读书总结

2025-02-17 21:35:47

过去这一年,我的阅读主要围绕心理健康、自我认知和个人成长展开。这些书籍帮助我更深入地理解了自我和他人,也为日常生活提供了实用的工具和方法。虽然遗憾没能在读完时及时记录感受,但重温这些书籍时,仍能感受到它们带给我的启发和改变。以下是我对这些书籍的简要回顾与思考。

《蛤蟆先生去看心理医生》

作者:罗伯特·戴博德
译者:陈赢
出版社:天津人民出版社

一本很薄的故事书,有点像童话或者寓言故事,如书名,讲述了蛤蟆先生去看心理医生的故事。 读起来很轻松,流畅,一下就可以读完。这本书提供了一个了解心理咨询的视角,是一本不错的心理学读物。 书中还科普了交互分析理论(Transactional Analysis,TA)中的儿童自我状态,父母自我状态,成人自我状态。这个理论认为我们会在这三种状态不停地切换,非常有趣的理论,有助于帮助了解自我。

《直视骄阳》

作者:Irvin D. Yalom
译者:张亚
出版社:中国轻工业出版社

这是一部关于如何面对死亡的深刻著作。

这本书讲了死亡焦虑的普遍性,如何识别死亡焦虑,它能够带来什么,以及我们可以如何去面对它。

对我而言,这本书帮助最大的就是带我了解了伊比鸠鲁的观念:

  • 死亡本身不可怕,因为我们无法感受死亡,死后“我”就消失了,即“完全虚无的死亡”。
  • 生前和死后,是对称的两极。死后其实和生前并无差别。
  • 波动影响。指人有意无意会对周围的任何事物产生影响,就像池塘中的涟漪,即使细微但是很长远。

这本书给了我一些方法去处理我的死亡焦虑,也给我带来了一些新的思考去看待自己的死亡和他人的死亡。书中还讨论了死亡意识如何反过来影响我们的生活态度,以及如何将对死亡的思考转化为珍惜当下的动力。如果你有存在焦虑或者死亡焦虑,我非常推荐这本书。

《非暴力沟通》

作者:马歇尔·卢森堡
译者:刘轶
出版社:华夏出版社

这本书介绍了非暴力沟通。也是一种生活理念。它提示我要关注自己内心的感受和需求,真诚地与人沟通。

通过把注意力放到观察、感受、需求和请求这四个要素来改善沟通,同时非暴力沟通还强调自主的重要性,强调个人责任。我觉得这一点和存在主义的观念是很吻合。

书中还提到了很多非常有意思的讨论:比如观察和评论的区别,请求和要求的区别。这些讨论不仅帮助我反思与人的沟通,也帮助我反思人际关系。

非暴力沟通方法在亲密关系中尤其有效,能帮助伴侣之间建立更深入的理解和连接。

书中还有很多内容,需要真正去读并且实践才有用,非常有帮助,非常推荐这本书。

《Headspace 冥想正念手册》

作者:安迪·帕帝康
译者:李芳龄
出版社:星出版

这本书科普了冥想和正念,有很多帮助理解冥想的故事,还提供一些方法帮助入门冥想。

之前一直听说过冥想,听过很多关于冥想的传闻,却也没有真正了解过。今年特别想尝试一下冥想,买了这本书来了解一下,让我对冥想有了不同的认识。书中还提供了很多隐喻帮助理解冥想。我也尝试了冥想,对我而言确实有帮助的。

如果你也对冥想感兴趣,或者正在尝试但觉得摸不着头绪,很推荐这本书。我看的这个版本是繁体中文,还有一个简体中文的版本,名字是《十分钟冥想》。

《天生敏感》

作者:伊莱恩·阿伦
译者:于娟娟
出版社:华夏出版社

这是一本讲述所谓高敏感人群的特质的书。

听了枫言枫语的节目,专门看了这本书。我大致也属于比较敏感的人群,这本书帮助高敏感人群了解自我,理解自我,并且提供了一些方法更好的与外部世界相处。还有很重要的是,能够带来很大的认同感。

《素食者》

作者:韩江
译者:胡椒筒
出版社:四川文艺出版社

这是一本小说,由2024年诺贝文学奖作者韩江写的。书中通过三个视角来叙述同一个故事,这点比较有趣。我是慕名去看,没有我想象中的好看,整本书像是讲述几个精神病的故事,很压抑。

《也许你该找个人聊聊》

作者:洛丽·戈特利布
译者:张含笑
出版社:上海文化出版社

这是一本讲述心理咨询的书。这本书很厚,由一个心理咨询师的视角写作,书中以一个个故事组成,每一个章节是一个故事,有作者本人的故事,也有作者作为心理咨询师在咨询室里遇到的故事。虽然很厚但是读起来没有压力,可以慢慢看看,每天看几个故事。我喜欢这本书不是一本说教的书,平易近人,没有让人感觉是在尝试告诉你什么道理,而是通过一个个故事,让你自己去感受,找到自己的理解。

结语

希望今年能保持阅读的习惯,也期待遇见更多好书。