machina.io - 介绍

一、What is macchina.io?


A toolkit for embedded IoT edge and fog computing applications that connect sensors, devices and cloud services.

 macchina.io is an open source software toolkit for quickly building device applicationsfor the Internet of Things running on Linux-based devices like the Raspberry Pi, Beaglebone or MangOH.macchina.io implements a web-enabled, modular and extensible C++ and JavaScript runtime environment and provideseasy to use building blocks. These enable applications to talk to various sensors, devices and cloud services,and to process, analyze and filter sensor data locally, at the edge device or within the local network ("fog").

 macchina.io 是为物联网接入设备的而开发的一个平台:支持类似OSGI的OSP功能,通过动态添加/卸载服务的方式来扩展应用的功能,灵活方便,低耦合,适合快速开发扩展功能;支持类似JAVA的RMI远程调用功能RemoteObject,实现跨平台、跨进程,分布式协同工作;支持WebServer功能,并内嵌google V8 javascirpt 引擎,开发出类似JAVA的 Servlet(在macchina中叫就javascript servlet ) 和 JSP(在macchina中叫就javascript server page);支持适合嵌入式设备的sqlite数据库功能;用户层支持流行的动态网页开发的anjularjs.一整套的系统便捷用户快速二次开发项目.


二、macchina.io框架组成



三、macchina.io源码结构介绍



3.1、platform


 macchina的平台提供上层应用所需的基础架构功能:Foundation基础库提供是对操作系统之上的一层封装,提供进程、线程、同步互斥、锁、引用计数、智能指针、文件和目录管理等等接口;Data基础库提供数据库层的封装,SQLite是对Data抽象层的的实现;Crypto提供加密解密认证功能;JS基础库是对Google V8 javascirpt脚本解析的封装库,实现Server端运行javascirpit脚本;JSON解析、加载json文件;Net封装提供网络传输功能,包括各种套接字的封装,TCPServer、HTTP、FTP、套接字反应堆等等;NetSLL_OpenSLL基于openssl提供安全https功能;OSP类似于OSGI,是动态化模块化系统框架,以提供服务为接口,每一个实现一个或者多个服务接口功能的Bundle能够被动态的加载、解析(解决Bundle之间依赖关系)、运行、停止。RemotingNG实现跨进程、跨设备的远程调用框架,类似于JAVA的RMI,是macchina实现分布式的基础;Serial是串口通信的实现;Util是应用程序框架的封装,对于一个应用程序,一般都提供日志记录功能,参数配置功能,命令行参数解析功能等,Util基础库封装、抽象这些通用的事物;RedisXMLZip库功能正如其名;CppUnit是对应的单元测试。


3.2、device


 对设备驱动层的封装,为了更加便捷的访问设备,设备层中的每一个具体的设备都是继承扩展服务接口(Service)的,因为只有实现服务接口才能和OSP库结合,目前提供定位功能(CNSS)、串口通行功能、TF卡、传感器数据读取、CISS等;


3.3、protocols


 协议层同样是通过继承服务,来提供各种协议的实现,目前提供的协议有:BtLE蓝牙协议、UDP协议、MQTT物联网通信协议、Modbus传输协议、Xbee协议、自定义的WebTunnel协议。


3.4、services


 协议层同样是通过继承服务,来提供各种服务的实现,目前提供:设备状态读取服务、手机连接服务、订阅推送服务等。


3.5、server


 启动一个服务器端应用程序,此应用程序继承于Util的ServerApplication,会加载OSP、WebServer等,提供类似于Apache,让客户端能够通过http访问资源。


3.6、webui


 用户显示层,属于前端开发部分,分为前端的基础库和用户二次开发部分,前端的基础库包括:Ace提供在线文本编辑功能;Anjularjs提供动态网页开发功能;AnjularFileUpload提供拖拽文件上传功能;AnjularUITree提供UI布局组件;CharJS提供图标绘制功能;JQuery基础库;MomentJS提供时间、日期等功能;用户二次开发部分包括:BundleAdmin提供Bundle加载、卸载、运行、停止功能;Playground提供编写JavaScript界面;SystemInformation提供读取设备型号、内存使用信息、当前设备CPU使用情况;GNSSTracking提供定位显示;Console提供设备的事实打印输出;Launcher实现Login界面和登录后所展示的各个功能入口图标界面倒换的管理。


3.7、sample


  sample是一个仿真的温度传感器实例,通过定时的读取传感器的数值,绘制成温度随时间变化的图表。


3.8、launcher


四、引用参考


官网:https://macchina.io/

源码下载地址:https://github.com/macchina-io/macchina.io

macchina框架介绍:https://macchina.io/docs/00100-MacchinaIntroduction.html

POCO基础平台:https://pocoproject.org/


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值