大约十一年前,启动了一个项目,目的是在花园中测量温度等数据,并通过网站展示这些信息。当时,使用了Mono在树莓派上运行Linux系统。然而,随着时间的推移,忘记了这个项目,直到最近重新发现了树莓派和气象站设备。现在,决定继续这个项目,但考虑到技术的发展,计划已经发生了变化。
现在,不再需要Mono,因为.NET Core(现在称为.NET)已经存在,可以直接在任何树莓派上运行.NET项目。此外,原本不想将树莓派放在气象站内部,因为希望它能够在家中使用,并且用于其他事情。因此,购买了Tinkerforge WIFI Master Extension。但现在,有了树莓派Zero W,它不仅价格便宜,还内置了Wi-Fi。
此外,评估过的智能家居解决方案Home Assistant似乎更适合在专用机器上运行。由于没有任何Home Assistant的经验,但根据文档,它似乎推荐使用自己的操作系统。因此,没有必要让树莓派在家中24/7运行,只为了给气象站供电。所以,显然的选择是移除Wi-Fi模块,直接将树莓派Zero W放入气象站。
仍然想要(并且仍然想要)定期保存当前的温度、湿度等数据,并对其进行一些有趣的处理。2013年,Tinkerforge的文档推荐使用Xively,但今天他们的网站甚至无法加载,根据维基百科,他们几年前就被谷歌收购了。在2024年,有更多云服务,可能有一个非常适合需求的服务(并且有一个足够需求的免费层)。
还没有在云中构建任何东西的经验,所以将使用这个项目来熟悉这个过程。因此,这个计划相当模糊,但计划定期将温度等数据发送到云服务中,并在那里存储(不是为了永远,只是最近几天?),最终使用这些数据创建一个自动刷新的“这是花园当前的天气”网站,带有一些漂亮的图表。
代码在GitHub上:https://github.com/christianspecht/weather-station。它是.NET 8(当前的LTS版本)。在撰写本文时,它只包含一个简单的“Hello World”示例(类似于2013年博客文章中的示例),它显示了当前的温度。接下来(在写下一篇文章之前),将向应用程序添加更多功能,类似于Tinkerforge文档中的两个教程:读取所有传感器的值,并使用按钮在显示屏上显示不同的东西。在那之后,将开始处理云服务相关的内容。
public class WeatherStation
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
// 这里将添加更多的功能来读取传感器并显示数据
}
}