数码之家

 找回密码
 立即注册
搜索
查看: 20660|回复: 166

[Arduino] 10块钱 建立自己的智能家居服务器,再也不用担心公司跑路倒闭了。

    [复制链接]
发表于 2021-4-4 19:30:31 | 显示全部楼层 |阅读模式
上次写了一个帖子,介绍了我家智能家居系统。
https://www.mydigit.cn/forum.php?mod=viewthread&tid=243315

其中自己搭建的服务器使用的是树莓派平台。由于树莓派确实有点贵,而且开发编译环境稍微复杂了一点,有网友提出是否可以用ESP8266或者ESP32作为服务器。我觉得这是一个好主意,于是我就重写了一套基于ESP单片机的服务器,并且将服务器代码和物联网节点端的代码全套开源了。

源代码在此:
https://gitee.com/fryefryefrye/O ... tomation/ESP8266Web

整套物联网系统的原理和架构,还是和上一个帖子里写的一模一样,想了解的同学去看上一篇帖子。唯一的区别就是树莓派被换成了ESP8266。

下面讲一下这次开源的这套代码的系统结构和使用方法。

1:操作面板的界面,是用一个html文件,放在了服务端代码下面的一个data文件夹。ESP8266自身带有文件系统,可以保存平时运行时所需要的文件。data文件夹的中文件,可以通过Arduino开发环境的一个插件上传到单片机的文件系统中。

可以参考下面网址的办法,安装文件上传插件,将html文件上传进ESP8266.

http://www.taichi-maker.com/home ... piffs/upload-files/

2:服务端的web服务。
a)如果请求主页,就把index.html发给客户端。
b)如果请求数据更新,根据节点发来的数据,返回一串用“,”隔开的字符串。
c)如果请求控制灯的开关之类的,就把控制结果发给客户端。

3:服务端的UDP数据处理就简单一点。接收节点发来的数据,存储之后,再发给需要发给这个节点的命令。

4:节点每秒上传一次自己的状态,并接受服务器发来的命令,如果有命令需要执行,就去执行以下。开源代码的节点功能是控制两个灯,只需要在ESP8266上再接一个双路继电器模块,就可以实现了。

5:服务器和节点共用的struct.h文件,这里面定义了两部分代码都需要的数据结构,常量等。


有了自己的物联网服务器,就可以发挥自己的想象力,实现各种各样自己DIY的物联网终端了。


打赏

参与人数 8家元 +178 收起 理由
2545889167 + 20
sbfqmq + 50 優秀文章
jf201006 + 20 謝謝分享
aardvark911 + 28
pcbboy1991 + 18 優秀文章
kkdkj + 20 謝謝分享!高大上,可惜水平有限弄不了.
懒虫包子 + 20 虽然看不懂,但感觉很高大上,顶一个,活了或.
kamp + 2 優秀文章

查看全部打赏

本帖被以下淘专辑推荐:

  • · MCU|主题: 24, 订阅: 18
发表于 2021-4-4 19:48:54 | 显示全部楼层
好好学习天天向上
回复 支持 反对

使用道具 举报

发表于 2021-4-4 20:31:32 | 显示全部楼层
虽然看不懂,但感觉很高大上,顶一个,活了或是上精华了叫我一下.
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-4 20:43:24 | 显示全部楼层
懒虫包子 发表于 2021-4-4 20:31
虽然看不懂,但感觉很高大上,顶一个,活了或是上精华了叫我一下.

我还以为就我一个人看不懂呢...:giggle:
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-4 20:45:11 | 显示全部楼层
邪恶海盗 发表于 2021-4-4 20:43
我还以为就我一个人看不懂呢...

看了下原文,太高大上了,如果前10多年会折腾下,现在43岁了,老了,感觉动力不足了。
回复 支持 反对

使用道具 举报

发表于 2021-4-4 20:48:39 | 显示全部楼层
懒虫包子 发表于 2021-4-4 20:45
看了下原文,太高大上了,如果前10多年会折腾下,现在43岁了,老了,感觉动力不足了。 ...

