DIY一个智能开关kwswitch
源码地址:https://gitee.com/kerwincui/kwswitch
平台简介
该智能开关平台包括服务端、硬件端、PC端和安卓端。硬件使用ESP8266模块,成本相对较低,可以发挥想象力,搭配各种传感器,实现自己的智能终端。
应用场景:智能开关的应用场景比较广泛,一般家里通电即可使用的设备都能搭配该模块,升级为网络版,进行联网控制。常见的就是智能开关、智能插座和智能灯,搭配土壤湿度传感器可以实现智能浇灌,搭配温湿度传感器可以监控温湿度,其他传感器例如:触控开关、雨滴探测、声音传感器、光敏传感器、烟雾传感器、火焰报警、人体感应等等。其他项目:物美智能设备

智能开关目前支持的功能:
- 远程控制
- 掉电记忆
- 触控开关
- 红外遥控
- 温湿度监测
- 本地控制
- 单双路继电器支持
- 智能配网(长按配置按钮进入)
- 不联网模式(双击配置按钮切换)
- 定时执行 (待完成...)
- 语音控制 (待完成...)
- 云端升级 (待完成...)
技术栈
平台架构图:

项目结构图:

后端
- 相关技术:Spring boot、MyBatis、Spring Security、Jwt、Mysql、Redis、Mongodb、MQTT
- 开发工具:IDEA
前端
- 相关技术:ES6、Vue、Vuex、Vue-router、Vue-cli、Axios、Element-ui
- 开发工具:Visual Studio Code
安卓
- 相关技术:Smartconfig、GSON、OkHttp、讯飞语音
- 开发工具:Android Studio
硬件端
- 相关技术: Arduino、ESP8266 Arduino Core、OneButton、IRromoteESP8266、PubSubClient
- 开发工具:Arduino IDE、Visual Studio Code
- 辅助工具:USB转TTL下载线、AC-DC降压模块(可选)、红外遥控模块(可选)、DHT11温湿度传感器(可选)、触控开关(可选)
- 硬件图片:硬件图片来自贝壳物联官网

- 硬件电路图:

- 电路接线图:(默认5V电压,如果要接220V交流电,需要搭配一个AC-DC降压模块)

演示图

