25、基于云的物联网分析:数据处理与传感器数据收集

基于云的物联网分析:数据处理与传感器数据收集

1. 英特尔物联网分析组件设置

在英特尔物联网分析中,我们需要对组件进行设置,具体步骤如下:
1. 打开正在使用英特尔物联网分析仪表板的网页浏览器,点击菜单图标,选择“账户”,页面将显示“我的账户”页面。
2. 点击“目录”标签,页面将显示目录中注册的组件,这些组件分为以下三类:
- 湿度
- 电源开关
- 温度
3. 确保“湿度”组件面板已展开,点击“humidity.v1.0”,页面将显示该湿度组件的定义对话框。该组件版本 1.0 表示一个以百分比表示环境湿度水平的时间序列,数据类型为数字,计量单位为百分比(%),格式为浮点型,显示方式为时间序列。
4. 点击“关闭”,确保“温度”组件面板已展开,点击“temperature.v1.0”,页面将显示该温度组件的定义对话框。该组件版本 1.0 表示一个以摄氏度表示温度的时间序列,数据类型为数字,计量单位为摄氏度,格式为浮点型,显示方式为时间序列。
5. 再次点击“关闭”,确保“温度”组件面板已展开。由于没有其他温度组件,我们需要为以华氏度表示的环境温度观测创建一个新组件。点击页面底部的“添加新目录项”,页面将显示组件定义对话框,除版本固定为 1.0 外,所有字段均为空。输入并选择以下值:
- 在“组件名称”中输入“temperaturef”
- 在“类型”中选择“传感器”
- 在“数据类型”中选择“数字”
- 在“计量单位”中输入“华氏度”
- 在“格式”中选择“浮点型”
- 在“显示方式”中选择“时间序列”
6. 最后点击“保存”,新组件定义将以“temperaturef.v.1.0”的名称添加到列表底部。

此时,我们已确保目录中包含所有所需的组件定义,接下来需要注册设备将用于创建观测的组件。我们必须为每个注册的组件提供一个名称或别名,并指定来自先前目录的组件类型和版本。以下表格总结了我们将为设备注册的组件:
| 组件名称或别名 | 组件类型 | 描述 |
| — | — | — |
| temperaturec | temperature.v1.0 | 以摄氏度(ºC)表示的环境温度观测时间序列 |
| temperaturef | temperaturef.v1.0 | 以华氏度(ºF)表示的环境温度观测时间序列 |
| humidity | humidity.v1.0 | 以百分比表示的环境湿度水平观测时间序列 |

我们可以使用以下命令注册每个组件: iotkit-admin register component-name component-type ,只需将 component-name 替换为标识组件的名称,将 component-type 替换为目录中标识组件类型的名称(包括版本号)。

以下是在 SSH 终端中注册组件的命令及输出示例:
- 注册 temperaturec 组件:

iotkit-admin register temperaturec temperature.v1.0

输出:

2016-04-08T22:40:04.581Z - info: Starting registration ...
2016-04-08T22:40:04.711Z - info: Device has already been activated. Updating ...
2016-04-08T22:40:04.739Z - info: Updating metadata...
2016-04-08T22:40:04.920Z - info: Metadata updated.
Attributes sent
2016-04-08T22:40:10.167Z - info: Component registered name=temperaturec, type=temperature.v1.0, cid=c37cb57d-002c-4a66-866e-ce66bc3b2340, d_id=kansas-temperature-humidity-01

最后一行提供了组件 ID,即 cid= 后面和下一个逗号(,)之前的值。在上述输出中,组件 ID 为 c37cb57d-002c-4a66-866e-ce66bc3b2340 ,我们必须保存每个组件 ID,因为稍后编写使用 REST API 创建观测的代码时会用到。

  • 注册 temperaturef 组件:
iotkit-admin register temperaturef temperaturef.v1.0

输出:

2016-04-08T22:40:20.510Z - info: Starting registration ...
2016-04-08T22:40:20.641Z - info: Device has already been activated. Updating ...
2016-04-08T22:40:20.669Z - info: Updating metadata...
2016-04-08T22:40:20.849Z - info: Metadata updated.
Attributes sent
2016-04-08T22:40:26.156Z - info: Component registered name=temperaturef, type=temperaturef.v1.0, cid=0f3b3aae-ce40-4fb4-a939-e7c705915f0c, d_id=kansas-temperature-humidity-01

