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





您需要什么……








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,您可以选择使用分支罐
从BME 280传感器硬件设置开始

将条带焊接在 BME280 中。
然后将 BME 连接到 Nodemcu:
BME VIN 至 3.3V
BME GND 至 GND
SCL 至 D4
SDA 至 D3
如果您愿意,可以将设备放入外壳中,但请确保外壳上有一些孔,以确保湿度和温度值正确。
BME 280 Nodemcu ESP8266代码





对于代码,您可以使用我的 GitHub 存储库:
https://github.com/Landixus/BME280_TO_SERVER_WEEWX
ino 文件需要您插入一些内容:
您的 weewx 服务器的 IP 地址或 URL
以及您拥有 php 文件的路径,确保该区域是可写的。
我选择public_html 目录,因为它是一个家庭服务器。
如果你想克隆 git 存储库,并且你的服务器上安装了 git,你可以使用以下命令进行克隆:
现在我们需要在 weewx 服务器上做一些事情。
您需要创建适合您设置的路径!
在
创建文件夹数据
在数据文件夹中创建一个 bme.txt 例如:
该文件应该是空的。
使其可写:
您永远不要在可访问互联网的服务器上执行此操作!)
在文件夹中
你放了我的 github repo 的 bme.php。
诀窍在于 INO 文件将值发送到 bme.php,然后 bme.php 将数据写入 bme.txt
接下来我们需要在 weewx 中添加服务
在文件夹中打开 weewx.conf
在编辑此文件之前最好先进行备份!
转到线路引擎并使线路看起来像我的:
[引擎]
[[服务]]
# 本节指定应运行的服务。它们是
# 按类型分组,以及每组内的服务顺序
# 确定服务运行的顺序。
使用以下命令重启 weewx:
使用命令
您可以在日志文件中查找错误或成功,查找输出 bme:找到值...
给你的服务器几分钟时间来生成,“我的”weewx.conf 每 5 分钟输出一次。
如果您收到错误消息,请检查您的路径。
如果你有价值观的话,可以去网页上展示一下:
打开skin.conf
# 这可能是我电台特有的! 添加
保存文件并在同一文件夹中打开
寻找一行:
#结束
如果在第一个 #end 之后找到,请将您的 BME 传感器放入:
^^ 抱歉,无法将其作为文本:(
保存文件并退出。
无需重新启动 weewx。
现在您需要将 Arduino 文件提供给 NODEMCU ESP8266。
不要忘记在文件中设置您的 wifi 和地址。
加载后检查串行输出是否有错误。
短暂的等待之后,您应该会在 weewx 网站上看到这些值。
成功BME280传感器设备+故障排除




给您一些提示:
通过 Putty 打开多个控制台
在一个控制台上进行更改,在另一个控制台上实时读取系统日志:
如果出现错误,请先查看日志文件。
您的输出应该与我的类似:
土壤传感器硬件设置







对于 DS18B20 传感器,我们需要用一些电线和焊接来制作一个总线系统。
检查你的DS18B20
数据、接地、VCC
VCC 和 DATA 之间需要一个 4.7K 电阻。如果第一个 DS18B20 上有一个电阻,就足够了。
其余DS18B20彼此并联。
测量所需的长度。将链条焊接在一起,我已经用热缩管固定了销钉。
为了进行测试,您将 DATA 连接到 D3,将 VCC 连接到 VCC(3.3V),将 GND 连接到 GND。
对于深度睡眠选项,您需要在 RST 和 D0(GPIO16)之间连接一座桥
您现在不应该将链条放入铝管中,请先进行测试!
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 网站上看到这些值。
土壤传感器成功运行及故障排除

如果您已完成所有工作并看到了价值,那么请到外面并将铝管放入地面。
一个好方法是将热胶涂在管子的一侧,然后将管子压在一起,这样你就有了一个漂亮的顶部,可以更容易地将其放入地面。
先将管道放入地面,然后用木板将其敲软。
如果管道足够深,您可以将 ds18b20 链条放入其中,并将电源线放入防水盒中。
确保此处的 wifi 可以使用!
如果您不知道传感器的深度有多深,则有两种可能性。
我在测试阶段将 1 个 ds18b20 放在你的手指之间,这个的温度会更高。
当管道已经埋入地下时,最高值通常就是最深点。
完成

刚刚结束
在评论中发布您的问题并显示您的地面温度!
如需更多帮助,请加入 weewx google 群组:











