模拟简单的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展示

相关推荐
薛慕昭4 小时前
《从硬件到云端:STC8H ADC数据采集与华为物联网平台对接全解析》
服务器·物联网
zskj_zhyl4 小时前
银发科技:AI健康小屋如何破解老龄化困局
人工智能·科技·物联网
Blossom.1185 小时前
量子计算在密码学中的应用与挑战:重塑信息安全的未来
人工智能·深度学习·物联网·算法·密码学·量子计算·量子安全
龙大大L16 小时前
第五章:5.3 ESP32物联网应用:阿里云IoT平台与腾讯云IoT平台的数据上传与远程控制
java·物联网·struts·esp32
移远通信17 小时前
QuecPython+GNSS:实现快速定位
物联网·gnss·quecpython
小叮当⇔1 天前
IOT项目——物联网 GPS
物联网
程序边界1 天前
DeepSeek在物联网设备中的应用:通过轻量化模型实现本地化数据分析
物联网·struts·数据分析
网易独家音乐人Mike Zhou1 天前
【Linux应用】交叉编译环境配置,以及最简单粗暴的环境移植(直接从目标板上复制)
linux·stm32·mcu·物联网·嵌入式·iot
塔能物联运维1 天前
解析塔能科技:绿色低碳智慧节能一站式破局之匙
大数据·人工智能·物联网
无脑学c++2 天前
STM32串口重定向:MDK与GCC重定向需重写的不同函数
stm32·单片机·物联网