• [问题求助] IOT不能编译
    【功能模块【操作步骤&问题现象】1、正常导入GCC工程 编译有警告 没报错  不能烧录2、单独下载的IOT STUDIO  没下VSCODE【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [知识分享] 设备如何使用go sdk轻松连接华为云IoT平台
    本文分享自华为云社区《[设备如何使用go sdk轻松连接华为云IoT平台](https://bbs.huaweicloud.com/blogs/349842?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=iot&utm_content=content)》,作者:华为云IoT专家团 。 本文介绍使用[huaweicloud-iot-device-sdk-go](https://github.com/ctlove0523/huaweicloud-iot-device-sdk-go) 连接华为云IoT平台,实现简单的华为云文档介绍的四个功能:设备连接鉴权、设备命令、设备消息和设备属性。huaweicloud-iot-device-sdk-go提供设备接入华为云IoT物联网平台的Go版本的SDK,提供设备和平台之间通讯能力,以及设备服务、网关服务、OTA等高级服务。IoT设备开发者使用SDK可以大大简化开发复杂度,快速的接入平台。 Gihub项目地址:[huaweicloud-iot-device-sdk-go](https://github.com/ctlove0523/huaweicloud-iot-device-sdk-go) # 安装和构建 安装和构建的过程取决于使用go的 modules(推荐) 还是还是GOPATH # Modules 如果你使用 modules 只需要导入包"github.com/ctlove0523/huaweicloud-iot-device-sdk-go"即可使用。当你使用go build命令构建项目时,依赖的包会自动被下载。注意使用go build命令构建时会自动下载最新版本,最新版本还没有达到release的标准可能存在一些尚未修复的bug。如果想使用稳定的发布版本可以从release 获取最新稳定的版本号,并在go.mod文件中指定版本号。 module example go 1.15 require github.com/ctlove0523/huaweicloud-iot-device-sdk-go v0.0.1-alpha # GOPATH 如果你使用GOPATH,下面的一条命令即可实现安装 `go get github.com/ctlove0523/huaweicloud-iot-device-sdk-go` # 使用API # 创建设备并初始化 1、首先,在华为云IoT平台创建一个设备,设备的信息如下: 设备ID:5fdb75cccbfe2f02ce81d4bf_go-mqtt 设备密钥:123456789 2、使用SDK创建一个Device对象,并初始化Device。 // 创建一个设备并初始化 device := iot.CreateIotDevice("5fdb75cccbfe2f02ce81d4bf_go-mqtt", "123456789", "tcp://iot-mqtts.cn-north-4.myhuaweicloud.com:1883") device.Init() # 完整样例 import ( "fmt" "github.com/ctlove0523/huaweicloud-iot-device-sdk-go" "time" ) func main() { // 创建一个设备并初始化 device := iot.CreateIotDevice("5fdb75cccbfe2f02ce81d4bf_go-mqtt", "123456789", "tcp://iot-mqtts.cn-north-4.myhuaweicloud.com:1883") device.Init() if device.IsConnected() { fmt.Println("device connect huawei iot platform success") } else { fmt.Println("device connect huawei iot platform failed") } } >iot-mqtts.cn-north-4.myhuaweicloud.com为华为IoT平台(基础班)在华为云北京四的访问端点,如果你购买了标准版或企业版,请将iot-mqtts.cn-north-4.myhuaweicloud.com更换为对应的MQTT协议接入端点。 # 设备处理平台下发的命令 1、首先,在华为云IoT平台创建一个设备,设备的信息如下: 设备ID:5fdb75cccbfe2f02ce81d4bf_go-mqtt 设备密钥:123456789 2、使用SDK创建一个Device对象,并初始化Device。 // 创建一个设备并初始化 device := iot.CreateIotDevice("5fdb75cccbfe2f02ce81d4bf_go-mqtt", "123456789", "tcp://iot-mqtts.cn-north-4.myhuaweicloud.com:1883") device.Init() if device.IsConnected() { fmt.Println("device connect huawei iot platform success") } else { fmt.Println("device connect huawei iot platform failed") } 3、注册命令处理handler,支持注册多个handler并且按照注册的顺序回调 // 添加用于处理平台下发命令的callback device.AddCommandHandler(func(command iot.Command) bool { fmt.Println("First command handler begin to process command.") return true }) device.AddCommandHandler(func(command iot.Command) bool { fmt.Println("Second command handler begin to process command.") return true }) 4、通过应用侧API向设备下发一个命令,可以看到程序输出如下: device connect huawei iot platform success First command handler begin to process command. Second command handler begin to process command. # 完整样例 import ( "fmt" "github.com/ctlove0523/huaweicloud-iot-device-sdk-go" "time" ) // 处理平台下发的同步命令 func main() { // 创建一个设备并初始化 device := iot.CreateIotDevice("5fdb75cccbfe2f02ce81d4bf_go-mqtt", "123456789", "tcp://iot-mqtts.cn-north-4.myhuaweicloud.com:1883") device.Init() if device.IsConnected() { fmt.Println("device connect huawei iot platform success") } else { fmt.Println("device connect huawei iot platform failed") } // 添加用于处理平台下发命令的callback device.AddCommandHandler(func(command iot.Command) bool { fmt.Println("First command handler begin to process command.") return true }) device.AddCommandHandler(func(command iot.Command) bool { fmt.Println("Second command handler begin to process command.") return true }) time.Sleep(1 * time.Minute) } >设备支持的命令定义在产品中 # 设备消息 1、首先,在华为云IoT平台创建一个设备,设备的信息如下: 设备ID:5fdb75cccbfe2f02ce81d4bf_go-mqtt 设备密钥:123456789 2、使用SDK创建一个Device对象,并初始化Device。 device := iot.CreateIotDevice("5fdb75cccbfe2f02ce81d4bf_go-mqtt", "123456789", "tcp://iot-mqtts.cn-north-4.myhuaweicloud.com:1883") device.Init() # 设备消息上报 message := iot.Message{ ObjectDeviceId: uuid.NewV4().String(), Name: "Fist send message to platform", Id: uuid.NewV4().String(), Content: "Hello Huawei IoT Platform", } device.SendMessage(message) # 平台消息下发 接收平台下发的消息,只需注册消息处理handler,支持注册多个handler并按照注册顺序回调。 // 注册平台下发消息的callback,当收到平台下发的消息时,调用此callback. // 支持注册多个callback,并且按照注册顺序调用 device.AddMessageHandler(func(message iot.Message) bool { fmt.Println("first handler called" + iot.Interface2JsonString(message)) return true }) device.AddMessageHandler(func(message iot.Message) bool { fmt.Println("second handler called" + iot.Interface2JsonString(message)) return true }) # 完整样例 import ( "fmt" iot "github.com/ctlove0523/huaweicloud-iot-device-sdk-go" uuid "github.com/satori/go.uuid" "time" ) func main() { // 创建一个设备并初始化 device := iot.CreateIotDevice("5fdb75cccbfe2f02ce81d4bf_go-mqtt", "123456789", "tcp://iot-mqtts.cn-north-4.myhuaweicloud.com:1883") device.Init() // 注册平台下发消息的callback,当收到平台下发的消息时,调用此callback. // 支持注册多个callback,并且按照注册顺序调用 device.AddMessageHandler(func(message iot.Message) bool { fmt.Println("first handler called" + iot.Interface2JsonString(message)) return true }) device.AddMessageHandler(func(message iot.Message) bool { fmt.Println("second handler called" + iot.Interface2JsonString(message)) return true }) //向平台发送消息 message := iot.Message{ ObjectDeviceId: uuid.NewV4().String(), Name: "Fist send message to platform", Id: uuid.NewV4().String(), Content: "Hello Huawei IoT Platform", } device.SendMessage(message) time.Sleep(2 * time.Minute) } # 设备属性 1、首先,在华为云IoT平台创建一个设备,并在该设备下创建3个子设备,设备及子设备的信息如下: 设备ID:5fdb75cccbfe2f02ce81d4bf_go-mqtt 设备密钥:123456789 子设备ID:5fdb75cccbfe2f02ce81d4bf_sub-device-1 子设备ID:5fdb75cccbfe2f02ce81d4bf_sub-device-2 子设备ID:5fdb75cccbfe2f02ce81d4bf_sub-device-3 2、使用SDK创建一个Device对象,并初始化Device。 // 创建设备并初始化 device := iot.CreateIotDevice("5fdb75cccbfe2f02ce81d4bf_go-mqtt", "123456789", "tcp://iot-mqtts.cn-north-4.myhuaweicloud.com:1883") device.Init() fmt.Printf("device connected: %v\n", device.IsConnected()) # 设备属性上报 使用ReportProperties(properties ServiceProperty) bool 上报设备属性 // 设备上报属性 props := iot.ServicePropertyEntry{ ServiceId: "value", EventTime: iot.DataCollectionTime(), Properties: DemoProperties{ Value: "chen tong", MsgType: "23", }, } var content []iot.ServicePropertyEntry content = append(content, props) services := iot.ServiceProperty{ Services: content, } device.ReportProperties(services) # 网关批量设备属性上报 使用BatchReportSubDevicesProperties(service DevicesService) 实现网关批量设备属性上报 // 批量上报子设备属性 subDevice1 := iot.DeviceService{ DeviceId: "5fdb75cccbfe2f02ce81d4bf_sub-device-1", Services: content, } subDevice2 := iot.DeviceService{ DeviceId: "5fdb75cccbfe2f02ce81d4bf_sub-device-2", Services: content, } subDevice3 := iot.DeviceService{ DeviceId: "5fdb75cccbfe2f02ce81d4bf_sub-device-3", Services: content, } var devices []iot.DeviceService devices = append(devices, subDevice1, subDevice2, subDevice3) device.BatchReportSubDevicesProperties(iot.DevicesService{ Devices: devices, }) # 平台设置设备属性 使用AddPropertiesSetHandler(handler DevicePropertiesSetHandler) 注册平台设置设备属性handler,当接收到平台的命令时SDK回调。 // 注册平台设置属性callback,当应用通过API设置设备属性时,会调用此callback,支持注册多个callback device.AddPropertiesSetHandler(func(propertiesSetRequest iot.DevicePropertyDownRequest) bool { fmt.Println("I get property set command") fmt.Printf("request is %s", iot.Interface2JsonString(propertiesSetRequest)) return true }) # 平台查询设备属性 使用SetPropertyQueryHandler(handler DevicePropertyQueryHandler)注册平台查询设备属性handler,当接收到平台的查询请求时SDK回调。 // 注册平台查询设备属性callback,当平台查询设备属性时此callback被调用,仅支持设置一个callback device.SetPropertyQueryHandler(func(query iot.DevicePropertyQueryRequest) iot.ServicePropertyEntry { return iot.ServicePropertyEntry{ ServiceId: "value", Properties: DemoProperties{ Value: "QUERY RESPONSE", MsgType: "query property", }, EventTime: "2020-12-19 02:23:24", } }) # 设备侧获取平台的设备影子数据 使用QueryDeviceShadow(query DevicePropertyQueryRequest, handler DevicePropertyQueryResponseHandler) 可以查询平台的设备影子数据,当接收到平台的响应后SDK自动回调DevicePropertyQueryResponseHandler。 // 设备查询设备影子数据 device.QueryDeviceShadow(iot.DevicePropertyQueryRequest{ ServiceId: "value", }, func(response iot.DevicePropertyQueryResponse) { fmt.Printf("query device shadow success.\n,device shadow data is %s\n", iot.Interface2JsonString(response)) }) # 完整样例 import ( "fmt" iot "github.com/ctlove0523/huaweicloud-iot-device-sdk-go" "time" ) func main() { // 创建设备并初始化 device := iot.CreateIotDevice("5fdb75cccbfe2f02ce81d4bf_go-mqtt", "123456789", "tcp://iot-mqtts.cn-north-4.myhuaweicloud.com:1883") device.Init() fmt.Printf("device connected: %v\n", device.IsConnected()) // 注册平台设置属性callback,当应用通过API设置设备属性时,会调用此callback,支持注册多个callback device.AddPropertiesSetHandler(func(propertiesSetRequest iot.DevicePropertyDownRequest) bool { fmt.Println("I get property set command") fmt.Printf("request is %s", iot.Interface2JsonString(propertiesSetRequest)) return true }) // 注册平台查询设备属性callback,当平台查询设备属性时此callback被调用,仅支持设置一个callback device.SetPropertyQueryHandler(func(query iot.DevicePropertyQueryRequest) iot.ServicePropertyEntry { return iot.ServicePropertyEntry{ ServiceId: "value", Properties: DemoProperties{ Value: "QUERY RESPONSE", MsgType: "query property", }, EventTime: "2020-12-19 02:23:24", } }) // 设备上报属性 props := iot.ServicePropertyEntry{ ServiceId: "value", EventTime: iot.DataCollectionTime(), Properties: DemoProperties{ Value: "chen tong", MsgType: "23", }, } var content []iot.ServicePropertyEntry content = append(content, props) services := iot.ServiceProperty{ Services: content, } device.ReportProperties(services) // 设备查询设备影子数据 device.QueryDeviceShadow(iot.DevicePropertyQueryRequest{ ServiceId: "value", }, func(response iot.DevicePropertyQueryResponse) { fmt.Printf("query device shadow success.\n,device shadow data is %s\n", iot.Interface2JsonString(response)) }) // 批量上报子设备属性 subDevice1 := iot.DeviceService{ DeviceId: "5fdb75cccbfe2f02ce81d4bf_sub-device-1", Services: content, } subDevice2 := iot.DeviceService{ DeviceId: "5fdb75cccbfe2f02ce81d4bf_sub-device-2", Services: content, } subDevice3 := iot.DeviceService{ DeviceId: "5fdb75cccbfe2f02ce81d4bf_sub-device-3", Services: content, } var devices []iot.DeviceService devices = append(devices, subDevice1, subDevice2, subDevice3) device.BatchReportSubDevicesProperties(iot.DevicesService{ Devices: devices, }) time.Sleep(1 * time.Minute) } type DemoProperties struct { Value string `json:"value"` MsgType string `json:"msgType"` }
  • [问题求助] IOT连接不上华为云
    【功能模块】ESP8266【操作步骤&问题现象】1、按着LiteOS云端对接教程05-LiteOS基于MQTTS对接华为OC平台实战案例编写代码 烧录了  但是华为云的设备显示不在线2、还想问一下华为云可以通过下发命令控制小熊派的LED灯开关嘛(MQTTS协议)【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 小熊派IoT板子在IoT直接场景中属于哪类接入方式,是LiteOS吗
    小熊派IoT板子在IoT直接场景中属于哪类接入方式,华为云IoTDA云服务支持这六种接入方式,小熊派是基于哪种开发的?从资料上看,你们用的是LiteOS这种模式,但你们用的移远NB-IoT模组,这个模组据我了解在云市场上架,也是和IoTDA做了认证模组开发模式的适配的,那搭配你们板子一起用的话,通信这块,你们是用基于LiteOS的模式进行控制,还是NB模组自行配置完成通信?
  • [技术干货] 智慧园区设备通过IoT网关和平台接入园区预集成设备
    园区基线预集成的设备IO包含:基线设备IO、连接实验室认证扩展IO。当对应设备接入园区时无需开发任何代码,可直接接入使用。基线设备IO:随基线版本一起安装,订购园区基线后默认安装好,如表1所示。连接实验室认证扩展IO:IO扩展包随基线版本发布,但默认不安装,项目可根据需要选装,如表2所示。扩展IO详情见连接实验室认证扩展IO。基线设备IO这部分设备IO随基线版本一起安装,订购园区基线后默认安装好。表1 基线设备IO条数分类设备IO“统一设备服务”端对应的设备规格1保安系统设备门禁设备IOAccessControl2泄露电缆设备IOLeakyCable3人行闸机设备IOTurnstile4消防系统设备消防烟感设备IOSmokeDetector5消防温感设备IOTemperatureSensor6消防手报设备IOManualFireAlarmActivation7声光报警设备IOAcoustoOpticAlarm8消防栓按钮设备IOFireHydrantButton9可燃气体探测器设备IOCombustibleGasDetector10能耗系统设备水表设备IOWaterMeter11电表设备IOElectricMeter12燃气表设备IOGasMeter13资产管理设备新基点IoT射频识别标签设备IORFID14新基点IoT射频识别读卡器设备IORFIDReader15环境监测设备户外环境监测设备IOOutdoorEnvSensor16室内环境监测设备IOIndoorEnvSensor17建筑BA设备空调机组设备IOAirHandleUnit18新风机组设备IOPreCoolingAirHandlingUnit19送风机设备IOSupplyAirFan20排风机设备IOExhaustAirFan21冷机设备IOChiller22冷冻水泵设备IOChillerWaterPump23冷却水泵设备IOCoolDownWaterPump24冷却塔设备IOCoolingTower25冷源补水箱设备IOColdSourceSupplyTank26冷源补水泵设备IOColdSourceSupplyPump27冷冻水总管设备IOChilledWaterMainPipe28冷却水总管设备IOCoolDownWaterMainPipe29管道设备IOMainPipe30膨胀水箱设备IOExpansionTank31蓄冷罐设备IOColdStorageTank32电热锅炉设备IOElectricBoiler33锅炉热水泵设备IOBoilerHotWaterPump34供热水泵设备IOHeatingWaterPump35排水泵设备IODrainagePump36生活水泵设备IODomesticWaterPump37集水井设备IOSumpPit38生活水箱设备IODomesticWaterTank39减压阀设备IOPressureReliefValve40室内照明控制器设备室内照明控制器设备IOIndoorLightingController41厕位检测设备厕位检测设备IOToiletPositionDetector42工位检测设备工位检测设备IOWorkStationDetector43升降电梯设备升降电梯设备IOElevator44电梯群控器设备电梯群控器设备IOElevatorClusterController连接实验室认证扩展IO这部分设备IO扩展包随基线版本发布,但默认不安装,项目可根据需要选装。表2 连接实验室认证扩展IO条数分类设备IO“统一设备服务”端对应的设备规格1电气火灾监测系统设备故障电弧探测器设备ArcFaultDetectionDevice2电气火灾检测系统探测器设备ElectrFireMonitorSysDetector3消防电源监控系统设备FirePowerMonitorSys4照明系统路灯设备StreetLight5室外景观照明设备OutdoorLandscapeLighting6室内多回路照明控制器设备IndoorMultLoopLightingController7环境空间监测系统震动传感器设备Vibrating8GPS定位器设备GPSLocator9智能手环设备SmartBand10垃圾桶设备Trashcans11擦手纸余量检测设备TissuePaper12厕纸余量检测设备ToiletPaper13客流统计设备PassengerFlow14多媒体点评器设备Evaluator15洗手液余量检测设备SoapDispenser16井盖检测器设备ManholeCoverDetector17路灯显示屏设备StreetLightDisplayScreen18激光探测器设备LaserDetector19应急指示灯设备EmergencyLamp20水文监测系统水位水质监测设备WaterQualityMonitoring21水文监测设备HydrologicalTelemetery22能耗管理系统能耗管理系统设备EnergyConsumption23智能水表设备SmartWaterMeter24热量表设备HeatMeter25冷量表设备CoolCapacityMeter26火灾自动报警系统报警主机设备AlarmHost27入侵报警系统电子围栏设备ElectronicFence28门磁探测器设备ElecLockDetector29报警主机防区设备AlarmHostDefenceArea30环境空间告警系统管线甲烷气体探测器设备PipelineCH4Detector31管线硫化氢气体探测器设备PipelineH2SDetector32管线温湿度探测器设备PipelineTempAndHumidityDetector33管线压力探测器设备PipelinePressureDetector34管线氧气气体探测器设备PipelineO2Detector35紧急按钮设备EmergencyButton36温湿度监测设备TemperatureHumidity37管道流量监测设备PipelineTrafficMonitoring38液压检测设备HydraulicPressureDetector39水浸检测设备WaterImmersion40液位检测设备LiquidLevelDetector41CH探测器设备CH4Detector42红外探测器设备InfraredDetector43一氧化碳探测器设备CODetector44氨气探测器设备AmmoniaDetector45空气质量探测器设备AirAualityDetector46地埋侧循环泵设备BuriedSideCirculatingPump47定压水泵设备ConstantPressurePump48水处理仪设备WaterTreatmentInstrument49地源热泵机组设备GroundSourceHeatPumpUnit50锅炉补水箱设备BoilerSupplyTank51二次水循环泵设备SecondaryCirculationPump52消防监测系统消防栓监测设备HydrantDetector53消防管道监测设备FireControlPipeDetector54BA400V进线设备InLine400V5510kV进线设备InLine10kV56400V出线设备OutLine400V57电力变压器温控器设备TransformerTempController58交流电通断检测器设备ACDetector59空气断路器设备AirCircuitBreaker60电箱温度传感器设备TempDetector61母联设备BusTieSwitch62电容器设备Capacitance6335kV出线设备Capacitance64主变压器设备MainTransformer6510kV出线设备OutLine10kV66站变设备StationTransformer67110kV分段设备Subsection110kV68直流屏设备DirectCurrentPanel69110kV进线间隔设备IncomingLineInterval110kV70双电源转换开关DualPowerSwitch71TV监控设备TVMonitoringDevice72母线保护设备BusbarProtection73光伏发电设备PhotovoltaicGenerator74柴油发电设备DieselGenerator75电动天窗电动天窗设备PowerSunroof76电梯及扶梯扶梯设备Escalator
  • [技术干货] 智慧园区设备通过IoT网关和平台接入园区集成架构
    图1 设备通过IoT接入南向设备接入的整个业务流程可以分为2部分:数据上报和指令下发,各模块的处理流程如下。数据上报IoT平台能力:南向设备通过IoT网关和IoT平台,将原始数据上报到ROMA MQS的原始topic中。基线预置能力:IoT Adapter IO依据消息类型将消息拆分,并根据设备类型和消息类型转发给对应设备IO的中间层topic。例如人行闸机上报的消息,会转发给“人行闸机设备IO”;门禁上报的消息会转发给“门禁设备IO”。设备IO能力:设备IO将消息转换成标准格式,并发送到“设备标准消息MQS Topic”。基线预置能力:统一设备服务消费标准topic中的消息,转换成事件供业务应用做逻辑判断。指令下发基线预置能力:统一设备服务提供标准化的设备模型和控制命令,无论是对哪种设备下发指令,业务应用都只需调用标准化的指令接口即可。基线预置能力:统一设备服务根据业务侧下发的指令,在设备的标准模型中查询到该设备的指令服务后回调ROMA侧的“设备标准IoT接口”。基线预置能力:ROMA侧的“设备标准IoT接口”依据指令中的“channel”和“deviceType”参数,将指令路由到设备IO。“channel”参数用于多IoT平台的场景,确定指令要下发给哪个IoT平台,例如新基点IoT平台的channel值为“basepoint.connectionmax.iot”。“deviceType”参数确定指令路由到哪个设备IO,deviceType的值来自统一设备服务中定义的标准模型。例如人行闸机的指令会路由到“人行闸机设备IO”,门禁的指令会路由到“门禁设备IO”。设备IO能力:设备IO将业务侧下发的指令转换为实际物理设备可以执行的指令,并回调南向IoT平台的指令下发接口。IoT平台能力:南向IoT平台向实际物理设备下发指令,控制设备的运行。在整个业务流程中,每种类型的设备,都需要有一个对应的设备IO,用于标准化实际设备上报的消息,以及转换业务下发给设备的指令,消息上报和指令下发通过IoT平台来实现。针对园区常见的一部分设备,基线已经预集成了对应的设备IO,无需开发任何代码,可直接接入使用,详细清单参见基线已集成设备。对于不在基线预置内的设备,只需开发对应的设备IO即可,其它部分不需要开发,整个上行/下行流程和业务侧都无需变动,开发流程详见基线未集成设备接入指导。
  • [问题求助] 小熊派物联网案例
    如图一所示 修改的WiFi密码是什么WiFi密码??是要在BearPi-HM_Nano开发板上创建Wifi热点程序吗?参考图二的案例?图一图二
  • [问题求助] 【小熊派】【AT指令,NB-IoT上云问题】 代码实现“AT+NMGS=”时无法上传数据
    【功能模块】智慧农业模块【操作步骤&问题现象】1、若在串口模式下发送AT指令   1)AT+NCDP=119.3.250.80,5683   2)  AT+CFUN=1   3)AT+CGATT=1 (AT+CGATT?查询后确认为1)   4)AT+NMGS=5,00193C0064四条指令发送完后,云平台能正常显示指令上报的数据2、但若编写代码实现上述过程:    sim900a_send_cmd 是我编写的发送AT指令到串口的代码 其中   1)AT+NCDP=119.3.250.80,5683   2)  AT+CFUN=1   3)AT+CGATT=1 (AT+CGATT?查询后确认为1)这三个指令均成功第四个上报数据的AT指令:4)AT+NMGS=5,00193C0064 ,也能成功发送,但数据就是没有在云平台上上报,此时若在串口中手动输入AT+NMGS=5,00193C0064,云平台上就正常上报了数据,(也说明了前面三个代码发送的指令均没有问题)。请问为什么用代码发送的AT+NMGS=5,00193C0064 不能正常上报数据sim900a_send_cmd 就是向串口发送AT指令的代码请求指点【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 小熊派NB-IoT智慧路灯
    1.请问一下设备对接华为云服务器的信息和串口信息分别是在哪一个模块呢2.请问一下命令下发模块这一块的具体代码是什么意思,
  • [干货汇总] 聊聊如何在华为云IoT平台进行产品开发
    本文分享自华为云社区《[如何基于华为云IoT物联网平台进行产品开发](https://bbs.huaweicloud.com/blogs/349684?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=iot&utm_content=content)》,作者: Super.雯 。 华为云物联网平台承载着南北向数据互通的功能职责。在华为云物联网平台基础上实现端到端物联网业务的过程中,开发者需要基于该平台进行二次开发。本文先跟大家一起聊一聊产品开发。 # 产品开发 在物联网平台集成解决方案中,物联网平台作为承上启下的中间部分,向应用服务器开放API接口,向各种协议的设备提供API对接。为了提供更加丰富的设备管理能力,物联网平台需要理解接入设备具备的能力以及设备上报数据的消息格式,因此,用户需要在控制台上完成产品模型和编解码插件的开发。基于IoT平台去实现一个物联网解决方案时,需完成的详细操作如下表所示: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651195992473808566.png) 开通设备接入服务后,使用设备接入服务的完整流程主要分为产品开发、应用侧开发、设备侧开发和日常管理。 **产品开发**:开发者在进行设备接入前,基于控制台进行相应的开发工作,包括创建产品、创建设备、在线开发产品模型、在线开发插件、在线调试、自助测试和发布产品。 **设备侧开发**:设备侧可以通过集成SDK、模组或者原生协议接入物联网平台。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196014489389532.png) **应用侧开发**:通过API的形式对外开放物联网平台丰富的设备管理能力,应用开发人员基于API接口开发所需的行业应用,如智慧城市、智慧园区、智慧工业、车联网等行业应用,满足不同行业的需求。 日常管理:真实设备接入后,基于控制台或者API接口,进行日常的设备管理。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196033909397518.png) # 产品模型介绍 产品模型又称Profile,用于定义一款接入设备所具备的属性(如颜色、大小、采集的数据、可识别的指令或者设备上报的事件等信息),然后通过厂家、设备类型和设备型号,唯一标识一款设备,便于平台识别。产品模型可以在设备接入控制台进行无码化开发。 产品模型是用来描述一款设备“是什么”、“能做什么”以及“如何控制该设备”的文件。开发者通过定义产品模型,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。当定义完一款产品模型后,在进行注册设备时,就可以使用在控制台上定义的产品模型。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196061747233784.png) 在华为云物联网平台中,产品模型是设备接入的关键内容,里面包含了这个设备所提供的能力与服务,同时还包含了设备上下行的数据格式。例如,在设备上报数据到平台时,平台会根据上报数据的关键字进行产品模型匹配,并将数据格式与匹配上的产品模型文件进行校验,只有匹配成功的数据才会在平台上保存。如果匹配不成功,物联网平台会将上报的数据作为非法数据进行抛弃。 **产品信息**:描述一款设备的基本信息,包括厂商ID、厂商名称、设备类型、协议类型。例如:水表的厂商名称为“HZYB”,厂商ID为“TestUtf8ManuId”,设备类型为“WaterMeter”,协议类型为“CoAP”。 **服务能力**:描述设备具备的业务能力。将设备业务能力拆分成若干个服务后,再定义每个服务具备的属性、命令以及命令的参数。以水表为例,水表具有多种能力,如上报水流、告警、电量、连接等各种数据,并且能够接受服务器下发的各种命令。产品模型文件在描述水表的能力时,可以将水表的能力划分五个服务,每个服务都需要定义各自的上报属性或命令。 **产品模型案例:智能水表** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196111245341758.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196120523811661.png) 华为云物联网平台提供了多种定义产品模型的方法,开发者可以根据自己需求,选择对应的方法定义产品模型: - 导入库模型(平台预置产品模型) - 上传模型文件(离线开发) - Excel导入 - 自定义功能(在线开发) # 设备编解码插件 ## 编解码插件简介 什么是编解码插件? 编解码插件能够将终端上报的数据(二进制格式)解码为应用服务器所能“阅读”的数据(JSON格式),将服务器端下行命令数据(JSON格式)编码为终端设备所能“理解执行”的数据(二进制格式)。 为什么要使用编解码插件? NB-IoT设备采用二进制格式或者tlv格式数据。 NB-IoT设备和IoT平台之间采用的是CoAP协议通讯,CoAP消息的payload为应用层协议数据,应用层数据的格式由设备自行定义。鉴于NB-IoT设备一般对省电要求较高,所以应用层数据一般不采用JSON格式数据。 应用服务器端并不理解二进制格式或者tlv格式数据。 如何开发编解码插件? 编解码插件的开发手段有图形化开发、离线开发和脚本化开发三种,由于插件离线开发较为复杂,且耗时比较长,推荐使用图形化开发编解码插件。 图形化开发是指在设备接入控制台,通过可视化的方式快速开发一款产品的编解码插件。 离线开发是指使用编解码插件的Java代码Demo进行二次开发,实现编解码功能、完成插件打包和质检等。 脚本化开发是指使用JavaScript脚本实现编解码的功能。 华为云物联网平台图形化编解码插件开发采用了将原有的插件开发代码进行抽象封装技术,开发者无需了解java编程语言,只需在开发界面将设备码流的格式完成定义,并将码流与profile中的属性关系通过拖拽的方式完成映射,点击部署后Portal会根据开发者的设计自动生成插件并打包部署到物联网平台。 对于设备发来的上行消息,首先解析CoAP报文得到应用层数据,然后调用设备厂商提供的插件解码,从而将消息发送到应用平台;对于来自应用平台的下行消息,需要调用设备厂商提供的编解码插件,组装CoAP消息发送到设备,如下图所示。此外编解码插件还负责对平台下发命令和对上报数据的响应进行编码。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196167669498388.png) **数据上报** 消息处理流程包括数据上报处理流程和命令下发处理流程,数据上报处理流程如下图所示。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196181000651919.png) 当设备和物联网平台完成对接后,一旦设备上电,设备基于在设备上定义的业务逻辑进行数据采集和上报,可以是基于周期或者事件触发。设备可通过以下方式发送数据到物联网平台: **设备消息上报**:设备可以通过消息上报接口将设备的自定义数据上报到平台,平台对设备上报的消息不进行解析和存储,通过数据转发规则转发到华为云其他云服务上进行存储和处理,然后通过其他云服务的控制台或者API接口进行进一步的数据处理。 **设备原始数据(二进制)上报**:设备可以通过二进制上报接口上报设备的原始码流,平台通过编解码插件将设备原始数据解析为产品模型定义的JSON格式,解析后的数据上报给设备接入服务进行相关业务处理。 **设备属性上报**:设备通过属性上报接口,将产品模型中定义的属性数据上报给平台,平台解析后的数据上报给设备接入服务进行相关业务处理。 **网关批量属性上报**:网关设备将批量设备的数据一次性上报到平台,平台解析后的数据上报给设备接入服务进行相关业务处理。 在数据上报处理流程中,有两处需要用到编解码插件。 1. 将设备上报的二进制码流的数据解码成JSON格式的数据,发送给应用服务器。 2. 将应用服务器响应的JSON格式数据编码成二进制码流格式的数据,下发给设备。 **命令下发** 命令下发是指平台将命令下发到设备,设备响应并执行命令,从而达到平台到设备远程控制的效果。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196226205730612.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196238080734258.png) 这里分别列举了LwM2M/CoAP和MQTT这两种协议的立即下发和缓存下发的流程,如图所示。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196249676371979.png) 应用下发命令到物联网平台,平台会根据对应的产品信息找到对应的编解码插件,对命令请求进行编码,将命令下发给设备;下发命令成功或失败,会根据下发结果更新命令状态,若设备对命令做出了响应,会将命令状态更新为“执行成功”或“执行失败”。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196258122705049.png) 由于使用MQTT是不需要编解码插件的,直接使用透传的形式,当命令立即下发时,应用下发命令到物联网平台,平台将命令下发至设备,返回执行结果,消息执行结果通知。 应用缓存下发命令,当设备不在线时,将命令写入缓存队列,更新消息状态,直到设备上报数据,设备上线,订阅消息下发Topic,消息下发,更新消息状态。 设备编解码插件示例: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/29/1651196268445426714.png)
  • [问题求助] 没问题了,不知道咋删
    没问题了,不知道咋删
  • [问题求助] 小熊派IOT示例代码问题以及please wait for system ini
    我下载了小熊派IOT资料,在使用示例代码(智慧农业:【KEIL+LiteOSStudio】BearPi_LiteOS_E53_IA1)在LiteOS Studio上编译并烧录后,小熊派一直显示please wait for system ini;我想知道这是为什么;除此之外,我并不是很清楚示例代码中与“智慧农业”相关的核心部分在哪里,实际上我参考其他几个示例代码,(可能是因为粗心)并没有发现什么区别,我想知道是示例代码版本问题吗?如图,希望有人能指出示例代码中与智慧农业相关的主要功能在哪里
  • [问题求助] [问题求助] 小熊派NB-IoT智慧农业
    HCS环境,IoTDA云服务设备要求必须进行加密连接,请问智慧农业代码哪个地方可以进行这个密钥配置?
  • [赛事资讯] 2022年全国大学生物联网设计竞赛(华为杯)——华为提供丰富技术参考
    为更好地支持2022年全国大学生物联网设计竞赛(华为杯)华为赛题参赛团队进行作品开发,华为特提供如下技术参考链接:(1)华为物联网相关技术参考:华为云IoT全栈云服务,帮助开发者快速完成设备联网以及行业应用集成。 https://developer.huaweicloud.com/techfield/iot.htmlIoT开发者社区:https://developer.huaweicloud.com/techfield/iot.html华为云物联网体验馆(需实名认证):https://console.huaweicloud.com/iotstage设备接入服务(IoTDA):https://support.huaweicloud.com/iothub/index.html数据分析服务(IoTA):https://support.huaweicloud.com/productdesc-iotanalytics/iota_01_00100.htmlLiteOS+HarmonyOS:https://developer.huawei.com/consumer/cn/forum/home(2)   华为在线学习课程:物联网:https://education.huaweicloud.com/programs/16cfbeb8-40dd-48b3-a490-e884f8bd2814/about?isAuth=0&cfrom=hwc(3)  AI开发平台社区ModelArts:https://developer.huaweicloud.com/techfield/ai.html(4)   华为云物联网技术论坛:https://bbs.huaweicloud.com/forum/forum-597-1.html(5)   5G+Xhttps://developer.huaweicloud.com/techfield/5g.html(6)   HarmonyOS 开发工具下载及开发文档获取:https://www.harmonyos.com/cn/develop(7)   HarmonyOS开发者资源:     a)        HarmonyOS官网:https://www.harmonyos.com/     b)    开发工具(应用开发):    https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta    c)     开发文档(应用开发):   https://developer.harmonyos.com/cn/docs/documentation/doc-guides/document-outline-0000001064589184    d)    开发工具(设备开发):https://device.harmonyos.com/cn/develop/ide/    e)     设备开发文档:   https://device.harmonyos.com/cn/docs/documentation/guide/device-camera-control-overview-0000001055101239    f)      课程介绍及课程资源获取:   Gitee代码获取:https://gitee.com/openharmony  CodeLabs案例:https://developer.harmonyos.com/cn/develop/codelabs    g)     移动应用开发课程:   https://ilearningx.huawei.com/portal/courses/HuaweiX+EBGTD9042/about    h)     HarmonyOS官方课程:  https://developer.huawei.com/consumer/cn/training/result?type1=101603094347460003&type2=101604560049942008    i)      2021 HDC技术演讲视频:  https://developer.huawei.com/consumer/cn/training/result? type1=101603094347460003&type2=101619524724876547&ty pe3=101619524774191119    j)      开发者社区及问题反馈: https://developer.harmonyos.com/cn/support#connect-us
  • [赛事资讯] 2022年物联网竞赛——华为提供丰富资源
    为更好地支持2022年全国大学生物联网设计竞赛(华为杯)华为赛题参赛团队进行作品开发,华为特提供如下硬件资源支持:兼容华为云 IoT 平台的开发板(前350个报名团队可获得),5G模组/开发板,(参赛团队可根据自己的需求酌情向大赛合作伙伴广和通申请)或基于5G的网络环境(数量有限,先到先得,发完为止);(1)报名鸿蒙赛道可领取海思3516或海思3861开发板,在您组队并报名成功后, 工作人员会在一周内通过电话或邮件等方式请您提供收件信息,每个参赛团队限队长领取哦。(2)报名华为云或5G赛道团队可NBIOT或5G开发板, 请添加QQ群683837071,根据群公告指引申请, 工作人员沟通审核通过后发放。【模组资源】 扫码添加华为IoT小助手(回复“物联网”)进入社群参与专家实时在线答疑。