M5StickV로 Azure에 연결
소개
M5Stack Advent Calendar 2020 8일째 기사 M5StickV와 M5Stack을 연결하여 WiFi 통신에서 M5StickV와 M5Stack을 연결하여 WiFi에 연결할 수 있습니다.
MaixAmigo와 MaixCube에서도.
같은 타이밍에 @h7ga40 씨가 TOPPERS Advent Calendar 2020 7일째에 TOPPERS BASE PLATFORM을 개조하여 ESP32를 AT 명령으로 사용해보기의 기사를 투고되고 있으므로, M5StickV와 M5Stack를 연결한 환경에서도 시험해 보고 싶습니다.
Azure IoT
지금까지 AWS를 중심으로 사용해 왔기 때문에, Azure는 조금 멋이 다릅니다. 문서Azure Portal을 사용하여 IoT Hub 만들기를 읽으면서 IoT Hub를 만듭니다. '구독'이나 '리소스 그룹'이라는 말이 나오고 하나씩 확인하면서 진행했습니다.
IoT Hub를 만든 후에는 IoT Hub에 장치를 등록합니다. 등록에는 TOPPERS BASE PLATFORM을 개조하여 ESP32를 AT 명령으로 사용해보기의 기사에서는 대칭 키를 사용하고 있는 것 같기 때문에, 대칭 키로 작성합니다.
TOPPERS에서 연결할 때 이 연결 문자열을 사용합니다.
기기에 따른 차이
장치에 따라 직렬 통신하는 핀이 변경됩니다.
장치
RX
TX
LED R
LED G
LED B
M5StickV
35
34
6
9
8
MaixAmigo
7
9
14
15
17
MaixCube
25
24
13
12
14
여기에 설명되어 있습니다.
직렬 통신: target_serial.c
LED: kpu_main.h
esp_at_socket.c도 일부 수정되었습니다. AT+CIPSEND 뒤에 에러가 있었으므로 코멘트로 했습니다.
esp_at_socket.cint esp_at_socket_send(ESP_AT_SOCKET_HANDLE espAtSocketHandle, const char *data, int length)
{
at_connection_t *connection = (at_connection_t *)espAtSocketHandle;
at_response_kind_t res_kind;
if (connection->state != connection_state_connected) {
printf("esp_at_socket_send state error %d\n", connection->state);
return -MU_FAILURE;
}
ER ret;
char temp[64];
sprintf_s(temp, sizeof(temp), "AT+CIPSEND=%d,%d\r\n", connection->link_id, length);
ret = esp_serial_write(connection->esp_state, temp, &res_kind, 10000);
/* CIPSEND の後に OKが返らない
if ((ret != E_OK) || (res_kind != at_response_kind_ok)) {
printf("send error command %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
do {
ret = esp_serial_read(connection->esp_state, &res_kind, 10000);
if ((ret != E_OK) || ((res_kind != at_response_kind_ok)
&& (res_kind != at_response_kind_progress))) {
printf("send error progress %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
} while(res_kind == at_response_kind_ok);
*/
if ((ret != E_OK) || (res_kind != at_response_kind_progress)) {
printf("send error command %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
ret = serial_wri_dat(AT_PORTID, data, length);
if (ret < 0) {
printf("send error write data %s\n", itron_strerror(ret));
return -MU_FAILURE;
}
do {
ret = esp_serial_read(connection->esp_state, &res_kind, 60000);
if (ret != E_OK) {
printf("send error done %s\n", itron_strerror(ret));
break;
}
if (res_kind == at_response_kind_send_ok)
return length;
} while ((res_kind == at_response_kind_no_set)
|| (res_kind == at_response_kind_ok));
printf("send error done kind=%d\n", res_kind);
return -MU_FAILURE;
}
오리지널에서는 K210의 KPU를 사용해 사람, 차를 분류하고 나서 송신하고 있습니다만, 이번은 Azure에 연결하는 곳의 확인만 할 수 있으면 하고 생각해, 그 처리는 스킵 시켜 테스트했습니다.
IoT Hub에 연결
http로 연결해 보겠습니다.
mon>device WIFI <ssid> <pass>
mon>device setcs 接続文字列
mon>device iot http
Starting the IoTHub client sample HTTP...
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothubtransporthttp.c Func:IoTHubTransportHttp_Subscribe_DeviceTwin Line:1189 IoTHubTransportHttp_Subscribe_DeviceTwin Not supported
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:Generic_IoTHubClient_SetCallbacks Line:202 failure in IoTHubClient_LL_SetDeviceTwinCallback
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:IoTHubDeviceTwinCreate_Impl Line:261 failure in Generic_IoTHubClient_SetCallbacks
Failure in IoTHubDeviceTwin_LL_CreateSecurityCameraStateError: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/c-utility/src/vector.c Func:VECTOR_find_if Line:292 invalid argument - handle(0), pred(80042bda)
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/serializer/src/schema.c Func:Schema_GetSchemaForModel Line:3230 unable to find a schema that has a model named SecurityCameraSettings
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:IoTHubDeviceTwinCreate_Impl Line:232 failure in Schema_GetSchemaForModel.
Failure in IoTHubDeviceTwin_LL_CreateSecurityCameraSettingsError: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothubtransporthttp.c Func:IoTHubTransportHttp_Subscribe_DeviceMethod Line:1214 not implemented (yet)
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothub_client_core_ll.c Func:IoTHubClientCore_LL_SetDeviceMethodCallback Line:2601 IoTHubTransport_Subscribe_DeviceMethod failed
ERROR: IoTHubClient_LL_SetDeviceMethodCallback..........FAILED!
IoTHubClient_LL_SetMessageCallback...successful.
IoTHubClient_LL_SendEventAsync accepted message [0] for transmission to IoT Hub.
Confirmation[0] received for message tracking id = 0 with result = IOTHUB_CLIENT_CONFIRMATION_OK
IoTHubClient_LL_SendEventAsync accepted message [1] for transmission to IoT Hub.
Confirmation[1] received for message tracking id = 1 with result = IOTHUB_CLIENT_CONFIRMATION_OK
IoTHubClient_LL_SendEventAsync accepted message [2] for transmission to IoT Hub.
에러도 나오고 있습니다만, 접속은 되어 있는 모양.
요약
TOPPERS로 IoT에 한 걸음 다가왔습니다.
@h7ga40 감사합니다.
Reference
이 문제에 관하여(M5StickV로 Azure에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fukuebiz/items/1c7f32e4c7d62e024954
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
지금까지 AWS를 중심으로 사용해 왔기 때문에, Azure는 조금 멋이 다릅니다. 문서Azure Portal을 사용하여 IoT Hub 만들기를 읽으면서 IoT Hub를 만듭니다. '구독'이나 '리소스 그룹'이라는 말이 나오고 하나씩 확인하면서 진행했습니다.
IoT Hub를 만든 후에는 IoT Hub에 장치를 등록합니다. 등록에는 TOPPERS BASE PLATFORM을 개조하여 ESP32를 AT 명령으로 사용해보기의 기사에서는 대칭 키를 사용하고 있는 것 같기 때문에, 대칭 키로 작성합니다.
TOPPERS에서 연결할 때 이 연결 문자열을 사용합니다.
기기에 따른 차이
장치에 따라 직렬 통신하는 핀이 변경됩니다.
장치
RX
TX
LED R
LED G
LED B
M5StickV
35
34
6
9
8
MaixAmigo
7
9
14
15
17
MaixCube
25
24
13
12
14
여기에 설명되어 있습니다.
직렬 통신: target_serial.c
LED: kpu_main.h
esp_at_socket.c도 일부 수정되었습니다. AT+CIPSEND 뒤에 에러가 있었으므로 코멘트로 했습니다.
esp_at_socket.cint esp_at_socket_send(ESP_AT_SOCKET_HANDLE espAtSocketHandle, const char *data, int length)
{
at_connection_t *connection = (at_connection_t *)espAtSocketHandle;
at_response_kind_t res_kind;
if (connection->state != connection_state_connected) {
printf("esp_at_socket_send state error %d\n", connection->state);
return -MU_FAILURE;
}
ER ret;
char temp[64];
sprintf_s(temp, sizeof(temp), "AT+CIPSEND=%d,%d\r\n", connection->link_id, length);
ret = esp_serial_write(connection->esp_state, temp, &res_kind, 10000);
/* CIPSEND の後に OKが返らない
if ((ret != E_OK) || (res_kind != at_response_kind_ok)) {
printf("send error command %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
do {
ret = esp_serial_read(connection->esp_state, &res_kind, 10000);
if ((ret != E_OK) || ((res_kind != at_response_kind_ok)
&& (res_kind != at_response_kind_progress))) {
printf("send error progress %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
} while(res_kind == at_response_kind_ok);
*/
if ((ret != E_OK) || (res_kind != at_response_kind_progress)) {
printf("send error command %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
ret = serial_wri_dat(AT_PORTID, data, length);
if (ret < 0) {
printf("send error write data %s\n", itron_strerror(ret));
return -MU_FAILURE;
}
do {
ret = esp_serial_read(connection->esp_state, &res_kind, 60000);
if (ret != E_OK) {
printf("send error done %s\n", itron_strerror(ret));
break;
}
if (res_kind == at_response_kind_send_ok)
return length;
} while ((res_kind == at_response_kind_no_set)
|| (res_kind == at_response_kind_ok));
printf("send error done kind=%d\n", res_kind);
return -MU_FAILURE;
}
오리지널에서는 K210의 KPU를 사용해 사람, 차를 분류하고 나서 송신하고 있습니다만, 이번은 Azure에 연결하는 곳의 확인만 할 수 있으면 하고 생각해, 그 처리는 스킵 시켜 테스트했습니다.
IoT Hub에 연결
http로 연결해 보겠습니다.
mon>device WIFI <ssid> <pass>
mon>device setcs 接続文字列
mon>device iot http
Starting the IoTHub client sample HTTP...
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothubtransporthttp.c Func:IoTHubTransportHttp_Subscribe_DeviceTwin Line:1189 IoTHubTransportHttp_Subscribe_DeviceTwin Not supported
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:Generic_IoTHubClient_SetCallbacks Line:202 failure in IoTHubClient_LL_SetDeviceTwinCallback
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:IoTHubDeviceTwinCreate_Impl Line:261 failure in Generic_IoTHubClient_SetCallbacks
Failure in IoTHubDeviceTwin_LL_CreateSecurityCameraStateError: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/c-utility/src/vector.c Func:VECTOR_find_if Line:292 invalid argument - handle(0), pred(80042bda)
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/serializer/src/schema.c Func:Schema_GetSchemaForModel Line:3230 unable to find a schema that has a model named SecurityCameraSettings
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:IoTHubDeviceTwinCreate_Impl Line:232 failure in Schema_GetSchemaForModel.
Failure in IoTHubDeviceTwin_LL_CreateSecurityCameraSettingsError: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothubtransporthttp.c Func:IoTHubTransportHttp_Subscribe_DeviceMethod Line:1214 not implemented (yet)
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothub_client_core_ll.c Func:IoTHubClientCore_LL_SetDeviceMethodCallback Line:2601 IoTHubTransport_Subscribe_DeviceMethod failed
ERROR: IoTHubClient_LL_SetDeviceMethodCallback..........FAILED!
IoTHubClient_LL_SetMessageCallback...successful.
IoTHubClient_LL_SendEventAsync accepted message [0] for transmission to IoT Hub.
Confirmation[0] received for message tracking id = 0 with result = IOTHUB_CLIENT_CONFIRMATION_OK
IoTHubClient_LL_SendEventAsync accepted message [1] for transmission to IoT Hub.
Confirmation[1] received for message tracking id = 1 with result = IOTHUB_CLIENT_CONFIRMATION_OK
IoTHubClient_LL_SendEventAsync accepted message [2] for transmission to IoT Hub.
에러도 나오고 있습니다만, 접속은 되어 있는 모양.
요약
TOPPERS로 IoT에 한 걸음 다가왔습니다.
@h7ga40 감사합니다.
Reference
이 문제에 관하여(M5StickV로 Azure에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fukuebiz/items/1c7f32e4c7d62e024954
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
int esp_at_socket_send(ESP_AT_SOCKET_HANDLE espAtSocketHandle, const char *data, int length)
{
at_connection_t *connection = (at_connection_t *)espAtSocketHandle;
at_response_kind_t res_kind;
if (connection->state != connection_state_connected) {
printf("esp_at_socket_send state error %d\n", connection->state);
return -MU_FAILURE;
}
ER ret;
char temp[64];
sprintf_s(temp, sizeof(temp), "AT+CIPSEND=%d,%d\r\n", connection->link_id, length);
ret = esp_serial_write(connection->esp_state, temp, &res_kind, 10000);
/* CIPSEND の後に OKが返らない
if ((ret != E_OK) || (res_kind != at_response_kind_ok)) {
printf("send error command %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
do {
ret = esp_serial_read(connection->esp_state, &res_kind, 10000);
if ((ret != E_OK) || ((res_kind != at_response_kind_ok)
&& (res_kind != at_response_kind_progress))) {
printf("send error progress %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
} while(res_kind == at_response_kind_ok);
*/
if ((ret != E_OK) || (res_kind != at_response_kind_progress)) {
printf("send error command %s %d\n", itron_strerror(ret), res_kind);
return -MU_FAILURE;
}
ret = serial_wri_dat(AT_PORTID, data, length);
if (ret < 0) {
printf("send error write data %s\n", itron_strerror(ret));
return -MU_FAILURE;
}
do {
ret = esp_serial_read(connection->esp_state, &res_kind, 60000);
if (ret != E_OK) {
printf("send error done %s\n", itron_strerror(ret));
break;
}
if (res_kind == at_response_kind_send_ok)
return length;
} while ((res_kind == at_response_kind_no_set)
|| (res_kind == at_response_kind_ok));
printf("send error done kind=%d\n", res_kind);
return -MU_FAILURE;
}
http로 연결해 보겠습니다.
mon>device WIFI <ssid> <pass>
mon>device setcs 接続文字列
mon>device iot http
Starting the IoTHub client sample HTTP...
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothubtransporthttp.c Func:IoTHubTransportHttp_Subscribe_DeviceTwin Line:1189 IoTHubTransportHttp_Subscribe_DeviceTwin Not supported
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:Generic_IoTHubClient_SetCallbacks Line:202 failure in IoTHubClient_LL_SetDeviceTwinCallback
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:IoTHubDeviceTwinCreate_Impl Line:261 failure in Generic_IoTHubClient_SetCallbacks
Failure in IoTHubDeviceTwin_LL_CreateSecurityCameraStateError: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/c-utility/src/vector.c Func:VECTOR_find_if Line:292 invalid argument - handle(0), pred(80042bda)
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/serializer/src/schema.c Func:Schema_GetSchemaForModel Line:3230 unable to find a schema that has a model named SecurityCameraSettings
Error: Time:Sat Dec 12 15:41:19 2020 File:../../asp_baseplatform/../azure_iot_sdk/serializer/inc/serializer_devicetwin.h Func:IoTHubDeviceTwinCreate_Impl Line:232 failure in Schema_GetSchemaForModel.
Failure in IoTHubDeviceTwin_LL_CreateSecurityCameraSettingsError: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothubtransporthttp.c Func:IoTHubTransportHttp_Subscribe_DeviceMethod Line:1214 not implemented (yet)
Error: Time:Sat Dec 12 15:41:19 2020 File:../../azure_iot_sdk/iothub_client/src/iothub_client_core_ll.c Func:IoTHubClientCore_LL_SetDeviceMethodCallback Line:2601 IoTHubTransport_Subscribe_DeviceMethod failed
ERROR: IoTHubClient_LL_SetDeviceMethodCallback..........FAILED!
IoTHubClient_LL_SetMessageCallback...successful.
IoTHubClient_LL_SendEventAsync accepted message [0] for transmission to IoT Hub.
Confirmation[0] received for message tracking id = 0 with result = IOTHUB_CLIENT_CONFIRMATION_OK
IoTHubClient_LL_SendEventAsync accepted message [1] for transmission to IoT Hub.
Confirmation[1] received for message tracking id = 1 with result = IOTHUB_CLIENT_CONFIRMATION_OK
IoTHubClient_LL_SendEventAsync accepted message [2] for transmission to IoT Hub.
에러도 나오고 있습니다만, 접속은 되어 있는 모양.
요약
TOPPERS로 IoT에 한 걸음 다가왔습니다.
@h7ga40 감사합니다.
Reference
이 문제에 관하여(M5StickV로 Azure에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fukuebiz/items/1c7f32e4c7d62e024954
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(M5StickV로 Azure에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fukuebiz/items/1c7f32e4c7d62e024954텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)