组件 ID 为 0f3b3aae-ce40-4fb4-a939-e7c705915f0c ,同样需要保存。

  • 注册 humidity 组件:
iotkit-admin register humidity humidity.v1.0

输出:

2016-04-08T22:40:36.512Z - info: Starting registration ...
2016-04-08T22:40:36.643Z - info: Device has already been activated. Updating ...
2016-04-08T22:40:36.670Z - info: Updating metadata...
2016-04-08T22:40:36.849Z - info: Metadata updated.
Attributes sent
2016-04-08T22:40:43.003Z - info: Component registered name=humidity, type=humidity.v1.0, cid=71aba984-c485-4ced-bf19-c0f32649bcee, d_id=kansas-temperature-humidity-01

组件 ID 为 71aba984-c485-4ced-bf19-c0f32649bcee ,需保存。

注册完成后,我们可以在网页浏览器中查看注册情况。打开英特尔物联网分析仪表板,点击菜单图标,选择“设备”,页面将显示“我的设备”页面。点击设备 ID(如 kansas-temperature-humidity-01 )查看和编辑设备详细信息,点击“+组件”展开为设备注册的组件,将看到以下三个组件:
- temperaturec
- temperaturef
- humidity

如果我们丢失了组件 ID,可以通过点击组件,在“组件定义”对话框中,组件类型描述下方将显示组件 ID。

不幸的是,我们无法通过网站功能检索设备激活时生成的设备令牌。我们需要设备令牌为注册的组件创建观测。英特尔物联网分析代理将设备令牌与设备的其他配置值保存在 device.json 文件中,其默认路径为 /usr/lib/node_modules/iotkit-agent/data/device.json 。我们只需在 SSH 终端中运行以下命令即可显示该文件的文本内容,从而检索设备令牌:

cat /usr/lib/node_modules/iotkit-agent/data/device.json

输出示例如下:

{
    "activation_retries": 10,
    "activation_code": null,
    "device_id": "kansas-temperature-humidity-01",
    "device_name": false,
    "device_loc": [
        88.34,
        64.22047,
        0
    ],
    "gateway_id": false,
    "device_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJjOTNmMTJhMy05MWZlLTQ3MWYtODM4OS02OGM1NDYxNDIxMDUiLCJpc3MiOiJodHRwOi8vZW5hYmxlaW90LmNvbSIsInN1YiI6ImthbnNhcy10ZW1wZXJhdHVyZS1odW1pZGl0eS0wMSIsImV4cCI6IjIwMjYtMDQtMDZUMTk6MDA6MTkuNzA0WiJ9.PH5yQas2FiQvUSR9V2pa3n3kIYZvmSe_xXY7QkFjlXUVUcyy9Sk_eVF4AL6qpZlBC9vjtd0L-VMZiULC9YXxAVl9s5Cl8ZqpQs36E1ssv_1H9CBFXKiiPArplzaWXVzvIRBVVzwfQrGrMoD_l4DcHlH2zgn5UGxhZ3RMPUvqgeneG3P-hSbPScPQL1pW85,VT2IHT3seWyW1c637I_MDpHbJJCbkytPVpJpwKBxrCiKlGhvsh5pl4eLUXYUPlQAzB9QzC_ohujG23b-ApfHZugYD7zJa-05u0lkt93EEnuCk39o5SmPmIiuBup-k_mLn_VMde5fUvbxDt_SMI0XY3_Q",
    "account_id": "22612154-0f71-4f64-a68e-e116771115d5",
    "sensor_list": [
        {
            "name": "temperaturec",
            "type": "temperature.v1.0",
            "cid": "c37cb57d-002c-4a66-866e-ce66bc3b2340",
            "d_id": "kansas-temperature-humidity-01"
        },
        {
            "name": "temperaturef",
            "type": "temperaturef.v1.0",
            "cid": "0f3b3aae-ce40-4fb4-a939-e7c705915f0c",
            "d_id": "kansas-temperature-humidity-01"
        },
        {
            "name": "humidity",
            "type": "humidity.v1.0",
            "cid": "71aba984-c485-4ced-bf19-c0f32649bcee",
            "d_id": "kansas-temperature-humidity-01"
        }
    ]
}

