• [问题求助] 预览外呼和人工外呼的呼叫状态返回
    使用话务条外呼,预览呼叫和人工呼叫,如果客户的手机关机、忙线、停机、拒接等状态如果获取,有什么接口和随路数据吗
  • [博文鉴赏] 梵高与王勃:落霞与孤鹜齐飞秋水共长天一色
    落霞与孤鹜齐飞秋水共长天一色
  • [问题求助] TTS语音播放失败
    【问题来源】    公司内部调试TTS【问题简要】    TTS语音播放失败【问题类别】【必填】    【IVR(gsl)】【AICC解决方案版本】【必填】    【AICC 8.15.0】    【ICDV300R008C20SPC002】【期望解决时间】    尽快【问题现象描述】       使用了论坛提供的《SCE业务开发典型流程参考》中为 TTS放音.sce 配置在was 上,无法正常放音。 【日志或错误截图】2022-11-08 11:04:15.556   67 AccessCode=7878, CLD=<<7xx8>> IVR(255)(0,67)->CCS(1)(255,1063): Play & digit collection message: The type of command used for voice recognition and digit collection is 12; VP  Play, . Get ack failed! result=0 vpdsn=65535 Asr=0.
  • [问题求助] 安装isales的mysql脚本时加载mysql报错
    【问题来源】【必填】星网【问题简要】【必填】idepoly安装iSales的mysql脚本时加载mysql时报错【问题类别】【必填】iSales【AICC解决方案版本】【必填】AICC 8.15.0【期望解决时间】【选填】尽快【问题现象描述】【必填】idepoly安装iSales的mysql脚本时加载mysql时报错【日志或错误截图】【可选】
  • [问题求助] UAP媒体资源请求报错
    【问题来源】华胜天成【问题简要】UAP 媒体资源请求报错【问题类别】UAP【AICC解决方案版本】AIC 8.22UAP9600 V100R005C00SPC108ICDV300R008C25SPC007【期望解决时间】【问题现象描述】呼叫IVR,每2次有一次不能成功,open eye一侧跟踪, UAP响应503, service unavailable, UAP上跟踪看不到sip消息。通过CMU消息跟踪,发现成功的呼叫消息正常无报错,不成功的呼叫有MPPU MCMU ACTION RESPONSE Error, 系统中只有一台PG2, 测试环境, 没有话务量, CPU, Memory无告警。I【日志或错误截图】CmuModuleMsg..msgHeader0> 58 010110001> 01 000000012> 00 000000003> 00 00000000 ....sender-mid:0x158 (344)4> B1 101100015> 01 000000016> 00 000000007> 00 00000000 ....sender-pid:pid-MCMU-DIST (433)8> 38 001110009> 00 0000000010> 00 0000000011> 00 00000000 ....receiver-mid:0x38 (56)12> AC 1010110013> 01 0000000114> 00 0000000015> 00 00000000 ....receiver-pid:pid-CRO (428)..msgBody....dist-msg16> 20 0010000017> 00 0000000018> 00 0000000019> 00 00000000 L ......tp-dist-Msg20> 11 ----0001 ........bit4ActType:acttype-MPPU-MCMU-ACTION-RESPONSE (1)0001---- ........bit4Ver:actver-MPPU-MCMU-MSG-VERSION (1)21> 4C 01001100 ........ucReserved1:0x4c (76)22> 20 0010000023> 00 00000000 L ........actionbody24> 6B 0110101125> 0D 00001101 ..........uwTrcHandle:0xd6b (3435)26> 0A 0000101027> 50 01010000 ..........uwReserved:0x500a (20490)..........actionPara............down-action-reply-para28> FF 1111111129> FF 11111111 ..............uwTReqQueIdx:0xffff (65535)30> 00 00000000 ..............ucActionSn:0x0 (0)31> 00 00000000 ..............ucSnReserved:0x0 (0)32> 9C 1001110033> 05 0000010134> 00 0000000035> 1C 00011100 ..............udwTranId:0x1c00059c (469763484)36> FE 1111111037> FF 1111111138> FF 1111111139> FF 11111111 ..............udwCtxId:0xfffffffe (4294967294)40> 00 0000000041> 00 00000000 ..............uwVmgwId:0x0 (0)42> 02 00000010 ..............ucActResult:e-MPPU-MCMU-RESULT-ACT-ERR (2)43> 00 00000000 ..............uwMgcId:0x0 (0)44> 0F 00001111 T ..........errorDescr45> 00 00000000 ............ucReserved:0x0 (0)46> 08 0000100047> 00 00000000 L ............errorCodeTxt48> F9 1111100149> 01 00000001 ..............uwErrCode:eMEGACO-ERR-CMD-BEFORE-RESTART (505)50> 00 0000000051> 00 00000000 ..............errorTxt
  • [问题求助] UAP无法检测DTMF信号
    【问题来源】华胜天成【问题简要】UAP无法检测到DTMF【问题类别】IVR GSL, UAP【AICC解决方案版本】AIC 8.22UAP9600 V100R005C00SPC108ICDV300R008C25SPC007【期望解决时间】【问题现象描述】IVR收号测试流程为华为工程师提供(在其他环境测试验证过收号功能)。用open eye 呼叫流程号码, 能听到语音播报, 按键无响应。 UAP trace上能看到start detect dtmf , stop detect dtmf 指令(二者间隔10秒),但看不到按键输入信息。 PG2上抓包可以看到DTMF按键 对应的 rtp pay load event。 MSU上配置 RFC2833支持已设置。【日志或错误截图】华为提供测试GSL流程如附件
  • [技术干货] (转)深度解读思必驰语音合成技术,干货满满
    语音合成(Text to Speech,TTS)又称文本语音转换技术,顾名思义,是把文本信息转化成语音信息。它是对话式人工智能的最后一环,也是关键一环,它的效果直接影响着人机语音交互的体验。思必驰作为国内领先的对话式人工智能平台公司,它的语音合成技术表现究竟如何?语音合成的“前世今生”人的语音,本质上是发音器官震动,产生声波传出。模仿人声,最古老的方法是使用乐器。到19世纪,就可以用机械方法产生语音了。那时,科学家们会制作出一些精巧的气囊和风箱去搭建发声系统,合成出一些元音和单音。 人类发音示意图进入电子时代的1939年,贝尔实验室H·杜德利制作出第一台电子合成器,这是用共振峰原理制作的语音合成器,该技术使用固定频率,以电子复制我们改变口型时所发出的元音声,也这正是英国剑桥大学著名物理学家斯蒂芬·霍金教授所使用的声音合成器。上世纪90年代,随着计算和存储能力大幅度提升,基于大语料库的单元挑选与波形拼接合成方法出现,可以合成出高质量的自然人语音。 语音合成技术演变进入21世纪,随着深度学习技术的兴起和快速发展,以语音合成为代表的语音处理技术得到了极大的飞跃。神经网络语音合成在近几年来取得了显著突破,合成的音质和自然度越来越好,运行速度也越来越快。思必驰目前所使用的,也正是这种方法。思必驰TTS,魅力何在?早在2007年于英国剑桥大学创立时,思必驰关于语音合成技术研究就已开启,该项工作由思必驰联合创始人兼首席科学家、上海交通大学教授俞凯领头。语音合成系统主要分为文本处理、声学模型、声码器三个部分。文本处理负责对文本进行转写和phoneme序列转换;声学模型使用深度神经网络,可以在文本特征与声学特征之间学习到更复杂的非线性关系;声码器负责将声学模型输出的声学特征,通过卷积运算,转换成音频。经过10多年的研究积累,思必驰在建模方法上,涵盖了从传统的统计参数模型到最新的基于神经网络的方法;对声码器的研究,涵盖了从传统的基于信号处理的方法到最新的基于神经网络的方法。语音合成的质量与效果,既有赖于语音厂商的算法模型,还取决于音频语料的质量,即数据质量。思必驰有着丰富的声优资源以及声优挑选的经验,在苏州建设有专业录音棚并与国内多个城市的录音棚有着长久合作关系。与此同时,思必驰数据团队也对数据标注有着严格的质量把控。  位于思必驰苏州总部的专业录音棚经过多年的技术积累,思必驰已逐步形成了一套成熟的技术方案,业务涵盖了数据语音定制、数据快速定制、声音克隆、歌声合成、多语种合成、情感合成等,可选公有云、私有云以及离线三种部署模式,经典模式可在思必驰官网实时体验。2017年、2020年,思必驰还先后参与国家标准《中文语音合成互联网服务接口规范》与行业标准《中文语音合成服务系统评估规范》的制定,并成为全国首批通过评估测评的公司之一,获得“TTS-4S(Standard Similarity Scene System)服务证书”。该测评从合成质量、定制能力、场景表现力和系统安全可靠等维度,全面评估合成水平和服务能力。 2019年11月,思必驰首批通过“中文语音合成水平测试”未来世界,百“声”争鸣为能快速提供语音合成定制服务,思必驰全程提供音色选择、录音指导、音频处理、模型训练、服务部署等专业服务,赋予产品开口讲话的能力。截至目前,思必驰语音合成已建设的声音库内包含音色接近200个,涵盖多种风格,以及各个年龄层次。思必驰语音合成服务,也已在车载、家电、机器人、智能客服等诸多领域成功落地,为众多终端产品赋予声的魅力,使得万物皆可沟通,并逐渐走入人们的工作与生活。 当你在家里“躺平”,来自如影智能的语音管家“Edison”,用他温暖、绅士的声音(文章开头的音频A),为你带来踏实与慰藉;当你在爱车中驰骋,车萝卜的语音助理“萝卜”清脆、简明的声音,如同车水马龙路途中的一股清流;当你接起顺丰95338服务热线的外呼电话,智能客服“丰小蜜”亲切又不失严谨的声音,配合高效的工作能力,带给你最省心省力的服务体验……镜头切换到泛娱乐领域,思必驰团队打造的“小驰机器人”在央视《机智过人》中,现场用撒贝宁的声音生成了一曲《好久不见》。在《经典咏流传》中,思必驰携手栏目组共同推出 “读诗成曲”线上互动小工具,提供实时读诗成曲的能力。用户仅需读几句简单的诗词,便可快速生成有腔有韵的歌声,互动总量超过821万人次。 思必驰联合创始人兼首席科学家俞凯参与节目录制在个性化定制上,思必驰不仅可以提供普通话定制、歌声定制,还可以通过迁移学习方法,提供更高难度的方言、小语种TTS定制,如粤语、上海语、四川话、山东话、东北话、德语、法语等。而思必驰的情感合成技术,则赋予美妙音色丰沛的情绪,让声音更具表现力与感染力此外,思必驰声音复刻技术也已在斑马智能、爱驰汽车、岚图汽车、仙豆智能等车联网客户以及IoT领域落地,仅需录音20句话约400汉字,10分钟之内便可以完成模型生产,MOS 合成音/录音达到90%,相似度合成音/录音达到80%。人类的声音,是人类语言的物质外壳,却承载着重要的信息和真挚的情感,拥有着无穷的魅力。人工智能突飞猛进地发展正不断催化人机交互方式的巨变,“万物可沟通、万事可打理”的语音互联未来世界,正加速到来…… 
  • [问题求助] 【流程开发产品】【多段放音功能】如何理解SPT放音cell的语音ID
    【功能模块】【操作步骤&问题现象】1、语音段类型=语音ID:语音段内容所引用的变量的参数类型是字符串。其值表示播放指定业务序号音。2、这个语音ID是要上传一个放音文件到流程加载平台,然后流程加载平台告知我们这个音频文件在平台上的序号?【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [网络迁移] 【ATC工具】【离线模型转换】pb模型成功转换om模型,但是推理失败
    【功能模块】本实验基于MindX SDK实现了端到端的自动语音识别(Automatic speech recognition, ASR),主要分为两个步骤:一、声学模型:将语音转换成对应的拼音声学模型:我们采用的模型是Google在2020年提出的Conformer模型:Convolution-augmented Transformer for Speech Recognition ;二、语言模型:将拼音转换成对应的文字语言模型:我们采用的是transformer模型。这两个模型的主要参考代码: https://github.com/Z-yq/TensorflowASR 模型下载:https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/ASR%26KWR/AutoSpeechRecognition/model.zip 【操作步骤&问题现象】1、 声学模型转换声学模型的输入是经过预处理后的数据。除了要进行特征提取外,还要与模型的输入维度对齐。声学模型的输入有两个,第一个是经过预处理后的音频数据,第二个是一个表示语音数据识别出文字长度的一个整形数据。cd /root/AutoSpeechRecognition/model/   # 切换至模型存储目录atc --model=./frozen_graph_conform.pb --framework=3 --output=./am_conform_batch_one --input_format=NHWC --input_shape="features:1,1001,80,1;length:1,1" --soc_version=Ascend310 --log=error2、语言模型转换为了简化推理过程,我们直接把声学模型的输出作为语言模型的输入,所以这里语言模型的输入要与声学模型的输出保持一致atc --model=./frozen_graph_transform.pb --framework=3 --output=./lm_transform_batch_one --input_format=ND --input_shape="inputs:1,251" --soc_version=Ascend310 --log=error【截图信息】模型转换成功,如图所示。接下来,使用转换好的模型,替代项目的预置模型进行推理,结果推理失败。项目下载链接:https://ascend-professional-construction-dataset.obs.cn-north-4.myhuaweicloud.com/ASR/AutoSpeechRecognition.zip  
  • [交流吐槽] 人工智能语音助力消费者和企业
    语音命令正逐渐成为消费者与其设备交互的一种更为突出的方式。然而,对“老大哥”的担忧依然存在。随着公司努力使语音助理的使用尽可能直观、无缝和安全,这些解决方案背后的人工智能技术将需要发展,以支持下一代语音激活用例。Hub 的一项新研究表明,83% 的 16-74 岁消费者使用语音命令来控制一个或多个设备,包括智能手机、平板电脑、智能扬声器和车辆信息娱乐系统等。对于这些消费者中的62%来说,语音命令是他们日常生活中很常见的工具,他们经常使用它来与一个或多个设备进行交互。微软最新的语音报告指出,“作为主要用户界面的触摸时代正在被语音和数字助理的新时代所取代。”在微软进行调查时,72% 的受访者表示在过去六个月中使用过数字助理。哪个平台?Apple 的 Siri 和 Google 的Assistant 并列第一,有 36% 的受访者表示使用过。亚马逊的 Alexa 排名第三,有 25% 的受访者表示使用过,其次是微软的 Cortana,占 19%。一些消费者只是希望语音助理能够很好地执行基本任务。例如,他们希望 Google 助理打开他们家中的灯,或者他们希望 Siri 朗读短信,因为他们的手忙不开。然而,作为早期采用者的消费者已经准备好用他们的语音做更多事情——他们想要进行购物、预订机票等等。由于对话式人工智能的进步,消费者越来越能够使用语音来控制搜索引擎和语音助手,并在这些类型的更深入、更注重行动的层面上进行交互。然而,隐私问题继续阻碍语音助理的采用。Hub的研究表明,超过一半(53%)的用户承认,他们在使用这项技术时会担心隐私问题。这一比例比Hub 2019年研究中的59%有所下降,但仍代表了一个庞大的人群。消费者到底关心什么?调查显示,38%的用户想知道他们的设备是否在不应该听的时候听,39% 的用户想知道设备根据语音命令收集了哪些数据。语音助理技术提供商将需要采取更多措施来解决这些问题。与此同时,语音助理背后的人工智能正在支持客户服务等企业用例——尤其是在新冠肺炎疫情封控之后,这一事件大大清空了人类呼叫中心。由人工智能驱动的聊天机器人迅速填补了这一空白,从这一快速过渡中吸取经验教训将有助于这一领域的健康发展。事实上,根据Mordor Intelligence的数据,2020年人工智能聊天机器人的市场价值为171.7亿美元,预计到2026年将超过1020亿美元。在零售、医疗保健、银行和其他行业,虚拟语音助理的使用正在增加,因为该技术以即时响应的形式提供速度和效率。对于企业而言,提供即时客户服务和更快解决投诉和查询的能力可以在不牺牲客户服务的情况下实现更高效的运营并节省资金。(编译:iothome)原文链接:https://www.iothome.com/archives/7521
  • [应用推荐] 手机在网状态实时查询接口的应用场景
    手机在网状态实时查询就是指客户手机号码的在营运商数据库中标注的状态,有正常使用、停机、销号、未启用、异常、预销户、在网但不可用等一系列状态。而手机在网状态查询接口则就是指通过接入api接口的实时数据对客户的手机号码开展在网状态查询。手机号码在网状态查询主要是为了更好地查询客户的手机号码是不是正常可以用,通过查询可以筛出失效的号,进而提升相关工作人员的工作效能。那么,手机在网状态实时查询的应用场景有哪些方面?1、话务中心电话营销。手机号查询除去无效手机号节约时间成本费和提升工作效能。每一次无效语音通话的人工成本大概1.9元钱,查询接口的查询只需其几十分之一。2、群发短信。企业通过查询并除去无效手机号,让营销推广信息内容发给每一个真正的顾客手机上,极大提高推送效率和转化率。3、打击羊毛党。手机号查询能够为互联网平台用户反作弊行为提供大数据分析能力,高效拦截羊毛党,减少损失提高运营能力。4、网络平台运营。互联网平台租运营过程中,会积累大量的注册用户,却不太了解每个ID的真假和实时状态,通过查询接口能精准筛选出活跃的目标用户,提高运营转化能力。现阶段,天眼数聚api接口服务平台都有提供这一接口产品,适用批量查询手机实时在网状态,接入的数据库由三大运营商提供,实时查询,能确保查询的精确性。更多手机在网查询状态实时查询https://www.tianyandata.cn/productDetail/18
  • [问题求助] 【cc-gateway产品】【cc-gateway-接口开发,通过接口放音】
    【功能模块】【可选问题来源:北明】【问题简要】【必填】【cc-gateway产品】【cc-gateway-接口开发,通过接口放音】【问题类别】【必填】    【可选问题分类:座席,IVR,CC-Gateway】【AICC解决方案版本】【必填】    【AICC可选择版本:AICC 8.12.0】    【UAP可选择版本:UAP9600 V100R005C05】    【CTI可选择版本:ICD V300R00006】【期望解决时间】【选填】今日【问题现象描述】【必填】       IVR中通过呼叫转移到一个已签入坐席后,坐席应答时,首先播报一段工号XXX,为您服务的note语音提示。应答已通过系统集成后,事件监听处理,目前was服务器上可配置这段语音,但是工号是was服务器上坐席工号,需要调整为我们自己系统的工号。不知道如何实现?【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 【cc-gateway】【cc-gateway-接口开发,通过接口放音】
    【功能模块】IVR中通过呼叫转移到一个已签入坐席后,坐席应答时,首先播报一段工号XXX,为您服务的note语音提示。【操作步骤&问题现象】应答已通过系统集成后,事件监听处理,目前was服务器上可配置这段语音,但是工号是was服务器上坐席工号,需要调整为我们自己系统的工号。不知道如何实现?【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [行业资讯] 路灯控制器物联网卡资费如何?
    城市照明是是现代城市形象的重要组成部分,随着城市夜景多样化和规模扩大,传统的人工控制远远无法满足更高效的运营管控和更节能环保的迫切需求,安装路灯控制器物联卡的智能路灯更高效管理运营方式广受欢迎。一、路灯控制器物联卡对路灯来说有什么作用?我们都知道物联网卡是三大运营商发布针对企业用户用于智能硬件设备联网的卡,不支持语音通话和发短信,而路灯控制器物联卡就是应用于路灯控制器设备上的流量卡。可以使路灯控制器连接网络,实现远程数据传输、远程控制路灯,实现路灯的智能化管控。二、路灯控制器物联卡稳定吗?物联网卡采用独立网元,专用号段,能够更好的传输数据信息,指令等,远程控制灯光效果。三、路灯控制器物联卡的资费?物联卡是专用于智能硬件设备的行业卡,没有语音通话功能和短信功能,因此资费相对比较便宜,并且路灯控制器主要是为了给路灯联网传输数据指令,消耗的流量也少。四、路灯控制器物联卡的购买渠道?路灯控制器物联网的购买渠道有两种,一种是运营商处一种是物联卡代理平台。先来说说运营商处购买,不用多说,好处是正规,不太建议量少客户;在来说说物联卡代理平台,因其性价比高,福利政策多,比较受欢迎,能给企业用户提供管理平台和增值服务。物联卡市场复杂,小编建议采购时选择资质深、跟三大运营商有直接合作的大平台处购买。
  • [技术干货] 基于STM32设计的智能家居控制系统(华为云IOT+语音控制+环境检测)
    这是基于物联网设计的语音和环境检测的控制系统,支持本地语音控制、支持云端远程控制,支持本地环境检测自动执行控制,根据环境检测结果控制相应的执行机构协作当光照低于一定程度(比如低于5OLux)且有人在家里自动开灯,没人在家时自动关灯等等。 ## 1. 前言 如今的智能家居越来越深入人心,越来越受人们的欢迎。智能家居作为与人们日常生活息息相关的科技智能产物,可以给我们的生活带来舒适便利。随着物联网、云计算、无线通信等新技术的发展,智能家居得到了快速发展,能让用户利用智能手机来控制家中的设备,实现远程控制、场景控制、联动控制和定时控制等功能。在安全防护上,智能家居安防系统则够在原来的基础上提供立体化防护,帮助用户时刻守护住宅安全,更符合人们的安全需求。节能减排方面的也有积极作用。比如说,智能家居照明系统,它充分利用了自然光的照明作用,自动调节灯具的亮度,在保证室内明亮度的同时,将能耗降到最低,而对于洗手间、储藏室等地方,更是做到了人来灯亮、人走灯灭,一方面方便了用户的日常生活,另一方面也能防止用户忘记及时关灯而造成浪费。 ## 2. 设计要求总结 设计题目:基于物联网的语音和环境检测的智能家居控制系统设计 第一种:控制方式需经结合语音命令控制, **控制开关门、灯、电视、开关空调、开关电扇、开关窗帘等。** 第二种:控制方式是基于环境检测自动执行控制,根据环境检测结果控制相应的执行机构协作,比如: 当光照低于一定程度(比如低于5OLux)且有人在家里自动开灯,没人在家时自动关灯;如温度高于阈值并且有人在家时打开空调,没人在家时自动关闭等;如光照强度低于一定程度会自动关闭窗帘。电脑和手机APP两端云平台可以展示温湿度,光照等信息,还有各家居的状态,可以在云平台控制家居的开关,可以在云平台进行两种控制方式的切换。 **技术选项总结:** (1)物联网平台采用华为云IOT:华为云IOT是华为旗下的物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。 (2)主控芯片采用:STM32F103C8T6 (3)语音控制芯片采用:LD3320 支持普通话识别。 (4)开关空调、开关风扇 采用继电器模拟:两个1路5V继电器控制 (5)开关窗帘采用步进电机模拟: 28BYJ4步进电机模拟 (6)室内照明灯(卧室、客厅):2盏 3W大功率LED灯模拟 (7)环境光检测检测:BH1750数字传感器 (8)联网的WIFI :选择ESP8266 (9)OLED屏幕:模拟电视显示 (11)温湿度检测:DHT11模块 **其中:** (1)STM32主控芯片、语音控制芯片LD3320、室内照明大功率LED灯、环境光检测BH1750、ESP8266-WIFI 通过排母插在PCB板子上。 (2)步进电机UL2003驱动板、继电器 使用排针外接。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611484616986572.png) **上位机运行效果:** ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614493914243610.png) ## 3. 硬件选型 ### 3.1 STM32F103C8T6 STM32F103C8T6是一款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611521515764837.png) ### 3.2 语音识别模块: LD3320 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611532055419734.png) ### 3.3 ESP8266 -串口WIFI ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611540864773305.png) ### 3.4 LED灯-RGB灯 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611551893936618.png) ### 3.5 3W大功率LED灯 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611565027307360.png) ### 3.6 OLED模块 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611574863185270.png) ### 3.7 步进电机模块 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611587964406841.png) ### 3.8 继电器模块 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611595994187180.png) ### 3.9 杜邦线(母对母) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611604689314411.png) ### 3.10 红外寻迹/循迹模块 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611614059429511.png) ### 3.11 温湿度-DHT11 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611626220730833.png) ### 3.12 BH1750光敏传感器 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611635443201761.png) ## 4. 华为云创建产品与设备 ### 4.1 创建产品、配置产品模型 华为云官网: [https://www.huaweicloud.com/](https://www.huaweicloud.com/) 在产品选项框里找到华为云的IOT产品。选择`设备接入 IoTDA` ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614648462368380.png) **设备接入 IoTDA:** [https://www.huaweicloud.com/product/iothub.html](https://www.huaweicloud.com/product/iothub.html) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614744295859753.png) 点击产品页面,先创建产品。产品一个项目的模型,产品下面可以创建多个具体的设备。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614782785763071.png) 根据自己的实际产品信息填充。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614848404647629.png) 创建成功。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614869058123831.png) 查看产品的详情。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614896155565677.png) 在详情页,创建产品的模型。这个产品的模型就是传感器数据的属性,根据自己上传的传感器数据实际创建。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614922241791340.png) 创建自定义模型。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614999948871350.png) ```cpp 服务ID SmartHome 服务类型 SmartHome 服务描述 智能家居 ``` 添加属性。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655615086032358484.png) 接来来根据自己设备的实际情况添加属性即可。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655615130343232634.png) 所有的属性创建完毕,属性的名字可以使用中文。但是要注意,设备上传时,中文数据的编码要正确,否则会乱码。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655615301757521452.png) ### 4.2 创建设备 接在在左边选项页面选择设备,创建一个设备。 设备可以调用API在程序里自动创建也可以的。 地址: [https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/device/all-device](https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/device/all-device) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655615463722268721.png) 单设备注册。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655615518494453085.png) 注册之后,保存设备信息,接下来生成MQTT参数需要。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655615532973948329.png) ```cpp { "device_id": "62aead8b538e623c4287ef43_Smart_home_dev_1", "secret": "12345678" } ``` ## 5. MQTT协议登录 ### 5.1 MQTT服务器地址信息 ```cpp 华为云物联网平台的域名是: a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com 华为云物联网平台的IP地址是: 121.36.42.100 端口号是 1883 ``` ### 5.1 MQTT订阅主题,发布主题 帮助文档:[https://support.huaweicloud.com/iothub/index.html](https://support.huaweicloud.com/iothub/index.html) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655616047438951722.png) ```cpp 格式: $oc/devices/{device_id}/sys/messages/down //订阅主题: 平台下发消息给设备 $oc/devices/62aead8b538e623c4287ef43_Smart_home_dev_1/sys/messages/down 格式: $oc/devices/{device_id}/sys/properties/report //设备上报数据 $oc/devices/62aead8b538e623c4287ef43_Smart_home_dev_1/sys/properties/report 上属性的数据格式: //上报的属性消息 (一次可以上报多个属性,在json里增加就行了) {"services": [{"service_id": "SmartHome","properties":{"空调":1}}]} ``` ### 5.2 MQTT参数生成 设备创建完成接来下生成MQTT登录账号、密匙,方便设备登录云端平台。 官网工具地址:[ https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/]( https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655616082722954994.png) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655616102514319232.png) ```cpp ClientId 62aead8b538e623c4287ef43_Smart_home_dev_1_0_0_2022061905 Username 62aead8b538e623c4287ef43_Smart_home_dev_1 Password 1052c27bd7ccce57b316005a677f50291cf4a50fc90e0bb1c33dee6beda1ae53 ``` ### 5.3 MQTT客户端模拟登录测试 MQTT客户端下载地址: [https://download.csdn.net/download/xiaolong1126626497/18784012](https://download.csdn.net/download/xiaolong1126626497/18784012) 在MQTT工具里填上MQTT的登录参数,主题发布、订阅信息进行登录测试。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655616277239373829.png) 然后打开设备页面,可以看到设备已经在线了。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655616351384218952.png) 并且在设备页面详情里可以看到刚才上传的数据。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655616394695636600.png) 主题发布时,一次可以上传多个状态。 例如: ```cpp {"services": [{"service_id": "SmartHome","properties":{"空调":1,"风扇":1,"电视":0,"卧室灯":1}}]} ``` ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655616484447749815.png) ## 6. LD3320语音识别模块编程 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611725992215257.png) 下载程序示例。 将开发板的串口通过USB转TTL模块连接电脑即可。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611742117493271.png) 波特率是9600,语音识别时,想要说`小杰`,唤醒语音识别,然后再说出指令,唤醒语音识别就,模块上有一个红色的LED灯会亮。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611759958979893.png) **当前支持的指令如下:** ```cpp 小杰,开卧室灯 小杰,关卧室灯 小杰,开客厅灯 小杰,关客厅灯 小杰,打开电视 小杰,关闭电视 小杰,打开风扇 小杰,关闭风扇 小杰,打开窗帘 小杰,关闭窗帘 小杰,打开空调 小杰,关闭空调 ``` ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611778420798578.png) ## 7. STM32设备端开发 ### 7.1 程序下载 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611815867426325.png) ### 7.2 原理图 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611835725398097.png) ### 7.3 硬件接线 ```cpp 本设计的硬件接线说明: (1)OLED显示屏接线: D0----(SCK)------------------->>PB14 D1----(MOSI)------------------>>PB13 RES—(复位脚低电平有效)-------->>PB12 DC--(数据和命令控制管脚)------>>PB1 CS--(片选引脚)---------------->>PA7 GND--------------------------->>GND VCC--------------------------->>3.3V或者5V (2)ATK-ESP8266 WIFI接线 PA2(TX)--RXD 模块接收脚 PA3(RX)--TXD 模块发送脚 GND---GND 地 VCC---VCC 电源(3.3V~5.0V) (3)LD3320语音识别模块接线说明 GND----GND VCC---3.3V PB11----LD3320语音模块_TX PB10----LD3320语音模块_RX (4)开关空调:1路5V继电器控制 PA6------LED (5)开关风扇:1路5V继电器控制 PA4------LED (6)开关窗帘采用步进电机模拟: 28BYJ4步进电机模拟 ULN2003接线: IN-D: PB5 d IN-C: PB4 c IN-B: PB3 b IN-A: PB2 a + : 5V - : GND (7)卧室照明灯:一盏3W大功率LED灯模拟 PB8------LED (8)客厅照明灯:一盏3W大功率LED灯模拟 PB9------LED (9)环境光检测检测:BH1750数字传感器 SDA-----PB7 SCL-----PB6 GND---GND 地 VCC---VCC 电源(3.3V~5.0V) (10)温湿度传感器: DHT11 VCC--VCC GND---GND DAT---PA5 (11)红外寻迹/循迹模块 VCC--3.3V GND---GND DAT---PA8 (--)板载LED灯:低电平亮 LED1--PC13 BEEP2--PC14 (--)板载按键: KEY1--PA0 按下为高电平 ``` ### 7.4 核心代码 连接华为云服务器采用ESP8266WIFI,加上MQTT协议实现数据通信。标准的ESP8266本身不带MQTT协议栈,也就是说ESP8266默认是没有MQTT协议相关的指令,不能直接通过指令连接MQTT服务器通信,但是也可以自己烧写第三方的SDK,用于支持MQTT指令。 我这里的代码是自己实现的MQTT协议,包括我的其他物联网相关的文章里,只要用到ESP8266的都是自己写的MQTT协议,也就是在代码里实现了MQTT协议栈,使用ESP8266普通的TCP相关的指令就可以完成数据传输,不依赖于ESP8266的SDK版本,任何ESP8266都可以直接使用,为的就是方便移植,通用--通用-通用。 ESP82+STM32实现的MQTT协议栈工程在这里,如果需要带完整MQTT协议工程的可以去这里下载。 这份工程里实现了ESP8266与华为云IOT平台实现数据交互,数据通信,也就是登录、主题发布、订阅,心跳包等操作。 [https://download.csdn.net/download/xiaolong1126626497/58012912](https://download.csdn.net/download/xiaolong1126626497/58012912) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655611912683781454.png) ```cpp #include "stm32f10x.h" #include "delay.h" #include "led.h" #include "key.h" #include "sys.h" #include "usart.h" #include #include #include "timer.h" #include "oled.h" #include "fontdata.h" #include "esp8266.h" #include "app.h" #include "mqtt.h" #include "iic.h" #include "bh1750.h" #include "dht11.h" #include "motor.h" /* 本设计的硬件接线说明: (1)OLED显示屏接线: D0----(SCK)------------------->>PB14 D1----(MOSI)------------------>>PB13 RES—(复位脚低电平有效)-------->>PB12 DC--(数据和命令控制管脚)------>>PB1 CS--(片选引脚)---------------->>PA7 GND--------------------------->>GND VCC--------------------------->>3.3V或者5V (2)ATK-ESP8266 WIFI接线 PA2(TX)--RXD 模块接收脚 PA3(RX)--TXD 模块发送脚 GND---GND 地 VCC---VCC 电源(3.3V~5.0V) (3)LD3320语音识别模块接线说明 GND----GND VCC---3.3V PB11----LD3320语音模块_TX PB10----LD3320语音模块_RX (4)开关空调:1路5V继电器控制 PA6------LED (5)开关风扇:1路5V继电器控制 PA4------LED (6)开关窗帘采用步进电机模拟: 28BYJ4步进电机模拟 ULN2003接线: IN-D: PB5 d IN-C: PB4 c IN-B: PB3 b IN-A: PB2 a + : 5V - : GND (7)卧室照明灯:一盏3W大功率LED灯模拟 PB8------LED (8)客厅照明灯:一盏3W大功率LED灯模拟 PB9------LED (9)环境光检测检测:BH1750数字传感器 SDA-----PB7 SCL-----PB6 GND---GND 地 VCC---VCC 电源(3.3V~5.0V) (10)温湿度传感器: DHT11 VCC--VCC GND---GND DAT---PA5 (11)红外寻迹/循迹模块 VCC--3.3V GND---GND DAT---PA8 (--)板载LED灯:低电平亮 LED1--PC13 BEEP2--PC14 (--)板载按键: KEY1--PA0 按下为高电平 */ //物联网服务器的设备信息 #define MQTT_ClientID "dev1" #define MQTT_UserName "507546" #define MQTT_PassWord "version=2018-10-31&res=products%2F507546%2Fdevices%2Fdev1&et=1680445911&method=md5&sign=qgaS0NCoxqSnIFZGL%2Fz81Q%3D%3D" //订阅与发布的主题 #define SET_TOPIC "$sys/507546/dev1/#" //订阅 #define POST_TOPIC "$sys/507546/dev1/dp/post/json" //发布 //设置连接的路由器信息 #define CONNECT_WIFI "DS小龙哥" //将要连接的路由器名称 --不要出现中文、空格等特殊字符 #define CONNECT_PASS "12345678" //将要连接的路由器密码 #define CONNECT_SERVER_IP "183.230.40.96" //服务器IP地址 #define CONNECT_SERVER_PORT 1883 //服务器端口号 char mqtt_message[100]; //WIFI发送数据存储区域 char data_buff[500]; u8 esp8266_state=0; double Longitude=120.196517; //经度 double latitude=30.194493; //纬度 float bh1750=0; u8 dht11_temp; u8 dht11_humidity; u8 sw1=0; u8 sw2=0; u8 sw3=0; u8 sw4=0; u8 sw5=0; u8 sw7=0; /* 主函数: 程序执行的入口 */ int main(void) { u8 dian_shi=0; //1表示电视开 0表示电视关 u8 mode=0; //0 表示手动模式 1表示自动模式 u32 i=0; u8 key_val; u32 TimeCnt=0; u32 wifi_TimeCnt=0; JTAG_Set(); USART1_Init(115200); //串口1的初始化 USART2_Init(115200); //串口-WIFI TIMER2_Init(72,20000); //超时时间20ms USART3_Init(9600); //串口-语音模块 TIMER3_Init(36,20000); //超时时间20ms //板载按键初始化 KEY_Init(); //板载LED灯初始化 LED_Init(); //外接LED初始化 LED2_Init(); //BH1750的IIC接口 IIC_Init(); //初始化DHT11 DHT11_Init(); //步进电机初始化 Moto_Init(); //初始化 APP_Init(); printf("正在初始化OLED...\r\n"); OLED_Init(0xc8,0xa1); //OLED显示屏初始化--正常显示 OLED_Clear(0x00);//清屏 printf("正在初始化ESP8266..\r\n"); for(i=0;i5;i++) { if(ESP8266_Init()==0) { esp8266_state=1; break; } else { esp8266_state=0; printf("ESP8266硬件检测错误.\n"); } } if(esp8266_state) { printf("准备连接服务器....\r\n"); //非加密端口 printf("WIFI:%d\n",ESP8266_STA_TCP_Client_Mode(CONNECT_WIFI,CONNECT_PASS,CONNECT_SERVER_IP,CONNECT_SERVER_PORT,1)); //2. MQTT协议初始化 MQTT_Init(); //3. 连接服务器 for(i=0;i5;i++) { if(MQTT_Connect(MQTT_ClientID,MQTT_UserName,MQTT_PassWord)==0) { esp8266_state=1; break; } esp8266_state=0; printf("服务器连接失败,正在重试...\n"); delay_ms(500); } printf("服务器连接成功.\n"); //3. 订阅主题 if(MQTT_SubscribeTopic(SET_TOPIC,0,1)) { printf("主题订阅失败.\n"); } else { printf("主题订阅成功.\n"); } } ........ ........ ........ ........ ``` ## 8. QT上位机软件开发 ### 8.1 应用层下发的指令 为了更方便的展示设备数据,与设备完成交互,还需要开发一个配套的上位机,官方提供了应用侧开发的API接口、SDK接口,为了方便通用一点,我这里采用了API接口完成数据交互,上位机软件采用QT开发。 帮助文档地址: [https://support.huaweicloud.com/usermanual-iothub/iot_01_0045.html](https://support.huaweicloud.com/usermanual-iothub/iot_01_0045.html) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655612803832262425.png) ### 8.2 查询设备属性接口 设备属性就是设备上传的传感器状态数据信息,应用侧提供了API接口,可以主动向设备端下发请求指令;设备端收到指令之后需要按照约定的数据格式上报数据;所以,要实现应用层与设备端的数据交互,需要应用层与设备端配合才能完成。 **应用层下发的指令:** 帮助文档地址: [https://support.huaweicloud.com/api-iothub/iot_06_v5_0034.htm](https://support.huaweicloud.com/api-iothub/iot_06_v5_0034.htm)l 接口的在线调试地址: [https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=IoTDA&api=ListProperties](https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=IoTDA&api=ListProperties) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655612876645553248.png) 如果请求参数和返回值不清楚,写代码前,先使用在线调试接口体验一下,验证数据交互是否OK。 请求参数里比较总要的两个必填参数,是设备ID和服务ID,这两个参数在第3章节就介绍过如何获取了,在产品页面创建自定义属性时可以看到服务ID。 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655612889420288630.png) ### 8.2 开发环境介绍 上位机软件采用Qt框架设计,Qt是一个跨平台的C++图形用户界面应用程序框架。Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。简单来说,QT可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。 **QT官网:** [https://www.qt.io/](https://www.qt.io/) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655613296524780062.png) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655613335122227544.png) ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655613377188762268.png) ### 8.3 主要的代码 ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20220619/1655614528832743112.png) 下面代码里介绍了更新token、获取token、查询设备属性,上传设备属性等主要请求代码。 ```cpp /* 功能: 获取token */ void Widget::GetToken() { //表示获取token function_select=3; QString requestUrl; QNetworkRequest request; //设置请求地址 QUrl url; //获取token请求地址 requestUrl = QString("https://iam.%1.myhuaweicloud.com/v3/auth/tokens") .arg(SERVER_ID); //自己创建的TCP服务器,测试用 //requestUrl="http://10.0.0.6:8080"; //设置数据提交格式 request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json;charset=UTF-8")); //构造请求 url.setUrl(requestUrl); request.setUrl(url); QString text =QString("{\"auth\":{\"identity\":{\"methods\":[\"password\"],\"password\":" "{\"user\":{\"domain\": {" "\"name\":\"%1\"},\"name\": \"%2\",\"password\": \"%3\"}}}," "\"scope\":{\"project\":{\"name\":\"%4\"}}}}") .arg(MAIN_USER) .arg(IAM_USER) .arg(IAM_PASSWORD) .arg(SERVER_ID); //发送请求 manager->post(request, text.toUtf8()); } //更新token void Widget::on_pushButton_update_token_clicked() { GetToken(); } //查询设备属性 void Widget::Get_device_properties() { //表示获取token function_select=0; QString requestUrl; QNetworkRequest request; //设置请求地址 QUrl url; //获取token请求地址 requestUrl = QString("https://iotda.%1.myhuaweicloud.com/v5/iot/%2/devices/%3/properties?service_id=%4") .arg(SERVER_ID) .arg(PROJECT_ID) .arg(device_id) .arg(service_id); //自己创建的TCP服务器,测试用 //requestUrl="http://10.0.0.6:8080"; //设置数据提交格式 request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); //设置token request.setRawHeader("X-Auth-Token",Token); //构造请求 url.setUrl(requestUrl); request.setUrl(url); //发送请求 manager->get(request); } //更新设备属性 void Widget::on_pushButton_update_device_clicked() { Get_device_properties(); } ```
总条数:418 到第
上滑加载中