目录

前言

正文

一、EdgerOS

1. 基础介绍

2. 系统架构

二、开发实践

1. 环境搭建

2. 代码编写

3. 代码编译

4. 打包安装

结尾


前言

EdgerOS 的设计初衷是成为万物互联的智能操作系统,能够为广大开发者提供基于互联网技术栈的操作系统平台,最大化的降低物联网 App 开发难度,提高开发效率。通过爱智云,EdgerOS 为开发者提供了强大的云-边-端协同能力。今天我就向大家介绍在 iOS 手机端利用 EdgerOS 系统开发智能监控设备的一次实践经历。

正文

一、EdgerOS

1. 基础介绍

EdgerOS 是基于 SylixOS 内核的智能边缘计算操作系统,可广泛应用于面向智慧家庭、智慧汽车、智慧园区等领域,有效降低开发门槛、缩短开发周期,为物联网带来全新智慧化体验。通过建立跨厂商、跨协议的开放的生态,与广大开发者一起实现万物智能互联。该产品具备成本低、开放式设计、设备联动、极简开发等特定。对了,还需要介绍的是搭载 EdgerOS 智能操作系统 Spirit 1 长成这样:

2. 系统架构

EdgerOS 操作系统的系统架构分为三个部分,分别是基础组件、系统服务、应用架构,同时,它们又包含丰富的细分模块,具体如下图所示:

二、开发实践

1. 环境搭建

1.1 iOS 手机端

首先需要下载并安装爱智 APP,连接名称为 EOS-XXXXXX 的 wifi 网络。在 APP 中点击“发现设备”按钮,添加设备后并完成设备的注册。最后设置网络名称和密码,激活设备。

1.2 PC 电脑端

搭建 EdgerOS 在 PC 端的开发环境还是非常方便,我们直接使用 VSCode 开发工具就可以,只是需要我们安装一个相应的开发插件。在 VSCode 中扩展程序中搜索 edger 关键字,会出现下图所示的插件工具,点击“安装”即可。

安装完成后,在资源管理器的最下方会出现 EDGEROS 面板,我们选择“创建项目”,具体操作如下所示:

点击“创建项目”后,会出现项目模版库列表,如下图所示 :

我们选择“基础的流媒体摄像头监控 EdgerOS APP ”模板作为整个工程的基础组件。如果遇到该页面为空,没有这么多的模板信息,可以尝试点击左下角的“刷新模板信息”按钮。如果还是为空,可以切换仓库源为 Gitee,因为系统默认是 Github 仓库源,很可能因为网络问题导致无法访问。具体修改方式可以参考下图:

选择“立即应用”后,会出现下图的项目信息页,我们参考下图完成项目配置。

信息填写完成后,点击页面右下角的“立即创建”按钮,我们就把基础工程创建好了,具体如下图所示:

其中 camera1 目录中是后端逻辑代码,web 目录中是前端业务逻辑代码,项目本身实现了前后端分离。

2. 代码编写

2.1 后端代码

引入项目所需的系统模块,代码如下:

const WebApp = require('webapp');
const WebMedia = require('webmedia');
const bodyParser = require('middleware').bodyParser;
const {Manager} = require('@edgeros/jsre-medias');
const CameraSource = require('./camera_src');

定义基础变量,代码如下:

/* Register media source. */
const sourceName = 'camera-flv';
WebMedia.registerSource(sourceName, CameraSource);/* WebApp. */
var app = WebApp.createApp();/* Set static path. */
app.use(WebApp.static('/public'));/* Media manage server. */
var server = undefined;/* Is server starting. */
var starting = false;

创建媒体服务,代码如下:

function createMediaSer() {console.log('Create media server.');if (server) {return server;}var opts = {mediaTimeout: 1800000,searchCycle: 20000,autoGetCamera: false};server = new Manager(app, null, opts, (opts) => {return {source: sourceName,inOpts: opts,outOpts: null}});server.on('open', (media) => {console.log('Media open.')media.on('open', (media, client) => console.log('Media client open.'));media.on('close', (media, client) => console.log('Media client close.'));});return server;
}

