본문 바로가기
프로그램 (PHP,Python)

가정 홈IoT 장치(가전제품) 센서 정보 수집 및 시각화

by 날으는물고기 2023. 10. 16.

가정 홈IoT 장치(가전제품) 센서 정보 수집 및 시각화

Uploading sensor data to Google Spreadsheet with Node-RED

가정에서 가전제품이나 온습도계와 같이 사용중인 다양한 IoT 센서로부터 정보를 자동으로 수집할 수 있는데, 이러한 센서와 통신하고 데이터를 수집하는 소프트웨어를 개발해야 합니다. 이 작업을 수행하기 위해서는 몇 가지 단계를 따라야 합니다.

 

아래에는 IoT 센서 데이터 수집의 단계별 설명과 예시 코드를 제공합니다.

 

단계 1: IoT 센서와 통신하기 위한 하드웨어 설정
IoT 센서와 통신하기 위해 필요한 하드웨어를 설정합니다. 대부분의 IoT 센서는 통신을 위해 Wi-Fi, Bluetooth, Zigbee 등의 프로토콜을 사용하므로 이에 맞는 하드웨어 모듈을 연결하거나 내장된 모듈을 사용합니다.

 

단계 2: 통신 프로토콜 및 라이브러리 설정
센서와 통신하기 위해 사용할 통신 프로토콜을 선택하고 관련 라이브러리를 설정합니다. Python에서는 MQTT, CoAP, HTTP 등을 사용할 수 있습니다.

 

예를 들어, MQTT를 사용한다고 가정하겠습니다.

import paho.mqtt.client as mqtt

# MQTT 클라이언트 설정
client = mqtt.Client()
client.connect("broker 주소", 1883)

 

단계 3: 센서 데이터 수집 및 전송
센서에서 데이터를 수집하고 선택한 통신 프로토콜을 사용하여 데이터를 서버 또는 클라우드로 전송합니다.

 

아래는 온습도 센서 데이터를 MQTT를 사용하여 전송하는 예제 코드입니다.

import paho.mqtt.client as mqtt
import random
import time

# MQTT 클라이언트 설정
client = mqtt.Client()
client.connect("broker 주소", 1883)

while True:
    # 가상의 온습도 데이터 생성
    temperature = random.uniform(20, 30)
    humidity = random.uniform(40, 60)

    # 데이터를 JSON 형식으로 변환
    data = {
        "temperature": temperature,
        "humidity": humidity
    }

    # MQTT로 데이터 전송
    client.publish("iot/sensor/data", json.dumps(data))

    # 일정 시간마다 데이터 전송
    time.sleep(60)  # 60초마다 데이터 전송

 

단계 4: 데이터 수신 및 처리
서버 또는 클라우드에서 수신된 데이터를 처리하고 저장합니다. 데이터베이스에 저장하거나 분석하여 웹 애플리케이션에 표시하는 등의 작업을 수행할 수 있습니다.

 

위의 코드 예제는 가상의 데이터를 생성하고 전송하는 간단한 예제입니다. 실제 환경에서는 센서와 통신할 때 물리적인 연결 및 보안 고려 사항을 고려해야 합니다. 또한 사용하는 통신 프로토콜 및 클라우드 서비스에 따라 설정이 다를 수 있습니다.

 

가전제품 벤더사(삼성/Samsung, 엘지/LG 스마트 제품 가능)에서 제공하는 API를 통해 데이터를 수집하는 경우, 해당 벤더사의 API 문서를 참고하여 필요한 설정과 엔드포인트를 확인하고 API를 호출하는 코드를 작성해야 합니다. 아래에서는 이러한 과정을 단계별로 설명하고 예시 코드를 제공합니다.

 

단계 1: API 키 또는 인증 설정
가전제품 벤더사의 API를 사용하려면 API 키나 인증 토큰을 발급받아야 합니다. 이를 사용하여 API에 접근할 수 있습니다.

import requests

# API 키 또는 인증 토큰 설정
api_key = "YOUR_API_KEY"

 

단계 2: API 엔드포인트 및 요청 설정
API 문서에서 필요한 엔드포인트, 요청 메서드, 매개변수 등을 확인하고 요청을 생성합니다.

# API 엔드포인트 설정
endpoint = "https://api.vendor.com/data"

# 요청 매개변수 설정 (예: 시작일과 종료일)
params = {
    "start_date": "2023-01-01",
    "end_date": "2023-09-30"
}

 

단계 3: API 호출 및 데이터 수집
requests 또는 해당 언어의 HTTP 클라이언트를 사용하여 API를 호출하고 데이터를 수집합니다.

