你的旧安卓手机别扔!用Termux API把它改造成智能家居控制中心(支持红外/通知/传感器)

张开发
2026/5/6 19:34:30 15 分钟阅读

分享文章

你的旧安卓手机别扔!用Termux API把它改造成智能家居控制中心(支持红外/通知/传感器)
用闲置安卓手机打造零成本智能家居中枢Termux API实战指南抽屉里那台积灰的旧安卓手机可能比你想象中更有价值。当大多数人的旧设备沦为电子垃圾时极客们已经发现了一个隐藏玩法——通过Termux将其改造成完全本地化的智能家居控制中心。不同于需要购买网关、中枢设备的传统方案这种改造不仅零成本还能充分利用手机既有的红外发射器、各类传感器和联网能力。下面我们将深入解析如何通过Termux API实现这个创意方案。1. 硬件准备与环境配置在开始前确保你的旧安卓手机满足以下条件系统版本在Android 7.0以上部分API需要更高版本具备红外发射功能大部分2015年后机型支持传感器完好通常需要加速度计、光线传感器等存储空间剩余2GB以上必要工具安装pkg update pkg upgrade pkg install termux-api python pip install flask requests termux-setup-storage提示执行termux-setup-storage会触发Android的存储权限请求必须允许才能正常访问传感器数据和文件系统验证基础功能是否正常termux-infrared-frequencies termux-sensor -l正常情况应分别输出红外频率范围和传感器列表。若报错可能需要检查设备硬件兼容性。2. 红外家电控制实战利用手机红外模块控制传统家电是改造的核心场景。以控制空调为例我们需要先学习原始红外信号步骤1捕获红外信号# 需要另一台红外遥控器配合 echo 准备学习红外信号将遥控器对准手机红外发射器 | termux-tts-speak termux-infrared-transmit -f 38000 # 此时按下空调遥控器电源键观察终端输出步骤2存储信号特征将捕获的十六进制信号保存为JSON文件# save_ir_code.py import json code 0000 006D 0000 0022 00AC 00AB... # 替换为实际捕获的信号 with open(ac_power.json, w) as f: json.dump({freq:38000, pattern:code}, f)步骤3创建控制接口用Python构建REST API来控制空调# ir_server.py from flask import Flask import os, json app Flask(__name__) app.route(/ac/command) def control_ac(command): with open(fac_{command}.json) as f: data json.load(f) os.system(ftermux-infrared-transmit -f {data[freq]} {data[pattern]}) return fAC {command} success if __name__ __main__: app.run(host0.0.0.0, port8080)启动服务后通过http://手机IP:8080/ac/power即可远程控制空调开关。同样的原理可以扩展到电视、风扇等设备。3. 环境监测与自动化响应旧手机的传感器能变身高精度环境监测站。以下是几个典型应用场景温湿度监控报警系统# monitor.sh while true; do temp$(termux-sensor -s 温度传感器名称 -n 1 | jq .values[0]) if (( $(echo $temp 30 | bc -l) )); then termux-notification --title 高温警报 --content 当前温度${temp}℃ termux-tts-speak 警告环境温度过高 fi sleep 300 done智能灯光调节根据环境光传感器数据自动调节屏幕亮度作为夜灯# auto_light.py import json, os from time import sleep while True: light json.loads(os.popen(termux-sensor -s 光线传感器名称 -n 1).read()) lux light[values][0] brightness min(255, max(10, int(lux * 2.5))) os.system(ftermux-brightness {brightness}) sleep(60)将上述脚本设置为开机自启动termux-job-scheduler --script /path/to/auto_light.py --period-ms 36000004. 通知中枢与智能联动旧手机可以聚合各类智能设备通知并实现跨平台联动微信消息转发到Telegram# notify_forward.py import requests from datetime import datetime def on_notification(id, title, content): if 微信 in title: tg_bot_token YOUR_BOT_TOKEN chat_id YOUR_CHAT_ID message f微信消息 {datetime.now()}\n{content} requests.post( fhttps://api.telegram.org/bot{tg_bot_token}/sendMessage, json{chat_id: chat_id, text: message} ) while True: # 实际应用中需通过Termux:API监听通知 pass门铃摄像头联动当检测到门铃通知时自动截图保存通过Telegram发送警报本地TTS语音播报termux-camera-photo -c 0 front_door.jpg termux-media-scan front_door.jpg curl -X POST https://api.telegram.org/... -F photofront_door.jpg termux-tts-speak 门口有人到访请及时查看5. 进阶功能与系统优化要使这个中枢系统长期稳定运行还需要考虑以下优化能耗控制方案# 限制CPU频率 su -c echo interactive /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # 关闭不必要的传感器 termux-sensor -c网络可靠性增强# network_watchdog.py import os, time def check_network(): return os.system(ping -c 1 8.8.8.8) 0 while True: if not check_network(): os.system(termux-wifi-enable false sleep 5 termux-wifi-enable true) os.system(termux-toast -g top 网络已重置) time.sleep(60)数据可视化界面使用Termux内置的Web服务器展示传感器数据# sensor_dashboard.py from flask import Flask, render_template_string import subprocess app Flask(__name__) TEMPLATE htmlbody h1环境监测面板/h1 div温度: {{temp}}℃/div div湿度: {{humi}}%/div svg width400 height100 rect x0 y0 width{{light}}% height20 fillblue/ /svg /body/html app.route(/) def dashboard(): temp subprocess.getoutput(termux-sensor -s 温度传感器 -n 1 | jq .values[0]) return render_template_string(TEMPLATE, temptemp, humi45, light70) if __name__ __main__: app.run(port8080)这个方案在我家稳定运行了8个月成功替代了原本需要花费上千元的智能家居中枢设备。实际使用中发现2018年发布的小米8在持续运行时的日均耗电量约为35%配合旧手机的大电池容量完全不需要外接电源。

更多文章