适用于 Weewx 的扩展传感器 Nodemcu ESP8266

dooooit_4000007
转载
发布时间: 2025-06-10 21:01:22 | 阅读数 0收藏数 0评论数 0
封面
这是将传感器添加到 weewx 气象站软件的说明。 如果您还没有 weewx,您可以在本教程中学习一些内容。 您需要了解一些有关 Arduino 代码以及如何在设备上上传的基本知识。
1

您需要什么……

Weewx 启动并运行 + 访问 weewx 服务器。(例如 Raspberry PI 3)。

2个Nodemcu ESP8266模块

3个或更多DS18B20传感器

1 个 BME 280 组合传感器

1 根铝管或类似材料,直径 10 毫米,壁厚 1 毫米,长约 1 米

1 个带有电缆密封套和锁紧螺母的防水外壳。

1 5V 电源(例如移动装载机)。

一些电线和焊接材料。

您可以在 ebay 上找到 BME280 传感器和 Nodemcu 模块。

对于铝管,我选择当地的五金店

对于 DS18B20 和防水外壳,我使用www.reichelt.de

https://www.reichelt.de/DS-18B20/3/index.html?ACTI...

https://www.reichelt.de/EL-FK-110/3/index.html?ACT...

以及带锁紧螺母的电缆接头组

https://www.reichelt.de/Kabelverschraubungen-Bopla...

对于 bme280,您可以选择使用分支罐

https://www.reichelt.de/Installationsmaterial/EL-D...

2

从BME 280传感器硬件设置开始

将条带焊接在 BME280 中。

然后将 BME 连接到 Nodemcu:

BME VIN 至 3.3V

BME GND 至 GND

SCL 至 D4

SDA 至 D3

如果您愿意,可以将设备放入外壳中,但请确保外壳上有一些孔,以确保湿度和温度值正确。

3

BME 280 Nodemcu ESP8266代码

对于代码,您可以使用我的 GitHub 存储库:

https://github.com/Landixus/BME280_TO_SERVER_WEEWX

ino 文件需要您插入一些内容:

您的 weewx 服务器的 IP 地址或 URL

以及您拥有 php 文件的路径,确保该区域是可写的。

我选择public_html 目录,因为它是一个家庭服务器。

如果你想克隆 git 存储库,并且你的服务器上安装了 git,你可以使用以下命令进行克隆:

"git clone"https://github.com/Landixus/BME280_TO_SERVER_WEEWX"

现在我们需要在 weewx 服务器上做一些事情。

您需要创建适合您设置的路径!

/home/weewx/public_html

创建文件夹数据

在数据文件夹中创建一个 bme.txt 例如:

nano bme.txt

该文件应该是空的。

使其可写:

chmod -R 777 bme.txt

您永远不要在可访问互联网的服务器上执行此操作!)

在文件夹中

/home/weewx/public_html

你放了我的 github repo 的 bme.php。

诀窍在于 INO 文件将值发送到 bme.php,然后 bme.php 将数据写入 bme.txt

接下来我们需要在 weewx 中添加服务

bme.py放入文件夹中

/home/weewx/bin/user

在文件夹中打开 weewx.conf

/home/weewx

在编辑此文件之前最好先进行备份!

转到线路引擎并使线路看起来像我的:

[引擎]

[[服务]]

# 本节指定应运行的服务。它们是

# 按类型分组,以及每组内的服务顺序

# 确定服务运行的顺序。

data_services = user.pond.PondService, user.bme.bme

使用以下命令重启 weewx:

sudo /etc/init.d/weewx stop
 sudo /etc/init.d/weewx start


使用命令

tail -f /var/log/syslog

您可以在日志文件中查找错误或成功,查找输出 bme:找到值...

给你的服务器几分钟时间来生成,“我的”weewx.conf 每 5 分钟输出一次。

如果您收到错误消息,请检查您的路径。

如果你有价值观的话,可以去网页上展示一下:

打开skin.conf

/home/weewx/skins/Standard前往:

# 这可能是我电台特有的! 添加

extraTemp3 = BME1 Temperature<br>extraHumid1 = BME1 Humidity

保存文件并在同一文件夹中打开

index.html.tmpl

寻找一行:

#if $day.extraTemp..

#结束

如果在第一个 #end 之后找到,请将您的 BME 传感器放入:

^^ 抱歉,无法将其作为文本:(

保存文件并退出。

无需重新启动 weewx。

现在您需要将 Arduino 文件提供给 NODEMCU ESP8266。

不要忘记在文件中设置您的 wifi 和地址。

加载后检查串行输出是否有错误。

短暂的等待之后,您应该会在 weewx 网站上看到这些值。


4

成功BME280传感器设备+故障排除

给您一些提示:

通过 Putty 打开多个控制台

在一个控制台上进行更改,在另一个控制台上实时读取系统日志:

tail -f /var/log/syslog

如果出现错误,请先查看日志文件。

您的输出应该与我的类似:

5

土壤传感器硬件设置

对于 DS18B20 传感器,我们需要用一些电线和焊接来制作一个总线系统。

检查你的DS18B20

数据、接地、VCC

VCC 和 DATA 之间需要一个 4.7K 电阻。如果第一个 DS18B20 上有一个电阻,就足够了。

其余DS18B20彼此并联。

测量所需的长度。将链条焊接在一起,我已经用热缩管固定了销钉。

为了进行测试,您将 DATA 连接到 D3,将 VCC 连接到 VCC(3.3V),将 GND 连接到 GND。

对于深度睡眠选项,您需要在 RST 和 D0(GPIO16)之间连接一座桥

您现在不应该将链条放入铝管中,请先进行测试!

6

DS18B20 Nodemcu ESP8266代码

对于代码,您可以使用我的 GITHUB 存储库:

https://github.com/Landixus/multipleDS18B20WeeWX

此外,ino 文件需要您插入一些内容:weewx 服务器的 IP 地址或 URL 以及您放置 php 文件的路由,确保该区域可写,我选择 public_html 目录,因为它是主服务器。

如果你想克隆 git 存储库并在你的服务器上安装了 git,你可以使用命令“git clone https://github.com/Landixus/multipleDS18B20WeeWX ”进行克隆

现在我们需要做一些在 weewx 服务器上运行的事情。

您需要在

/主页/weewx/public_html

在数据文件夹中创建一个“data”文件夹,创建一个ds18b20.txt文件,例如nano ds18b20.txt,该文件必须是空的。使用chmod -R 777 ds18b20.txt使其可写(千万不要在可以访问互联网的服务器上执行此操作!),在/home/weewx/public_html文件夹中,放入我的github rep的ground.php。诀窍在于,INO文件会将值发送到ground.php,然后ground.php会将数据写入ds18b20.txt。接下来,我们需要在weewx中添加服务,将ds18b20.py放入/home/weewx/bin/user文件夹中。

在文件夹 /home/weewx 中打开 weewx.conf

在编辑此文件之前最好先进行备份!

转到行:

[引擎]

[[Services]] # 本节指定应运行的服务。它们是

# 按类型分组,以及每组内的服务顺序

# 确定服务运行的顺序。

prep_services = weewx.engine.StdTimeSynch, data_services = user.pond.PondService, user.bme.bme, user.ds18b20.ds18b20 在逗号后添加内联

“user.ds18b20.ds18b20”应该看起来像上面的行^^

使用以下命令重启 weewx:

sudo /etc/init.d/weewx stop

sudo /etc/init.d/weewx 启动

使用命令 tail -f /var/log/syslog,您可以在日志文件中查找错误或成功输出 ds18b20: found 的值。给您的服务器一些时间来生成输出,在我的 weewx.conf 中,每 5 分钟输出一次输出。如果您收到错误消息,请检查您的路径。如果您有值,您可以在页面上显示它:打开

/home/weewx/skins/Standard 中的 skin.conf 转到:

# 这个可能是针对我的电台的!

添加

土壤温度1 = DS18B201

土壤温度2 = DS18B202

土壤温度3 = DS18B203

保存文件并在同一文件夹中打开 index.html.tmpl 查找一行:

#如果 $day.extraTemp.. ...

#结束

在第一个#end 之后,如果发现将 GroundSensor 传感器放入:

^^ 抱歉,无法将其作为文本:(保存文件并退出。无需重新启动 weewx。现在您需要将 Arduino 文件提供给 NODEMCU ESP8266。

不要忘记在文件中设置你的WiFi和地址。加载后,检查串口输出是否有错误。

短暂的等待之后,您应该会在 weewx 网站上看到这些值。

7

土壤传感器成功运行及故障排除

如果您已完成所有工作并看到了价值,那么请到外面并将铝管放入地面。

一个好方法是将热胶涂在管子的一侧,然后将管子压在一起,这样你就有了一个漂亮的顶部,可以更容易地将其放入地面。

先将管道放入地面,然后用木板将其敲软。

如果管道足够深,您可以将 ds18b20 链条放入其中,并将电源线放入防水盒中。

确保此处的 wifi 可以使用!

如果您不知道传感器的深度有多深,则有两种可能性。

我在测试阶段将 1 个 ds18b20 放在你的手指之间,这个的温度会更高。

当管道已经埋入地下时,最高值通常就是最深点。

8

完成

刚刚结束

在评论中发布您的问题并显示您的地面温度!

如需更多帮助,请加入 weewx google 群组:

https://groups.google.com/forum/#!forum/weewx-user

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载