try:
    # API 호출
    response = requests.get(endpoint, params=params, headers={"Authorization": f"Bearer {api_key}"})

    # 응답 확인 및 데이터 추출
    if response.status_code == 200:
        data = response.json()
        # 데이터 처리 또는 저장
        print(data)
    else:
        print(f"API 호출 실패: {response.status_code}")
except Exception as e:
    print(f"에러 발생: {str(e)}")

 

단계 4: 데이터 처리
수집한 데이터를 필요에 따라 처리하거나 저장합니다. 이 데이터를 데이터베이스에 저장하거나 분석할 수 있습니다.

 

이 코드 예제는 단순한 GET 요청을 예시로 보여주었으며, 실제로는 API 문서와 벤더사의 요구 사항에 따라 코드를 수정해야 합니다.

또한 인증, 보안, 오류 처리 등에 대한 고려가 필요합니다.

 

정보를 수집하여 Google Sheets에 저장하려면 Google Sheets API를 사용하여 데이터를 시트에 입력해야 합니다.

 

아래에서는 Python을 사용하여 Google Sheets에 데이터를 저장하는 방법을 단계별로 설명하고 코드를 제공합니다.

 

단계 1: Google Sheets API 설정

  1. Google Cloud Console에 로그인하고 새 프로젝트를 만듭니다.
  2. "라이브러리"에서 "Google Sheets API"를 검색하고 활성화합니다.
  3. "사용자 인증 정보"에서 "서비스 계정 키"를 생성하고 JSON 키 파일을 다운로드합니다.
  4. JSON 키 파일을 프로젝트 디렉토리에 저장합니다.

단계 2: 필수 라이브러리 설치
Google Sheets API를 사용하기 위해 필요한 라이브러리를 설치합니다.

pip install gspread oauth2client

단계 3: 코드 작성
아래는 Google Sheets에 데이터를 저장하는 Python 코드 예제입니다. JSON 키 파일 이름과 시트 이름을 적절히 변경해야 합니다.

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# JSON 키 파일 경로 (다운로드한 파일의 경로)
json_keyfile_path = 'your-service-account-key.json'

# 인증 및 스프레드시트 열기
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_keyfile_path, scope)
gc = gspread.authorize(credentials)

# 스프레드시트 파일 열기
spreadsheet = gc.open("Your Google Sheet Title")  # 시트 제목 입력

# 시트 선택 (시트 이름이나 인덱스로 선택 가능)
worksheet = spreadsheet.get_worksheet(0)  # 첫 번째 시트 선택 (인덱스 0)

# 데이터 작성
data = [["Data 1", "Data 2", "Data 3"],  # 예시 데이터
        ["More Data 1", "More Data 2", "More Data 3"]]
worksheet.insert_rows(data, 2)  # 데이터를 시트에 삽입 (2행부터 시작)

print("데이터가 Google Sheets에 저장되었습니다.")

단계 4: 실행
코드를 실행하여 데이터를 Google Sheets에 저장할 수 있습니다.

 

이 코드 예제는 시트의 첫 번째 시트에 데이터를 삽입하는 간단한 예제입니다. 필요에 따라 시트를 선택하고 데이터를 수정하는 방식을 변경할 수 있습니다. JSON 키 파일과 시트 제목을 실제로 사용하는 값으로 변경하십시오.

 

Google Sheets에 저장된 정보를 시각화하고 도식화하는 방법은 데이터를 추출한 다음 Python과 시각화 라이브러리를 사용하여 데이터를 시각적으로 표현하는 단계로 나눌 수 있습니다.

 

아래에서는 이러한 과정을 단계별로 설명하겠습니다.

 

단계 1: 데이터 추출
Google Sheets에서 데이터를 가져와야 합니다. gspread 라이브러리를 사용하여 Google Sheets로부터 데이터를 추출합니다.

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# JSON 키 파일 경로 (다운로드한 파일의 경로)
json_keyfile_path = 'your-service-account-key.json'

# 인증 및 스프레드시트 열기
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_keyfile_path, scope)
gc = gspread.authorize(credentials)

# 스프레드시트 파일 열기
spreadsheet = gc.open("Your Google Sheet Title")  # 시트 제목 입력

# 시트 선택 (시트 이름이나 인덱스로 선택 가능)
worksheet = spreadsheet.get_worksheet(0)  # 첫 번째 시트 선택 (인덱스 0)

# 데이터 추출
data = worksheet.get_all_values()

 

단계 2: 데이터 전처리
데이터를 가져왔으면 필요한 전처리를 수행합니다. 예를 들어, 데이터 타입을 적절히 변환하고 불필요한 데이터를 제거합니다.

 

단계 3: 시각화 라이브러리 설치
데이터를 시각화하기 위해 matplotlib, seaborn, plotly, 또는 다른 시각화 라이브러리를 설치합니다. 예를 들어, matplotlib을 사용하려면 다음과 같이 설치합니다.

