You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求三星Artik模块对接AWS IoT的库、教程及示例代码支持

Artik 053/055s 连接AWS IoT 并推送数据到DynamoDB解决方案

我之前帮朋友做过Artik到AWS IoT的迁移,刚好能给你一些实用的建议和代码参考——确实三星官方没有针对AWS IoT的专属库,但用通用的AWS IoT SDK完全可以搞定,下面是具体的实现方案:

核心思路:用AWS官方SDK替代Artik云服务

Artik 05x系列运行Yocto Linux,支持C、Python等主流开发语言,我们可以直接用AWS官方的IoT设备SDK来实现MQTT连接,再通过AWS IoT规则引擎自动将数据转发到DynamoDB(比在设备端直接调用DynamoDB API更高效、安全)。


1. 基于C语言的稳定实现(适合生产环境)

AWS IoT Device SDK for C是轻量级、高性能的选择,适合Artik这类嵌入式设备:

步骤1:在Artik上安装依赖

sudo apt-get update && sudo apt-get install cmake git libssl-dev

步骤2:编译安装AWS IoT C SDK

克隆AWS官方的IoT Device SDK for C仓库,然后编译安装:

git clone https://github.com/aws/aws-iot-device-sdk-c-v2.git
cd aws-iot-device-sdk-c-v2 && mkdir build && cd build
cmake .. && make && sudo make install

步骤3:示例代码(连接AWS IoT并发布传感器数据)

下面是适配Artik的基础代码,你可以替换成实际的传感器读取逻辑:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "aws_iot_mqtt_client.h"

// AWS IoT配置参数
#define AWS_IOT_ENDPOINT "你的AWS IoT端点"
#define AWS_IOT_CLIENT_ID "artik-053-device-001"
#define AWS_IOT_TOPIC "artik/sensor/data"
#define AWS_IOT_CERT_PATH "/etc/aws-iot/certificate.pem.crt"
#define AWS_IOT_KEY_PATH "/etc/aws-iot/private.pem.key"
#define AWS_IOT_ROOT_CA_PATH "/etc/aws-iot/AmazonRootCA1.pem"

// 模拟Artik传感器数据读取
void get_sensor_data(char* payload) {
    // 替换为实际的传感器读取逻辑(比如通过sysfs读取GPIO/I2C传感器)
    sprintf(payload, "{\"temperature\":%.1f, \"humidity\":%.1f}", 25.3, 58.7);
}

int main(int argc, char** argv) {
    AWS_IoT_Client client;
    IoT_Client_Init_Params initParams = iotClientInitParamsDefault;
    IoT_Client_Connect_Params connectParams = iotClientConnectParamsDefault;
    char payload[256];

    // 初始化MQTT客户端
    initParams.enableAutoReconnect = true;
    initParams.pHostURL = AWS_IOT_ENDPOINT;
    initParams.port = 8883;
    initParams.pRootCALocation = AWS_IOT_ROOT_CA_PATH;
    initParams.pDeviceCertLocation = AWS_IOT_CERT_PATH;
    initParams.pDevicePrivateKeyLocation = AWS_IOT_KEY_PATH;

    if (AWS_IOT_MQTT_Init(&client, &initParams) != SUCCESS) {
        printf("MQTT初始化失败\n");
        return EXIT_FAILURE;
    }

    // 配置连接参数
    connectParams.keepAliveIntervalInSec = 60;
    connectParams.isCleanSession = true;
    connectParams.pClientID = AWS_IOT_CLIENT_ID;
    connectParams.clientIDLen = strlen(AWS_IOT_CLIENT_ID);

    printf("连接AWS IoT...\n");
    if (AWS_IOT_MQTT_Connect(&client, &connectParams) != SUCCESS) {
        printf("连接失败\n");
        return EXIT_FAILURE;
    }

    // 循环发布传感器数据
    while(1) {
        get_sensor_data(payload);
        printf("发布数据: %s\n", payload);
        AWS_IOT_MQTT_Publish(&client, AWS_IOT_TOPIC, strlen(AWS_IOT_TOPIC), 
                            (unsigned char*)payload, strlen(payload), 1, 0);
        sleep(5);
    }

    AWS_IOT_MQTT_Disconnect(&client);
    return EXIT_SUCCESS;
}

2. 基于Python的快速原型实现(适合测试)

如果是快速验证,Python的SDK更简洁,Artik 05x支持Python 3:

步骤1:安装依赖

pip3 install awsiotsdk

步骤2:示例代码

from awsiot import mqtt_connection_builder
import time
import json

# AWS IoT配置
AWS_IOT_ENDPOINT = "你的AWS IoT端点"
CLIENT_ID = "artik-055s-test-device"
CERT_PATH = "/etc/aws-iot/certificate.pem.crt"
KEY_PATH = "/etc/aws-iot/private.pem.key"
ROOT_CA_PATH = "/etc/aws-iot/AmazonRootCA1.pem"
TOPIC = "artik/sensor/data"

# 模拟Artik传感器数据
def read_sensor():
    # 替换为实际的传感器读取逻辑
    return {"temperature": 26.1, "humidity": 59.2, "device_id": "artik-055s-001"}

# 建立MQTT连接
mqtt_conn = mqtt_connection_builder.mtls_from_path(
    endpoint=AWS_IOT_ENDPOINT,
    cert_filepath=CERT_PATH,
    pri_key_filepath=KEY_PATH,
    client_id=CLIENT_ID,
    ca_filepath=ROOT_CA_PATH
)

print("连接AWS IoT...")
connect_future = mqtt_conn.connect()
connect_future.result()
print("连接成功!")

# 循环发布数据
try:
    while True:
        sensor_data = read_sensor()
        payload = json.dumps(sensor_data)
        mqtt_conn.publish(topic=TOPIC, payload=payload, qos=1)
        print(f"已发布: {payload}")
        time.sleep(5)
except KeyboardInterrupt:
    print("\n断开连接...")
    disconnect_future = mqtt_conn.disconnect()
    disconnect_future.result()

3. 配置AWS IoT规则引擎转发数据到DynamoDB

不需要在Artik设备端直接操作DynamoDB,通过AWS IoT规则引擎自动转发:

  1. 登录AWS控制台,进入IoT Core → 规则 → 创建规则
  2. 规则查询语句:SELECT * FROM 'artik/sensor/data'
  3. 添加动作:选择“写入DynamoDB表”
  4. 配置目标表名、主键(比如用device_id作为分区键),保存规则即可

关键注意事项

  • 证书管理:将AWS IoT生成的设备证书、私钥和根CA文件放到Artik的/etc/aws-iot/目录,执行chmod 600 /etc/aws-iot/*.pem确保权限安全
  • 网络测试:先用ping <你的AWS IoT端点>验证Artik能正常访问AWS服务
  • 替代Artik云逻辑:如果之前用了Artik云的数据分析、告警功能,可以用AWS IoT Analytics、CloudWatch等服务替代

内容的提问来源于stack exchange,提问作者Arjun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:28:28