Docker安装相关容器的命令
下面是linux系统下安装相关容器的命令,windows下修改命令中的换行符号和挂载卷路径。这些命令可以方便你开发和部署,当然你也可以使用dockerfile、docker-compose.yml或者自己的镜像。
- mysql安装(有账号和密码)
1.安装软件
docker run \
--name mysql \
--publish 3306:3306 \
--volume /var/data/mysql/mysql:/var/lib/mysql \
--env MYSQL_DATABASE="databaseName" \
--env MYSQL_USER="root" \
--env MYSQL_ROOT_PASSWORD=123456 \
--restart always \
--detach \
mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_unicode_ci 2.进入容器
docker exec -it containId /bin/bash 3.修改配置文件,设置编码
tee /etc/mysql/conf.d/mysql.cnf <<-'EOF'
[client]
default-character-set=utf8 [mysql]
default-character-set=utf8
EOF
- redis安装(有密码)
docker run \
--name redis \
--restart always \
--publish 6379:6379 \
--volume /var/data/redis/data:/data \
--detach \
redis \
--requirepass "123456" \
--appendonly yes
- mongodb安装(有账号密码)
docker run \
--name mongo \
--env MONGO_INITDB_ROOT_USERNAME=root \
--env MONGO_INITDB_ROOT_PASSWORD=123456 \
--volume /var/data/mongodb:/data/db \
--publish 27017:27017 \
--restart unless-stopped \
--detach \
mongo:4.0 提示:mongodb使用时,先创建库,然后一定要在对应库中创建用户和角色,不然创建的用户连接不上对应数据库。
- mosquitto安装(有账号密码,Mqtt的Broker)
1.安装软件
docker run \
--name mosquitto \
--privileged \
--publish 1883:1883 \
--publish 9001:9001 \
--volume /var/data/mosquitto/data:/mosquitto/data \
--volume /var/data/mosquitto/log:/mosquitto/log \
--restart always \
--detach \
eclipse-mosquitto 2.进入容器:docker exec -it name sh 3.编辑配置文件:vi /mosquitto/config/mosquitto.conf
# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /mosquitto/config/pwfile.conf 4.生成密码:
#使用mosquitto_passwd命令创建用户,第一个admin是用户名,第二个admin是密码
mosquitto_passwd -b /mosquitto/config/pwfile.conf admin admin 5.退出容器使用并重启容器:
#退出容器
exit
#重启容器
docker restart mosquitto
DIY一个智能开关kwswitch的更多相关文章
- 【php增删改查实例】第四节 -自己 DIY 一个数据库管理工具
本节介绍如何自己DIY一个数据库管理工具,可以在页面输入sql 进行简单的增删改查操作. 首先,找到xampp的安装目录,打开htdocs: 新建一个php文件,名称为 mysqladmin.php ...
- 2、基于wsgiref模块DIY一个web框架
一 web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方 ...
- DIY一个基于树莓派和Python的无人机视觉跟踪系统
DIY一个基于树莓派和Python的无人机视觉跟踪系统 无人机通过图传将航拍到的图像存储并实时传送回地面站差点儿已经是标配.假设想来点高级的--在无人机上直接处理拍摄的图像并实现自己主动控制要怎么实现 ...
- 美国评出2016最值得去的旅游胜地+纯电动车郊游记+DIY一个小电动车
美国评出2016最值得去的旅游胜地(10) http://bbs.miercn.com/bd/201510/thread_569397_1_10.html 自带发电机! 北汽E150 EV纯电动车郊游 ...
- DIY一个DNS查询器:程序实现
上一篇文章<DIY一个DNS查询器:了解DNS协议>中讲了DNS查询协议的原理和数据结构.经过两个星期的开发,完成了该查询器的编写.期间也遇到了一些问题,如: 1资源记录(Resource ...
- DIY一个Web框架
一.前言 二.框架结构及实现流程 三.总结 一.前言 当我们了解了Web应用和Web框架,以及HTTP协议的原理之后,我们可以自己动手DIY一个最简单的WEB框架,以加深对Web框架的理解,并为即将学 ...
- 从零开始,DIY一个jQuery(1)
从本篇开始会陪大家一起从零开始走一遍 jQuery 的奇妙旅途,在整个系列的实践中,我们会把 jQuery 的主要功能模块都了解和实现一遍. 这会是一段很长的历程,但也会很有意思 —— 作为前端领域的 ...
- 用python DIY一个图片转pdf工具并打包成exe
最近因为想要看漫画,无奈下载的漫画是jpg的格式,网上的转换器还没一个好用的,于是乎就打算用python自己DIY一下: 这里主要用了reportlab.开始打算随便写几行,结果为若干坑纠结了挺久,于 ...
- Discuz常见大问题-如何DIY一个独立页面
首先参考Discuz如何自定义单个页面的文章,确保你已经能做一个"关于我们"这种纯HTML静态页面(只有文字和静态图片描述).其次参考下面的文件修改原来的htm文件 注意我用红色标 ...
随机推荐
- EVE-NG 入门教程 (Mac OSX BIg Sur)
EVE-NG 入门搭建指南 1. 什么是 EVE-NG EVE-NG (Emulate d Virtual Environment) 是一个可以运行虚拟主机.网络设备的模拟器,目前该软件分为了社区版. ...
- DDD中实体与值对象是干什么的
实体值对象的含义 我们前面已经讲过领域的概念, 今天来讲讲实体, 实体是我们进行设计领域模型时的基础单元, 与之有关的是值对象, 接下来先梳理一下实体以及值对象的含义,然后讲讲他们俩的关系, 希望通过 ...
- Go语言web开发---Beego的cookie
1.简介 (1)Http是无状态的协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否是同一个客户端,这样的设计严重阻碍了web程序的设计. (2)Cookie是解决Http协议无 ...
- 关于LSTM核心思想的部分理解
具体资料可以查阅网上,这里提到一些难理解的点.别人讲过的知识点我就不重复了. LSTM 的关键就是细胞状态,按照水平线从左向右运行,如同履带,在整个链上运行. 根据时间t-1,t,t+1,我们可以看出 ...
- 固态LiDAR,半固态混合LiDAR,机械LiDAR
固态LiDAR,半固态混合LiDAR,机械LiDAR 1. APD/SPAD 2轴MEMS扫描镜+ SPAD图像传感器在混合固态LiDAR中的应用 APD的工作模式分为线性模式和盖革模式两种.当APD ...
- Xilinx低比特率高品质 ABR 视频实时转码(HPE 参考架构)
Xilinx低比特率高品质 ABR 视频实时转码(HPE 参考架构) 介绍 对实时视频流的需求给视频服务提供商带来了严峻挑战,必须在管理基础设施和互联网带宽运营成本,还要为客户提供高质量体验.鉴于视频 ...
- python_selenium_PO模式下显示等待、隐式等待封装,结合Excel读取元素可取默认等待时间配置
basepage中等待的封装 def implicitly_wait(self): self.driver.implicitly_wait(5)def wait(self): time.sleep(5 ...
- 「题解」NWRRC2017 Joker
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷 P7028.gym101612J. 题意概述 有一个长度为 \(n\) 的数列,第 \(i\) 个元素的值为 \(a ...
- 【NX二次开发】Block UI 操作按钮
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- python学习笔记03-变量和字符串
变量 变量:把一个值赋值给一个名字时,它会储存在内存中,称之为变量(virable):但在python中并不会储存在变量里,仅仅是类似于给值加了标签 变量的使用规则: 1.使用变量,首先需要给变量赋值 ...