pip install matplotlib

 

단계 4: 데이터 시각화
설치한 시각화 라이브러리를 사용하여 데이터를 시각적으로 표현합니다. 아래는 matplotlib를 사용한 간단한 예제입니다.

import matplotlib.pyplot as plt

# 데이터 전처리 후 데이터 추출
# data = ...

# 데이터 분리 (예: x와 y 데이터)
x_data = [row[0] for row in data[1:]]  # x 데이터는 첫 번째 열 (헤더 제외)
y_data = [float(row[1]) for row in data[1:]]  # y 데이터는 두 번째 열 (헤더 제외)

# 그래프 생성
plt.figure(figsize=(10, 6))
plt.plot(x_data, y_data, marker='o', linestyle='-', color='b')
plt.title('Data Visualization')
plt.xlabel('X-Axis Label')
plt.ylabel('Y-Axis Label')

# 그래프 표시
plt.grid(True)
plt.show()

위 코드는 간단한 선 그래프를 생성하는 예제입니다. 데이터와 그래프 유형에 따라 시각화 방법을 조정할 수 있습니다. seaborn, plotly, pandas 등의 다른 라이브러리도 사용할 수 있으며, 데이터 시각화를 원하는 대로 맞춤 설정할 수 있습니다.

 

Google Sheets에서 저장된 정보를 시각화하기 위해서는 Google Sheets 내장 도구와 기능을 활용할 수 있습니다.

 

아래는 Google Sheets에서 정보를 시각화하는 방법을 자세히 설명한 단계입니다.

 

단계 1: 데이터 입력
Google Sheets에서 정보를 시각화하려면 먼저 데이터를 시트에 입력해야 합니다. 데이터는 행과 열로 구성되며, 각 열은 데이터의 특정 부분을 나타냅니다. 예를 들어, 시간에 따른 판매량 데이터라면 시간 열과 판매량 열이 필요합니다.

 

단계 2: 시각화 차트 생성
시트에 데이터가 입력되면 이를 기반으로 차트를 생성할 수 있습니다. 다음은 시각화를 위한 차트 생성 단계입니다:

  1. 데이터 범위 선택: 시각화하려는 데이터 범위를 선택합니다. 범위를 선택한 후 삽입 메뉴에서 "도표"를 선택합니다.
  2. 도표 종류 선택: 도표 작성 도구에서 적절한 도표 종류를 선택합니다. 일반적으로 막대 그래프, 선 그래프, 원 그래프, 히스토그램, 산점도 등 다양한 도표가 제공됩니다.
  3. 차트 설정: 선택한 도표에 대한 설정을 구성합니다. 예를 들어, X축과 Y축을 지정하고 제목, 레이블, 범례 등을 추가합니다.
  4. 차트 위치 및 크기 조정: 도표가 표시될 위치와 크기를 조정합니다. 일반적으로 시트 안에 삽입되며 크기와 위치는 드래그로 조절할 수 있습니다.
  5. 차트 스타일 및 색상 설정: 차트의 스타일, 색상, 선 두께 등을 사용자 정의합니다.

 

단계 3: 차트 데이터 업데이트
시트의 데이터가 변경되면 차트도 자동으로 업데이트됩니다. 따라서 새로운 데이터를 시트에 입력하면 시각화된 도표도 자동으로 반영됩니다.

 

단계 4: 차트 공유 및 내보내기
생성한 차트를 공유하거나 다른 문서에 삽입하려면 차트를 클릭하고 "편집 > 차트 공유"를 선택하거나, 이미지로 내보내려면 차트를 선택하고 "파일 > 이미지로 내보내기"를 선택합니다.

 

Google Sheets에서는 간단한 시각화부터 고급 데이터 시각화까지 다양한 기능을 제공합니다. 사용자 정의 가능한 차트, 대시보드 생성, 필터링 및 정렬 등을 통해 데이터를 시각적으로 탐색하고 이해할 수 있습니다.

 

이미 제품화나 상용화 제공되고 있는게 많지만, 직접 만들어서 본인 환경에 최적화 되도록 하나로 통합할 수 있어서 좋습니다.

AN55 - Integromat and NETIO PowerCable - consumption in Google Sheets NETIO products
Google Sheets KPI Dashboard Software Databox / Pin on ESP8266
Contactless Body Temperature Monitoring of In-Patient Department (IPD) Using 2.4 GHz Microwave Frequency via the Internet of Things (IoT) Network
Node-RED Data Visualization