其中, device_token 键对应的值即为设备令牌。

2. 英特尔物联网分析传感器数据收集

我们将以之前编写的读取传感器温度和湿度值的代码为基础,添加新功能,为注册的三个组件创建观测。以下是具体步骤:

首先,确保 requests 包已安装。在第 2 章中,我们确保了 pip 安装程序可用于在运行于开发板的 Yocto Linux 中安装额外的 Python 2.7.3 包。现在,我们使用 pip 安装程序确保 requests 包已安装。如果之前已经安装过,可跳过此步骤。在 SSH 终端中运行以下命令进行安装:

pip install requests

如果看到以下输出,则表示 requests 包已安装,可以继续下一步:

Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python2.7/site-packages

接下来,我们创建一个 IntelIotAnalytics 类来表示与英特尔物联网分析的接口,方便为三个组件发布观测。在编写该类之前,我们需要将类的许多属性替换为适当的值:
- account_name :“我的账户”页面中“账户名称”字段的值,例如“温度和湿度”。
- account_id :“我的账户”页面中“账户 ID”字段的值,例如 22612154-0f71-4f64-a68e-e116771115d5 ,也可以通过读取 device.json 文件中 account_id 键的字符串值来获取。
- device_id :点击“我的设备”页面中设备名称后,网站显示的“添加/编辑设备”页面中“ID”字段的值,例如 kansas-temperature-humidity-01 ,也可以通过在 SSH 终端中运行 iotkit-admin device-id 命令或读取 device.json 文件中 device_id 键的字符串值来获取。
- device_token :设备激活时生成的设备令牌,可以通过读取 device.json 文件中 device_token 键的字符串值来获取。
- component_id_temperature_fahrenheit :注册 temperaturef 组件时生成的组件 ID,例如 0f3b3aae-ce40-4fb4-a939-e7c705915f0c ,也可以通过读取 device.json 文件中 name 为 temperaturef 的块中 cid 键的字符串值来获取。
- component_id_temperature_celsius :注册 temperaturec 组件时生成的组件 ID,例如 c37cb57d-002c-4a66-866e-ce66bc3b2340 。
- component_id_humidity_level_percentage :注册 humidity 组件时生成的组件 ID,例如 71aba984-c485-4ced-bf19-c0f32649bcee 。

以下是 IntelIotAnalytics 类的代码:

import time
import json
import requests

class IntelIotAnalytics:
    base_url = "https://dashboard.us.enableiot.com/v1/api"
    # You can retrieve the following information from the My Account page
    account_name = "Temperature and humidity"
    account_id = "22612154-0f71-4f64-a68e-e116771115d5"
    # You can retrieve the device token with the following command:
    # cat /usr/lib/node_modules/iotkit-agent/data/device.json
    device_token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJjOTNmMTJhMy05MWZlLTQ3MWYtODM4OS02OGM1NDYxNDIxMDUiLCJpc3MiOiJodHRwOi8vZW5hYmxlaW90LmNvbSIsInN1YiI6ImthbnNhcy10ZW1wZXJhdHVyZS1odW1pZGl0eS0wMSIsImV4cCI6IjIwMjYtMDQtMDZUMTk6MDA6MTkuNzA0WiJ9.PH5yQas2FiQvUSR9V2pa3n3kIYZvmSe_xXY7QkFjlXUVUcyy9Sk_eVF4AL6qpZlBC9vjtd0L-VMZiULC9YXxAVl9s5Cl8ZqpQs36E1ssv_1H9CBFXKiiPArplzaWXVzvIRBVVzwfQrGrMoD_l4DcHlH2zgn5UGxhZ3RMPUvqgeneG3P-hSbPScPQL1pW85VT2IHT3seWyW1c637I_MDpHbJJCbkytPVpJpwKBxrCiKlGhvsh5pl4eLUXYUPlQAzB9QzC_ohujG23b-ApfHZugYD7zJa-05u0lkt93EEnuCk39o5SmPmIiuBup-k_mLn_VMde5fUvbxDt_SMI0XY3_Q"
    device_id = "kansas-temperature-humidity-01"
    component_id_temperature_fahrenheit = "0f3b3aae-ce40-4fb4-a939-e7c705915f0c"
    component_id_temperature_celsius = "c37cb57d-002c-4a66-866e-ce66bc3b2340"
    component_id_humidity_level_percentage = "71aba984-c485-4ced-bf19-c0f32649bcee"

    def publish_observation(self,
                            temperature_fahrenheit,
                            temperature_celsius,
                            humidity_level):
        url = "{0}/data/{1}".\
            format(self.__class__.base_url, self.__class__.device_id)
        now = int(time.time()) * 1000
        body = {
            "on": now,
            "accountId": self.__class__.account_id,
            "data": []
        }
        temperature_celsius_data = {
            "componentId": self.__class__.component_id_temperature_celsius,
            "on": now,
            "value": str(temperature_celsius)
        }
        temperature_fahrenheit_data = {
            "componentId": self.__class__.component_id_temperature_fahrenheit,
            "on": now,
            "value": str(temperature_fahrenheit)
        }
        humidity_level_percentage_data = {
            "componentId": self.__class__.component_id_humidity_level_percentage,
            "on": now,
            "value": str(humidity_level)
        }
        body["data"].append(temperature_celsius_data)
        body["data"].append(temperature_fahrenheit_data)
        body["data"].append(humidity_level_percentage_data)
        data = json.dumps(body)
        headers = {
            'Authorization': 'Bearer ' + self.__class__.device_token,
            'content-type': 'application/json'
        }
        response = requests.post(url, data=data, headers=headers, proxies={}, verify=True)
        if response.status_code != 201:
            print "The request failed. Status code: {0}. Response text: {1}.".format(response.status_code, response.text)

