Android 모바일 장치에서 RaspberryPi(Linux)에 액세스합니다.

Android 모바일 장치에서 RaspberryPi(Linux)에 액세스합니다.

Spring을 사용하여 브라우저에 "rspi_ip/light"를 입력하면 항상 LED가 켜지는 RaspberryPi 애플리케이션을 만들었습니다. 잘 작동하지만 네트워크를 통해 내 다른 Android 앱에서 이 LED를 켜고 싶습니다. 라즈베리 파이와 전화가 동일한 네트워크에 있을 때 작동하지만 모든 네트워크에서 열고 싶습니다. 어디서든 액세스할 수 있고 안전하게 유지하려면 어떻게 해야 할까요? 내 라우터에 어떤 규칙도 적용하고 싶지 않습니다. 시스템은 플러그 앤 플레이여야 합니다. 라즈베리 파이를 네트워크에 연결하고 다른 앱 없이도 내 휴대폰에서 연결할 수 있어야 합니다(가능한 경우).

답변1

이는 MQTT의 완벽한 사용 사례처럼 들립니다(HTTP와 유사하지만 게시/구독 기능이 있어 IoT 프로젝트에 적합함). 장치 간 통신을 위한 중개자로 사용할 수 있는 서버인 MQTT "브로커"를 사용해야 합니다. MQTT를 살펴보는 것이 좋습니다.작동 방식 개요.

휴대폰과 Raspberry Pi가 서로 액세스할 수 있도록 방화벽 설정을 구성할 필요가 없다는 점에서 ngrok과 같습니다. 공용 인터넷을 통해 브로커에 액세스해야 합니다(공용 브로커를 사용하는 경우 이것이 보장됩니다).

MQTT 클라이언트 라이브러리는 거의 모든 일반 프로그래밍 언어에 사용할 수 있으므로 Python을 사용하는 것이 더 간단할 수 있지만 Raspberry Pi 애플리케이션에 Java를 사용할 수 있습니다.범미국 보건기구).

어떤 언어를 선택하든 관계없이 Raspberry Pi의 프로그램은 MQTT 브로커의 "주제"를 "구독"합니다. 주제는 다른 장치에서 게시되며 LED에 알리고 싶은 "메시지"를 포함합니다(예: /directive/powerState메시지가 있는 주제 ON).

에이전트는 메시지를 관리 및 전송하며 메시지가 전달되었는지 확인하는 일을 담당합니다. 일반적으로 브로커가 소유한 웹사이트의 대시보드를 통해 계정을 설정하며 일반적으로 장치를 브로커에 연결하는 데 사용할 수 있는 사용자 이름과 비밀번호(때로는 API 토큰)를 생성하도록 요청합니다. Raspberry Pi의 LED 프로그램에 대한 주제 및 메시지를 게시/구독하기 위해 특별히 브로커에 "장치"를 생성해야 할 수도 있습니다. 다음과 같은 더 가벼운 것을 사용하기 위해 프로젝트를 변환하기로 결정한 경우ESP8266), 브로커를 통해 생성된 동일한 자격 증명 및 장비를 사용할 수 있습니다. 바라보다이 페이지공공 중개인 목록을 얻으십시오.

귀하의 웹 브라우저는 MQTT와 다른 프로토콜인 HTTP를 사용하므로 MQTT에 연결할 수 있는 앱을 사용해야 합니다(iOS 및 Android에는 이러한 앱이 많으며 Siri/Google Assistant 바로가기/통합도 있습니다). 브로커 웹사이트를 통해 생성한 계정과 기기 정보를 앱에 입력하면, 휴대폰에서 (어디서나!) 라즈베리파이의 LED를 제어할 수 있습니다.

보안과 관련하여 HTTP(포트 80 사용)에 보안 버전이 있는 것처럼(TLS를 통한 HTTPS는 포트 443 사용) MQTT(포트 1883 사용)에도 보안 버전이 있습니다.포트 8883을 사용하는 TLS를 통한 보안 버전. MQTT는 네트워크/장치를 "해킹"에 취약하게 놔두어서는 안 됩니다. 하지만 일반 HTTP를 사용하는 것과 마찬가지로 안전하지 않은 MQTT를 사용하면 해커가 더 쉽게 사용할 수 있습니다.중개자MQTT 트래픽(이럴 가능성은 거의 없습니다).

관련 정보