这篇博客或许会是我猹某人写博客以来耗时 最长,涉及的技术 最多,耗尽心血的 力作
这里先立个 FLAG,我希望这篇文章可以让任何人有兴趣研究的人都做出我能做出来的东西(不是那种白嫖能直接用的那种,而是给真的愿意整活的人,愿意学的人,提供一个思路
序言
说起来很早就想把记录整活的 博客
形式换成 视频
的形式,奈何一直没有心力去搞这件事。(考研,工作,体验社会。。。)
这不,临近大学毕业,刚刚写完毕业论文感觉自己思路清晰,想要记录一下,奈何做视频又没有思路。无奈还是决定开启这篇博客。
本次介绍的是智能家庭,用的是树莓派(直接劝退一大批人),不要慌!只是我比较菜所以先用树莓派开发着。对pipico和ESP的学习已经在路上了,相信不久的将来我会把系统重新打造一遍的!
书归正传,除去树莓派,其实开发成本并不高,用到的传感器和执行器也都是很基础很简单很便宜的小东西。除去树莓派要用到的东西大概不超过100?不过真说实际应用不止这些,具体接下来慢慢讲。
智能房屋控制系统介绍
本系统旨在提高生活体验,我以人格担保,我本人用上了我自己设计的这套系统,生活体验大大提高,舒适度全寝最佳,学习工作效率比以前提升明显。
这也是我必须把我的这套系统介绍出来,安利给大家伙儿的原因。
硬件介绍
初步用到的硬件有:
- 树莓派4B,还有网线,数据卡(TF卡),电源,因为要用到 SSH 连接所以大概还需要有你能查看 ip 或者私人使用的路由器
- 固体继电器,用来驱动 220V 大功率的电器
- 电磁继电器,用来驱动 12V 以下的小功率电器
- DHT11/DHT22 温湿度传感器(讲道理 22 白白的好看一点
- 杜邦线,microusb母口,usb母口,洞洞板,铜线,开关,排针,排母若干
- 烙铁,焊锡,热熔胶,电工胶带等用具
之后扩展使用到无非就是多些种类的传感器,或者其他模块
软件介绍
- 树莓派上安装 raspbian 系统
- 树莓派上安装 python 环境(还有下文会介绍的需要的第三方库),frp 内网穿透(可以没有,因为需要 vps)
- 云服务器搞一个 Debian 系统,用来做后端服务器和前端服务器,但其实如果你真的使用了树莓派,完全可以省略这个,全都搭载在树莓派上即可,把树莓派做云服务器,个人用的话性能是完全够的(云服务器不管是租还是自己组起来都挺贵的
- 云服务器上安装 python django nodejs nginx ,以及他们可能需要的库,下文介绍
GitHub 创建新库
关于 如何创建 Github 仓库 请点进猹的连接看详细,这里只做简单介绍
- 进入 github.com 并登录【有时需要代理才能打开网页
- 点击右上角,头像左边,的加号 -> New repository
- 输入项目名 -> 输入描述(可以没有)-> 点击最下面的 Create repository
- 进入项目根目录,初始化仓库
git init; git add ./*; git commit -m "创建 HHOME 项目"; git branch -M main; git remote add origin git@github.com:Hybrogen/HHOME.git; git push -u origin main
- 以后修改了项目,上传更新
git add ./*; git commit -m "message"; git push -u origin main
硬件构建
软件构建
第一步是新建一个新的 Django 项目
创建 Django 项目
首先创建一个文件夹给我们放项目好了
mkdir /etc/django
cd /etc/django
在这里新建一个 Django 项目吧
django-admin.py startproject HHOME
cd HHOME
之后需要:(警告大佬,这部分是比较简单的基础教学,对 Django 有所了解的朋友可以跳过这部分进入下一小节# FIXME 需要给这一行最后的连接添加标题跳转
- 修改访问 ip 白名单,设置为能访问到这台主机的
ip
或域名
# 修改 HHOME/settings.py ALLOWED_HOSTS = ['hhome.domain.com']
- 创建网络接口程序文件
vim HHOME/view.py
写入一些你自定义的功能接口吧,作为网站后端,通常返回的是 json 形式的数据
# 修改 HHOME/view.py from django.shortcuts import HttpResponse from django.http import JsonResponse import json def index(request): return HttpResponse('自定义一些文本') def data(request): data = {'数据是这样返回的':'通过一个解析成json的字典对象'} # 常用的httpResponse,在返回数据的时候需要把字典解析成json"字符串"并且指定返回的文本类型 return HttpResponse(json.dumps(data), content_type='application/json') # 也可以使用HttpResponse的一个子类JsonResponse,记得在头文件里引入对应的类 # 使用JsonResponse可以直接返回字典对象,而不用再通过json库进行转换 return JsonResponse(data)
- 添加路由,确保你指定的接口已经在
views.py
中定义# 修改 HHOME/url.py from django.contrib import admin from django.urls import path from . import views urlpatterns = [ # path('admin/', admin.site.urls), path('', views.index), path('data', views.data), ]
- a
- a
$\frac {C^{n}_{2n}}{n+1}$