esp8266 天气时钟(esp8266天气时钟架构构思)

esp8266 天气时钟(esp8266天气时钟架构构思)1 导论 前面我们通过联网获得了对时和获取天气的功能 接下来我们要实现的是提醒功能 但这一次 为了充分感受开发的乐趣 我们选择自己来做服务端 购买一个云服务器 然后让 ESP8266 连接我们的服务器 阿里云最近推出了 99 一年的垃圾货 处理活动 链接地址为 在产品规格 部分可以看到 99 一年的配置 特别说明 参考知乎等各平台的评价 据说性能极差 容易宕机 使用条件和场景很有限

大家好,我是讯享网,很高兴认识大家。



1. 导论

前面我们通过联网获得了对时和获取天气的功能,接下来我们要实现的是提醒功能,但这一次,为了充分感受开发的乐趣,我们选择自己来做服务端——购买一个云服务器,然后让ESP8266连接我们的服务器。

阿里云最近推出了99一年的垃圾货处理活动:链接地址为,在产品规格部分可以看到99一年的配置。特别说明,参考知乎等各平台的评价,据说性能极差,容易宕机,使用条件和场景很有限,单纯图便宜外加抱着试一试的心理选择购买,不建议盲目从众(我不打广告)


讯享网

选择配置(我都选择的默认)并购买后进入控制台(链接地址:)查看配置、设置密码等。

可以看到操作系统很独特…是阿里自家的Linux:

点击实例名进入实例,点击重置密码后,输入新密码即可,因为还未登录,所以先设置一下。

设置好后就可以远程连接服务器了(SSH的22端口是默认开放的)。

2. 远程连接服务器

2.1 SSH

刚才说到SSH,现在先简要介绍一下它是什么东西。

SSH(Secure Shell)是一种网络协议,用于安全地在网络上进行数据通信、远程命令行登录以及远程命令执行。SSH提供了强加密和认证机制,以防止传输过程中的数据被截获和篡改,保护通信安全。

SSH工作在应用层,通常用于远程管理服务器或进行安全的数据传输。具体原理可以参看《计算机网络》。

我们远程连接服务器,就是通过SSH客户端连接到SSH服务器(服务器的22端口,这是SSH协议的默认端口)。

我们可以使用cmd或者powershell连接,直接在命令行中输入:

 

讯享网

服务器地址在控制台中可以看到,注意是公有地址。

然后需要输入密码,第一次连接可能还需要验证服务器的指纹,确认无误后继续。

此外,还可以通过密钥认证连接,但这里就先不使用了。

2.2 Xshell7

我使用Xshell7来连接服务器,Xshell是一款功能强大的终端仿真软件,广泛用于Windows操作系统环境下。它支持SSH、TELNET、SFTP、SERIAL等多种协议,能够让用户方便地远程管理Unix/Linux服务器、路由器、交换机等网络设备。

可以看到,窗口左侧有一个绘画管理器,在其中右键,然后点击新建,如下图:

主机处输入服务器的公网IP,然后点击左栏的用户身份验证,输入用户名和密码:

确认密码无误后,就可以点击连接了。第一次连接的话如2.1中所述需要指纹密钥,如下图:

点击接受并保存即可。

3. 安装Nginx

连接成功后,就会进入到一个命令行页面,我们可以直接在其中输入命令,这些命令都会在远程主机上被执行。

初始状态下工作目录是/root,接下来,如下图所示,我们要安装Nginx了。

Nginx是一种高性能的HTTP和反向代理服务器,是一种服务器软件,与Apache、Tomcat以及现在比较火的Caddy是同类,我们要做HTTP服务,需要下载安装Nginx。

3.1 源码下载

在上图中,使用到的指令共3个:

  • ls:显示当前目录下的所有文件
  • pwd:显示当前路径
  • wget xxx:下载xxx

wget是一个广泛使用的命令行工具,它用于从网络上下载文件。它支持HTTP、HTTPS和FTP协议,能够在失去连接或者程序被中断时继续之前的下载(断点续传)。

我们使用的是:

讯享网

这行命令的意思是下载Nginx1.25.4的源码包,至于这个链接怎么来的,可以点击官网查看:

这里有各个版本的Nginx,点击即可获取下载链接,粘贴在wget后面即可,注意空格。

3.2 解压缩

在上图中,又出现了四个新命令:

  • mkdir:在当前目录下新建文件夹
  • mv:把文件移动到指定位置
  • cd:进入某文件夹
  • tar:解打包解压缩

观察到我们下载下来了一个nginx-1.25.4.tar.gz,“.gz”格式是Linux中最常用的压缩格式而“.tar”格式是打包格式。打包和压缩是不同的。

我们使用了命令:

 

其中使用了三个参数:

  • -z:指定压缩格式为.gz
  • -x:解打包
  • -f:指定压缩包的文件名

这样就把这个压缩包解开了,之后就可以配置和安装了。

3.3 配置

配置操作其实顾名思义,我们可以看到在解压后的文件夹内有一个configure,它是绿色的(XShell中),这代表着它是一个可执行文件。

直接输入https://blog.csdn.net/Repre/article/details/configure就可以执行它。

不过,我们可以看到结果如下图:

出现了错误,上面说需要PCRE模块但没有找到,所以我们需要先安装一下它。

阿里云的这个Linux内置yum,它是一个在基于RPM的Linux系统(红帽系列常见,CentOS、Fedora等都有)中广泛使用的包管理器和命令行工具。它用于安装、更新、删除软件包及其依赖关系。

我们使用yum来安装这个pcre包:

讯享网

结果如上图所示,出人意料地,结果是pcre已经被安装了。

事实上,我们还需要额外安装pcre-devel,如下图所示:

 

