元经纪 - 元宇宙与人工智能领域相关产品与服务一站式采购平台

400-6166692

zetta:面相物联网的中间件平台

分类:开源 时间:2023-03-02 07:15 浏览:598
概述
Zetta 是一个开源、API 优先、基于Node.js的,面相物联网的中间件平台。
内容

概述

Zetta 是一个开源、API 优先、基于Node.js的,面相物联网的中间件平台。 Zetta的应用领域包括:
  1. 工业自动化:Zetta可以帮助制造业、能源行业和其他工业部门将各种设备连接到互联网上,并提高其生产效率和可靠性。
  2. 智能家居和城市:Zetta可以用于连接和管理智能家居设备,例如灯光、温度控制器、保安系统等;同时也可以用于实现智慧城市解决方案,例如交通管理、智能环境和物联网安全。
  3. 医疗保健:Zetta可以用于连接各种医疗设备和生命支持系统,以确保医疗保健服务可以更便捷地提供给患者和医生。
  4. 物流和资产管理:Zetta可以用于追踪和管理具有商品标签或RFID标签的产品和资产,以优化物流运输和资产管理过程。
总之,Zetta可以适用于各种IoT应用场景,涵盖多种行业,其核心目标是为企业和客户提供一个高效、安全、可扩展的物联网系统。

开始使用 Zetta

Zetta Quick Start是 Zetta 的典型“Hello World”项目。了解如何安装 Zetta、创建新的 Zetta 项目、启动 Zetta 服务器以及调用 Zetta API。只需几分钟!

安装 Zetta

您可以通过从 GitHub 克隆或使用 NPM 来安装 Zetta:

从 GitHub 克隆

git clone git@github.com:zettajs/zetta.git && cd zetta

npm install

NPM

npm install zetta

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

关键概念

在Zetta Doc wiki上,您将找到概念概述、入门教程、API 参考和其他主题,以帮助您构建 Zetta 项目。

安装模拟设备驱动程序

  1. 如果 Zetta 服务器仍在运行,请点击Ctrl-c以停止它。
  2. hello-zetta目录中,使用 NPM 安装模拟驱动程序:npm install zetta-led-mock-driver --save注意:按照惯例,Zetta 设备驱动程序名称遵循模式 zetta-[device name]-[platform name]-driver。在此示例中,我们在“模拟”平台上控制 LED 设备。例如,从 Intel Edison 开发板控制 LED 的驱动程序可能称为 zetta-led-edison-driver.
  3. index.js在文本编辑器中打开。
  4. 将此 require 语句添加到第 2 行:var LED = require('zetta-led-mock-driver');
  5. 将此use语句添加到第 6 行:.use(LED)
  6. 确保代码看起来像这样,然后保存文件:
var zetta = require('zetta');
var LED = require('zetta-led-mock-driver');

zetta()
  .name('Hello Zetta')
  .use(LED)
  .listen(1337, function(){
     console.log('Zetta is running at http://127.0.0.1:1337');
});

测试服务器

现在我们已经将服务器配置为使用模拟 LED 驱动器。在查看驱动程序之前,让我们对其进行测试。
  1. 启动服务器:node index.js
  2. 请注意,终端输出有一些我们以前没有看到的新信息——我们添加到集线器的 LED 设备被称为“侦察兵”的东西发现了。我们将在另一个主题中详细讨论侦察员。
  Oct-23-2015 10:02:24 [scout] Device (led) f826f6e0-ebb8-430a-9e1e-6efddebc42fc was discovered
  Oct-23-2015 10:02:24 [server] Server (Hello Zetta) Hello Zetta listening on http://127.0.0.1:1337
  Zetta is running at http://127.0.0.1:1337 
设备发现是 Zetta 的一个重要概念。当 Zetta 发现设备时,设备信息会自动添加到 API 中。在这种情况下,您可以编写一个非常简单的应用程序,使用此 API 打开和关闭 LED。让我们看看它是如何工作的。

