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
Home Assistant 支持多种安装方式,大致有三种方法:
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 初始化向导,按照提示设置管理员账户和密码。
配置完 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
接下来我们需要初始化 HACS,你可以参考此教程或按照下图步骤配置。注意,你需要提前注册一个 Github 账号。
在“设置”中打开“设备与服务”
点击“添加集成”,搜索并选择“HACS”
根据指引逐步操作,打开提示中的网址,登录 GitHub,输入授权码。
看到下图界面,就说明 HACS 以及安装成功了。
指派设备可以先选“跳过并完成”。
小米在2024年年底推出了官方的 Home Assistant 集成 (Xiaomi Home)。经过多个版本迭代,目前已趋于稳定可用。这意味着我们多了一个官方选择,而不必像以往主要依赖社区维护的 “Xiaomi Miot Auto” 集成 。当然,你依然可以选择使用“Xiaomi Miot Auto”集成,对于某些特定设备或追求稳定性的场景,它可能仍有优势。你可以参考我写的另一篇教程:https://wulu.zone/posts/mi-iot-homekit
接下来,我们安装米家官方集成以将米家设备接入HomeAssistant。
进入 HACS 页面,找到“Xiaomi Home”。
点“下载”,然后确认下载。
同样地,安装完集成之后需要重启 HomeAssistant。
~/docker/homeassistant/
docker compose restart
接下来,我们配置 Xiaomi Home 将米家设备接入 Home Assistant。注意,配置 Xiaomi Home 前需要重启 HomeAssistant。
点击“设置”,选择“设备与服务”
点击“添加集成”,搜索并选择“Xiaomi Home”
登录小米账号以获取设备信息。
在登录认证过程中,如果遇到类似下图的错误提示,通常是因为集成默认使用 homeassistant.local:8123
作为OAuth2 认证跳转地址。你可以通过修改路由器或者本地 host,将 homeassistant.local
指向你安装了 Home Assistant 的设备。也可以直接在地址栏修改地址,将homeassistant.local
改为对应设备的 IP, 然后刷新网页完成认证。
认证成功后,该页面会自动关闭跳转回 Home Assistant,之后按照指引完成剩余的设备添加步骤即可。
接下来,我们通过 HomeKit Bridge 将 Home Assistant 中设备桥接到 HomeKit。
首先,我们要添加 HomeKit Bridge 集成。点击“设置”,进入“设备与服务”页面。
搜索“homekit”,点击“Apple”
点击添加“HomeKit Bridge” 集成,按照指引完成添加。
需要注意的是,如果你希望桥接传感器类型的设备(如温湿度传感器),确保在“要包含的域”中勾选“Sensor”选项,这个选项默认是未勾选的。
HomeKit Bridge 会自动识别 Home Assistant 中的设备。在将其同步到 Apple 家庭 App 之前,建议先检查并禁用一些不需要桥接的实体。
否则可能会出现以下情况:例如,当将小米智能插座添加到 HomeKit 时,插座会被识别为三个设备,除了开关之外,其中插座的指示灯被识别为灯具,插座温度也被误认为环境温度传感器。这可能不是我们期望看到的结果。
在 HomeKit Bridge 的详情页面,点击“配置”
在“排除的实体”列表中,依次添加要排除的实体
最后,将配置好的 HomeKit Bridge 添加到你的 Apple 家庭 App 中。点击界面左下角的通知按钮,查看 homekit 的配对二维码。
打开“家庭”应用,点击左上角的“+”号,选择“添加配件”。扫描上个步骤的得到的二维码,点击“添加到家庭”。在加入过程中,可能会提示“未认证设备”,点击“仍要添加”。然后完成剩余步骤,逐个添加设备。完成后,你就能用 Siri 控制你的智能设备了。
Siri 回复设备没有回应?
通过上述方法添加设备后,只能在同一局域网内控制该设备。如果出现这种情况,请检查手机是否连接到家庭网络,并进一步确认 Home Assistant 服务状态是否正常。
如何通过 Siri 在局域网外控制家里的设备?
你需要有一个家庭中枢,比如 HomePod 或者 Apple TV。
更新小米集成相关问题
小米官方的 Home Assistant 集成现在还处于早期开发阶段,版本更新时可能会存在破坏性更新。更新前要注意查看更新说明。
其他问题
其他问题?欢迎在评论区留言讨论!
https://www.home-assistant.io/installation/linux/#install-home-assistant-container
https://hacs.xyz/docs/use/download/download/#to-download-hacs
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 语法兼容、专为容器设计的任务调度工具,用法和原生 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 依赖项
克隆此仓库
git clone https://github.com/emuqi/docker-python-supercronic-example.git
cd docker-python-supercronic-example
为你的架构选择 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
创建 .env
文件用于设置环境变量
CUSTOM_MESSAGE=来自计划任务的问候!
CRON_SCHEDULE=*/5 * * * * # 每 5 分钟运行一次
构建并启动容器
docker compose up -d --build
检查日志以验证程序是否按预期运行
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 脚本的示例变量 |
* * * * *
- 每分钟*/5 * * * *
- 每 5 分钟0 * * * *
- 每小时(0分时)0 0 * * *
- 每天午夜0 18 * * *
- 每天下午 6:00test.py
.env
文件或 docker-compose.yml
中的 environment:
部分来扩展或覆盖变量。添加的任何新变量(例如 NEW_VAR=value
)都将被加载到容器中。requirements.txt
docker-compose up -d --build
2025-04-16 16:32:43
在浏览网页时,我常用欧路词典的“欧路翻译”浏览器插件进行划词翻译。这个插件会自动记录查阅过的单词,并将其添加到欧路词典的生词本中。 然而,在单词记忆方面,我更习惯使用“墨墨背单词”。
因此,我在寻找一种方法,将欧路词典的生词本同步到墨墨背单词的词库。这样,我就可以用自己习惯的软件来记忆日常阅读中遇到的生词了。
后来我发现,这两个软件其实都提供开放 API。于是,我开发了 eudic-maimemo-sync 工具,实现欧路词典生词本到墨墨背单词云词库的自动同步。同时,我还将其部署在树莓派上,让它每天自动运行,实现了生词本的无缝同步。
接下来,我将介绍如何配置和使用这个工具,并分享开发过程中遇到的一些问题和解决方法。也欢迎大家贡献代码或提出建议。
目录
前置条件:已安装 Python 3 环境
下载代码:
git clone https://github.com/eMUQI/eudic-maimemo-sync.git
安装依赖:
cd eudic-maimemo-sync
pip install -r requirements.txt
接下来,需要配置环境变量。首先,复制 .env.example
为 .env
。
获取欧路词典 API 密钥
访问此页面,登录后,获取你的API密钥。并将获取到的 API 密钥填入.env
文件中的EUDIC_API_KEY
字段。
获取生词本 ID
运行 get_wordbook_id.py
,查看生词本信息,记下你需要同步的生词本 ID。
python get_wordbook_id.py
将需要同步的生词本 ID 填入 .env
中的 EUDIC_CATEGORY_ID
。
获取墨墨背单词 API 密钥
打开墨墨背单词手机 App,进入「我的」-「更多设置」-「实验功能」-「开放 API」,生成并复制 API 密钥,然后将其填入 .env
文件中的 MOMO_API_KEY
字段。
获取云词库 ID
运行 get_notepad_id.py
,查看云词库信息,记住你需要同步的云词库 ID。
python get_notepad_id.py
将需要同步的词库 ID 填入 .env
文件中的 MOMO_NOTEPAD_ID
字段。
运行 sync.py
,即可手动触发一次同步。
python sync.py
确保部署前已经成功手动运行过 python sync.py
,验证配置无误。
我个人比较喜欢用 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。
欧路词典 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
。
墨墨背单词 API 云词库格式: 墨墨背单词 API 文档中关于添加单词到云词库所需的数据格式说明不够清晰。文档中只说明数据类型是 string
,但未明确其具体结构。经过试验,结构为以井号 #
开头的行作为分类标记(例如日期),换行后紧跟该分类下的单词,每个单词独占一行。下一个分类同样以 #
开头的标记开始。如 #20250415\napple\nboy#20250416\ncat
。
#20250415
apple
boy
#20250416
cat
Docker 中定时任务:从 Cron 到 Supercronic 的迁移: 一开始,我尝试在 Docker 容器内部署 Cron 来定时执行 Python 任务。但是,Cron 任务默认在隔离的、极简的环境中执行,无法直接继承 Docker 容器启动时定义的环境变量(例如 API 密钥等配置)。虽然有方法可以间接加载,但配置比较繁琐。于是我迁移到了 Supercronic。Supercronic 是一款专为容器环境设计的 Cron 实现,它兼容标准的 Crontab 语法,还能继承容器的环境变量。如果你有类似的项目,推荐你使用 Supercronic 作为替代方案。
最后,欢迎提交 Pull Requests 或 Issues 到 eudic-maimemo-sync。有任何想法,也欢迎在下方留言。
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 认为是值得的,并且给出了他的思考。我觉得如果你是博客作者,你能在其中找到共鸣,推荐大家去看。
读完这两篇文章,我再次思考:我为什么写博客?这个问题其实早已存在。从为了满足自己拥有网站的虚荣心而搭建博客的最初时期,到随性有灵感时更新,再到中途停笔的时期,到最后现在有意识地重新开始写作。这种问题总会反复出现。
尽管与作者笔耕不辍不同,我的博客更新并不频繁,不太算是一个经常写博客的人。但文章中提到的几点博客写作的价值依然让我共鸣:
我认可费曼学习法和 "learn in public" 等观念,就像文章提到的“如果你不能向一个聪明且感兴趣的听众解释清楚某件事,那么你就没有真正理解它。”。写作是思考的升华过程。当我们将想法用自己的语言阐述时,思维才得以精细的加工。而且为了准确表达,我常常会查阅额外资料,这本身是一个深度学习的过程。
记录下这些教程还有一个好处:文字是对抗遗忘的工具。记忆并不那么可靠,记录下来后,回头再看当时写下的文章,能够帮助自己回溯。文字能够复现消逝的自我。
另一方面,写作对我而言除了是一种思想训练和学习方式,更是一种存在的证明。在《直视骄阳》这本书中了解到波动影响理论后(在我的《2024 读书总结》中有提到,如果你感兴趣的话),我发现写作能有效缓解我的存在焦虑。
刚接触互联网时,我就读到了《欺骗的艺术》这本书,了解了社会工程学,对在互联网上分享信息产生了警惕。这种警惕加上我的性格特点,导致我一直以来很少在互联网上透露个人信息,甚至很少写一些感想类的文章。我的博客大多数聚焦于技术分享,个人观点则被谨慎地隔离在外。
直到经历了一场深刻的心理危机,接受心理咨询并广泛阅读心理学和哲学书籍后,我的世界观发生了微妙的转变。我开始渴望与人连接,期待真诚的交流。这种认识让我开始思考在博客上分享更多个人感想的可能。虽然仍有矛盾和犹豫,但我开始相信,适度的自我揭示和真诚分享不仅是自我成长的一部分,也可能为他人提供某种共鸣或安慰。我期待我的文字能够帮助人,与更多人产生联系,传播那或许是非常微小但真实的影响。
写作帮助我整理思绪,获得分享的快感,同时也是应对生活空虚感的方式。即便有时感觉像 Giles 文章中提到的 "feel like you're shouting into the void" (就像对着虚空喊叫),但偶尔从“虚空”传来的一条留言、一个点赞,都将成为继续前行的动力。
在AI盛行的时代,我认为坚持写作变得更加重要。从我的理解来看,现阶段的大语言模型本质上还是基于概率的文本生成,而每个人独特的思考和写作方式是无法被完全替代的。当越来越少的人选择写作,那些仍然坚持的声音反而变得更加珍贵,更加真实,充满温度和灵魂。写作不仅是信息的传递,更是人类思想和情感的独特表达。
这就是为什么,尽管面对AI的崛起,我依然相信博客写作的价值——它帮助我思考,连接他人,留下我存在的印记,同时也为这个世界贡献一份真实的人类声音。
在浏览 Hacker News 的关于上面文章的评论区时,我被 Aditya Athalye 的做法所吸引——他学习Derek Sivers和patio11的做法,在他的网站放了一份“长期邀约”。
我觉得这种方式很吸引我,我也想学习这种方式,以下是我的对所有人发起的邀请:
如果你对我的文章,或者我所讨论的任何主题感兴趣,欢迎你给我发送邮件。我的邮箱地址是:[email protected]
我会不定期查看邮件,可能我无法及时回复,但我承诺只要你是以友善和尊重的态度联系我,我一定会回应。每一次真诚的交流都可能成为意外的收获和启发,或许这也是在AI时代写博客和保持人际连接的另一种价值所在。
谢谢你的阅读!期待收到你的来信。
2025-02-27 00:04:29
最近动手给我的 CASIO G-SHOCK GBA-800 更换了电池,记录一下过程。参考教程在文末,建议先看完两个视频再动手。
注意:自行更换电池可能会影响手表防水性能,并存在进灰等风险。
用螺丝拧开后盖。然后取下这个膜,记住这个膜的方向。
打开后盖,取下中间的厚后,可以看到机芯模块。用镊子插入左图箭头所示缝隙,向右撬开电池盖。
缓慢地取出电池,需要注意,电池和电池盖之间有胶,所以要慢慢撕下来。
然后,换入新电池。这款手表的电池型号是 CR2016。放入电池后将电池盖向下按,扣回去。
按照电池盖上的说明,用镊子短接AC和地。
将覆膜按初始状态放回,注意区分正反面。然后安装密封圈(黑色橡胶环),请参考右图箭头所示位置,确保密封圈正确放入对应槽内。
随后,可以利用这个机会用酒精棉片轻轻清洁表壳内部边缘和外壳,去除积累的汗渍和污垢。注意不要让酒精接触到电子元件,并确保完全干燥后再继续下一步。
拧螺丝时要注意,不要直接拧紧。先将四个螺丝全部拧入,再依次拧紧。
如果你决定自行更换电池,那么祝你好运!
2025-02-17 21:35:47
过去这一年,我的阅读主要围绕心理健康、自我认知和个人成长展开。这些书籍帮助我更深入地理解了自我和他人,也为日常生活提供了实用的工具和方法。虽然遗憾没能在读完时及时记录感受,但重温这些书籍时,仍能感受到它们带给我的启发和改变。以下是我对这些书籍的简要回顾与思考。
作者:罗伯特·戴博德
译者:陈赢
出版社:天津人民出版社
一本很薄的故事书,有点像童话或者寓言故事,如书名,讲述了蛤蟆先生去看心理医生的故事。 读起来很轻松,流畅,一下就可以读完。这本书提供了一个了解心理咨询的视角,是一本不错的心理学读物。 书中还科普了交互分析理论(Transactional Analysis,TA)中的儿童自我状态,父母自我状态,成人自我状态。这个理论认为我们会在这三种状态不停地切换,非常有趣的理论,有助于帮助了解自我。
作者:Irvin D. Yalom
译者:张亚
出版社:中国轻工业出版社
这是一部关于如何面对死亡的深刻著作。
这本书讲了死亡焦虑的普遍性,如何识别死亡焦虑,它能够带来什么,以及我们可以如何去面对它。
对我而言,这本书帮助最大的就是带我了解了伊比鸠鲁的观念:
这本书给了我一些方法去处理我的死亡焦虑,也给我带来了一些新的思考去看待自己的死亡和他人的死亡。书中还讨论了死亡意识如何反过来影响我们的生活态度,以及如何将对死亡的思考转化为珍惜当下的动力。如果你有存在焦虑或者死亡焦虑,我非常推荐这本书。
作者:马歇尔·卢森堡
译者:刘轶
出版社:华夏出版社
这本书介绍了非暴力沟通。也是一种生活理念。它提示我要关注自己内心的感受和需求,真诚地与人沟通。
通过把注意力放到观察、感受、需求和请求这四个要素来改善沟通,同时非暴力沟通还强调自主的重要性,强调个人责任。我觉得这一点和存在主义的观念是很吻合。
书中还提到了很多非常有意思的讨论:比如观察和评论的区别,请求和要求的区别。这些讨论不仅帮助我反思与人的沟通,也帮助我反思人际关系。
非暴力沟通方法在亲密关系中尤其有效,能帮助伴侣之间建立更深入的理解和连接。
书中还有很多内容,需要真正去读并且实践才有用,非常有帮助,非常推荐这本书。
作者:安迪·帕帝康
译者:李芳龄
出版社:星出版
这本书科普了冥想和正念,有很多帮助理解冥想的故事,还提供一些方法帮助入门冥想。
之前一直听说过冥想,听过很多关于冥想的传闻,却也没有真正了解过。今年特别想尝试一下冥想,买了这本书来了解一下,让我对冥想有了不同的认识。书中还提供了很多隐喻帮助理解冥想。我也尝试了冥想,对我而言确实有帮助的。
如果你也对冥想感兴趣,或者正在尝试但觉得摸不着头绪,很推荐这本书。我看的这个版本是繁体中文,还有一个简体中文的版本,名字是《十分钟冥想》。
作者:伊莱恩·阿伦
译者:于娟娟
出版社:华夏出版社
这是一本讲述所谓高敏感人群的特质的书。
听了枫言枫语的节目,专门看了这本书。我大致也属于比较敏感的人群,这本书帮助高敏感人群了解自我,理解自我,并且提供了一些方法更好的与外部世界相处。还有很重要的是,能够带来很大的认同感。
作者:韩江
译者:胡椒筒
出版社:四川文艺出版社
这是一本小说,由2024年诺贝文学奖作者韩江写的。书中通过三个视角来叙述同一个故事,这点比较有趣。我是慕名去看,没有我想象中的好看,整本书像是讲述几个精神病的故事,很压抑。
作者:洛丽·戈特利布
译者:张含笑
出版社:上海文化出版社
这是一本讲述心理咨询的书。这本书很厚,由一个心理咨询师的视角写作,书中以一个个故事组成,每一个章节是一个故事,有作者本人的故事,也有作者作为心理咨询师在咨询室里遇到的故事。虽然很厚但是读起来没有压力,可以慢慢看看,每天看几个故事。我喜欢这本书不是一本说教的书,平易近人,没有让人感觉是在尝试告诉你什么道理,而是通过一个个故事,让你自己去感受,找到自己的理解。
希望今年能保持阅读的习惯,也期待遇见更多好书。