5-Openwrt MQTT client使用

5-Openwrt MQTT client使用,第1张

在mosquitto里面有个client目录,里面就是使用libmosquitto实现的客户端程序,封装成mosquitto_sub和mosquitto_pub命令行。

所以新建一个跟client同一级,自己的client,添加对应的文件

Makefile的内容

main.c的内容

myclient.h的内容

外层的mosquitto/src/Makefile里面添加myclient文件的编译

编译测试一切正常,接下去添加mqtt的内容

mqtt client里面最主要的就是几个回调函数,先调用lib_init,正常后,就这只各个callback,然后在callback里面做逻辑。

各回调函数的内容

逻辑应该也比较直观,当connect成功后,在回调函数里面订阅test1主题的内容,然后发布test2主题的内容。

收到内容就在 myclient_message_callback 回调里面打印处理。

正常情况我们都会让客户端的连接做一些账号密码的设置,避免别人攻击。

将allow_anonymous改成不允许匿名登陆,并制定pwfile。

vim /etc/mosquittoConf/mosquitto.conf

在ubuntu上面使用mosquitto_passwd生成密码

就会在pwfile文件下生成账号和加密的密码root/admin

这是后登陆的时候就需要-u root -P admin进行登陆

mosquitto提供了mosquitto_passwd命令来生成账号密码等,不过这个方式不喜欢,因为没办法定制化自己想要的账号密码加密方式,所以做了一些小改动。

在myclient里面加我们想要的加密方式,然后在mosquitto broker的源码里面添加对应的解密方式即可。

如下,账号为client_name,然后通过rsa和base64生成密码,myclient的试下调用 mosquitto_username_pw_set 函数。

然后在mosquitto broker里面添加解密,位于mosquitto/src/security.c文件的 mosquitto_unpwd_check 函数里面。

另一个加密方式就是SSL认证,给客户端提供相应的证书,和配置协议(mqtt or websockets)一样,在配置文件监听的端口下面可以添加ssl的配置选项,每个port都可以单独配置ssl的证书内同容。

如下:从端口7885连接进来的设备需要下面的证书要求

设备的认证有单向认证和双向认证两种:

单向认证,只需要提供ca证书

双向认证,需要ca,pem,key三个

按步骤一步一步执行,生成证书(里面也可以指定各参数,有效时间):

按上面的步骤可以生成如下文件

在服务器端需要放三个文件

如果是单向认证,客户端只需要一个文件

如果是双向认证,客户端只需要三个文件

查看证书的有效时间

MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。第一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。第二步:下载mosquitto需要的依赖sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是1.5.1tar xzvf mosquitto-1.5.1.tar.gz第四步:编译cd mosquitto-1.5.1/makemake install第五步:启动mosquitto./mosquitto -v1535473957: mosquitto version 1.5.1 starting1535473957: Using default config.1535473957: Opening ipv4 listen socket on port 1883.1535473957: Opening ipv6 listen socket on port 1883.这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquitto.conf,启动时候加上参数 -c,./mosquitto -c mosquitto.conf可以看到,mosquitto监听的端口为1883.这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。先发布一个主题“home/garden/fountain/2”内容是“hello world”这时候在mosquitto会打印出下面的log535474247: New connection from 192.168.1.105 on port 1883.1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).1535474247: No will message specified.1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)1535474307: Received PINGREQ from MQTT_FX_Client1535474307: Sending PINGRESP to MQTT_FX_Client1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))1535474367: Received PINGREQ from MQTT_FX_Client1535474367: Sending PINGRESP to MQTT_FX_Client订阅主题“home/garden/fountain/2”可以看到收到了自己发布的消息。用wireshark抓包可以看到抓到了一个MQTT的publish的报文。

花开半夏

面向物联网的21个开源软件项目有哪些,物联网开源平台搭建

admin 07-26 04:41 166次浏览

2019独角兽企业重金招聘Python工程师标准

51CTO.com直译】物联网市场呈现碎片化、无定形化、不断变化的特征,其性质通常只需关注互 *** 作性。 难怪开源在这方面不俗。 ——客户犹豫不决,害怕将物联网的未来寄托在可能难以定制或互联的专有平台上。

本文介绍了主要的开源软件项目,重点讨论了面向家庭和工业自动化的开源技术。 我们忽略了专注于垂直领域的物联网项目,如Automotive Grade Linux和Dronecode。 我们还忽略了面向互联网的开源 *** 作系统发行版,包括Brillo、Contiki、Mbed、OpenWrt、Ostro、Riot和Ubuntusnappping。这次,我们将智能