구글 시트 정보 변화에 따라 알람을 설정하려면 Google Apps Script를 사용하는 것이 좋습니다. Google Apps Script는 구글 서비스와 상호작용하는 스크립트를 작성할 수 있는 도구로, 구글 시트의 변경 사항을 모니터링하고 이에 대한 알람을 설정하는데 사용할 수 있습니다.

 

다음은 간단한 단계별 설명입니다.

  1. Google 시트 열기: 구글 드라이브에서 원하는 시트를 열거나 새로운 시트를 생성합니다.
  2. 스크립트 편집기 열기:
    • 시트를 열었다면, 상단 메뉴에서 "확장 기능"을 선택한 후 "앱 스크립트"를 클릭하여 스크립트 편집기를 엽니다.
    • 새로운 시트를 생성했다면, 상단 메뉴에서 "도구" > "스크립트 편집기"를 선택하여 스크립트 편집기를 엽니다.
  3. 스크립트 작성:
    • 스크립트 편집기에서 자동으로 생성된 함수 myFunction()을 삭제하고 원하는 기능을 구현하는 스크립트를 작성합니다.
    • 예를 들어, 시트의 특정 셀 값이 변경되면 알람을 보내는 스크립트를 작성할 수 있습니다.
  4. 트리거 설정:
    • 스크립트를 실행할 트리거를 설정합니다. 이를 통해 변경 사항을 주기적으로 모니터링할 수 있습니다.
    • 상단 메뉴에서 "편집" > "현재 프로젝트의 트리거"를 선택합니다.
    • "트리거 추가" 버튼을 클릭하여 원하는 트리거를 설정합니다. 예를 들어, "시간 기반 타이머"를 선택하여 스크립트를 주기적으로 실행하도록 할 수 있습니다.
  5. 알람 설정:
    • 스크립트 내에서 변경 사항을 모니터링하고, 변경 사항이 발생하면 알람을 설정하도록 스크립트를 작성합니다. 예를 들어, 변경 사항을 이메일로 알리는 등의 작업을 수행할 수 있습니다.
  6. 스크립트 저장 및 실행:
    • 스크립트를 저장한 후, "실행" 버튼을 클릭하여 스크립트를 실행합니다.

이렇게 하면 구글 시트의 정보 변화를 감지하고 알람을 설정할 수 있습니다. 스크립트 작성 및 트리거 설정은 원하는 알람 및 모니터링 기능에 따라 다양하게 조정될 수 있습니다. 더 자세한 정보와 예제 코드는 Google Apps Script 문서와 예제 코드를 참조하실 수 있습니다.

 

Google Apps Script를 사용하여 구글 시트 정보 변화에 대한 알람을 다양한 방법으로 설정할 수 있습니다. 그 중 하나는 Zapier와 같은 자동화 도구를 사용하여 알람을 보내는 것입니다.

 

아래는 알람을 보내는 방법에 대한 몇 가지 예시와 설명입니다.

  1. 이메일 알람:
    • Google Apps Script를 사용하여 정보 변화를 모니터링하고, 변경 사항이 감지되면 이메일을 보내는 스크립트를 작성할 수 있습니다. Gmail의 GmailApp.sendEmail() 메서드를 사용하여 이메일을 보낼 수 있습니다.
  2. Slack 알람:
    • Slack 워크스페이스와 연동하여 Google Apps Script를 사용하면, 정보 변경 시 Slack 채널로 알람을 보낼 수 있습니다. Slack API를 사용하여 메시지를 게시할 수 있습니다.
  3. SMS 알람:
    • SMS 서비스를 이용하여 정보 변경 시 휴대폰으로 알람을 보낼 수 있습니다. Twilio와 같은 SMS API를 활용하여 Google Apps Script에서 SMS를 보낼 수 있습니다.
  4. 웹훅 알람:
    • Zapier와 연동하여 정보 변경 시 웹훅을 호출하고, 이를 통해 다양한 동작을 수행하도록 설정할 수 있습니다. 웹훅을 사용하면 다양한 서비스와 통합할 수 있습니다.
  5. Google Calendar 이벤트 추가:
    • 정보 변경 시 Google Calendar에 이벤트를 추가하여 알람을 설정할 수 있습니다. Google Calendar API를 사용하여 새 이벤트를 생성할 수 있습니다.

이러한 알람 방법을 구현하려면 Google Apps Script에서 적절한 API나 라이브러리를 사용하여 해당 서비스로 메시지를 보내는 코드를 작성해야 합니다.

 

Zapier와 같은 자동화 도구를 사용하면 이러한 알람을 더 쉽게 설정하고 관리할 수 있습니다. Zapier를 사용하면 구글 시트의 변경 사항을 감지하고 원하는 작업을 수행할 수 있는 자동화 워크플로우를 만들 수 있습니다.

Tips for powerful Zapier workflows that grow with you

728x90

댓글