定义设备列表查询接口,代码如下:

app.get('/api/list', (req, res) => {if (!server) {var ret = startServer();if (!ret) {return res.json([]);}}var devs = [];server.iterDev((key, dev) => {var info = dev.dev;var stream = dev.mainStream;var media = stream ? stream.media : null;devs.push({devId: key,alias: `${info.hostname}:${info.port}${info.path}`,report: info.urn,path: media ? '/' + media.sid : '',status: media ? true: false});});res.send(JSON.stringify(devs));
});

2.2 前端代码

引入组件模块,代码如下:

import Vue from 'vue';
import App from './App.vue';
import router from './router';
import Vant from 'vant';
import 'vant/lib/index.css';import {Notify} from 'vant';
import {edger} from '@edgeros/web-sdk';
import {setToken, setSrand} from './lib/auth';
import {setPerms, checkPerms, requestPerm} from './lib/permission';

定义基础变量以及收发事件,代码如下:

Vue.config.productionTip = false;Vue.use(Vant);
Vue.use(Notify);edger.onAction('permission', (data) => {setPerms(data);
});edger.onAction('token', (result) => {const { token, srand } = result;setToken(token);setSrand(srand);
});edger.token()
.then((result) => {const {token, srand} = result;setToken(token);setSrand(srand);
})
.then(() => {var ret = checkPerms();if (ret.length > 0) {requestPerm();}
})
.catch((err) => {console.error(err);
})
.finally(() => {NodePlayer.load(()=>{new Vue({router,render: h => h(App),}).$mount('#app');});
});

3. 代码编译

在两个工程目录 camera1 和 web 中分别执行 npm  install,安装依赖库,成功后如下图所示:

它们各自生成自己的 node_modules 库目录。进入 web 目录,执行 npm run build 命令生成对应的 dist 目录,将其中的文件拷贝到 camera1 的 public 目录中。

4. 打包安装

在进程打包安装前,首先需要添加设备,IP 默认是 192.168.128.1,设备名字随意,开发密码需要到手机端查看(前提是打开开发者模式),具体方法如下图所示:

添加设备成功后,点击右侧的“安装 EdgerOS APP”按钮,具体操作如下图所示:

此时,PC 电脑和 iOS 手机端都同时登陆 EdgerOS 分享出来的 wifi,当提示安装成功后,我们打开手机,进入 EdgerOS 应用程序,界面如下图所示:

我们就可以看到我们打包的 smarteye 应用程序, 点击 APP 出现如下提示:

点击“确定”,进入设备列表,发现是空的,因为确实没有设备。于是自己尝试修改代码,启用系统自身的摄像头设备,表现如下:

启动 iOS 摄像头貌似没有成功,这个问题还需要继续跟进。

结尾

好了,今天关于 EdgerOS 系统开发实践就介绍这么多,关于视频设备接入的内容,我们放到下一篇文章中再介绍,今天已经不早了,晚安各位。

【本文正在参与"2021爱智先行者-征文大赛"活动】,活动链接:https://bbs.csdn.net/topics/602601454