该类的 publish_observation 方法接收以华氏度表示的温度、以摄氏度表示的温度和湿度水平百分比作为参数,构建 HTTP 请求,为设备和三个组件创建观测。

最后,我们使用 IntelIotAnalytics 类创建一个新的 __main__ 方法,每 5 秒向英特尔物联网分析发布一次观测。以下是代码:

if __name__ == "__main__":
    temperature_and_humidity_sensor = TemperatureAndHumiditySensor(0)
    oled = TemperatureAndHumidityOled(0)
    intel_iot_analytics = IntelIotAnalytics()
    while True:
        temperature_and_humidity_sensor.measure_temperature_and_humidity()
        oled.print_temperature(
            temperature_and_humidity_sensor.temperature_fahrenheit,
            temperature_and_humidity_sensor.temperature_celsius)
        oled.print_humidity(
            temperature_and_humidity_sensor.humidity)
        print("Ambient temperature in degrees Celsius: {0}".format(temperature_and_humidity_sensor.temperature_celsius))
        print("Ambient temperature in degrees Fahrenheit: {0}".format(temperature_and_humidity_sensor.temperature_fahrenheit))
        print("Ambient humidity: {0}".format(temperature_and_humidity_sensor.humidity))
        intel_iot_analytics.publish_observation(
            temperature_and_humidity_sensor.temperature_fahrenheit,
            temperature_and_humidity_sensor.temperature_celsius,
            temperature_and_humidity_sensor.humidity
        )
        # Sleep 5 seconds (5000 milliseconds)
        time.sleep(5)

运行以下命令启动示例:

python iot_python_chapter_10_01.py

运行示例后,打开空调或加热系统,改变环境温度和湿度,我们将看到每 5 秒发布的数据发生变化。在运行代码的同时,我们可以探索英特尔物联网分析的不同功能。打开英特尔物联网分析仪表板,点击菜单图标,选择“仪表板”,页面将显示“我的仪表板”页面,显示有一个活动设备,并在接收到开发板的观测数据时更新最后一小时发布的观测数量。

通过以上步骤,我们完成了英特尔物联网分析的组件设置和传感器数据收集,能够实时监测环境温度和湿度,并将数据上传到云端进行分析。

基于云的物联网分析:数据处理与传感器数据收集

3. 代码详细解析
3.1 IntelIotAnalytics 类

IntelIotAnalytics 类是与英特尔物联网分析进行交互的核心类,下面对其进行详细解析:

import time
import json
import requests

