模拟简单的iOT工作流

没有实际接触过iOT的流程,应该实际使用比这个接口返回要复杂,只是演示~希望能参与实际的接口接入,而不是只展示个假数据。

启动RabbitQ

使用的是3.8.5 启动命令
RabbitMQ Service - start
RabbitMQ Command Prompt
rabbitmqctl start_app
rabbitmq -plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_web_mqtt
rabbitmq-plugins enable rabbitmq_mqtt
访问 http://localhost:15672

账号:guest 密码:guest

查看命令:rabbitmq-plugins list

1883端口已开

MQTT模拟收发

模拟IoT设备发送

javascript 复制代码
import mqtt from 'mqtt'
const options = {
    username:"guest",
    password:"guest"
}

var client = mqtt.connect("mqtt://localhost:1883", options);

function sendTemperature() {
    // 生成一个0到40之间的随机温度值
    const temperature = Math.floor(Math.random() * 40);
    const now = new Date();
    const hours = now.getHours();
    const minutes = now.getMinutes();
    const seconds = now.getSeconds();
    const ioTdata = `Time:${hours}:${minutes}:${seconds},temperature:${temperature}`
    console.log(`Sending iOTData: ${ioTdata}`);    
    client.publish('sensor/temperature', ioTdata);
  }

// 连接成功  
client.on('connect', function () {
    console.log('Connected');
    setInterval(sendTemperature, 1000);
});

// 连接失败  
client.on('error', function (err) {
    console.log('Connection error: ', err);
});

模拟存储设备接收

javascript 复制代码
import mqtt from 'mqtt'
import * as fs from 'fs'

const options = {
    username:"guest",
    password:"guest"
}


var client = mqtt.connect("mqtt://localhost:1883", options);

// 连接成功  
client.on('connect', function () {
    console.log('Connected');
    // 订阅主题  
    client.subscribe('sensor/temperature', function (err) {
        if (!err) {
            console.log('Subscribed');
        }
    });

});

// 接收消息  
client.on('message', function (topic, message) {
    // message is Buffer  
    console.log(message.toString());
    recordTemperature(message)
    //client.end(); // 接收完消息后断开连接  
});

// 连接失败  
client.on('error', function (err) {
    console.log('Connection error: ', err);
});

// 连接关闭  
// client.on('close', function () {
//     console.log('Connection closed');
// });

function recordTemperature(data){
    fs.appendFile("./record.txt",data+"\n",(err)=>{
        if (err) {
            console.error(err);
            return;
          }
    })
}

后端起服务读取本地信息

javascript 复制代码
import express from 'express'
import * as fs from 'fs'
import cors from 'cors'

const app = express();
const port = 5000;

app.use(cors());

app.get('/v1/iotdataDemo', (req, res) => {
    let data="";
    try {
        data = fs.readFileSync('./record.txt', 'utf8');        
    } catch (err) {
        console.error(err);
    }    
    if(data.length === 0) return;
    res.json({ iotData: data.split("\n") });
});


app.listen(port, () => {
    console.log(`Server running on http://localhost:${port}`);
});

前端eChart展示

相关推荐
小莞尔1 天前
【51单片机】【protues仿真】基于51单片机智能窗帘系统
c语言·stm32·单片机·嵌入式硬件·物联网·51单片机
我先去打把游戏先1 天前
ESP32学习笔记(基于IDF):IOT应用——WIFI连接
笔记·单片机·嵌入式硬件·mcu·物联网·学习·esp32
云里物里1 天前
云里物里智能物联电子标签系统助力零售品牌力提升
物联网·零售·电子价签·esl电子标签·电子标签
北京耐用通信1 天前
破解工业通信瓶颈:耐达讯自动化Modbus转Profinet网关连接驱动器的奥秘
人工智能·物联网·网络协议·自动化·信息与通信
北京耐用通信1 天前
电力自动化新突破:Modbus如何变身Profinet?智能仪表连接的终极解决方案
人工智能·物联网·网络安全·自动化·信息与通信
青岛前景互联信息技术有限公司1 天前
前景互联应急救援指挥平台接入大疆机场3无人机
物联网·无人机·智慧城市
TDengine (老段)1 天前
TDengine 数据函数 LN 用户手册
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
兆龙电子单片机设计1 天前
【STM32项目开源】STM32单片机智能农业大棚控制系统
stm32·单片机·物联网·开源·自动化
TDengine (老段)1 天前
连接 TDengine 遇到报错 “failed to connect to server, reason: Connection refused” 怎么办?
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
Molesidy1 天前
【SoC】【W800】基于WM IoT SDK的环境搭建
物联网·soc·w800·wm iot sdk