当前位置: 首页 > news >正文

模拟简单的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设备发送

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);
});

模拟存储设备接收

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;}})
}

后端起服务读取本地信息

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展示

http://www.lryc.cn/news/497602.html

相关文章:

  • C++学习0.2: RAII
  • k8s,进一步理解Pod
  • MFC图形函数学习13——在图形界面输出文字
  • 【Canvas与雷达】点鼠标可暂停金边蓝屏雷达显示屏
  • React第十二节组件之间通讯之发布订阅模式(使用pubsub-js插件)
  • Vue3安装 运行教程
  • MySQL:约束constraint
  • 使用Rufus制作Ubuntu需要注意
  • 探索Go语言的高级特性:性能分析与安全性
  • SearchSploit配合gcc的使用
  • 无人机设计:云台挂载!
  • Spring Native适用场景、代理使用及测试部署策略
  • LeetCode—11. 盛最多水的容器(中等)
  • 第一部分:入门准备 1.欢迎来到新手村 --[JavaScript 新手村:开启编程之旅的第一步]
  • BERT的中文问答系统50
  • 深入解析CMake中的find_package命令:用法、特性及版本依赖问题
  • 【OpenDRIVE_Python】使用python脚本输出OpenDRIVE数据中含有隧道tunnel的道路ID和隧道信息
  • SIP系列五:HTTP(SIP)鉴权
  • mysql json整数数组去重 整数数组精确查找并删除相应数据
  • 【5G】技术组件 Technology Components
  • 数据结构4——栈和队列
  • PHP SM4 加密
  • leetcode - 2825. Make String a Subsequence Using Cyclic Increments
  • 工业—使用Flink处理Kafka中的数据_ChangeRecord1
  • 探索嵌入式硬件设计:揭秘智能设备的心脏
  • 数据结构-最小生成树
  • mac启动jmeter
  • spring学习笔记之静态代理和动态代理
  • qemu搭建aarch64
  • delphi IDE 插件DelphiIDEPlugin_SearchProject,用于从项目组中查找项目