2016-11-03 3 views
1

필요한 것?Bluemix IoT 서비스에서 장치/게이트웨이 IP 주소를 얻는 방법은 무엇입니까?

위치를 결정하려면 현재 장치/게이트웨이의 IP 주소를 알아야합니다.

어떻게해야합니까?

나는 2 옵션을 발견 : 나는 그래서 API를 통해 사용할 수 결정 관리자 패널에서 볼 때문에

  1. 이 Bluemix API를 통해 게이트웨이 IP 주소를 가져 오기를 (그러나이 될 수있다). 그러나 적절한 API 호출을 찾을 수 없습니다. 구현 된 경우 제안하십시오.
  2. 기기 세부 정보에 대한 API 응답에서 추가 위치 매개 변수를 확인했지만 사용 방법에 대한 전체 설명을 찾을 수 없습니다. 이 매개 변수는 로그 및 오류 코드에 대한 링크와 함께 되돌려 보내집니다. 그러나 모든 API 요청에서 location 매개 변수는 빈 문자열을 반환합니다.

이 옵션을 사용하거나 다른 해결책을 제안 할 수있는 사람이 있습니까?

P.S. 현재 해결 방법은 게이트웨이에서 직접 IP 주소를 보내는 것이지만 최상의 옵션이 아닌 것으로 보입니다.

+0

API의 위치 매개 변수는 IP 주소가 아닌 위도와 경도를 나타냅니다. https://docs.internetofthings.ibmcloud.com/swagger/v0002.html#!/Devices/put_device_types_typeId_devices_deviceId_location – ValerieLampkin

+0

예, 해결책이기도합니다. 그러나 여기에있는 모든 요청에 ​​대해서는 제가 질문 할 때 빈 응답을 받았습니다. –

+0

location 매개 변수가 모든 클라이언트/게이트웨이 코드 구현에 채워지는지 의심 스럽습니다. 어쩌면 이것은 게이트웨이의 서브 세트에 대해서만 작용할 수도 있습니다. 게이트웨이에서 메시지에 IP 주소를 수동으로 포함시키는 것은 실현 가능한 해결책 인 것 같습니다. –

답변

1

전화 연결 로그 API를 ... 당신은

또는 MQTT를 통해 모니터 주제에 가입 ... IP 주소를 IIRC 거기에서 연결된 마지막 장치/게이트웨이를 찾을 수 있습니다 그리고 당신은 얻을 수 있습니다 해당 항목에서 사용할 수있는 메시지의 IP, 현재 연결되어있는 장치의 경우 현재 IP 일 것입니다. 이전에 연결 한 장치가 마지막으로 알려진 IP 주소 일 것입니다. 연결되지 않은 장치는 연결할 수 없으므로 정보가 없습니다.

+0

'/ diag/logs' API 호출도 시도했지만 항상 빈 응답을 보냅니다. 그러나 모니터링 주제에 가입하는 또 다른 솔루션은 나와 함께 더 쉽고 편리하게 보입니다. 고맙습니다! –

0

연결된 장치가 위치를 게시하지 않은 경우 아무 것도받을 수 없습니다. 위치를 업데이트하는 것은 애플리케이션 또는 기기의 코드에 달려 있습니다. IP 기반 위치 자동 조회는 없습니다.

연결의 IP를 검색

당신은 두 가지 옵션이 있습니다 : 장치 상태 메시지를 구독

  • 연결 로그

https://docs.internetofthings.ibmcloud.com/swagger/v0002.html#!/Problem_Determination/get_logs_connection

/mon/topics의 메시지는 무기한 보관되지 않을 수 있습니다.

+0

물론입니다. 고맙습니다! Bluemix IoT에 적절한 형식의 위치 정보를 보내도록 장치를 설정하는 방법에 대한 예제가 있습니까? –

2

가 직접 "나에게이 장치의 IP 주소를 제공"API 없지만,이 정보의 몇 가지 소스가 있습니다 : 다음의 경우

는 장치가 type = "testDeviceType"id = "testDeviceId"org = "123456" 존재 가정합니다.

  1. 연결 로그 API

    GET /api/v0002/logs/connection?typeId=testDeviceType&deviceId=testDeviceId

    응답 :

    : API 키와 모니터링 주제를 구독

    [ { "timestamp": "2016-10-22T05:07:36.064Z", "message": "Closed connection from 127.0.0.1. The connection was closed by the client. Error=Connection timed out(110)" }, { "timestamp": "2016-10-22T03:59:36.182Z", "message": "Token auth succeeded: ClientID='d:123456:testDeviceType:testDeviceId', ClientIP=127.0.0.1" } ]

  2. 메시지 페이로드 :

    RCV [iot-2/type/testDeviceType/id/testDeviceId/mon][retained] {"Action":"Connect","Time":"2016-11-01T14:18:36.550Z","ClientAddr":"127.0.0.1","ClientID":"d:123456:testDeviceType:testDeviceId","Port":8883,"Secure":true,"Protocol":"mqtt4","Durable":false }

  3. 질문에서 언급 한 바와 같이, 그것은 항상 메시지 페이로드에 지정할 수 있지만, 어쩌면 장치에 의해 게시이 정보를 신뢰하지 않는 몇 가지 이유가있을 수 있을까?

  4. 장치의 DeviceInfo 필드에는 문자열이며 기술적으로 장치의 IP 주소로 설정할 수있는 필드가 포함되어 있습니다. 이것은 조금 멀리 가져올 수 있습니다.

  5. 또한 장치 지리적 위치는 HTTP를 통해 또는 장치 관리 MQTT 주제를 사용하여 설정할 수 있습니다.

https://console.ng.bluemix.net/docs/services/IoT/devices/device_mgmt/index.html#update-location

{ 
    "d": { 
     "longitude": number, 
     "latitude": number, 

     "elevation": number, 
     "measuredDateTime": "string in ISO8601 format", 
     "updatedDateTime": "string in ISO8601 format", 
     "accuracy": number 
    }, 
    "reqId": "string" 
} 

는 게이트웨이가 언급되기 때문에, 명심해야 할 또 다른 점은 언급 접속 로그 및 모니터링 주제는 (1)과 (2) 장치에만 관련이 있음을 인 플랫폼에 직접 연결하십시오.