Skip to content

LiangZuoting/SmartHome

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SmartHome

自用智能家居控制系统。简化、模仿 Home Assistant 的拙作,但核心诉求是一致的:本地化部署、保护隐私。

ChangeLog

2022.01.15:

  1. 拆分设备描述文件,每一个设备单独一个 json 文件;
  2. 首页启动时不再获取全部设备最新状态,延迟到用户浏览具体设备时更新。

2022.02.05:

  1. 集成美的空调发现功能。因为美的的 token 和 key 每次重新供电时都会变化。

2023.02.02:

  1. 使用此库 替换原有美的库。新库代码更清晰,动态获取 token 环节上更可靠——我的美的空调终于可以稳定使用了。

框架

前端:React.js + Spectre.css AntD

后端:Flask Sanic

数据模型:model/devices.json

常用属性:

  • ui:设备对应的 svg 图片 url。

  • colorshape 的填充色。

  • properties:可调节的设备参数集。"name": "开关" 是预置属性,关联设备的开关状态。通常所有设备都应该有且唯一,可以通过查询 name 获取设备是否正在运行。

  • timers:定时任务。内含一组 properties 子集,达到设定时间时批量应用设备参数新值。定时器规则描述完全遵从 APScheduler 参数,从而可以解包后直接透传到 APScheduler 接口。

  • scenes:预设场景。同样用作批量应用一组设备参数的新值。

  • 设备参数描述属性:根据不同设备能力各自不同,但格式统一:必须是 properties 数组下的一个对象;必须有 idvalue 两个固定属性。id 要求全局唯一;value 标识设备参数当前值。

其它主要依赖:

UI、UX 设计

首页以 SVG 绘制出户型图后,通过数据模型动态放置所有设备到 SVG 图相应位置。点击设备后跳转到设备编辑页面。

部署

这部分不是重点,仅摘要记录,做备忘。

设备:树莓派 3B

Python:3.7.3

HTTP 服务器:nginx

网关:Gunicorn

大致操作步骤

  1. 安装所有依赖库;

  2. 复制 SmartHome 工程到树莓派;

  3. 写启动脚本 boot.sh

sudo /etc/init.d/nginx start
cd /home/pi/SmartHome
python3 -m sanic server.app --host=127.0.0.1 --port=9876 --workers=4
  1. 开机启动:
nano /etc/rc.local

# Append this to rc.local above exit 0
su pi -c "exec /home/pi/StartHome/boot.sh"
  1. 配置 nginx:
nano /etc/nginx/sites-available/default

完成后的完整配置应该是这样的(去掉了默认的注释):

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        # HERE CHANGED
        root /home/pi/SmartHome;

        index index.html index.htm index.nginx-debian.html;

        server_name _;
        # HERE CHANGED
        location / {
                proxy_pass http://127.0.0.1:9876;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                include /etc/nginx/mime.types;
        }
}

设备

下半年搬了新家再更新

问题

1. 美的空调在断电重连时会重新分配 token 和 key。应该将 midea-discover 设备发现功能集成到 msmart。

About

My own smart home system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published