IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤

# dc3 windows 本地搭建步骤:
### 必要软件环境 [进入原网页#](https://doc.dc3.site/docs/code/0-environment.html#%E5%BF%85%E8%A6%81%E8%BD%AF%E4%BB%B6%E7%8E%AF%E5%A2%83)

务必保证至少需要给 docker 分配:1 核 CPU 以及 4G 以上的运行内存!

–   JDK : 推荐使用 `Oracle JDK 1.8` 或者 `OpenJDK8`,理论来说其他版本也行;
    
–   Maven : 推荐使用 `Maven 3.8` ,理论来说其他版本也行;
    
–   IDE : `IntelliJ IDEA` 或者 `Eclipse`,理论来说其他 Java IDE 也行;
    
–   Docker : 需要提供 `docker` 和 `docker-compose` 指令,至少需要给 `docker` 分配 `4G` 的运行内存,建议配置国内镜像加速,下载镜像速度会快一些。
# 1 管理员权限改hosts: 

```
# Added by DC3
127.0.0.1 dc3-mysql
127.0.0.1 dc3-redis
127.0.0.1 dc3-mongo
127.0.0.1 dc3-opentsdb
127.0.0.1 dc3-elasticsearch
127.0.0.1 dc3-rabbitmq
127.0.0.1 dc3-emqx
127.0.0.1 dc3-nginx
127.0.0.1 dc3-influx
# dev
127.0.0.1 dc3-center-register
127.0.0.1 dc3-center-auth
127.0.0.1 dc3-center-manager
127.0.0.1 dc3-center-data
127.0.0.1 dc3-gateway
# End DC3
```

# 2 安装好docker后,安装基础组件:

```
cd iot-dc3/dc3

#创建并启动 MySQL、MongoDB、Redis、RabbitMQ、Nacos 服务
docker-compose -f docker-compose-dev.yml up -d mysql mongo redis rabbitmq register

#停止 MySQL、MongoDB、Redis、RabbitMQ、Nacos 服务
docker-compose stop mysql mongo redis rabbitmq register

```
![输入图片说明](/imgs/2023-08-23/RwCzXsbq9cGTMIjv.png)

# 3 下载dc3源码并依次启动
### 启动 Auth、Manager、Data、Gateway 服务 [进入原网页#](https://doc.dc3.site/docs/code/3-idea-start.html#%E5%90%AF%E5%8A%A8-auth%E3%80%81manager%E3%80%81data%E3%80%81gateway-%E6%9C%8D%E5%8A%A1)

### 启动待开发的 驱动
```
# 下载iot-dc3源码
git clone https://gitee.com/pnoker/iot-dc3.git
cd iot-dc3/dc3/demo

```
在 Idea 中依次启动:

–   `dc3-center-auth`
–   `dc3-center-manager`
–   `dc3-center-data`
–   `dc3-center-gateway`

# 4 拉取完整源码步骤

**注意:以下步骤均在iot-dc3目录下完成**

1.首先拉取**iot-dc3**

```
mkdir iot-dc3
cd iot-dc3
git clone https://gitee.com/pnoker/iot-dc3.git
git checkout main
```

2.拉取公共模块**dc3-common**

```
git clone https://gitee.com/pnoker/dc3-common.git
```

3.拉取API模块**dc3-api**

```
git clone https://gitee.com/pnoker/dc3-api.git
```

4.拉取驱动SDK模块**dc3-driver-sdk**

```
git clone https://gitee.com/pnoker/dc3-driver-sdk.git
```

5.添加依赖模块

在 iot-dc3 的 pom.xml 中添加 dc3-common、dc3-api、dc3-driver-sdk 即可。

```
<modules>
    <module>dc3-gateway</module>
    <module>dc3-center</module>
    <module>dc3-driver</module>
    <module>dc3-api</module>
    <module>dc3-common</module>
    <module>dc3-driver-sdk</module>
</modules>
```

以上步骤完成后**iot-dc3**目录结构如下

```
.
├── dc3 资源文件,如sh,sql等
├── dc3-api gRpc定义的接口结构
├── dc3-center 平台中心模块
├── dc3-common 平台公共模块
├── dc3-driver 平台驱动模块
├── dc3-driver-sdk 平台驱动SDK模块
└── dc3-gateway 平台网关模块
```

![输入图片说明](/imgs/2023-08-23/VWh3zGr2G6Fu2EnR.png)

