net6 实现树莓派,接入阿里物联网平台,上传树莓派IP地址。
树莓派经常找IP不好找。需要找路由器,或者通过其他扫描工具。
网上有一些py发送邮件,或者钉钉的方式
最后刚好在研究阿里物联网平台,就顺便实现一下功能
这里感谢 痴者工良 的开源组件
1.https://github.com/whuanle/CZGL.AliIoTClient 2.https://github.com/whuanle/CZGL.SystemInfo
1.阿里云上配置产品与设备
新增产品,设置为网关设备即可
功能定义中增加一个IP地址
2.设备添加一个,获取证书
阿里云配置完毕
代码实现
1.接入物联网平台,Program.cs 完整代码,也就30行不到。
using ConsoleApp; using CZGL.AliIoTClient; Console.WriteLine("Hello, World!"); // 创建客户端 var client = new AliIoTClientJson(new DeviceOptions { ProductKey = "", DeviceName = "", DeviceSecret = "", RegionId = "cn-shanghai" }); // 设置要订阅的Topic、运行接收内容的Topic string[] topics = new string[] { client.CombineHeadTopic("get") }; // 使用默认事件 client.UseDefaultEventHandler(); // 连接服务器 client.ConnectIoT(topics, null, 60); // 定时上传数据 var model = DataServer.ToServer(); // 上传属性数据 client.Thing_Property_Post<TestModel>(model, false); Console.ReadKey();
属性上报实体
public class TestModel { public string id { get { return DateTime.Now.Ticks.ToString(); } set { } } public string version { get { return "1.0"; } set { } } public Params @params { get; set; } public TestModel() { @params = new Params(); } public class Params { public Cpu_Usage cpu_usage { get; set; } public Memory_Usage memory_usage { get; set; } public IPAddress ipaddress { get; set; } public Params() { ipaddress = new IPAddress(); cpu_usage = new Cpu_Usage(); memory_usage = new Memory_Usage(); } public class IPAddress { public string? value { get; set; } public long time { get; set; } } public class Cpu_Usage { public float value { get; set; } public long time { get; set; } } public class Memory_Usage { public float value { get; set; } public long time { get; set; } } } public string method { get { return "thing.event.property.post"; } set { } }//阿里云的MQTT接口 }
系统监控获取IP
// 实例化模型 TestModel model = new TestModel(); DynamicInfo info = new DynamicInfo(); // 获取CPU资源统计 var b = info.GetCpuState(); // 获取内存统计 var c = info.GetMem(); // 设置属性值 model.@params.cpu_usage.value = (float)b.UserSpace; model.@params.cpu_usage.time = AliIoTClientJson.GetUnixTime(); model.@params.memory_usage.value = memory_usage; model.@params.memory_usage.time = AliIoTClientJson.GetUnixTime(); var info2 = NetworkInfo.GetRealNetworkInfos().First(); if (info2 == null) { Console.WriteLine("未能获取网卡,操作终止"); ipaddress = "未能获取网卡"; } else { ipaddress= info2.AddressIpv4.ToString(); } model.@params.ipaddress.value = ipaddress; model.@params.ipaddress.time = AliIoTClientJson.GetUnixTime();
发布到树莓派
启动后在阿里云上查看
加入系统自启动,写一个SH文件这里就不展开了。百度一下