문제점이 발견되어 이를 해결함과 동시에 문제의 여러 원인 중 하나인 라이브러리 교체를 하고자 함문제점 및 해결 과정날씨가 습해질 때마다 정전기 때문에 자동으로 스위치가 작동하는 현상 발생스위치 모드를 짧게 누르기, 길게 누르기로 제공하여 사용자가 정전기에 의한 오작동을 방지하는 선택권을 주기로 함기존 인터럽트를 통한 릴레이 제어 방식에 한계가 있어서 변경하고자 함MQTT 라이브러리가 서버와 연결이 끊길 경우 재연결시도에 5초 이상을 소비함으로 오프라인 상태에서 일반적인 루프 방식으로 버튼 제어가 현실적으로 불가능기존 라이브러리(PunSubClient)는 오랬동안 개발 중단 및 문제가 있어 AsyncMQTT라는 라이브러리로 교체하고자 함라이브러리 깃허브다운로드 및 설치 아두이노 IDE 기준으로lib 검색..
홈 IoT
기존에 안드로이드에서 MQTT를 이용하여 메세지를 주고 받는걸 확인 했다. 이를 응용해서 전등을 컨트롤하는 예제를 만들어보자. 1. MQTT 로 보낼 TOPIC, JSON 구조 정하기 MQTT 중계 프로그램 제작 - 1부 안드로이드와 스위치 간 MQTT를 이용한 통신을 서버에서 중계를 하고자 한다. 그러면 어떻게 해야 중계를 할 수 있을까? 내용이 너무 길어 나눠서 포스팅 하도록 하겠습니다. 살펴볼 코드는 총 5 sonjuhy.tistory.com 이 글과 2부에서 작성한 서버와 통신할 안드로이드 어플을 만들고자 합니다. 그러므로 TOPIC은 이 글을 따라가겠습니다. 해당 글에서 안드로이드로부터 오는 메세지를 받는 토픽은 아래와 같습니다. MyHome/Light/Pub/Server 그리고 전등의 변경된 ..
버튼입력을 통한 컨트롤 및 MQTT를 이용한 통신을 서버에 전송 하고자 한다. 그리고 유지 보수를 위해 펌웨어를 OTA로 업데이트 할 수 있도록 하고자 한다. 1. 펌웨어의 목적 정의 스위치를 통해 하고자 하는 목적을 먼저 정의를 해야합니다. 제가 원하는 목적들을 정의를 하자면 아래와 같습니다. 1. 버튼으로 스위치 컨트롤 1-1. 어떠한 경우에도 최우선적으로 작동 1-2. 버튼 작동했을때 상태를 서버로 전송 2. MQTT 구독, 발행 3. 웹 컨트롤 기능 3-1. OTA 기능 3-2. 테스트 컨트롤 및 상태값 확인 2. 목적 별 필요 기능 1번. 핀&릴레이 컨트롤 및 인터럽트 버튼 입력을 통해 컨트롤 하고자 하면 핀 & 릴레이 컨트롤이 필요합니다. 핀 : 버튼을 눌렀을때 해당 신호를 esp칩셋에 전송할..
그동안 진행한 글들을 보시면서 이런 궁금증이 생기실수도 있습니다. 그럼 DB는 어떻게 되어있길래 저렇게 DB에 데이터를 넣고 가져와서 쓸 수 있는거지? 그래서 이번에는 DB에 있는 테이블 구조들을 보도록 하겠습니다. ※ 코드에 있는 테이블, 컬럼 명이랑 대소문자 등이 다를 수 도 있습니다. 여러분들 보기 편하기 위해서 수정했습니다. (그리고 저도 곧 이렇게 수정할 예정입니다.) 1. 테이블 리스트 한번 표로 정리해봤습니다. Table 이름 역할 사용되는 기능 비고 LIGHT_RESERVE 전등 예약 설정 정보 저장 전등 예약 LIGHT_RECORD 전등을 컨트롤 한 기록 저장 전등 컨트롤 기록 누가,언제,어디를,무엇을 NOTICE 공지사항 정보 저장 공지사항 ROOM_LIGHT 전등 리스트 정보 저장 전..
안드로이드와 스위치 간 MQTT를 이용한 통신을 서버에서 중계를 하고자 한다. 그러면 어떻게 해야 중계를 할 수 있을까? 이번에는 MQTT_JSON.py, Network.py와 Reserve_Main.py까지 보도록 하겠습니다. 바로 코드 보시죠. (저번 글에 이어 바로 3번부터 시작하겠습니다.) 3. 코드 살펴보기 3번. MQTT_JSON.py import json def JSON_Parser(object): #print(object) jsonObject = json.loads(object) dic = {'sender': jsonObject['sender'], 'message': jsonObject['message'], 'room': jsonObject['room']} return dic def JSO..
안드로이드와 스위치 간 MQTT를 이용한 통신을 서버에서 중계를 하고자 한다. 그러면 어떻게 해야 중계를 할 수 있을까? 내용이 너무 길어 나눠서 포스팅 하도록 하겠습니다. 살펴볼 코드는 총 5개 Main.py, MQTT_Main.py, MQTT_JSON.py, Network.py, Reserve_Main.py 이렇게 입니다. 이번에는 Main.py와 MQTT_Main.py까지 보도록 하겠습니다. 1. 중계 프로그램의 목적 정의 우선 중계 프로그램을 통해 어떤걸 하고자 하는지 정의를 먼저 정할 필요가 있습니다. 제가 원하는 목적들을 정의를 하자면 아래와 같습니다. 1. MQTT 구독 1-1. 스위치로 부터 발행된 메세지 구독 1-2. 안드로이드로 부터 발행된 메세지 구독 2. MQTT 발행 3. 스위치 ..