# 5 启动驱动
–   driver.mqtt.url: ${MQTT_BROKER_URL:ssl://dc3-rabbitmq:8883} # MQTT Broker URL
–   auth-type: X509 # 认证方式
–   username: dc3 # 用户名
–   password: dc3 # 密码

**注意**: 以上配置是开启MQTT SSL认证的配置,如果你的MQTT Broker没有开启SSL认证,请将`auth-type`设置为`NONE`或者注释掉,同时将url设置为普通的`tcp://dc3-rabbitmq:1883`
**这里要改为: `auth-type: username` 。因为配置了用户名**

```
driver:  
  schedule:  
    # 定时读数据  
    read:  
      corn: '0/5 * * * * ?'  
  mqtt:  
#    url: ${MQTT_BROKER_URL:ssl://dc3-rabbitmq:8883}  
#    auth-type: X509  
    url: ${MQTT_BROKER_URL:tcp://dc3-rabbitmq:1883}  
    auth-type: username  
    username: dc3  
    password: dc3  
    receive-topics:  
      – qos: 1  
        name: data  
    default-send-topic:  
      qos: 1  
      name: command  
    keep-alive: 15  
    completion-timeout: 3000  
    batch:  
      speed: ${MQTT_BATCH_SPEED:100}  
      interval: ${MQTT_BATCH_INTERVAL:5}
```

# 6 配置mqtt驱动
### 安装MQTTX客户端 [#](https://doc.dc3.site/docs/code/2-start.html#%E5%AE%89%E8%A3%85mqttx%E5%AE%A2%E6%88%B7%E7%AB%AF)

[点击安装(opens new window)](https://mqttx.app/zh)

### 连接MQTT [#](https://doc.dc3.site/docs/code/2-start.html#%E8%BF%9E%E6%8E%A5mqtt)

![输入图片说明](/imgs/2023-08-23/eCBIyw8uqjJDk90J.png)

# 7 发送数据

记得按图填写json qos:1 
topic: dc3/default/dc3-driver-mqtt/data
![输入图片说明](/imgs/2023-08-23/Fxz07b0hiHvayHuy.png)

deviceId: 设备ID, 不是设备名,   pointId:位号
```
{

"id":"1014",

"deviceId":"1694223265544900609",

"pointId":"1694223118807175169",

"value": 263.0,

"createTime": "2022-08-19 14:34:36.111"

}
```

mqtt:收到结果并发送到rabbitmq :
![输入图片说明](/imgs/2023-08-23/g3y1v0154l5ELK9X.png)

data:

![输入图片说明](/imgs/2023-08-23/llQGq6kJs1uXdCY8.png)

# 8 启动WEB页面查看 
### 构建 IoT DC3 Web UI [#](https://doc.dc3.site/docs/code/4-web-ui.html#%E6%9E%84%E5%BB%BA-iot-dc3-web-ui)

```
git clone https://github.com/pnoker/iot-dc3-web.git
cd iot-dc3-web

#这步至关重要, 推荐使用 yarn
npm install -g yarn –registry=https://registry.npm.taobao.org
yarn
```

### 启动 IoT DC3 Web UI [#](https://doc.dc3.site/docs/code/4-web-ui.html#%E5%90%AF%E5%8A%A8-iot-dc3-web-ui)

```
yarn serve
```

![输入图片说明](/imgs/2023-08-23/xnBRGiXIx74OnfE3.png)


![输入图片说明](/imgs/2023-08-23/zNvNaRtBvWw7VFQH.png)

新增模板与位号:
![输入图片说明](/imgs/2023-08-23/VpdRy0cZyElG0OJH.png)

![输入图片说明](/imgs/2023-08-23/d7U7mGeyH40CAWfF.png)

3 新增设备:
![输入图片说明](/imgs/2023-08-23/IGJqb9UWQ4Hdkwla.png)

![输入图片说明](/imgs/2023-08-23/7TUHyDP7MUy7CnA4.png)

配置topict 和 qos, 与mqtt的页面一一对应。

![输入图片说明](/imgs/2023-08-23/PWmYNtEcGeAFWa9s.png)

![输入图片说明](/imgs/2023-08-23/dBNDWpjC07K92If6.png)

发送数据后可以看到线性图:
![输入图片说明](/imgs/2023-08-23/Q9vjeBcIA1Wjqf4P.png)

明细数据: 查所有的位号(设备属性)

![输入图片说明](/imgs/2023-08-23/N7PHlDNFTANlAgJs.png)

数据: {  "deviceId": "1694223265544900609",  "pointId": "1694223118807175169",  "value": "63.0"}

# 9 待以上服务全部正常启动,访问 [http://localhost:8080 (opens new window)](http://localhost:8080/)即可进入登陆页面!

# 10 启动问题解决:

## 启动不了
```
Caused by: java.nio.charset.MalformedInputException: Input length = 1
    at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:118)
    at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:179)
    … 43 common frames omitted
```

![输入图片说明](/imgs/2023-08-23/GUhphy37YSM5wUXd.png)

## 消息发送失败:要注意数据格式与实体类一样。

![输入图片说明](/imgs/2023-08-23/McDV0dH1Y73A5hyI.png)

##  3 密码报错
修改yml: auth-type: username  

## 4 yarn 安装web依赖
找不到yarn命令。
要配置环境变量: path:  安装时带有的路径:
  
yarn serve

## error marked@5.1.1: The engine "node" is incompatible with this module. Expected version ">= 18". Got "14.21.3"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

 

作者:java之迷

物联沃分享整理
物联沃-IOTWORD物联网 » IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤

发表回复