인프런 커뮤니티 질문&답변

skacjf139님의 프로필 이미지
skacjf139

작성한 질문수

사물인터넷 통신은 내 손에 (Arduino, MQTT, Nodejs, MongoDB, Android,VS Code)

여러 온습도 센서를 사용하여 HTML에 표출

작성

·

279

0

안녕하세요 현재

DHT11-> DHT22로 

여러개의 센서를 이용하여 MQTT.html에 표출 하고자 합니다.

질문들을 검색해서 여러개의 센서를 각각 DB에 저장하는 방법은 진행 되었으나, html 페이지에 표출을 하는 시도를 해보고 있습니다.

html에서 socket_evt_mqtt1,2,3,4를 변화시키면 다른 센서의 데이터를 표출하나.

한번에 모든 센서를 표출하는 방법에 대해 알고 싶습니다.

DHT22, DHT222, DHT223, DHT224 이렇게 진행 하였습니다.

 

app.js의 내용입니다.

app.set("port", "3000");
var server = http.createServer(app);
var io = require("socket.io")(server);
io.on("connection", (socket) => {
  //웹에서  소켓을  이용한  DHT22  센서데이터  모니터링
  socket.on("socket_evt_mqtt", function (data) {
    DHT22.find({})
      .sort({ _id: -1 })
      .limit(1)
      .then((data) => {
        //console.log(JSON.stringify(data[0]));
        socket.emit("socket_evt_mqtt", JSON.stringify(data[0]));
      });
  });

  socket.on("socket_evt_mqtt2", function (data) {
    DHT222.find({})
      .sort({ _id: -1 })
      .limit(1)
      .then((data) => {
        //console.log(JSON.stringify(data[0]));
        socket.emit("socket_evt_mqtt2", JSON.stringify(data[0]));
      });
  });

  socket.on("socket_evt_mqtt3", function (data) {
    DHT223.find({})
      .sort({ _id: -1 })
      .limit(1)
      .then((data) => {
        //console.log(JSON.stringify(data[0]));
        socket.emit("socket_evt_mqtt3", JSON.stringify(data[0]));
      });
  });

  socket.on("socket_evt_mqtt4", function (data) {
    DHT224.find({})
      .sort({ _id: -1 })
      .limit(1)
      .then((data) => {
        //console.log(JSON.stringify(data[0]));
        socket.emit("socket_evt_mqtt4", JSON.stringify(data[0]));
      });
  });
});
 

추가로 MQTT.html의 내용입니다.

<!DOCTYPE  html> <html>
<head>
    <meta  charset="utf-8"  /> <title>Insert  title  here</title>
    <script  type="text/javascript"  src="./node_modules\socket.io\client-dist\socket.io.js"></script>
    <script  src="http://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script  type="text/javascript">
   
        var  socket  =  null;$
        var  timer  =  null;
            $(document).ready(function  ()  {
            socket  =  io.connect();  //  3000port
            //  Node.js보낸  데이터를  수신하는  부분
        socket.on("socket_evt_mqtt",  function  (data)  {
            data  =  JSON.parse(data);
        $(".mqttlist").html(
"<li>"  +  data.tmp  +  "("  +  data.hum  +  "%)"  +  "</li>" );
});
if  (timer  ==  null)  {
timer  =  window.setInterval("timer1()",  1000); }
});
function  timer1()  {
socket.emit("socket_evt_mqtt",  JSON.stringify({})); console.log("---------");
}


</script>
</head>
<body>
<h2>socket  이용한  DHT22(온도:습도)  모니터링  서비스</h2>
<div  id="msg">
<div  id="mqtt_logs">
<ul  class="mqttlist"></ul>
</div>
</div>

<h3>socket  이용한  DHT22(온도:습도)  모니터링  서비스</h3>
<div  id="msg">
<div  id="mqtt_logs">
<ul  class="mqttlist2"></ul>
</div>
</div>
</body>
</html>
 
 

답변 1

0

박매일님의 프로필 이미지
박매일
지식공유자

여러 DHT 센서에서 수신된 값을 각각의 MongoDB에 저장하지 않고 하나의 DB에 센서별로 구분자를 넣어서 저장을 하면 MongoDB에서 세서 데이터를 한번에 가져와서 각 센서별로 출력을 하면 되지 않을까 생각이 드는데요? 혹시 센서별로 각각DB에 데이터가 저장된건지요?

skacjf139님의 프로필 이미지
skacjf139

작성한 질문수

질문하기