pcre-devel是pcre的开发库包,不过我们不需要纠结它是什么能做什么,我们只需要安装就好了。不要忘记输入y,这表示同意安装。

事实上,nginx不只需要安装这一个,如果现在再回去https://blog.csdn.net/Repre/article/details/configure,我们会发现它仍然缺少某个库比如zlib等等。

讯享网

这里提供一个一站式解决方案——一次安装所有依赖。

都安装完成后,我们再回去https://blog.csdn.net/Repre/article/details/configure,会看到:

很好,已经配置成功了。接下来就可以编译安装了。

3.4 编译安装

顾名思义,先编译后安装,我们先输入

 

它的意思是编译,如下图所示:

编译结束后,就可以安装了:

讯享网

如果你的结果与我的一样或类似,说明操作无误。

3.5 包管理器安装

实际上,我们刚才的安装方式被称为源码包编译安装,或简称为源码包安装编译安装,而还有一种安装方式也很常用,即包管理器直接安装,例如:

 

至于为什么使用源码包安装,则是因为源码包安装更加灵活,而且配置可调,这是其相较于包管理器安装的优势。

4. 启动Nginx

4.1 启动Nginx

安装好了,接下来我们来启动Nginx。

Nginx安装在/usr/local/nginx处,我们先cd到这个目录:

讯享网

然后,输入以下命令启动Nginx:

 

当前目录是/usr/local/nginx,在其下有个目录sbin,其中有可执行文件nginx,这样就可以启动了。

我们再输入

讯享网

如果能看到0.0.0.0:80(80端口是HTTP协议的默认端口,被监听了),说明Nginx已经启动了,如下图所示:

4.2 安全组放行

接下来,我们打开浏览器,在地址栏中输入我们服务器的公网IP,尝试访问。

但一般来说,我们是无法访问的,这是因为安全组中可能未放行80端口

解决方案如下:

在控制台中点击安全组

进入安全组后,点击快速添加,注意是入方向(意思是外部访问服务器),结果如图所示:

勾选HTTP(80)和HTTPS(443)即可,点击确定保存设置。

之后我们再去浏览器尝试访问一下,如果效果与下图相同,说明成功:

这是Nginx的默认界面,是可以修改和调整的。

5. 配置Python

5.1 安装Python

Python是一种高级编程语言。它是一种解释型、交互式、面向对象的语言。Python和Linux之间有着密切且互补的关系,绝大多数Linux发行版中都预装了Python,当然也包括我们的阿里版。

Python的安装与Nginx类似:

在/root目录下新建文件夹python(此外还有一个文件夹是我们刚才新建的nginx,装着它的源码包),在其中下载源码包:

 

我们选择的Python版本是3.10.14,当然也可以下载其它版本,在Python官网上寻找即可,链接地址:

下载完成后进入文件夹,执行configure:

讯享网

值得注意的是,对于configure,我们附加了–prefix=/usr/local/python3,这样子我们就指定python要安装到/usr/local/python3。

接下来编译并安装,与前面nginx一样。

最终结果如下图所示:

可以看到有非常醒目的警告,大意是当前安装的python没有被添加到环境变量里。

我们尝试运行一下Python,如上图下面几行

 

可以看到进入了Python 3.6.8的环境,但是,我们安装的好像是3.10.14,这是怎么回事?

先Ctrl+Z退出Python环境,接下来回答刚才的问题。

这是因为前面所说绝大多数Linux发行版都预装了Python,这里的Python3.6.8就是预装好的,当我们输入python3,都会被导向这个预装好的python3.6.8。

那么怎么使用我们安装好的python3.10.14呢,解决方案包括:

  • 直接去寻找安装好的python3.10.14,直接用,不修改其他配置
  • 建立软链接,这样以后输入python3都会被导向python3.10.14
5.2 使用Python

我们采用第一种方案:

讯享网

通过ls命令,我们可以看到这个文件夹下有什么:

四个蓝色的(XShell中),可知它们都是文件夹。

我们cd到bin里面:

 

再使用ls,得到下图的结果:

我们在这里执行一下python3,注意前面加上https://blog.csdn.net/Repre/article/details/,表示特指当前目录下:

讯享网

可以看到,我们进入了Python3.10.14的环境,很完美。如下图所示(python3和python3.10效果一样):

5.3 虚拟环境

在创建Python工程的时候,我们通常都需要虚拟环境

虚拟环境是一种自包含的目录树,其中安装了特定版本的Python解释器以及一系列附加包。虚拟环境的主要目的是为不同的项目创建隔离的Python运行环境,每个项目可以拥有自己的依赖,互不干扰,使各个工程之间低耦合高内聚。

在创建虚拟环境之前,我们先找一个合适的地方存放工程:

 

~表示用户目录,我们是root用户,~即/root,在这里新建文件夹www(延续宝塔的传统😀),在其下又新建一个文件夹clock,这个就是工程的名称了,任取即可。

在进入工程文件夹clock后,我们先新建虚拟环境:

讯享网

如上图所示,可以看到出现了一个目录venv,这就是前面所说的虚拟环境目录树。

激活虚拟环境的方法为:

 

如下图所示,区别很明显:

进入虚拟环境后,会看到前面出现了一个(venv),这表示我们进入了虚拟环境,并且虚拟环境的名称是venv(名称是在创建时指定的,我们起名为venv)。

在虚拟环境中,我们之间输入python3就可以进入一个python3.10.14的环境了。

此外,通过deactivate可以退出虚拟环境

下一篇是服务端具体代码实现,我们使用Python的fastapi做后端服务框架,为提醒功能提供支持。同时设置Nginx反向代理,把fastapi转接到HTTP的80端口上。

小讯
上一篇 2025-04-28 09:35
下一篇 2025-04-27 13:49

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/194232.html