메이커 Maker

리필스테이션 V1.0 수정 코드 설명

지구빵집 2021. 6. 14. 10:23
반응형

 

 

리필스테이션 V1.0 수정 코드 설명 

 

시스템을 만드는 일은 어려운 일이다. 하나의 시스템을 만들기 위해 해야 하는 일은 정말 많다. 아무리 많은 시스템이 생겨난다고 해도 쉽게 만들어지는 시스템은 없다. 일처리의 시작과 끝이나, 일을 실행하는 단계와 절차의 총합은 언제든 만들 수 있지만 그게 시스템은 아니다. 

 

"시스템이란 관련된 요소들의 집합체이다. 굉장히 포괄적인 개념이다. 우리의 모든 일상이 시스템이라고 부를 수 있을 정도로 넓은 개념이다. 예를 들어, 김밥이라는 시스템은 관련된 요소가 김, 밥, 햄, 계란 등이다. 김과 밥이 각각 냉장고와 밥솥에 있으면 그것은 김밥이 아니다. 모아서 말아놓아야 김밥이다. 김밥 자체가 시스템이면 이것으로 끝나지만 여기에 유통과 남품과 브랜드, 대량생산과 HACCP과 제도와 법과 모든 비지니스가 결합한 시스템이 만들어진다. 다시 말해, 시스템이란 관련된 무언가를 모아둔 것이다." - 정보시스템이란? 참고

 

시스템을 많이 만들고 싶은 남자는 지난주 금요일 광명에 출장을 갔다. 다시 코드를 변경하고 마무리 지었다. 완벽함이란 단어를 조심스럽지만 어디서나 사용하기로 한다. 남은 몫 역시 남자의 일이다. 

 

1. Refillstation 제품의 모든 공유기 접속 아이디와 패스워드를 아래와 같이 통합하기로 한다. 원래 이런가? 다른 매장들은 이렇게 사용하지 않는데. 공개되는 것과는 다른 모양이다. 

 

#define SECRET_SSID "eco*******"
#define SECRET_PASS "pale******"

 

2. WiFi 접속은 거의 끊어지지 않는다. 진짜 며칠 동안 한 번도 끊어지지 않는다. 하지만 MQTT 서버와 연결은 자주 끊어진다. 고려해야 한다. 20초 이상 리필을 하고 나면 MQTT 서버와 연결이 끊어지는데 Nano 33 IoT 보드 특성인지, 서버 문제인지 아직은 찾지 못했다. 아래는 처음 코드인데 MQTT 서버와 연결이 안 되어 다시 연결하는 코드인데 제대로 되지 않아 수정하였다.

 

기계적 관점에서 표현해야 하나? 인간적인 관점에서 표현해야 하나?   

 

if(!client.connected()) 
    {
        client.connect(""); // 앞서 설정한 클라이언트 ID로 연결합니다.
        client.subscribe("operate"); // inTopic 토픽을 듣습니다. topic 츨 구독
    }

 

3. 아래 코드로 변경한다. MQTT 서버에 연결할 수 없을 때 다시 연결하는 reconnect( ) 코드가 잘 만들어져 있어서 교체한다. 그러니까 계속 MQTT 서버를 접속하기 위해 노력한다. 죽을 때까지. 이미 WiFi 연결은 앞에서 체크했으므로. 어랏! - 평생 해도 WiFi 가 연결되어 있어야 의미가 있는 거 아냐?

 

while(!client.connected()) 
    {
        reconnect();
        //client.connect(""); // 앞서 설정한 클라이언트 ID로 연결합니다.
        //client.subscribe("operate"); // inTopic 토픽을 듣습니다. topic 츨 구독
    }

 

참고로 MQTT 서버와 연결을 실행하는 reconnect( ) 코드를 참고한다. 연결을 실행하는 호출 함수의 인자는 모두 정해진 것이다. 

 

void reconnect()
{
     //setup MQTT server
     client.setServer(mqtt_server, 1883); // Wait----MQTT 서버에 연결합니다.
     if(client.connect(machine_code, mqtt_username, mqtt_password)) 
     {
        client.subscribe("operate"); //20210520 insert
        Serial.println("\tNot Connect... MQTT Connected");
     }
     client.setCallback(callback);
}

 

 

 

Nobody.2021

 

반응형