class IntelIotAnalytics:
    base_url = "https://dashboard.us.enableiot.com/v1/api"
    account_name = "Temperature and humidity"
    account_id = "22612154-0f71-4f64-a68e-e116771115d5"
    device_token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJjOTNmMTJhMy05MWZlLTQ3MWYtODM4OS02OGM1NDYxNDIxMDUiLCJpc3MiOiJodHRwOi8vZW5hYmxlaW90LmNvbSIsInN1YiI6ImthbnNhcy10ZW1wZXJhdHVyZS1odW1pZGl0eS0wMSIsImV4cCI6IjIwMjYtMDQtMDZUMTk6MDA6MTkuNzA0WiJ9.PH5yQas2FiQvUSR9V2pa3n3kIYZvmSe_xXY7QkFjlXUVUcyy9Sk_eVF4AL6qpZlBC9vjtd0L-VMZiULC9YXxAVl9s5Cl8ZqpQs36E1ssv_1H9CBFXKiiPArplzaWXVzvIRBVVzwfQrGrMoD_l4DcHlH2zgn5UGxhZ3RMPUvqgeneG3P-hSbPScPQL1pW85VT2IHT3seWyW1c637I_MDpHbJJCbkytPVpJpwKBxrCiKlGhvsh5pl4eLUXYUPlQAzB9QzC_ohujG23b-ApfHZugYD7zJa-05u0lkt93EEnuCk39o5SmPmIiuBup-k_mLn_VMde5fUvbxDt_SMI0XY3_Q"
    device_id = "kansas-temperature-humidity-01"
    component_id_temperature_fahrenheit = "0f3b3aae-ce40-4fb4-a939-e7c705915f0c"
    component_id_temperature_celsius = "c37cb57d-002c-4a66-866e-ce66bc3b2340"
    component_id_humidity_level_percentage = "71aba984-c485-4ced-bf19-c0f32649bcee"

    def publish_observation(self,
                            temperature_fahrenheit,
                            temperature_celsius,
                            humidity_level):
        url = "{0}/data/{1}".\
            format(self.__class__.base_url, self.__class__.device_id)
        now = int(time.time()) * 1000
        body = {
            "on": now,
            "accountId": self.__class__.account_id,
            "data": []
        }
        temperature_celsius_data = {
            "componentId": self.__class__.component_id_temperature_celsius,
            "on": now,
            "value": str(temperature_celsius)
        }
        temperature_fahrenheit_data = {
            "componentId": self.__class__.component_id_temperature_fahrenheit,
            "on": now,
            "value": str(temperature_fahrenheit)
        }
        humidity_level_percentage_data = {
            "componentId": self.__class__.component_id_humidity_level_percentage,
            "on": now,
            "value": str(humidity_level)
        }
        body["data"].append(temperature_celsius_data)
        body["data"].append(temperature_fahrenheit_data)
        body["data"].append(humidity_level_percentage_data)
        data = json.dumps(body)
        headers = {
            'Authorization': 'Bearer ' + self.__class__.device_token,
            'content-type': 'application/json'
        }
        response = requests.post(url, data=data, headers=headers, proxies={}, verify=True)
        if response.status_code != 201:
            print "The request failed. Status code: {0}. Response text: {1}.".format(response.status_code, response.text)
  • 类属性 :

    • base_url :访问 REST API 的基础 URL,指定了 API 的版本号,确保请求与特定版本兼容。
    • account_name :账户名称,用于标识账户。
    • account_id :账户 ID,唯一标识账户,可从“我的账户”页面获取或从 device.json 文件中读取。
    • device_token :设备令牌,用于身份验证,从 device.json 文件中获取。
    • device_id :设备 ID,唯一标识设备,可从“添加/编辑设备”页面获取或通过命令读取 device.json 文件。
    • component_id_temperature_fahrenheit 、 component_id_temperature_celsius 、 component_id_humidity_level_percentage :分别为三个组件的 ID,用于指定观测数据所属的组件。
  • publish_observation 方法 :

    1. 构建 URL :根据 base_url 和 device_id 构建请求的 URL。
    2. 获取当前时间 :将当前时间(秒)乘以 1000 作为观测时间。
    3. 构建请求体 :创建一个包含观测时间、账户 ID 和空数据数组的字典 body 。
    4. 创建组件观测数据 :分别为三个组件创建包含组件 ID、观测时间和观测值的字典。
    5. 填充请求体 :将三个组件的观测数据添加到 body 的 data 数组中。
    6. 序列化请求体 :使用 json.dumps 函数将 body 字典序列化为 JSON 字符串。
    7. 构建请求头 :包含授权信息和内容类型。
    8. 发送请求 :使用 requests.post 方法发送 POST 请求。
    9. 检查响应 :如果响应状态码不是 201,表示请求失败,打印错误信息。
