실시간 미세먼지 측정

아두이노와 미세먼지 센서를 활용하여 사무실에서 측정한 실제 구동 화면입니다. 캡쳐 받은 이미지 아닙니다~ ^^ 측정 결과를 인터넷을 통해 서버에 전송하여 위처럼 웹에서 살펴볼 수 있도록 하였습니다. 사무실의 미세먼지가 제법 많군요. 오늘 실외 미세먼지가 나쁘지 않은 날인데도, 이렇다면 문제인데.. 공기청정기를 설치해야겠습니다.

옛날에 짬짬이 만들어 본 것을 사무실에 가져와 설치를 한 것인데요. 흔히 말하는 IoT입니다. 1um 크기인 극초미세먼지까지 측정해 줍니다. 흔히 극초미세전지가 건강에 훨씬 위험하지만 우리나라에서는 이 극초미세먼지의 측정값을 제공하지 않습니다. 센서 장비 값은 35,000원입니다. 매우 싸죠. 말 그대로 하드웨어는 비싼 껌 값입니다. 소프트웨어가 중요하다고들 하는데.. 정말 맞는 말입니다. 이처럼 측정된 값을 분석하고 의미있게 활용하는 것은 모두 소프트웨어의 몫이니까요.

소프트웨어의 강국으로 갑시다! 껍대기만 강국인거 말고! ^^

아래는 실제 장비에 대한 사진입니다.

WebSocket과 Web에서의 Javascript를 통한 바이너리 데이터 통신

크아! 제목 한번 요상합니다. JavaScript가 클라이언트 뿐만 아니라 Java나 서버단(Node.js 등)에서도 활용되다 보니… 여튼, WebSoket과 웹에서의 Javascript를 통한 통신의 예로 Binary 데이터 타입을 주고 받는 코드를 정리합니다. 이 글은 텍스트 타입의 데이터를 주고 받는 [jetty를 이용한 WebSocket 서버 구현하기]라는 글을 기반으로 작성된 글입니다.

WebSocket을 위한 서버는 jetty를 활용하였습니다. 먼저 클라이언트가 서버 단에 바이너리 데이터가를 전달하는 코드는 다음과 같습니다.

8 Bytes 크기의 데이터 덩어리를 만들고, 이 덩어리 안에 Int와 Float 타입에 대한 값으로 각각 9438과 3224.3224를 넣어서 웹소켓으로 전송하는 코드입니다. 이렇게 전송하면 서버가 받아야 하는데, 아래의 코드는 서버 측의 코드입니다.

10번과 11번에서 클라이언트가 보낸 int와 float 값을 읽고, 엄청나게 복잡한 연산인 곱의 결과 값을 16번 코드에서 클라이언트로 전달하고 있는 코드입니다. 이제 아래는 다시 클라이언트가 서버가 계산한 소중한 결과를 받는 코드입니다.

서버로부터 받는 바이너리 데이터는 blob 형식으로 받습니다. 이 데이터는 FileReader를 통해 읽어 해석할 수 있습니다. 이상으로 웹소켓에서 바이너리 데이터를 주고 받는 코드에 대한 글을 정리한 글이였습니다.