白云山<金戈>来两粒?:giggle:
回复 支持 反对

使用道具 举报

发表于 2021-4-4 20:50:37 | 显示全部楼层

有空试试:lol:
回复 支持 反对

使用道具 举报

发表于 2021-4-4 21:19:02 | 显示全部楼层
如果做成套件+固件方式,就想刷路由器那么简单,那普及度就高了

当然如果有人做个教程,那也不错
回复 支持 反对

使用道具 举报

发表于 2021-4-4 21:22:49 | 显示全部楼层
太复杂了,反正我用易微联和米家,大厂不会倒闭
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-4 22:02:21 | 显示全部楼层
这个好,树莓派太贵了
回复 支持 反对

使用道具 举报

发表于 2021-4-4 22:52:40 | 显示全部楼层
太高大上了,看不懂:cry:
回复 支持 反对

使用道具 举报

发表于 2021-4-5 06:29:35 | 显示全部楼层
也看不懂,但有些用APP的,确实碰到了公司倒闭APP无法使用的情况。
回复 支持 反对

使用道具 举报

发表于 2021-4-5 14:01:30 | 显示全部楼层
先下载学习,遇到不懂的地主再来请教楼主。
回复 支持 反对

使用道具 举报

发表于 2021-4-5 16:25:24 | 显示全部楼层
嗯,用arduino可以实现吗??
回复 支持 反对

使用道具 举报

发表于 2021-4-5 19:37:59 | 显示全部楼层
有点复杂啊,需要绑定MAC地址,如果添加新设备,要修改服务器端程序?缺一个文件#include "D:\GitHub\Private\wifi_config.h"
昨天搞玩客云刷机,想玩homeassistant试试,结果把玩客云玩挂了,树莓派还是小贵啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +10 收起 理由
wenxueroom + 10 精彩回帖

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-6 02:17:50 | 显示全部楼层
前几天看到SPIFFS发愁不知道咋那么用  这个比较及时
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-6 09:03:05 | 显示全部楼层
本帖最后由 fryefryefrye 于 2021-4-6 09:19 编辑
ploestar 发表于 2021-4-5 19:37
有点复杂啊,需要绑定MAC地址,如果添加新设备,要修改服务器端程序?缺一个文件#include "D:\GitHub\Private\w ...

那个配置文件里面写的是我自己家wifi的用户名和密码,你不需要的,注释掉这一行就行了。

如果你有多个“灯光控制器”,比如我给的这个例子,有三个。为了维护和扩展的方便,每个控制器的固件是完全一模一样的。怎么才能让服务器区分它们的序号,而不用在节点上配置数据呢? 在服务端维护一个MAC地址列表我觉得是最简单的方法。除非你愿意给每一个节点单独配置一个序号,上传数据的时候包含这个序号,这样服务器就不用搞MAC地址列表了。
根据我的经验,服务器的代码是需要经常修改的,比如想定时打开一个灯,我就会去修改服务器代码,而不是修改节点的代码。比如增加“灯全开”,“灯全关”的命令,也是只需要修改服务器代码就可以实现。

不过你都运行起来了,说明你都搞定了。这是我第一次见到别人把我的代码跑起来,有点小开心呢。

打赏

参与人数 1家元 +10 收起 理由
wenxueroom + 10 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-4-6 09:20:20 | 显示全部楼层
楼主很强大啊 手写全套系统,我也就能玩玩homeassistant了:sweat:
回复 支持 反对

使用道具 举报

发表于 2021-4-6 10:06:28 | 显示全部楼层
虽然看不懂,但感觉很高大上,顶一个:lol:
回复 支持 反对

使用道具 举报

发表于 2021-4-6 14:02:54 | 显示全部楼层
内网穿透,固定IP有解吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-24 13:39 , Processed in 0.327600 second(s), 17 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表