命中API

  1. 使用 cURL 或在 Postman 或 Advanced REST 客户端等 REST 应用程序中,调用根 URL:curl http://127.0.0.1:1337
  2. 然后,在响应中找到/servers/Hello%20ZettaURL 并调用它:curl http://localhost:1337/servers/Hello%20Zetta
  3. 请注意,这次 entities 元素列出了一个设备。这是我们添加到服务器的 LED 设备驱动程序。驱动程序定义设备的当前和可能的状态属性。对于 LED,这些属性是打开和关闭的。当前状态(反映在propertiesJSON 响应的属性中)是off
{
  "class": [
    "server"
  ],
  "properties": {
    "name": "Hello Zetta"
  },
  "entities": [
    {
      "class": [
        "device",
        "led"
      ],
      "rel": [
        "http://rels.zettajs.io/device"
      ],
      "properties": {
        "id": "e6f5b480-e96e-4fdc-8718-91aeb0234c99",
        "type": "led",
        "state": "off"
      },
      "links": [
        {
          "rel": [
            "self",
            "edit"
          ],
          "href": "http://localhost:1337/servers/Hello%20Zetta/devices/e6f5b480-e96e-4fdc-8718-91aeb0234c99"
        },
        {
          "rel": [
            "http://rels.zettajs.io/type",
            "describedby"
          ],
          "href": "http://localhost:1337/servers/Hello%20Zetta/meta/led"
        },
        {
          "title": "Hello Zetta",
          "rel": [
            "up",
            "http://rels.zettajs.io/server"
          ],
          "href": "http://localhost:1337/servers/Hello%20Zetta"
        }
      ]
    }
  ],
  "actions": [
    {
      "name": "query-devices",
      "method": "GET",
      "href": "http://localhost:1337/servers/Hello%20Zetta",
      "type": "application/x-www-form-urlencoded",
      "fields": [
        {
          "name": "ql",
          "type": "text"
        }
      ]
    }
  ],
  "links": [
    {
      "rel": [
        "self"
      ],
      "href": "http://localhost:1337/servers/Hello%20Zetta"
    },
    {
      "rel": [
        "http://rels.zettajs.io/metadata"
      ],
      "href": "http://localhost:1337/servers/Hello%20Zetta/meta"
    },
    {
      "rel": [
        "monitor"
      ],
      "href": "ws://localhost:1337/servers/Hello%20Zetta/events?topic=logs"
    }
  ]
}
##查询设备能力 现在,让我们跟随设备本身的 URL。它看起来像这样:
http://127.0.0.1:1337/servers/Hello%20Zetta/devices/a3bbdd2d-67fe-4fad-97b2-3851f18aae7e
在这里我们可以发现实际设备能够执行的操作。这个设备有一个“转换”动作,可以让你改变它的状态。因为我们之前看到的当前状态是 ,所以off可用的操作是turn-on
{
  "class": [
    "device",
    "led"
  ],
  "properties": {
    "id": "e6f5b480-e96e-4fdc-8718-91aeb0234c99",
    "type": "led",
    "state": "off"
  },
  "actions": [
    {
      "class": [
        "transition"
      ],
      "name": "turn-on",
      "method": "POST",
      "href": "http://localhost:1337/servers/Hello%20Zetta/devices/e6f5b480-e96e-4fdc-8718-91aeb0234c99",
      "fields": [
        {
          "name": "action",
          "type": "hidden",
          "value": "turn-on"
        }
      ]
    }
  ],
  "links": [
    {
      "rel": [
        "self",
        "edit"
      ],
      "href": "http://localhost:1337/servers/Hello%20Zetta/devices/e6f5b480-e96e-4fdc-8718-91aeb0234c99"
    },
    {
      "title": "Hello Zetta",
      "rel": [
        "up",
        "http://rels.zettajs.io/server"
      ],
      "href": "http://localhost:1337/servers/Hello%20Zetta"
    },
    {
      "rel": [
        "http://rels.zettajs.io/type",
        "describedby"
      ],
      "href": "http://localhost:1337/servers/Hello%20Zetta/meta/led"
    },
    {
      "title": "state",
      "rel": [
        "monitor",
        "http://rels.zettajs.io/object-stream"
      ],
      "href": "ws://localhost:1337/servers/Hello%20Zetta/events?topic=led%2Fe6f5b480-e96e-4fdc-8718-91aeb0234c99%2Fstate"
    },
    {
      "title": "logs",
      "rel": [
        "monitor",
        "http://rels.zettajs.io/object-stream"
      ],
      "href": "ws://localhost:1337/servers/Hello%20Zetta/events?topic=led%2Fe6f5b480-e96e-4fdc-8718-91aeb0234c99%2Flogs"
    }
  ]
}