3.2 __main__ 方法
if __name__ == "__main__":
    temperature_and_humidity_sensor = TemperatureAndHumiditySensor(0)
    oled = TemperatureAndHumidityOled(0)
    intel_iot_analytics = IntelIotAnalytics()
    while True:
        temperature_and_humidity_sensor.measure_temperature_and_humidity()
        oled.print_temperature(
            temperature_and_humidity_sensor.temperature_fahrenheit,
            temperature_and_humidity_sensor.temperature_celsius)
        oled.print_humidity(
            temperature_and_humidity_sensor.humidity)
        print("Ambient temperature in degrees Celsius: {0}".format(temperature_and_humidity_sensor.temperature_celsius))
        print("Ambient temperature in degrees Fahrenheit: {0}".format(temperature_and_humidity_sensor.temperature_fahrenheit))
        print("Ambient humidity: {0}".format(temperature_and_humidity_sensor.humidity))
        intel_iot_analytics.publish_observation(
            temperature_and_humidity_sensor.temperature_fahrenheit,
            temperature_and_humidity_sensor.temperature_celsius,
            temperature_and_humidity_sensor.humidity
        )
        # Sleep 5 seconds (5000 milliseconds)
        time.sleep(5)
  • 初始化对象 :创建温度湿度传感器对象、OLED 显示对象和 IntelIotAnalytics 类的实例。
  • 循环执行 :
    1. 调用传感器的 measure_temperature_and_humidity 方法测量温度和湿度。
    2. 在 OLED 上显示温度和湿度。
    3. 打印温度和湿度信息。
    4. 调用 IntelIotAnalytics 类的 publish_observation 方法发布观测数据。
    5. 休眠 5 秒后再次循环。
4. 流程图

下面是整个数据收集和发布过程的 mermaid 流程图:

graph TD;
    A[开始] --> B[设置组件];
    B --> C[注册组件];
    C --> D[获取设备令牌];
    D --> E[安装 requests 包];
    E --> F[创建 IntelIotAnalytics 类];
    F --> G[初始化对象];
    G --> H[测量温度和湿度];
    H --> I[显示温度和湿度];
    I --> J[打印温度和湿度信息];
    J --> K[发布观测数据];
    K --> L{是否继续};
    L -- 是 --> H;
    L -- 否 --> M[结束];
5. 总结

通过以上步骤,我们完成了英特尔物联网分析的组件设置和传感器数据收集。具体步骤总结如下:
1. 组件设置 :在网页浏览器中进行组件的查看和创建,确保目录中包含所需的组件定义。
2. 组件注册 :使用 iotkit-admin 命令注册组件,并保存组件 ID。
3. 获取设备令牌 :从 device.json 文件中获取设备令牌。
4. 安装依赖包 :使用 pip 安装 requests 包。
5. 编写代码 :创建 IntelIotAnalytics 类和 __main__ 方法,实现数据的收集和发布。
6. 运行代码 :启动 Python 脚本,实时监测环境温度和湿度,并将数据上传到云端进行分析。

通过这些步骤,我们可以利用英特尔物联网分析平台,实现对环境数据的实时监测和分析,为后续的决策提供有力支持。

相关推荐

探索GIS+物联网应用场景 MapGIS IoT实时大数据解决方案

视频设备是物联网中最丰富的传感器之一,由于视频采集成本低,在智慧城市、智能交通、平安城市、智能家居、车联网、无人机等行业中应用广泛,MapGIS IoT实时大数据提供接入汇聚、存储、转码、分发Web视频流等服务能力,支持视频坐标与地理坐标相互转换,通过将视频数据进行空间化并叠加到地图数据中,达到虚实叠加的效果,同时能融合IGServer-S人工智能技术,结合时间、位置等地理信息进行实时识别视频中动态目标,为智能决策、研判等应用场景提供技术支撑。然而在物联网的世界,各种类型、各式各样的硬件设备如何管控?

smaryun的博客 2863

167、NumPy在物联网:智能解析传感器数据的利器