这里介绍的21个项目包括由Linuxfoundation管理的两个大型项目: Allseen(Alljoyn )和ocf (iotivity ),以及物联网传感器的端点和网关我还介绍了几个专门针对物联网生态系统特定领域的小项目。 我们曾介绍过更多的项目,但越来越难分清物联网软件和普通软件的区别。 从嵌入式环境到云,越来越多的项目都带有物联网元素。

您声称这21个项目都是开源的,但请确保完整的名称不在本文的范围内。 它们至少在生态系统的一个部分运行Linux,大多数都完全支持Linux,从开发环境到云/服务器、网关和传感器端点部件。 大多数组件都有可以在Linux开发板(如Raspberry Pi和BeagleBone )上运行的组件,大多数都支持Arduino。

物联网领域仍然有很多专有技术,特别是在自上而下的企业平台上。 但是,其中也提供了部分开放访问权限。 例如,威瑞森的ThingSpace针对4G智慧城市APP应用,拥有一套免费的开发API,支持开发板,尽管核心平台本身是独一无二的。 相似的是,亚马逊的AWS物联网工具包包括部分开放的设备SDK和开源入门工具包。

其他主要的专有平台包括苹果的HomeKit和微软的Azure物联网工具包。 在拥有230个成员的Thread Group中,该组织监督基于6LoWPAN的对等Thread网络协议。 Thread Group由谷歌的母公司Alphbet旗下的Nest设立,没有提供像AllSeen和OCF那样全面的开源框架。 但是,它与Brillo相关,也与Weave物联网通信协议相关。 5月,Nest发布了名为OpenThread的开源版Thread。

介绍21个面向物联网的开源软件项目。

AllseenAlliance(Alljoyn ) )。

由Allseenalliance(asa )监管的AllJoyn互 *** 作系统框架可能是市场上采用最广泛的开源物联网平台。

Bug Labs dweet和freeboard

bugglas是从制造基于模块化Linux的有bugh的硬件设备开始的,但很久以前就演变成了与硬件无关的企业级物联网平台。 Bug Labs提供“dweet”消息、警告系统和“freeboard”物联网设计APP。 dweet使用HAPI Web API和JSON来帮助发布和描述数据。 freeboard是一种拖放式工具,用于设计物联网仪表板和可视元素。

DeviceHive

DataArt基于AllJoyn的设备管理平台可以运行在许多云服务上,包括Azure、AWS、Apache Mesos和OpenStack。 DeviceHive专注于使用ElasticSearch、Apache Spark、Cassandra和Kafka,分析大数据。 有些网关组件可以在运行Ubuntu Snappy Core的任何设备上运行。 模块化网关软件与DeviceHive云软件和物联网协议配合使用,作为Snappy Core服务进行部署。

DSA

分布式服务架构(DSA )便于集中式设备的互 *** 作性、逻辑和APP应用。 DSA项目正在构建分布式服务链接(DSLinks )库,以支持协议转换以及与第三方数据源的数据集成。 DSA提供了一个可扩展的网络拓扑,其中包括多个DSLinks,用于在连接到分层代理分层结构的物理互联网边缘设备上运行。

EclipseIOT(Kura ) )。

Eclipse基金会的物联网主要围绕基于Java/OSGi的Kura API容器和聚合平台,支持在服务网上运行的m2m APP应用。 Kura基于Eurotech的Everywhere Cloud物联网框架往往与Apache Camel集成,后者是基于Java的基于规则的路由和中介引擎。 Eclipse物联网子项目包括Paho消息传递协议框架、面向轻量级服务器的Mosquitto MQTT体系结构和Eclipse SmartHome框架。 有些项目实现名为Californium的基于Java的受限APP应用协议(CoAP )。

Kaa

CyberVision支持的Kaa项目为云互联的大型物联网提供了可扩展的端到端物联网框架。

该平台包括一种支持REST的服务器功能,可用于服务、分析和数据管理,通常部署成由Apache Zookeeper协调的节点集群。Kaa的端点SDK支持Java、C++和C开发,负责处理客户机/服务器通信、验证、加密、持久性和数据编排。SDK包括针对特定服务器、支持GUI的模式,这些模式可转换成物联网物件绑定。模式治理语义,并抽象一组迥异设备的功能。

Macchina.io

Macchina.io提供了一种“支持Web、模块化、可扩展的”JavaScript和C++运行时环境,可用于开发在Linux开发板上运行的物联网网关应用程序。Macchina.io支持一系列广泛的传感器和连接技术,包括Tinkerforge bricklet、XBee ZB传感器、GPS/GNSS接收器、串行和GPIO联网设备以及方向感应器。

GE Predix