2021爱智先行者—家用智能监控设备开发初体验相关推荐

  1. 2021爱智先行者—最全硬件入手体验及介绍

    [本文正在参与"2021爱智先行者-征文大赛"活动] https://bbs.csdn.net/topics/602601454 最近看到爱智他们家的Edgeros在做体验,于是就 ...

  2. 《2021爱智先行者—初体验-图文解析精灵1号边缘计算机的安装与调试、启动自带的WiFi路由器功能、编写安装一个计算器小程序》

    [本文正在参与"2021爱智先行者-征文大赛"活动]活动页面链接:https://bbs.csdn.net/topics/602601454 一.组装与连接网络过程中的一些问题与解 ...

  3. 2021爱智先行者——EdgerOS Spirit 1深度使用体验与EdgerOS应用开发实践

    一.前言 ① 智能边缘计算操作系统 EdgerOS 是为万物互联时代而生的智能操作系统.为广大开发者提供基于互联网技术栈的操作系统平台,极大简化了物联网 App 开发难度,提高开发效率.通过爱智云,E ...

  4. 《2021爱智先行者—精灵1号边缘计算机》

    [本文正在参与"2021爱智先行者-征文大赛"活动]活动页面链接:https://bbs.csdn.net/topics/602601454 2021爱智先行者-精灵1号边缘计算机 ...

  5. 2021爱智先行者 - 使用精灵一号三个月以来的总结

    [本文正在参与"2021爱智先行者-征文大赛"活动]https://mp.weixin.qq.com/s/I2s99dZpbP0QpMiKFneYJA 前言 之前因为各种机缘巧合与 ...

  6. 2021爱智先行者—软件入门及远程控制开关灯

    [本文正在参与"2021爱智先行者-征文大赛"活动] https://bbs.csdn.net/topics/602601454 上一篇介绍硬件的最后说了,嵌入式应用中的体验好坏最 ...

  7. 2021爱智先行者 - 智能灯(手势开关)

    一.前言 [本文正在参与"2021爱智先行者-征文大赛"活动] 最近跟了多期 <2021爱智先行者>直播课,了解了一些关于edgros的知识,自己也关注了爱智官方以及公 ...

  8. 2021爱智先行者—智能灯光开关

    2021爱智先行者-智能灯光开关 既可以蹭热度,水文章还有机会拿奖金,这我怎么能错过呢???立马开始光速整活! [本文正在参与"2021爱智先行者-征文大赛"活动]https:// ...

  9. 2021爱智先行者—(2)零基础APP开发实例

    [本文正在参与"2021爱智先行者-征文大赛"活动],活动链接:https://bbs.csdn.net/topics/602601454 欢迎关注 『Python小白的项目实战』 ...

最新文章

  1. Webpack 代码分离
  2. c语言输出居中对齐_PDF管理API-Aspose.PDF 11月新更上线!支持居中对齐输出HTML
  3. 201671010139 徐楠
  4. 验证码的编写——本质:图片目的:防止恶意表单注册
  5. 关于调试windows services的方法
  6. Web开发模式【Mode I 和Mode II的介绍、应用案例】
  7. elasticsearch-1
  8. 屏幕空间实时非平面反射
  9. [导入] 用java把页面日期控件写出来
  10. 创建设备文件节点_使用device_create实例分析
  11. python货币转化为资本的前提_深度剖析比特币背后的技术细节
  12. 免费——离散数学(左孝凌)课后习题答案
  13. NOIp2016纪录[那些我所追求的]
  14. excel随机数_EXCEL随机数函数rand、randbetween
  15. android传感器原理,浅谈Android传感器 III-磁传感器
  16. 三、大数据时代下的SQL Server第三方负载均衡方案----Moebius测试
  17. 苏州大学计算机科学与技术研究生院,苏州大学计算机科学与技术学院第十四届研究生代表大会...
  18. 什么是ACL和RBAC
  19. 基于51单片机的红外报警实验
  20. 美团-移动端UI一致性解决方案

热门文章

  1. Python调用百度通用翻译api
  2. 关于VSCODE安装不了华为IoT Link的解决办法
  3. Solidity - 介绍
  4. Mvp+Okhttp+Event 传值
  5. uniapp保存图片到相册demo效果(整理)
  6. DX11——第一个程序:Box
  7. 自动驾驶方程式赛车,微软发布机器学习开源框架 | AI一周学术
  8. 勇探计算机城堡教学反思,《梦幻中的城堡》美术教学反思
  9. 基于ASP学生资助管理系统的设计与实现
  10. Gazebo结合ROS仿真时,如何编写机器人的URDF