本文介绍了NumPy库在物联网领域的应用,特别是传感器数据处理与分析。我们了解了NumPy的基础知识,如数组、矩阵、数据类型和索引切片。通过实际应用场景和实用技巧,我们深入探讨了NumPy在温度监测和加速度计数据处理等方面的应用。最后,我们总结了NumPy在智能农业、工业自动化和环境监测等物联网应用案例中的重要作用。掌握NumPy的使用,可以帮助我们更好地利用传感器数据,实现智能化的应用。

silenceallat的博客 920

实时计算在IoT领域的应用:设备监控与预测维护

基于规则引擎实现多维度、可配置的告警条件,支持复杂逻辑组合。规则类型单指标规则:如“温度>80℃持续5秒”;多指标规则:如“温度>80℃且振动>5g”(逻辑与);趋势规则:如“温度在10分钟内上升>10℃”(斜率检测)。规则引擎实现开源方案:Drools(Java规则引擎)、Eclipse ESPER(CEP引擎,支持事件模式匹配);Flink CEP实现:通过Pattern API定义告警模式,例如:// Flink CEP检测“温度持续5秒超过80℃”的模式// 5秒内持续满足条件。

Java大师兄的博客 780

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】5.20 NumPy在物联网数据分析中的案例分析

本文介绍了如何使用NumPy进行物联网数据分析,包括数据清洗、数据转换、数据归一化等预处理步骤,以及时间序列分析、异常检测、模式识别等常见分析方法。通过实际应用案例,展示了NumPy在智能家居、智能制造和智慧城市的物联网数据分析中的应用。希望这些内容能够帮助读者更好地理解和应用NumPy,提升物联网数据分析的效率和准确性。

1098

物联网(IoT)技术和各种传感器设备的集成:温度传感器的运用

物联网(IoT)技术和各种传感器设备的集成:温度传感器的运用 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 物联网 (IoT) 的兴起 物联网 (IoT) 描述了物理对象(“事物”)的互

AI天才研究院 894

无线网络仿真:物联网仿真_(13).物联网数据处理与分析

物联网数据处理与分析是一个多步骤的过程,涉及数据收集、预处理、存储、查询、分析和可视化。每个步骤都有其特定的技术和工具,选择合适的方法和技术可以显著提高数据处理的效率和效果。通过有效的数据处理与分析,可以从中提取有价值的信息,支持各种物联网应用的决策制定和系统优化。

2401_87715305的博客 1161

25、基于云的物联网分析:海量数据处理与传感器数据采集

本文详细介绍了基于云的物联网分析系统,重点涵盖英特尔物联网分析组件的设置、传感器数据采集与发布过程。内容包括如何注册设备组件、获取关键配置信息、使用Python实现数据采集与上传,并提供了常见问题的解决方法及未来扩展方向。通过该博客,读者可以掌握利用英特尔物联网平台进行海量数据处理的方法。

wood5的博客 78

数据服务与时间序列数据库:IoT数据处理

随着物联网(IoT)技术的飞速发展,全球连接设备数量已突破百亿级,产生了海量时间序列数据。本文深入探讨数据服务与时间序列数据库在IoT数据处理中的核心作用,构建了从理论基础到实践实施的完整知识体系。通过分析时间序列数据的独特特性,揭示了传统数据库架构在IoT场景下的根本性局限。文章系统阐述了时序数据库的设计原理,包括时间分区存储、压缩算法、降采样策略和流式处理机制,并提供了完整的架构设计框架。

AIGC应用创新大全的博客 904

物联网通信仿真:物联网应用案例_(8).物联网数据处理与分析仿真

在物联网系统中,数据处理与分析是确保系统高效运行和提供有价值决策的关键环节。本文详细介绍了数据采集、数据预处理、数据存储、数据查询、数据分析和数据传输优化等各个环节。通过合理选择和优化这些环节,可以显著提升物联网系统的性能和可靠性。希望本文的内容对读者在物联网数据处理与分析方面有所帮助。

2401_87715305的博客 1204

IoT平台软件:IBM Watson IoT二次开发_高级分析与机器学习

在物联网(IoT)领域,数据的处理和分析是至关重要的。IBM Watson IoT平台不仅提供了强大的数据收集和管理功能,还集成了高级分析和机器学习能力,使得开发者可以利用这些技术从海量数据中提取有价值的信息和洞察。通过数据预处理、数据分析、机器学习模型的构建、部署和管理,开发者可以有效地提升物联网系统的智能化水平,实现更高效的数据利用和业务优化。希望本文的内容能够帮助你更好地理解和应用这些技术。