GE面向工业物联网的平台即服务(PaaS)软件基于Cloud Foundry。它增添了资产管理、设备安全、实时预测分析,并支持不同数据的采集、存储和访问。GE Predix是GE为内部运营而开发的,它已成为最成功的企业物联网平台之一,收入大约60亿美元。GE最近与HPE达成了合作伙伴关系,HPE将把Predix整合到自己的服务中。

Home Assistant

这个作为后起之秀的草根项目提供了一种面向Python的家居自动化方法。

Mainspring

M2MLabs的基于Java的框架针对远程监控、车队管理和智能电网等应用领域中的M2M通信。与许多物联网框架一样,Mainspring高度依赖REST Web服务,并提供了设备配置和建模工具。

Node-RED

这种面向Node.js开发人员的可视化布线工具拥有基于浏览器的数据流编辑器,可用于设计物联网节点当中的数据流。然后,节点可以迅速部署成运行时环境,并使用JSON来存储和共享。端点可以在Linux开发板上运行,支持的云包括Docker、IBM Bluemix、AWS和Azure。

Open Connectivity Foundation(IoTivity)

英特尔和三星支持的开放互联联盟(OIC)组织和UPnP论坛组成的这个组织正在努力成为物联网方面领先的开源标准组织。OCF的开源IoTivity项目依赖充分利用的JSON和CoAP。

openHAB

OpenIoT

这款基于Java的OpenIoT中间件旨在使用一种公用云计算交付模式,为开放、大规模的物联网应用提供便利。除了表示物联网物件的本体、语义模型和标注外,该平台还包括传感器和传感器网络中间件。

OpenRemote

OpenRemote为家庭和楼宇自动化而设计,它以广泛支持众多智能设备和网络规范而出名,比如1-Wire、EnOcean、 xPL、Insteon和X10等规范。规则、脚本和事件都得到支持,还有基于云的设计工具,可用于用户界面、安装、配置、远程更新及诊断。

OpenThread

这是Nest最近从基于6LoWPAN的物联网Thread无线网络标准分离出来的开源项目,它还得到了ARM、Microchip旗下的Atmel、Dialog、高通和德州仪器的支持。OpenThread实现了所有Thread网络层,还实现了Thread的端点设备、路由器、Leader和边界路由器等角色。

Physical Web/Eddystone

谷歌的Physical Web让蓝牙低能耗(BLE)信标可以将URL发送到智能手机。它针对谷歌的Eddystone BLE信标经过了优化,这提供了除苹果的iBeacon之外的一种开放技术。其想法是,行人可以与任何具有BLE功能的支持性设备(比如汽车停放计时器、标牌或零售产品)联系。

PlatformIO

基于Python的PlatformIO包括IDE、项目生成器和基于Web的库管理器,它是为访问来自基于微控制器的Arduino和基于ARM Mbed的端点的数据设计的。它为200多种板卡提供了预先配置的设置,并与Eclipse、Qt Creator及其他IDE整合起来。

The Thing System

这种基于Node.js的智能家居“监管”软件声称支持真正的自动化,而不是简单的通知。其自学习人工智能软件可处理许多协同式M2M *** 作,不需要由人干预。缺少云组件恰恰提供了更好的安全性、隐私性和控制性。

ThingSpeak

成立五年的ThingSpeak项目专注于传感器日志、位置跟踪、触发器及提醒以及分析。ThingSpeak用户可以使用用于物联网分析和可视化的MATLAB版本,不需要向Mathworks购买许可证。

Zetta

Zetta是一种面向服务器的物联网平台,利用Node.js、REST和WebSockets构建而成,奉行基于数据流的“响应式编程”开发理念,用Siren超媒体API连接起来。设备被抽取成REST API,用云服务连接起来,这些服务包括可视化工具,并支持Splunk之类的机器分析工具。该平台可将Linux和Arduino开发板之类的端点与Heroku之类的云平台连接起来,以便构建地理分布式网络。

转载于:https://my.oschina.net/RainyZou/blog/1605337

新功能发布记录 Anycast加速 AnycastEIP

github开源物联网,如何选择开源的物联网平台

仓储物联网解决方案,物联仓储项目经验

相关内容

1新功能发布记录 Anycast加速 AnycastEIP

2pack是什么app,pajek官网怎么

3物联网数据平台,云 物联网

4阿里云搭建mqtt服务器,自建mqtt云平台

5阿里云物联网通信,物联网mqtt服务器与应用服务器通信

7阿里云生活物联网app开发,微信小程序在哪里

8配置通过telnet登录系统,ma控台连接artnet扩展器教程

9mqtt物联网应用实例,mqtt协议详解

© 2007-2023 花开半夏 版权所有 ICP备案: 鲁ICP备18044594号-1 鲁公网安备 37030202000467号

上一篇下一篇


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7205662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存