
ESP8266家庭自动化项目
countofdane
能用脚本解决的打死不用手
展开
-
django 搭建 webserver 让 ESP8266 通过 http 完成 OTA 升级
ESP8266 代码#include <Arduino.h>#include <ESP8266WiFi.h>#include <ESP8266WiFiMulti.h>#include <ESP8266HTTPClient.h>#include <ESP8266httpUpdate.h>#define USE_SERIAL ...原创 2020-01-05 11:52:51 · 1605 阅读 · 0 评论 -
6-3 离线工作
如果您的数据更敏感,并且您不希望通过Wi-Fi网络共享数据,或者您没有Wi-Fi连接,则解决方案是将数据存储在SD卡上。让我们看看如何将数据存储在SD卡上。将使用的必要硬件:Wemos D1 mini:microSD card shield(microSD 卡槽):microSD 卡:由于microSD卡是Wemos D1 mini的盖子,因此很容易堆叠它们;你只需要焊...原创 2019-03-16 10:14:33 · 257 阅读 · 0 评论 -
6-2 安全保护ESP8266与MQTT代理之间的连接
如果您不想拥有自己的代理,但想要安全的MQTT连接,则可以使用云MQTT实例,例如 http://iotcentral.eu。首先在 iotcentral.eu上创建一个帐户并确认您的电子邮件地址。之后,您可以登录 iotcental.eu 并获得您的私人指定主题。它是一个八字符代码,例如c5c05211,此代码需要在您的所有主题之前,如下所示:c5c05211/living/temper...原创 2019-03-03 11:33:09 · 559 阅读 · 1 评论 -
6-1-2生成自己的证书
首先转到 /etc/mosquitto/certs 并发出以下命令:sudo openssl req -x509 -newkey rsa:1024 -keyout ca.crt -out cert.crt -days 9999然后,您将被邀请填写一些详细信息,如下面的屏幕截图所示,关于证书的所有者,例如居住国家,州,公司,城市,电子邮件地址,最重要的是完全合格的域名(FQDNFully...原创 2019-03-03 11:06:52 · 307 阅读 · 0 评论 -
6-1-1 安装 openssl 软件包
首先,验证您是否安装了 openssl 软件包,并且它具有更新的版本(1.0.2g),如以下屏幕截图所示:如果您没有安装 openssl,则需要先使用以下命令安装它:sudo apt insta11 openssl on Ubuntu 或使用以下命令:yum install openssl on CentOS /Redhat...原创 2019-03-03 10:32:55 · 445 阅读 · 0 评论 -
6-1启用 mosquitto 加密
要在 mosquitto 上启用加密,首先需要拥有证书。您可以从颁发证书的公司购买它们,也可以自己生成证书作为自签名证书。原创 2019-03-03 10:23:22 · 474 阅读 · 0 评论 -
第6章 保护数据安全
在第2章“构建和配置自己的 MQTT 服务器”中,您了解了 MQTT 协议,主题的构建方式以及如何安装和配置 mosquitto 代理。那时,您使用本地配置文件来添加用户和密码,以用作本地代理的身份验证方法。数据包从ESP8266模块传输到云端实例的时候怎么办呢?要加密数据包,您需要在 mosquitto 上启用安全性并从ESP8266发送加密数据包。...原创 2019-03-03 10:21:23 · 249 阅读 · 0 评论 -
5-2 总结
现在您可以立即构建安全系统,但安全性不仅限于 PIR 传感器,您可以添加其他传感器,如 CO2 或气体,或用于检测漏水或冒烟的传感器,您可以创建它们之间的依赖关系。例如,如果您的房屋中有破损的管道并且漏水传感器检测到水,您将在Blynk应用程序中收到通知,但订购泄漏主题的另一个ESP8266可以关闭主阀,到你回到家之前损失已经被有效控制...原创 2019-03-03 10:14:45 · 200 阅读 · 0 评论 -
5-1-3-1 ESP8266 PIR 安全代码
要使 ESP8266 和 PIR 模块与定义的 Blynk 应用程序一起使用,它包括Blynk头,Simple定时器,并将 BLYNK_PRINT定义为串行以进行调试。您需要运行以下代码:#define BLYNK_PRINT Serial#include <ESP8266WiFi.h>#include <BlynkSimpleEsp8266.h>#inclu...原创 2019-03-03 10:05:56 · 356 阅读 · 0 评论 -
5-1-3 将 PIR 模块连接到互联网
到目前为止,我们所做的一切都可以通过 Arduino 实现,那么 ESP8266 的附加值在哪里呢?那么,如果您在家中检测到动作时收到手机上的电子邮件和声音通知,该怎么办?此外,您可以稍后将检测到的动作与打开灯,电视或打开警报警报相结合。为此,我们将使用名为 blynk 的库,可以从以下链接下载:https://github.com/blynkkk/blynk-library 或他们的移动应用...原创 2019-02-24 16:12:33 · 377 阅读 · 0 评论 -
5-1-2 测试 PIR 模块
现在,让我们测试 PIR 模块以检查它是否正常工作。为了实现这一目标,您需要:。ESP8266模块(NodeMCU,WeMos或其他板) APIR模块 面包板 电线对于软件部分,请使用以下项目代码:。定义PIR,因为它将连接到D7引脚,将 pirState 设置为 LOW 假定 PIR为 OFF,并将当前状态设置为 0:#define PIN_PIR D7int pirS...原创 2019-02-24 15:56:56 · 1256 阅读 · 0 评论 -
5-1-1 PIR如何工作
PIR传感器的功能基于人体发出的辐射。物体以红外辐射方式产生热量,这些物体包括动物和人体,其最强辐射波长为9.4微米。当人通过传感器的前部时,从PIR传感器的角度来看,温度从背景值变为人的值。传感器检测到红外辐射的这种变化并改变其输出电压,从而发出检测信号。为了提高PIR传感器的灵敏度,菲涅耳透镜安装在它前面。传感器实际上是 FET 晶体管,其源极引脚通过下拉接地连接。我们可以在下图中看到...原创 2019-02-24 15:42:24 · 1839 阅读 · 0 评论 -
5-1 无源红外传感器
PIR (Passive infrared sensor)是室内和室外报警系统中最常用的传感器。它还用于自动门和自动灯系统。原创 2019-02-24 14:09:24 · 699 阅读 · 1 评论 -
第5章 使用ESP8266构建安全系统
我们都有兴趣了解当我们不在家里时发生的事情。不管是关于安全还是关键要素,如天然气,火灾或水。了解发生错误的那一刻对于最大限度地减少最终损害至关重要。在本章中,我们将重点介绍 PIR 传感器,但相同的原理适用于其他传感器,如湿度,气体或烟雾传感器...原创 2019-02-24 14:06:54 · 284 阅读 · 0 评论 -
4-3 总结
在本章中,您学习了如何使用 WiFiManager 设置 Wi-Fi 并将参数添加到配置文件中,将接收到的值保存到 SPIFFS ,在启动时读取值,并使用它们连接到 MQTT 代理。最后,您发送红外命令来控制其他设备,如空调,电视等。...原创 2019-02-24 14:00:25 · 182 阅读 · 0 评论 -
4-2-2 该项目的软件和库
首先让我们安装库 IRremoteESP8266 。为此,请转到 Sketch | Include Library | Manage Libraries 并搜索 IRremoteESP8266 库,如下面的屏幕截图所示:安装库并完成与ESP的连接后,让我们使用以下代码通过MQTT主题发送一个命令来打开或关闭Panasonic电视。由于使用相同的红外线命令打开电源或关闭电源,您只需要在MQT...原创 2019-02-24 13:56:37 · 292 阅读 · 0 评论 -
4-2-1硬件组件
要完成此项目,您需要:ESP8266 红外LED(可能来自旧遥控器) 一些100欧姆电阻(取决于您的红外LED数量,每个LED一个) 一个1千欧姆电阻器 一个2N2222 NPN晶体管对于此项目的硬件部分,请使用以下原理图:将输出引脚从ESP8266接地到GND引脚连接到GPIO 12,从ESP连接到5V到5V...原创 2019-02-24 11:44:19 · 340 阅读 · 0 评论 -
4-2 ESP8266和红外线通信
在前面的章节中,ESP866一直在控制继电器,读取温度和湿度,但并非所有家用电器都可以通过继电器控制。其中一些可以使用红外线控制,如电视或空调,现在让我们看看我们如何使用 ESP8266 打开/关闭 松下电视。通过修改地址和值,可以将其扩展到其他电视品牌。...原创 2019-02-24 11:37:34 · 1240 阅读 · 0 评论 -
6-4摘要
现在,您可以将加密的MQTT消息传输到MQTT代理,并从那里传输到另一个ESP8266或数据库或服务器。这样做,没有人可以拦截和更改您的数据,因此您的家庭或数据是安全的。物联网中的安全性现在非常重要,因为即使使用用户和密码,也有很多设备无安全保护。如果您需要脱机工作,现在您有一整张microSD卡可以写入或读取数据。使用电池供电的ESP8266和深度睡眠功能,现在您可以将microSD卡的数据记录...原创 2019-03-16 13:40:46 · 137 阅读 · 0 评论 -
6-3-1 在SD卡上保存数据
我们假设您现在需要将数据保存到SD卡,这些数据可以在以后的PC中脱机使用。让我们像第3章“使用ESP8266的搭建家用温控器” 一样连接DHT22,并读取其值并将其记录在microSD卡的文件上。使用相同的SPI和SD卡库:#include <SPI.h>#include <SD.h>#include <DHT.h>const int chip...原创 2019-03-16 13:00:20 · 565 阅读 · 1 评论 -
第7章实时通信
到目前为止所呈现的所有通信都基于请求响应方法,其中一个实体正在发送请求而另一个实体正在发回响应。但是有些情况下需要ESP8266模块和服务器之间的实时通信,而不仅仅是事务。为了实现实时通信,我们将使用WebSockets将加速度传感器中的加速度值流式传输到服务器,以实时图形显示它们,并将它们存储在时间序列数据库中...原创 2019-03-16 14:51:22 · 175 阅读 · 0 评论 -
8-1-3 ESP8266 代码规范
对ESP8266代码的请求,您需要订阅主题:I/<TOPIC>/plug/command or <TOPIC>/plug/command在这种情况下,您可以将ESP直接连接到iotcentral.euESP8266为了触发其GPIO 12而接收的所需消息是:{"device_name": "ESP_3A9108", "type": "plug", &quo原创 2019-03-17 13:50:15 · 545 阅读 · 0 评论 -
8-2总结
在本章中,您学习了如何使用Docker创建用于创建和使用移动应用程序的开发环境。在ESP8266方面,您已经了解了模块需要具备的主题和消息,以便能够集成到由云MQTT和移动应用程序组成的系统中。代码演示应用程序中的ESP8266太大了,无法在这里展示,但它涵盖了本书的所有ESP8266章节:如何连接到Wi-Fi,如何在SPIFFS中存储数据,如何连接到MQTT,以及如何订阅并发布主题消息。它可以...原创 2019-03-17 11:13:45 · 149 阅读 · 0 评论 -
8-1-2设置本地代理
现在设置已经到位,让我们讨论一下我们想要在本章中实现的目标。在本章后面,我们将回到移动应用程序:您现在有足够的知识来完成从 ESP8266 代码到本地代理和移动应用程序的整个系统。为了完成这个链条,我们可以从ESP8266开始。让我们创建一个简单的插件代码,让我们使用iotcentral.eu提供的PaaS服务作为授权和云MQTT服务:1.在 iotcentral.eu 上创建一个帐户并...原创 2019-03-17 11:02:20 · 2288 阅读 · 0 评论 -
8-1-1 Docker 镜像
从开发映像中,您可以开始所需的容器数量。在每个容器中,您可以开发一个完全独立的应用程序。应用程序的代码驻留在容器的外部,但容器可以访问它以编译它并在容器内运行它。此阶段的结果将是将在您的浏览器中运行的应用程序。最后,您可以创建* .apk 文件并在手机上进行测试:现在我们已经构建了基础架构,让我们从GitHub获取一些代码并用它启动一个容器:mkdir ~/PROJECTScd ...原创 2019-03-17 10:41:08 · 154 阅读 · 0 评论 -
8-1-1 获取开发图像
要从Docker存储库获取开发映像,请发出以下命令:sudo docker pullagileek/ionic-framework这需要一些时间,所以请耐心等待,但与纠正错误相比,安装所有依赖项和所有必需软件包所花费的时间大于此下载。最后,镜像将位于本地存储库中。您可以通过运行如下所示的命令来查看当前存储库中的镜像:...原创 2019-03-17 09:33:30 · 175 阅读 · 0 评论 -
8-1 安装Docker并使用容器
容器映像是一个轻量级,独立的,可执行的软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库和设置。通过这种方式,您无需安装大量库和软件,您可以使用现有映像并从中启动容器。我们将使用具有 Ionic 和 Android SDK 的容器,允许您开发和测试移动应用程序。最后,您将拥有一个需要使用Google Play控制台进行签名的APK文件,之后您可以将其推广到数百万人。在之前使用的Vi...原创 2019-03-17 09:25:50 · 208 阅读 · 0 评论 -
第8章 向智能家居添加移动应用程序
在前面的章节中,我们讨论了Blynk作为项目的数字仪表板。如果您想构建自己的连接到MQTT云的移动应用程序,您将在本章中找到一个应用程序入门代码,它允许您在几分钟内拥有一个基本的移动应用程序。当前的移动应用程序代码允许您登录http://iotcentral.eu 并控制您注册的设备。在本章中,我们将讨论以下主题:安装Docker 获取单页应用程序的开发映像 获取移动应用程序的演示代码...原创 2019-03-17 09:09:33 · 340 阅读 · 0 评论 -
7-3总结
在本章中,我们完成了另一项可以通过ESP8266实现实时通信的重要功能。您已经学习了如何将实时加速从ADXL345 3轴加速度计传输到后端Node.js服务器,后者将接收的数据转发到连接的浏览器。使用smoothie.js可以很好地实时绘制数据。作为本章的后续内容,我建议您将收到的数据存储在时间序列数据库中,使用Grafana作为值的显示工具,以及为什么不通过MQTT将它们发送到MQTT代理。添加...原创 2019-03-17 09:04:57 · 134 阅读 · 0 评论 -
7-2-2-2 公共网页
您的 Node.js 服务器提供的网页是使用 BoostrapJS 和 AngularJS 开发的简单SPA。网页将尝试使用WebSocket连接连接到服务器,之后它将发送自己的注册消息,因此服务器可以将其套接字添加到其数据库中。来自ESP8266但由后端服务器转发的加速度值的入口点是:socket.on('acc_data' , function(data){ for(var i=...原创 2019-03-17 08:59:48 · 179 阅读 · 0 评论 -
7-2-2-1-1 后端代码
整个后端代码是用JavaScript编写的,它位于 server.js 文件中。要创建服务器,请使用 socket.io 提供的模块,因为 socket.io 提供基于事件的双向实时通信:var server = http.createServer(app);var io = require('socket.io').listen(server);要接收消息,必须为它们添加处理程序...原创 2019-03-17 08:49:43 · 194 阅读 · 0 评论 -
7-2-2-1 ESP8266代码
由于工程代码中还有一些额外的 WebSocket 连接类,显示的.ino 文件中一部分是必不可少的。对于整个项目,请参阅以下GitHub地址:https://github.com/bcatalin/esp8266-book/tree/master/Chapter7必要的包含文件是:#include "Wire.h"#include <Adafruit_Sensor.h>...原创 2019-03-16 17:13:25 · 1010 阅读 · 0 评论 -
7-2-2连接ESP8266
ADXL345 will be connected to the ESP8266 on the I2C bus, which means that only four wires will be used, VCC, GND, SDA, and SCL:ADXL345 将连接到 ESP8266 的I2C 总线上,这意味着只使用四条线,VCC,GND,SDA和 SCL:...原创 2019-03-16 15:52:42 · 283 阅读 · 0 评论 -
7-2-1 ADXL345 加速度计
它由Analog Devices公司(AD)生产,是一款超低功耗3轴加速度计,能够进行高达±16g的高分辨率测量。如果你打算只测量地球的引力,那么±2g就足够了。对于汽车运动,±4g会很好,但如果你想跟踪一个突然停止的物体,你将需要±16g:ADXL345 可通过 SPI 或 I2C 线路连接到 ESP8266。在我们的例子中,我们将使用 I2C 连接。加速度计将响应的总线地址为0x5...原创 2019-03-16 15:49:49 · 796 阅读 · 0 评论 -
7-2 来自ESP8266的流数据
要从ESP8266流式传输数据,我们首先需要在ESP8266和服务器之间建立WebSocket连接;将通过WebSocket连接流式传输的数据将是 X,Y和 Z 轴的加速度值。 ESP8266 将从 ADXL345 芯片读取它们并将它们发送到nodeJS服务器。从服务器,数据可以发送到同一服务器上的连接浏览器,也可以写入数据库进行进一步分析:最终电路还可以包括时间序列数据库,例如Influ...原创 2019-03-16 15:38:17 · 388 阅读 · 0 评论 -
7-1-1协议细节
WebSocket连接作为HTTP连接启动,请求升级到websocket协议。在这种情况下,客户端正在发送:GET /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: t3JJHjbGL5EzHkh8GBMXGw==Sec-WebSocket-...原创 2019-03-16 15:14:16 · 436 阅读 · 0 评论 -
7-1 WebSockets
WebSockets 是一种通信协议,提供全双工消息,在传输控制协议(Transport Control Protocol TCP)之上进行流式传输。它由W3组织标准化,并且存在于所有主流浏览器上(Internet Explorer必须是版本11 +)。 WebSockets支持浏览器和服务器之间以及模块和服务器之间的通信。通过服务器,来自ESP8266的数据可以到达浏览器。 WebSocket...原创 2019-03-16 15:03:33 · 219 阅读 · 0 评论 -
4-1-1将参数添加到WiFiManager设置页面并将其保存到文件中
到目前为止,从 WiFiManager 页面保存的唯一参数是网络的 SSID 和 密码。让我们添加其他参数,例如 MQTT 服务器,端口,用户,密码和主题,并将它们保存到位于 SPIFFS 中的配置文件:#include <FS.h>#include <espg266wiFi.h>#include <pubsubClient.h>#include &...原创 2019-02-24 11:33:38 · 2181 阅读 · 0 评论 -
4-1使用 WiFiManager 库
到目前为止,用于连接ESP8266和Wi-Fi网络的SSID和密码已经使用以下代码在项目中进行了硬编码:const char* ssid = "YOUR_WIFI_SSID";const char* password = "YOUR_WIFI_PASSWORD";要停止使用硬编码值,我们需要首先在 AP 模式下启动 ESP8266,并将用户公开为由 ESP8266 内部托管的Web服务...原创 2019-02-11 18:02:58 · 8221 阅读 · 5 评论 -
2-4 从ESP8266发布数据
ESP8266 家庭自动化项目中文版目录通过 Arduino IDE中的 File |New开始一个新草图并粘贴以下代码。引入ESP8266WiFi 库和 PubSubClient 库:#include <ESP8266WiFi.h>#include <PubSubClient.h>使用适合您网络的值更新这些值。使用 ifconfig 获取安装了 Mos...原创 2019-01-30 09:49:45 · 716 阅读 · 0 评论