chenlz2007的博客 1041

PCB布线避坑指南:晶振布局的5个致命错误(附正确示例图)

本文深入解析PCB布线中晶振布局的5个致命错误,包括底层布线、电容布局、地平面处理等关键问题,并提供实战解决方案。通过真实案例和量化数据,帮助硬件开发者避免常见陷阱,提升电路稳定性和性能。特别针对晶振这一高敏感元件,给出布线参数黄金法则和三维避让原则。

weixin_29215391的博客 428

手把手教你学 AI芯片 SOC软件开发专栏简介

在AI芯片(如NPU、GPU加速器)爆发式增长的今天,软件栈开发已成为AI应用落地的核心瓶颈。无论是模型推理加速、低延迟部署,还是能效优化,都依赖于对芯片底层软件的深度掌握。然而,许多开发者困于“只会调用API,不懂驱动实现”的困境,导致性能瓶颈难以突破。本专栏《手把手教你学 AI芯片 SOC软件开发》专为AI工程师、嵌入式开发者及系统架构师打造,从零基础切入,系统拆解AI芯片SOC(System on Chip)的完整软件栈,覆盖Runtime(运行时)

MHD0815的博客 172

利用 Python 构建高效爬虫爬取国家标准文献——从基础到进阶

然而,由于许多标准文献需要从特定网站获取,手动下载既耗时又低效,因此构建自动化爬虫成为一种实用且高效的解决方案。本文从技术选型、网站分析、代码实现到反爬优化,全面讲解了如何爬取国家标准文献。国家标准文献(National Standards Literature)是国家对各领域统一规范的文件,涵盖了技术参数、测试方法、生产工艺等内容。因此,通过自动化爬虫技术进行文献爬取和管理,不仅能解放劳动力,还可以提高数据管理效率。在构建爬虫前,我们需要对目标网站进行分析,包括页面结构、请求方式以及可能的反爬机制。

2201_76125261的博客 2106

让 OData V4 界面更聪明:SAP UI5 中的 Side Effects 全解析

摘要:在OData V4应用中,字段修改常触发联动更新(Side Effects)。SAP UI5支持通过后端PATCH响应隐式返回或前端显式请求(requestSideEffects)两种方式处理。最佳实践包括:在validateFieldGroup事件中触发同批次请求,使用$$patchWithoutSideEffects避免重复刷新,并在草稿场景优化响应体。注解定义触发规则,而前端负责执行时机,二者配合可减少网络开销并保证数据一致性。Fiori elements进一步扩展了Side Effects在批

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 179

【35】软考软件设计师——设计模式代码填空(C++版)满分精讲|第5/6题二选一必考

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第35篇,聚焦下午选做题**第5/6题C++版设计模式代码填空**,与上一篇Java版形成双子配套,单题分值稳定12~15分。全文超4000字深度拆解C++独有核心考点:虚函数/纯虚函数、构造与析构函数规范、继承权限、模板类编程在设计模式中的应用;精讲单例、工厂、策略、观察者、适配器五大高频模式的C++专属代码写法,标注所有填空核心点位、语法陷阱、内存安全规范

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 547

AD快速上手笔记

本文详细介绍了使用Altium Designer从零创建PCB项目全流程:新建工程、绘制原理图(元件放置、连线、电源端口)、编译检查、生成PCB、布局布线(含铺铜)、DRC检查及输出Gerber与钻孔文件。重点强调了库选择、参数修改、层切换、铺铜设置和生产文件导出规范,确保设计无误,便于顺利下单生产。

qq_53529450的博客 44

电商平台系统需求规格说明书(示例)

​​电商系统​​:指本文件所描述的集商品展示、销售、支付、物流跟踪、用户管理等功能于一体的综合性在线购物平台。​​API​​:应用程序编程接口(Application Programming Interface),用于实现系统各模块之间或与外部系统之间的数据交互和功能调用。

跟佟格湾一起学习计算机知识吧~ 1267

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 95、计算机辅助干预研究软件系统集成与开发
下一篇: 32、开发Widget与探索ARKit增强现实技术
java5
博客等级 码龄22年 85粉丝 2103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值