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文件这里就不展开了。百度一下

 

posted @ 2021-12-03 15:48  一瓢清水  阅读(401)  评论(0)    收藏  举报