改变设备状态

您可能已经注意到转换操作包含一个href链接。该链接是一个 HTTP POST 命令,您可以使用它来更改 LED 的状态。要“打开灯”,您只需形成正确的 POST 请求即可。
"actions": [
        {
            "class": [
                "transition"
            ],
            "name": "turn-on",
            "method": "POST",
            "href": "http://localhost:1337/servers/Hello%20Zetta/devices/e511deee-a266-4431-8a42-eeef7f2412f9",
            "fields": [
                {
                    "name": "action",
                    "type": "hidden",
                    "value": "turn-on"
                }
            ]
        }
    ]
打开灯的 POST 请求看起来像这样(您需要使用您自己的响应中提供的链接,该链接具有正确的设备 ID): curl -i -X POST -H http://127.0.0.1:1337/servers/Hello%20Zetta/devices/e6f5b480-e96e-4fdc-8718-91aeb0234c99 -d 'action=turn-on'
提示:要从 cURL 生成格式良好的 JSON,您可以将 cURL 响应通过管道传递给此 Python 命令以对响应进行漂亮格式化:python -m json.tool。例如:
curl -i -X POST http://127.0.0.1:1337/servers/Hello%20Zetta/devices/e6f5b480-e96e-4fdc-8718-91aeb0234c99 -d ‘action=turn-on | python -m json.tool 在响应中,您可以看到状态已从 更改offon。此外,可用的操作更改为turn-off。要再次关闭灯,请按照相同的模式发布到转换 URL。
{
  "class": [
    "device",
    "led"
  ],
  "properties": {
    "id": "e6f5b480-e96e-4fdc-8718-91aeb0234c99",
    "type": "led",
    "state": "on"
  },
  "actions": [
    {
      "class": [
        "transition"
      ],
      "name": "turn-off",
      "method": "POST",
      "href": "http://localhost:1337/servers/Hello%20Zetta/devices/e6f5b480-e96e-4fdc-8718-91aeb0234c99",
      "fields": [
        {
          "name": "action",
          "type": "hidden",
          "value": "turn-off"
        }
      ]
    }
  ],
  "links": [
    {
      "rel": [
        "self",
        "edit"
      ],
      "href": "http://localhost:1337/servers/Hello%20Zetta/devices/e6f5b480-e96e-4fdc-8718-91aeb0234c99"
    },
    {
      "title": "Hello Zetta",
      "rel": [
        "up",
        "http://rels.zettajs.io/server"
      ],
      "href": "http://localhost:1337/servers/Hello%20Zetta"
    },
    {
      "rel": [
        "http://rels.zettajs.io/type",
        "describedby"
      ],
      "href": "http://localhost:1337/servers/Hello%20Zetta/meta/led"
    },
    {
      "title": "state",
      "rel": [
        "monitor",
        "http://rels.zettajs.io/object-stream"
      ],
      "href": "ws://localhost:1337/servers/Hello%20Zetta/events?topic=led%2Fe6f5b480-e96e-4fdc-8718-91aeb0234c99%2Fstate"
    },
    {
      "title": "logs",
      "rel": [
        "monitor",
        "http://rels.zettajs.io/object-stream"
      ],
      "href": "ws://localhost:1337/servers/Hello%20Zetta/events?topic=led%2Fe6f5b480-e96e-4fdc-8718-91aeb0234c99%2Flogs"
    }
  ]
}

概括

在本主题中,我们向服务器添加了一个示例“模拟”设备驱动程序,然后我们跟踪了服务器 JSON 响应中提供的链接以转换设备的状态。 Zetta API 的妙处在于,每个响应都包含应用程序开发人员导航 API、发现其操作并执行它们所需的一切。 另一件要记住的事情是,这种模式是 Zetta 开发的核​​心。您为要通过 HTTP 访问的任何设备编写设备驱动程序,Zetta 为该设备提供功能齐全的 REST API!

详细文档

  • Zetta Doc Wiki是您可以找到 Zetta 的所有文档的地方,包括概述、教程和参考内容。

  • 您还可以访问 Zetta 站点http://zettajs.org/项目配方、活动信息、社区链接等。

[/hidecontent]

 
微信客服
返回顶部