• [技术干货] 【趁热打“帖”】喜新厌旧升级IoT Studio v0.3.4.0曲折历程
    记录一下学习过程中的挫折,给后来者一个提醒在IoT大赛之前,大约8月20号,因为要调试NB,指导老师给了一个帮助文档,有通讯模组检查工具,用的是v0.3.4.0,毫不由于安装了。但是,但是,自动把v0.3.0.0版卸载了,而且对初学者看IoT Studio的工程界面都非常陌生,不但编译需要的工程路径,还有烧录配置,吓得我赶紧换回了老板。还是但是,人总是喜新厌旧,在群里 @连 同学最终配置好了他的新环境,我安装他的步骤还是遇到了不同的问题。本帖就写给针对和我一样的同学。老版本:LiteOs Studio v0.3.0.0,安装就是一个exe+stlink驱动,看起来也简单。打开工程需要用导入GCC,再配置其他,虽然每次都麻烦几下,但也熟悉了新版本:IoT Studio v0.3.4.0 的安装是一个套件,一个exe外还要下载组件包developTools.zip 里面包含 stlink和jlink驱动,还有openSourceTools下面openocd编译工具,这个编译和以前就不一样了。其中的原理我就不清楚了,只能讲讲使用层面。其中带了一个bat文件安装也简单有一点要记住,bat文件把openocd安装到了C:\Users\Bruce\openSourceTools\openocd\bin-x64\openocd.exe ,但是,还是但是,360,腾讯管家这类的磁盘清理工具,会当垃圾给清理掉。新手特别要注意,IoT Studio对编译环境配置,它能自己找的安装目录,但是你的工程配置过的话,它就默认你工程配置了。因为安装目录比较长,没必要记。注意事项:1、第一次打开从别的地方拷贝来的工程代码前,一定要清理掉特殊配置内容清空目录.icode和目录targets\STM32L431_BearPi\GCC\build2、配置工程提示SDK没有,编译输出的调试文件没有也是正常3、这次BearPi已经被当作一个成熟的目标名称了因为都删除了配置,会提示不是LiteOS工程,接下来显示下面的界面4、烧录方式没有了ST-Link选项,老师说华为没有ST Link的授权。这里选择OpenOCD其实也是通过ST-Link烧录。里面的参数根据板子类型自动填充正确了5、这里的编译器,因为清除了所有配置,studio识别了opensourceTools的目录,我之前的错误是直接导入或者打开了LiteOs Studio的工程,里面的编译目录是v0.3.0.0的,也能编译成功,但是烧录后程序总是不正常,比如通信数据发不了,黑屏等。6、相关安装资料也放一份链接:https://pan.baidu.com/s/1TQfqpSmn6XjUDnlqryT_2w 提取码:5qdg 
  • [交流分享] IoT:物联网卡
    电信是按命令下发次数收费移动是按流量收费某宝搜索NB网卡即可购买
  • [基础介绍] NB-IoT/eMTC/LoRa对比
    如今,即便是不懂技术的人都知道IoT具有非常可观的前景,而物联网产业的发展并非一帆风顺,其中制约行业发展的一大关键技术就是通讯技术,一因为物联网要实现的就是物体间的信息交换和通信,没有通讯技术,物联网就是空谈。在物联网产业的发展过程中,逐渐形成了NB-IoT、eMTC、LoRa三大通讯技术的三足鼎立,每种技术各有千秋,在各自的应用场景上有独特的优势。IoT是碎片化的,这就要求协议间的兼容与互通,虽然三种技术想互存在竞争,但是未来NB-IoT、eMTC、LoRa也是需要想互融合的,因为最好的技术一定是包容的。一、NB-IoT这是一个新兴的技术,中文叫窄带物联网,从名字上就知道非常适合物联网场景。在带宽和成本上的优势明显,NB-IoT构建于蜂窝网络,只消耗大约180KHz的带宽,可直接部署UMTS网络、LTE网络和GSM网络,很容易实现网络的升级。同时,相对于4G网络,它支持的待机时间长,连接高效,而且联网设备的电池寿命很高。NB-IoT的优势应用场景正是因为NB-IoT技术成本低、功耗低,所以在定位、水表和停车等领域应用很广泛,如共享单车里就有内置NB-IoT模组,实现物联网通讯。智能零售,智能家居,智能安防和智慧城市等都是其未来潜在的应用场景。NB-IoT虽然很好,但在国内的发展现状是缺乏一个统一的开放产业平台,同时标准、芯片、网络和相关的应用层厂商以中小企业为主,还需要壮大自身联盟的实力,打造强大的生态。二、eMTC虽然NB-IoT能满足物联网很多的应用场景,但是在可靠低时延等场景里面,eMTC才是最优解。eMTC是由LTE协议演进而来的,也就是中国移动的通讯协议。移动为了降低成本,对LTE协议进行优化,让用户设备支持1.4MHz的射频和基带带宽,直接接入LTE网络,因为从持久发展上,物联网成本是必须考虑的事情。eMTC更适合这些场景正是由于频率低和协议简单,eMTC芯片的成本可能比NB-IoT芯片的成本更低,eMTC的移动性更好,这就让它在动态物联网场景中优势是好于NB-IoT的。eMTC在智能物流的应用很广泛,京东的无人送货车上就有eMTC芯片。现在很多的智能穿戴产品上有检测和定位功能,也有eMTC技术的身影。未来,可能在智能公交、智能电梯等场景也能看到eMTC技术。eMTC与NB-IoT技术实现物联网是完全不同的两种思路,eMTC终端工作带宽高于NB-IoT终端五倍以上,eMTC技术能够提供性价比很高的终端通讯解决方案,这比B-IoT技术在成本上的优势还要好。三、LPWAN(LoRa)熟悉LPWAN通信技术的都知道,LPWAN通信是一种低功率广域网络,是一种可以用低比特率进行长距离通讯的无线网络技术。对于很多低电量需求、低比特率等场景,物联网LPWAN技术就是非常不错的选择。LPWAN技术是可以用来建立一个私有无线感测网络,可以利用第三方提供的服务和基础设施,这使得可以直接使用公共的感测器,节省了很多硬件成本,对网络部署方而言很有诱惑力。目前最火的LPWAN技术就是LoRa,LoRa有个中文名叫做远距离无线电,它的一大特点是在同样功耗下比其它无线方式传播的距离更远,实现了低功耗和远距离的统一,是一种前景广阔的通讯技术。LoRa网络主要由四部分组成,它们是基站(也可以是网关)、服务器、LoRa终端和物联网云。LoRa的特点是应用端和服务器端数据双向传递。LoRa的优势是超低功耗和多信道数据传输,系统数据容量增加了,网关和终端系统能支持测距和定位,对于位置敏感的应用简直就是量身定做。据悉,阿里曾表示,要在未来5年内连接100亿台设备。LoRa在物流、健康医疗、智能环境、运输等领域的优势很明显,这些恰恰是阿里巴巴布局的领域,也难怪要重金布局。物联网已经不只是一种想象的场景,它已经成为我们生活的一部分,人们通过定位技术监控,通过通讯技术联网,通过物联网减少交通事故等,这些都离不开物联网通讯技术的支持,NB-IoT、eMTC、LoRa技术各有千秋,随着物联网产业的发展,三者必将发挥更大的作用。
  • [问题求助] IOT介绍
          物联网(The Internet of Things,简称IOT)是指通过  各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、  连接、互动的物体或过程,采集其声、光、热、电、力学、化   学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。物联网概念最早出现于比尔盖茨1995年《未来之路》一书,在《未来之路》中,比尔盖茨已经提及物联网概念,只是当时受限于无线网络、硬件及传感设备的发展,并未引起世人的重视。1998年,美国麻省理工学院创造性地提出了当时被称作EPC系统的“物联网”的构想 。1999年,美国Auto-ID首先提出“物联网”的概念,主要是建立在物品编码、RFID技术和互联网的基础上。过去在中国,物联网被称之为传感网。中科院早在1999年就启动了传感网的研究,并已取得了一些科研成果,建立了一些适用的传感网。同年,在美国召开的移动计算和网络国际会议提出了,“传感网是下一个世纪人类面临的又一个发展机遇”[4] 。2003年,美国《技术评论》提出传感网络技术将是未来改变人们生活的十大技术之首 。2005年11月17日,在突尼斯举行的信息社会世界峰会(WSIS)上,国际电信联盟(ITU)发布了《ITU互联网报告2005:物联网》,正式提出了“物联网”的概念。报告指出,无所不在的“物联网”通信时代即将来临,世界上所有的物体从轮胎到牙刷、从房屋到纸巾都可以通过因特网主动进行交换。射频识别技术(RFID)、传感器技术、纳米技术、智能嵌入技术将到更加广泛的应用 。关键技术射频识别技术谈到物联网,就不得不提到物联网发展中备受关注的射频识别技术(Radio Frequency Identification,简称RFID)。RFID是一种简单的无线系统,由一个询问器(或阅读器)和很多应答器(或标签)组成。标签由耦合元件及芯片组成,每个标签具有唯扩展词条一的电子编码,附着在物体上标识目标对象,它通过天线将射频信息传递给阅读器,阅读器就是读取信息的设备。RFID技术让物品能够“开口说话”。这就赋予了物联网一个特性即可跟踪性。就是说人们可以随时掌握物品的准确位置及其周边环境。传感网MEMS是微机电系统( Micro - Electro - Mechanical Systems)的英文缩写。它是由微传感器、微执行器、信号处理和控制电路、通讯接口和电源等部件组成的一体化的微型器件系统。其目标是把信息的获取、处理和执行集成在一起,组成具有多功能的微型系统,集成于大尺寸系统中,从而大幅度地提高系统的自动化、智能化和可靠性水平。它是比较通用的传感器。因为MEMS,赋予了普通物体新的生命,它们有了属于自己的数据传输通路、有了存储功能、操作系统和专门的应用程序,从而形成一个庞大的传感网。这让物联网能够通过物品来实现对人的监控与保护。 遇到酒后驾车的情况,如果在汽车和汽车点火钥匙上都植入微型感应器,那么当喝了酒的司机掏出汽车钥匙时,钥匙能透过气味感应器察觉到一股酒气,就通过无线信号立即通知汽车 “暂停发动”,汽车便会处于休息状态。同时“命令”司机的手 机给他的亲朋好友发短信,告知司机所在位置,提醒亲友尽快来处理。不仅如此,未来衣服可以“告诉”洗衣机放多少水和洗衣粉最经济;文件夹会“检查”我们忘带了什么重要文件;食品蔬菜的标签会向顾客的手机介绍“自己”是否真正“绿色安全”。这就是物联网世界中被“物”化的结果M2M系统框架M2M是Machine-to-Machine/Man的简称,是一种以机器终端智能交互为核心的、网络化的应用与服务。它将使对象实现智能化的控制。M2M技术涉及5个重要的技术部分:机器、M2M硬件、通信网络、中间件、应用。基于云计算平台和智能网络,可以依据传感器网络获取的数据进行决策,改变对象的行为进行控制和反馈。拿智能停车场来说,当该车辆驶入或离开天线通信区时,天线以微波通讯的方式与电子识别卡进行双向数据交换,从电子车卡上读取车辆的相关信息,在司机卡上读取司机的相关信息,自动识别电子车卡和司机卡,并判断车卡是否有效和司机卡的合法性。云计算计算能力也可以作为一种商品进行流通,就像煤气、水、电一样,取用方便、费用低廉,以至于用户无需自己配备。与电力是通过电网传输不同,计算能力是通过各种有线、无线网络传输的。因此,云计算的一个核心理念就是通过不断提高“云”的处理能力,不断减少用户终端的处理负担,最终使其简化成一个单纯的输入输出设备,并能按需享受“云”强大的计算处理能力。物联网感知层获取大量数据信息,在经过网络层传输以后,放到一个标准平台上,再利用高性能的云计算对其进行处理,赋予这些数据智能,才能最终转换成对终端用户有用的信息。应用物联网的应用领域涉及到方方面面,在工业、农业、环境、交通、物流、安保等基础设施领域的应用,有效的推动了这些方面的智能化发展,使得有限的资源更加合理的使用分配,从而提高了行业效率、效益。 在家居、医疗健康、教育、金融与服务业、旅游业等与生活息息相关的领域的应用,从服务范围、服务方式到服务的质量等方面都有了极大的改进,大大的提高了人们的生活质量; 在涉及国防军事领域方面,虽然还处在研究探索阶段,但物联网应用带来的影响也不可小觑,大到卫星、导弹、飞机、潜艇等装备系统,小到单兵作战装备,物联网技术的嵌入有效提升了军事智能化、信息化、精准化,极大提升了军事战斗力,是未来军事变革的关键。
  • [技术干货] NB-iot简介
    一、NB-IoT简介NB-IOT(NarrowBand Internet of Things,窄带IoT)是一种基于蜂窝的窄带物联网技术,支持低功耗设备在广域网的蜂窝数据连接。它是低功耗广域网(Low Power Wide Area Network,简称LPWA)技术的一种标准,并由3GPP负责其标准化制定工作。NB-IoT主要应用于低吞吐量、能容忍较大时延且低移动性的场景,如智能电表、遥感器和智能建筑等。NB-IoT可直接部署于已有的GSM或LTE网络中,即可复用现有基站以降低部署成本,实现平滑升级。NB-IoT是可运营的电信网络,这是NB-IoT区别于LoRa、SigFox等技术的关键。但需要说明的是,NB-IoT是一种与LTE不同的RAT技术,它并不支持后向兼容。但NB-IoT可与LTE共存于同一网络中,彼此之间在时频位置上区分开。NB-IoT允许UE通过E-UTRA接入网络服务,但其信道带宽被限制为180kHz。NB-IoT的设计目标包括:覆盖增强:与GSM相比,提升20dB的覆盖能力;超低功耗:5Wh电池可供UE使用10年(真实的电池寿命取决于应用场景和覆盖需求);大量的低吞吐量UE接入:单扇区可支持50000个连接;时延不敏感:上行时延可达到10秒;低速:支持单用户上下行至少160 bit/s;低成本:单模组成本小于5美元。 NB-IoT的主要特性包括:二、NB-IoT关键技术NB-IoT相比GSM提升了20dB的增益,其MCL(Maximum Coupling Loss,最大耦合路损)达到164dB,以期望能覆盖到地下车库、地下室以及地下管道等信号难以到达的地方。为了支持广/深覆盖,其关键技术点包括:关键技术点1:高功率谱密度,上行功率谱密度增强17dB;关键技术点2:重复传输+编码带来6~16dB的增益。NB-IoT为实现覆盖增强采用了重复传输(可达200次)和低阶调制(只支持BPSK和QPSK)等机制(但这样做会降低吞吐量,需要在二者之间做权衡);关键技术点3:通过引入单子载波(single-tone)NPUSCH传输和π/2 BPSK调制以保持接近0dB的PAPR,从而减少功率放大器(Power Amplifier,简称PA)的回退,增强了上行覆盖。 大家可以参考资料《NB-IoT和eMTC覆盖能力浅析》来了解NB-IoT的覆盖能力以及达到特定覆盖能力所需的重复次数。 为了降低功耗,NB-IoT在设计时考虑了多种关键技术:关键技术1:芯片复杂度降低,工作电流小;关键技术2:空口信令简化,减小单次数据传输功耗。设备消耗的能量与数据量或速率有关,单位时间内发出的数据包大小决定了功耗的大小。通过减少不必要的信令来达到省电目的;关键技术3:基于覆盖等级的控制和接入,减少单次数据传输时间;关键技术4:PSM(节能模式),终端功耗仅15uW;在PSM模式下,终端仍旧注册在网,但信令不可达,从而使终端更长时间驻留在深睡眠以达到省电的目的。在PSM状态,终端不接收寻呼信息;关键技术5:eDRX(扩展DRX),减少终端监听网络的频率;eDRX省电技术进一步延长终端在空闲态和连接态下的睡眠周期,减少接收单元不必要的启动。并且相对于PSM,大幅度提升了下行可达性;关键技术6:使用长周期TAU,减少终端发送位置更新的次数;关键技术7:移动性管理方面,只支持IDLE态下的小区选择和重选,而不支持连接态下的handover,包括相关测量、测量报告、切换等,从而减少了相关开销。 低速率、低功耗、低带宽带来的是低成本优势。低成本芯片关键技术主要包括: 关键技术1:180kHz窄带系统,基带复杂度低,不需要复杂的均衡算法;关键技术2:小带宽带来的低采样率,缓存Flash/RAM要求小,DSP配置低;关键技术3:使用单天线、半双工FDD传输,RF成本低;关键技术4:峰均比低,功放效率高,23dBm发射功率可支持单片SoC内置功放PA,进一步降低成本;关键技术5:协议栈简化(500kByte),减少片内FLASH/RAM。 大容量连接用户:NB-IoT比2G/3G/4G有50~100倍的上行容量提升,在同一基站的情况下,NB-IoT可以比现有无线技术提供50~100倍的接入数。200KHz频率下,根据仿真测试数据,单小区可支持5万个NB-IoT终端接入。其关键技术点包括:关键技术1:窄带技术:上行等效功率(36信道*23dBm)提升,大大提升信道容量;关键技术2:减小空口信令开销,提升频谱效率;关键技术3:基站优化。包括独立的准入拥塞控制和终端上下文信息存储;关键技术4:核心网优化。包括终端上下文存储以及下行数据缓存。NB-IoT不支持绝大多数的LTE-A特性,如载波聚合(Carrier Aggregation)、双连接(Dual Connectivity)和D2D(Device to Device)服务等。由于NB-IoT不用于时延敏感的数据包传输,因此没有QoS的概念。NB-IoT不支持所有要求保证比特率(GBR)的服务,如实时IMS等。NB-IoT不支持VoLTE,因为VoLTE对时延要求高,并需要可靠的QoS保障。由于不支持与其它无线技术的交互,因此NB-IoT也不支持与其相关的特性。如:不支持LTE-WLAN互通,不支持用于设备内共存(In-device coexistence)的干扰避免以及不支持用于监视信道质量的测量。除了上面介绍的特性外,NB-IoT还不支持以下特性:-      封闭用户组(Closed Subscriber Group,CSG);-      中继节点(Relay Node,RN);-      ACB(Access Class Barring)、EAB(Extended Access Barring)、SSAC(Service Specific Access Control)和ACDC(Application specific Congestion control for Data Communication);-      MBMS(Multimedia Broadcast Multicast Service);-      自配置和自优化(Self-configuration and self-optimisation);-      用于网络性能优化的测量记录和上报(Measurement logging and reporting for network performance optimisation);-      公共告警系统(Public warning systems),如:CMAS、ETWS和PWS;-      实时服务(包括紧急呼叫);-      CS服务和CS回退;-      网络辅助的干扰消除/抑制(Network-assisted interference cancellation/suppression)
  • [基础介绍] IoT介绍
    IoT(Internetof Things)是物联网的简称,简单地说,就是物物互联的网络。其基础依然是互联网,但网络连接扩展到任意物体之间。物联网通过使物理上独立的物体实现网络连接功能,来进行信息交换和通信,以实现对物体的识别、监控、定位和控制等功能。IoT可广泛地应用于智能电表、精准农耕、工业自动化、智能建筑、POS机、环境监控和远程医疗等场景。以智能电表这类业务为例。这些UE的位置通常是固定不动的,因此不存在切换(handover)的需求。UE与基站之间的通信不会很频繁,而且每次传输的只是很小的数据量,这些数据传输对时延也不敏感。但与传统的LTE设备相比,单小区需要接入的UE数量可能高了几个数量级。如果使用传统的LTE技术,会给现有的网络带来很大的负担。与此同时,物联网设备经常安装在没有电源的地方,因此可能需要完全依靠电池来供电,并且换电池的成本非常高昂。在某些情况下,电池的寿命甚至决定了整个设备的寿命。因此,电池使用寿命的优化对物联网设备来说非常重要。另一方面,物联网设备的覆盖条件可能很差,例如位于地下室,因此需要显著地提高(室内)覆盖才能满足物联网的需求。物联网设备的需求量通常很大,因此需要将其成本控制在较低的范围内。NB-IoT的目标是将每个模块的价格控制在小于5美元的范围。物联网技术主要包括应用于局域网的物联网技术,包括WiFi、Zigbee或Bluetooth(蓝牙)等,以及应用于广域网的物联网技术,包括Sigfox、LoRa和蜂窝IoT等。物联网的快速发展,对无线通信技术提出了更高的要求,主要是为低速率、低功耗、低成本、广覆盖和海量物联网设备连接而设计的LPWAN(LowPower Wide Area Network)技术应运而生。LPWAN主要的技术标准包括非3GPP主导的LoRa和SigFox,以及3GPP主导的蜂窝IoT,包括eMTC和NB-IoT等。本系列文章主要关注广域网的蜂窝IoT技术NB-IoT的实现。后续我们还将重点比较LoRa和NB-IoT这两个最具发展前景的低功耗广域网技术。
  • [交流分享] 华为在物联网上的进军
    物联网本质上是借助ICT技术对传统产业进行重构,通过物理世界和数字世界的融合,缩短业务流程、提升生产效率,为客户提供更好的产品和服务,释放出产业创新的巨大潜能。经过近几年技术与市场的培育,物联网即将进入快速发展期,给ICT行业带来了广阔的市场空间,预计2025年,物联网连接数将达近1000亿。华为在物联网领域面向行业及运营商客户,主要提供:开源物联网操作系统HuaweiLiteOS,IoT通信模组和芯片,eLTE/NB-IoT/5G无线接入网络,企业物联网关及智慧家庭网关,IoT联接管理平台,以及IoT网络集成服务。值得注意的是:在端到端IoT行业解决方案中,华为将不向客户提供IoT应用,不开发也不转售行业终端设备,更不做IoT行业解决方案的端到端集成。因此,华为积极推动物联网生态圈的建设,和合作伙伴一起将物联网解决方案与行业深度融合,有力推动物联网产业的商用化进程。在终端侧,HuaweiLiteOS可帮助实现智能化的物联网终端。HuaweiLiteOS是一种轻量级的开源物联网操作系统、智能硬件开发平台,具有强大的互联互通能力,可广泛应用于智能家居、可穿戴设备、车联网、制造业等领域,使物联网终端开发更简单、互联更加容易、业务更加智能、体验更加顺畅、数据更加安全,可使任何传感终端很容易地接入物联网平台。华为IoT解决方案可同时支持有线和无线两种接入方式,可帮助部署分片化的泛在网络,满足海量物联需求,适应多样化的应用场景。如:在智能抄表场景中,超长待机对智能电表非常重要;而视频监控、无人驾驶等场景更需要的是移动宽带和超低时延,多种接入方式可实现不同场景的不同需求。 华为轮值CEO胡厚崑说道:我们正进入物联网(IoT)时代,这对于整个通信产业来说是一个巨大的机会,大规模物联网的需求已经产生,其联接数量将远远超过人与人的联接数量。从个人穿戴设备,到智能家居市场,从智慧城市到物流管理等众多领域,全流程的信息监控与采集,将实现各领域的数字化升级,物联网将引发整个社会的革命性变化。任正非说:“若要让大家投票表决物联网标准,他们会投给华为,高通在物联网领域研究不深,华为进行了大量研究。”Gartner分析师MillyXiang指出,从前端芯片到操作系统、网络、边界网关(bordergateway)、平台、安全、数据分析来看,华为拥有全面性能力。华为积极提供物联网相关标准,但是目前还没有哪一家公司有办法树立实质标准。中国又是制造业大国,华为有极大的潜在市场,并有机会设立获得全球采纳的业界标准。中国政府估计,2018年工业物联网的市值达3,000亿人民币,未来每年将成长25%。业内人士表示,华为想透过制定业界标准主导全球物联网市场。智能工厂是工业4.0的核心组成部分,包括网络化的生产设施及智能化的生产系统。它是一种新的生产模式,融合了智能设计、智能制造、智能装备、商业智能、运营智能等全新的ICT技术。在工业4.0时代,建设智能工厂的关键在于智能可靠的传感器、海量高速的数据存储、细致深刻的大数据分析洞察、安全稳定的工业通信网络以及灵巧的智能机器人。华为智能工厂解决之道主要是通过深度应用ICT技术,深化与应用厂商/工业巨头合作,构筑产业链优势,实现工厂智能化。主要内容包括:LiteOS和LTE-M助力制造设备IP化、智能化;基于LTE打造有线无线融合一体的泛在网络;SD-DC²架构满足智能工厂大数据运营管理需求。其中,将制造设备IP化、智能化,是打造工业4.0智能工厂的关键基础,这类制造设备是先进制造技术、信息技术和智能技术的深度结合。华为认为,工业4.0是一个逐步演进的过程,制造领域将逐步开放,从完全封闭系统迈向半封闭系统,再到完全开放系统。智能工厂需求强劲,增长迅速,目前仍处于早期阶段,工业4.0时代,对于智能工厂的投入将远超过一般工业领域,且项目盈利能力也将显著提高,并且资本投入越大、投资的边际回报率越高。智能工厂将大幅节省劳动成本、提高生产效率、提升客户体验,增强制造厂商的竞争优势,较早适应工业4.0改造的产业和企业将最先受益。
  • [问题求助] 关于华为demo Iot命令下发的问题
    怎么解决这个问题
  • [技术干货] 华为IoT Studio产品介绍
    作为一个开发者,每天都离不开IDE的帮助。而一个好用的集成开发环境,能够大大的提高开发效率。今天就要给大家推荐一个简单易用的物联网端侧IDE——华为IoT Studio。1       什么是IoT Studio华为IoT Studio是支持LiteOS嵌入式系统软件开发的工具,支持C、C++、汇编等多种开发语言,为您提供开发、构建、调试的一站式全流程开发体验。2       产品亮点功能丰富的SDK示例工程•        IoT Studio提供了丰富的SDK示例工程,用户可基于示例工程快速创建可运行的工程原型。•        集成10分钟快速上云工程,用户可以基于智慧路灯案例体验10分钟快速上云。•        支持ARM Cortex-M、Cortex-A、RISC-V等多种内核芯片。•        兼容多种硬件开发板平台。 基于云端模型构建IoT Studio可根据云端设备模型的Profile文件自动生成C语言代码框架,确保程序能够正常编译调试,提升上云对接效率。支持LWM2M/CoAP等协议。 SDK图形化配置•        图形化配置SDK模块功能•        自动识别并管理模块间依赖关系•        模块配置后一键编译运行 3       产品优势3.1 简单易用IoT Studio支持一键安装,安装步骤简单。安装包小,软件占用资源少,配置也十分简单。支持C&C++、汇编、HTML以及JavaScript等等各种语言,用户能够快速上手操作。3.2 高效的代码调试功能断点控制•        支持普通断点和条件断点•        C文件和.s汇编文件均可添加断点•        兼容软件断点反汇编调试•        C源码和反汇编自动高亮联动•        支持反汇编断点•        可针对反汇编文件单步、跳入、跳出 3.3 更加智能的编码辅助•        智能提示/自动补齐 符号智能联想,按符号类型快速、准确联想,补齐语法关键字和语法结构•        符号定义引用跳转以及符号列表查看•        函数调用树查看 以图形的方式展示•        强大的搜索功能 帮助开发者快速找到所需要的文件、字符串、函数等•        自动排版/格式对齐 使代码编辑界面干净整洁,目录结构一目了然 4       产品快速定位问题的能力通信模组检测工具IoT Studio在与OC云端连通使用时,用户使用通信模组检测工具可以快速定位模组与云端连通性问题,自动化检测NB-IoT模组硬件与云端通信状态,准确定位问题发生阶段并提供解决建议。提高开发效率。 Watchpoint监视点•        支持添加读、写变量监视•        支持对内存地址读写监视•        监视点触发时自动暂停在对应代码行 查看内存和变量•        查看实时的内存地址数据•        支持导出内存数据(文本和二进制格式)•        支持添加变量和表达式监视•        支持调试过程中修改内存和变量值 系统异常自动捕获•        OS异常时自动捕获并展示异常堆栈•        帮助您快速定位问题所在的代码行 好了,看完IoT Studio强大的功能介绍,您是否心动了呢?赶紧戳如下链接下载安装体验吧https://developer.obs.cn-north-4.myhuaweicloud.com/idea/IoT-Studio.zip
  • [交流吐槽] IoT family
  • [交流分享] 之八-呕血制作-Lettuce IOT框架-移远BC35G+树莓派+华为OC+SpringBoot后台+微信小程序
    上一篇主要讲的是PC端调试lettuce-Sea以及部署lettuce-Sea到树莓派并与华为OC平台进行联调而这一篇将要讲lettuce的对外服务lettuce-Air服务端java代码解析。 lettuce-Air服务端java代码讲解想必上节课,大家已经在设备侧完成了对华为OC平台的集成,并且有了可观的效果。可以说已经胜利在望了。而这节课,我将给大家讲解如何接入华为OC平台的北向接口。并转换为对外服务的能力。 lettuce-Air的源代码https://github.com/lipuqi/lettuce-Air 首先我们要有一个云服务器,开放8013端口。其次云服务器上要安装JDK1.8的环境。 lettuce-Air服务端主要提供2种服务:1.       服务端后台对总体情况的监控。监控内容包括设备的当前状态和命令下发的当前状态。2.       服务端后台对客户端lettuce-Land的服务提供,例如在客户端开关灯的操作,和客户端查询设备在线情况的操作。 lettuce-Air服务端主要使用的是spring boot的框架,因为便于大家演示操作,使用单例模式的Map作为缓存来存储数据,与华为OC平台采用API的方式对接。 接下来我就先讲解lettuce-Air服务端是与华为OC平台怎样对接的。主要分3种接口:1.       订阅接口:这种接口是我们提供给平台的,用于平台向我们主动提供的数据。例如设备端的数据上报。2.       主动触发式接口:这种接口是平台提供给我们的,用于我们主动触发相关操作。例如我们向设备发送一条命令。3.       回调接口:这种接口是平台回调我们的接口,主要用于一些状态的返回等。例如我们刚才下发命令时,传给平台命令状态的回调地址。所以一个完整的命令下发操作是这样的流程所以一个完整的命令下发操作是这样的流程 首先我们先来看订阅平台的设备数据变化的通知。在华为OC平台的控制板上我们选择订阅调试 然后大家可以看到,可以订阅很多种通知。我们这里只订阅了设备数据变化。在订阅时需要填写服务器的接口。 这个添写的接口就是我们提供给平台的。注意这里因为我们只做演示,采用的是HTTP的协议,如果想用HTTPS的,需要将证书信息设置到华为OC平台里(对接信息中设置)。填写接口以后,平台会发送一条虚拟数据给接口自动检测接口是否通过。 下面我们来看看接口的入参 接口要使用POST方式  这是平台给我们的数据是怎样的结构 相关java代码片段DeviceController.java /**  * 上报数据  * @param result  * @return  */ @PostMapping(value = "/deviceDataChanged", produces = { "application/json;charset=UTF-8" }) public GenericResponse deviceDataChanged(@RequestBody JSONObject result){ try { deviceService.getDeviceData(result); } catch (CustomException ex) { throw ex; } catch (Exception e) { throw new BasicException(1000, e); } return ResponseFormat.retParam(200, "OK"); }  DeviceServiceImpl.java @Override public void getDeviceData(JSONObject result) { BasicDevice device = null; //判断通知类型是否为上报数据类型 if (result.containsKey("notifyType") && PushStatus.DEVICE_DATA_CHANGED.equals(result.getString("notifyType"))) { JSONObject service = result.getJSONObject("service"); //判断是灯的服务还是设备的服务 switch (service.getString("serviceId")) { case ServiceConstant.SwitchBulb: SwitchBulb_status switchBulb_status = new SwitchBulb_status(); switchBulb_status.packaging(service);//解析消息内容 //放到设备类中 device = new Bulb(); device.setStatus(switchBulb_status.getStatus()); device.setUpdateTime(); break; case ServiceConstant.OperationPi: OperationPi_status sperationPi_status = new OperationPi_status(); sperationPi_status.packaging(service);//解析消息内容 //放到设备类中 device = new OperationPi(); device.setStatus(sperationPi_status.getStatus()); device.setUpdateTime(); LOGGER.info("----------------------设备上报心跳----------------------"); break; default: throw new CustomException(DeviceServiceImpl.class, "获取数据上报信息类型没有匹配"); } //将设备参数更新到缓存中 mapCache.put(device.getDeviceKey(), device); } } 解析消息SwitchBulb_status.java @Override public void packaging(JSONObject service) { try { if (service.containsKey("serviceId")) setServiceId(service.getString("serviceId")); if (service.containsKey("serviceType")) setServiceType(service.getString("serviceType")); if (service.containsKey("data")) { JSONObject serviceData = service.getJSONObject("data"); if (serviceData.containsKey("status")) setStatus(serviceData.getInt("status")); } } catch (Exception e) { throw new CustomException(SwitchBulb_status.class, "SwitchBulb-status上传数据解析服务出现问题", e); } }接下来我们来看一看命令下发的接口 首先我们要先了解一下平台命令下发有两种机制其实之所以有2种机制,就是为了保证设备的低功耗。如果看过前面的对这个就会有更深的理解,有点类似于模组的PSM低功耗策略。  这里要注意,此接口采用的是HTTPS的方式,服务端调用此接口要使用HTTPS的方式调用。这里lettuce-Air中已经集成华为API DEMO了HTTPS的调用工具,其中还需要华为的证书文件,这个证书文件我是外挂到程序外目录的,这里要注意一下。  Authorization就是需要提供一个凭证,这个凭证需要调用相关接口获取,这里我在lettuce-Air做好了一个获取凭证的工具。callbackUrl就是我们服务端提供的对命令状态通知的接口。expireTime就是前面说的两种命令下发的机制,0为立即下发,其他为缓存下发的超时时间。如果超过了这个时间,命令还没达到下发条件的话,就会废弃这条下发指令。maxRetransmit如果失败就会重试的次数。这个是指令的相关参数  这是响应给服务器的参数,这里注意的是status这个参数就是指令下发的状态。 相关java代码片段 AppController.java /**  * 发送一条指令  * @param method  * @param value  * @return  */ @GetMapping("/sendCommand") public GenericResponse sendCommand(String method, Integer value){ try { deviceService.sendCommand(method, value); } catch (CustomException ex) { throw ex; } catch (BasicException exc) { throw exc; } catch (Exception e) { throw new BasicException(1000, e); } return ResponseFormat.retParam(200, null); } DeviceServiceImpl.java @Override public void sendCommand(String method, Integer value) throws Exception { if(StringUtils.isEmpty(method) || value == null){ throw new BasicException(10002, new CustomException(DeviceServiceImpl.class, "下发命令参数为空")); } /* if(getOperationPiStatus() == 0){ throw new BasicException(30001, new CustomException(DeviceServiceImpl.class, "设备已下线")); }*/ JSONObject commandData = new JSONObject(); JSONObject command = null; //根据响应的命令,封装不同的上报命令参数 switch (method) { case ServiceConstant.ON_OFF: if(getBulbStatus() == value){ return; } command = new SwitchBulb_ON_OFF(value).unpack(); break; case ServiceConstant.QUERY_STATUS: command = new SwitchBulb_QUERY_STATUS(value).unpack(); break; case ServiceConstant.QUIT_PYTHON: command = new OperationPi_QUIT_PYTHON(value).unpack(); break; default: throw new BasicException(10001, new CustomException(DeviceServiceImpl.class, "下发命令类型没有匹配")); } //封装命令下发基础参数 commandData.put("deviceId", huaweiIotProperties.getDeviceId()); commandData.put("command", command); commandData.put("expireTime", 0); commandData.put("maxRetransmit", 3); commandData.put("callbackUrl", huaweiIotProperties.getCommandCallbackUrl()); String result = huaweiIotApiUrl.getDeviceCommandsUrl(huaweiIotProperties.getAppID(), tokenUtil.getToken(), commandData); JSONObject resultJson = JSONObject.fromObject(result); //命令下发成功后,创建命令任务状态 CommandTask commandTask = new CommandTask(); commandTask.setCommandId(resultJson.getString("commandId")); commandTask.setMethod(method); commandTask.setStatus(resultJson.getString("status")); commandTask.setExpiresIn(System.currentTimeMillis() + (huaweiIotProperties.getCommandExecuteTime() + 1) * 1000); //创建任务状态系列 mapCache.put(commandTask.getCommandId(), commandTask); } 调用API的相关代码HuaweiIotApiUrl.java /**  * 执行命令  * @param appID  * @param token  * @param paramCreateDeviceCommand  * @return  * @throws Exception  */ public String getDeviceCommandsUrl(String appID, String token, JSONObject paramCreateDeviceCommand) throws Exception {         HttpsUtil httpsUtil = new HttpsUtil();         httpsUtil.initSSLConfigForTwoWay();                  Map<String, String> header = new HashMap<>();         header.put("app_key", appID);         header.put("Authorization", "Bearer" + " " + token);                  HttpResponse responseCreateDeviceCommand = httpsUtil.doPostJson(deviceCommandsUrl, header, paramCreateDeviceCommand.toString()); return httpsUtil.getHttpResponseBody(responseCreateDeviceCommand); }还有回调命令状态的接口   resultCode使用的就是前面下发命令状态的相关常量。这里注意的是如果有响应参数,那么当resultCode为SUCCESSFUL状态时,会将解析后的json消息放在resultDetail中。 相关java代码片段 DeviceController.java /**  * 返回命令下发状态  * @param result  * @return  */ @PostMapping(value = "/commandStatus", produces = { "application/json;charset=UTF-8" }) public GenericResponse commandStatus(@RequestBody JSONObject result){ try { deviceService.getCommandStatus(result); } catch (CustomException ex) { throw ex; } catch (Exception e) { throw new BasicException(1000, e); } return ResponseFormat.retParam(200, "OK"); } DeviceServiceImpl.java @Override public void getCommandStatus(JSONObject result) { if (result.containsKey("commandId")) { //根据消息标识获取任务 CommandTask commandTask = (CommandTask) mapCache.get(result.getString("commandId")); if (commandTask == null) { throw new CustomException(DeviceServiceImpl.class, "获取命令状态时的命令标识不在序列中"); } //解析数据 JSONObject commandResult = result.getJSONObject("result"); String resultCode = commandResult.getString("resultCode"); commandTask.setStatus(resultCode); //如果任务状态为成功 if("SUCCESSFUL".equals(resultCode)){ //解析响应内容 getCommandRsp(commandTask.getMethod(), commandResult.getJSONObject("resultDetail").getInt("result")); } //更新任务状态 mapCache.put(commandTask.getCommandId(), commandTask); } } /**  * 解析响应内容  * @param method  * @param value  */ private void getCommandRsp(String method, Integer value) { BasicDevice device = null; if (method != null && value != null) { //判断命令,将响应后的内容更新相应设备状态 switch (method) { case ServiceConstant.ON_OFF: device = new Bulb(); device.setStatus(value); device.setUpdateTime(); break; case ServiceConstant.QUERY_STATUS: device = new Bulb(); device.setStatus(value); device.setUpdateTime(); break; case ServiceConstant.QUIT_PYTHON: device = new OperationPi(); device.setStatus(value); device.setUpdateTime(); break; default: throw new CustomException(DeviceServiceImpl.class, "获取命令响应类型没有匹配"); } //更新设备状态 mapCache.put(device.getDeviceKey(), device); } }  其他的还有给lettuce-Land提供的接口 /**  * 获取灯的当前状态  * @return  */ @GetMapping(value = "/getBulbStatus", produces = { "application/json;charset=UTF-8" }) public GenericResponse getBulbStatus(){ return ResponseFormat.retParam(200, deviceService.getBulbStatus()); } /**  * 获取设备当前状态  * @return  */ @GetMapping(value = "/getOperationPiStatus", produces = { "application/json;charset=UTF-8" }) public GenericResponse getOperationPiStatus(){ return ResponseFormat.retParam(200, deviceService.getOperationPiStatus()); }和给监控提供的接口 /**  * 获取设备列表  * @return  */ @GetMapping(value = "/getDeviceList", produces = { "application/json;charset=UTF-8" }) public GenericResponse getDeviceList(){ return ResponseFormat.retParam(200, mapCache.getDeviceList()); } /**  * 获取任务列表  * @return  */ @GetMapping(value = "/getTaskList", produces = { "application/json;charset=UTF-8" }) public GenericResponse getTaskList(){ return ResponseFormat.retParam(200, mapCache.getTaskList()); } 监控是每5秒刷新一次。 lettuce-Air服务端java代码讲解就到这里了,其他代码部分可以自己专研一下。下一章我们将java代码部署到服务器上,再把前面的流程串起来联合调试。欢迎加入我们的QQ群一起讨论IOT的问题。 
  • [交流吐槽] 物联网之启蒙
    从51单片机的keil工程不会建到现在狠心勒紧裤腰带买小熊派,这其中到底发生了什么?是人性的扭曲,还是道德的沦丧?现在为大家揭晓STC89C51,没错,就是大学的内容,我是参加Ti杯电赛才接触到的这个东西,由于没有上过这种课程,keil工程都不会建,所以之前去当了锡的搬运工——硬件电路,模电了解一下后来直接焊接有了一定的刷子,就直接上贴片,SMT,本来电路就让人头大,运放,差动,差模,高通有源滤波分分钟让人歇菜,然而虽然很难,但也抵挡不了电子的诱惑,谁让这些小小的电阻电容和IC芯这么可爱呢,不把他们一个个焊接到焊盘上去,怎能忍心让他们孤零零的待在外面呢?然后,现在我又看到了小熊派物联网开发板子,乍一听,蛮萌的秘密名字,就开搞吧。然后就开始了,远程点灯之旅,然后就到了现在。未来不知道会怎么样,但是找到光的方向,一直走下去是一定没有错的。
  • [热门活动] 华为云精编实战课程—— IoT七天开发训练营课程进度回复帖
    (请严格按照回复示例进行回复,如回复格式不对,将不予奖励,谢谢)回复示例:华为云账户名:XXXX课程完成截图:(必须 包含课程名称、华为云账户名和完成进度条)请按照以上要求,在本课程下回帖。
  • [热门活动] 华为云IOT是否支持接入LORA产品?
    我看了下,目前华为云所支持的设备接入方案,有NB-IoT,有2G/3G/4G,但唯独没有lora,后台也没有找到lora设备的接入接口,这个让我有些苦恼,因为公司这边不仅有NB设备,还有lora设备,本来想全部接入到华为云的,方便后期web开发,但目前来看,就只有NB设备可以接入。求问,这个lora真就没有办法接入华为云了吗?我是否可以在设置lora网关的时候,将服务器地址和端口指向华为云的服务器地址和端口,以此来上传lora设备的数据呢?这样传输层相当于走的是以太网,应用层这边自己去解析,不知道这样是否可以? 因为当下的物联网设备中,lora产品几乎占据了大半壁江山,我觉得华为云既然想发力物联网,是肯定要考虑lora产品的对接问题的,希望华为云的技术们能够提供一个lora设备的接入方案,谢谢了!
  • [技术干货] Agent Lite Demo(C-Windows) 操作指南参考
    1      准备资源1.1      开发环境Visual Studio2017:官网下载1.2      工具包工具包包括两个文件,分别为:·         网关设备配置信息:gwreginfo.json·         平台南向设备对接证书conf文件夹下,有rootcert.pem1.3      Demo资源·         Agent Lite Demo:AgentLite Windows C Demo·         网关profile文件:Gateway_Huawei_AgentLite01.zip·         子设备profile文件:Motion_Huawei_test01.zip 2      SP Portal创建应用注意:SP Portal的端口一般为8843若使用开发者Portal(端口一般为8093),则下发资源时已由系统创建好应用,可以忽略此步骤。 在调用OceanConnect平台开放的接口前,需要先登录OceanConnect平台的SP Portal界面,创建平台上的应用映射。2.1      登录SP PortalSP Portal登录地址:https://IP:8843(如:https://100.xx.xx.xxx:8843)。使用IoT平台资源邮件中的“平台Portal链接”和“登录账号/密码”信息登录SP Portal。2.2      创建App1.   进入SP Portal界面,点击“开始“2.   创建应用3.   进入到应用管理界面,开发者根据实际情况自行填写和选择配置。 ·         应用名称:可以为字母、数字或其组合(如Apptest001)。不能与平台中已有的应用名称重复。·         所属行业:应用的行业信息。在下拉框中选择即可。·         消息跟踪数据授权:自行选择。·         其他选项保持默认即可。4.   创建成功之后会弹出应用的基本信息,请注意保存应用ID和应用密钥如果应用密钥丢失可在系统管理 > 应用管理 > 应用列表 > 安全 > 重置 获取 3      上传profile文件至IoT平台将下载的profile文件上传至IoT平台,具体方法如下:在SP Portal界面,选择“设备管理 > 设备模型 > 导入设备模型”,选择需要上传的profile文件以同样的方法完成子设备profile文件的上传 4      修改工具包文件4.1      将三个工具包文件解压后,存放至同一路径下(如D:\SDK)。4.2      打开gwreginfo.json文件,依次修改对应的值。"mac":"TestTest001",(网关设备的唯一标识码,需在平台唯一,测试阶段可自定义)"platformAddr":"100.100.100.100",(平台南向设备对接地址)"platformPort":8943,(平台南向设备对接端口,8943一般不变)(以下信息要与网关设备的profile文件一一对应)"manufacturerId":"Huawei","deviceType":"Gateway","model":"AgentLite01","protocolType":"HuaweiM2M","loglevel":255 5      平台注册设备在SP Portal界面,选择“设备管理 > 设备 > 设备注册 > 创建” 在设备注册界面填写相关信息注册类型:选择动态密码模式设备识别码:与第4节中gwreginfo.json文件的mac值一致设备定义:产品产品选择:选择第3节中上传的网关profile文件点击提交,会弹出注册成功之后返回的设备相关信息在左侧菜单 点击所有设备 可以看到刚刚注册的设备,此时设备处于“离线”状态。 6      修改Demo工程代码6.1      解压缩AgentLiteDemo_windows_C_V19.2.0.zip双击demo.sln用vs打开6.2      修改Demo工程demo.h文件中的常量,将#define CONFIG_PATH后的内容修改为工具包文件存放路径。例如:#define CONFIG_PATH "D:/SDK"6.3      先注释Demo工程demo.c文件中的代码片段 7      编译与调试 修改完成后,运行 Demo如果程序没报错,在平台就可以看到设备在线。l  调用Gateway_DataReport接口上报数据l  调用AddSensors接口添加子设备l  调用Sensor_DataReport接口上报数据 具体的接口信息请参见文档:Agent Lite API参考(C)程序大致结构解析:·         调用IOTA_Init接口初始化Agent Lite资源。·         调用IOTA_Bind接口绑定设备至IoT平台。设备第一次接入IoT平台时需要进行绑定操作,上层应用通过调用该接口传入设备序列号或者MAC地址以及设备信息来绑定到IoT联接管理平台。在绑定前需要调用IOTA_SetConfig接口设置绑定服务器IP与端口(IoCM服务器地址与端口,Agent Lite会配置默认端口8943)。当调用IOTA_Bind接口绑定设备成功时,会在工具包文件夹下生成一个gwbindinfo.json文。此时,SP Portal中可以看到设备变为“在线”状态。·         调用IOTA_Login接口使设备登录。设备在第一次绑定后,或者在设备重启后需要进行登录。·         调用AddSensors接口添加子设备BatteryCal。·         调用Device_ServiceDataReport接口上报数据。·         调用Device_ServiceCommandReceive接口接收命令。  附:程序执行之后在工作路径(D:/SDK)下有以下文件开发者一般只需关注以下两个文件gwbindinfo.json:设备绑定成功之后生成UGP_0.log:程序运行日志,如果连接过程中有问题,可查看此日志
总条数:7138 到第 页
上滑加载中