{"id":164,"date":"2021-02-04T18:45:31","date_gmt":"2021-02-04T09:45:31","guid":{"rendered":"http:\/\/ssj.siosalt.tokyo\/?p=164"},"modified":"2021-02-04T18:59:18","modified_gmt":"2021-02-04T09:59:18","slug":"amazon%e3%83%96%e3%83%ad%e3%82%b0%e3%81%ae%e3%80%8cesp32-%e3%81%a7aws-iot%ef%bc%8bamazon-rekognition-%e3%81%a7%e5%8b%95%e7%89%a9%e3%81%a8%e4%ba%ba%e3%82%92%e6%a4%9c%e7%9f%a5%e3%80%8d%e3%82%92%e8%a8%82","status":"publish","type":"post","link":"http:\/\/ssj.siosalt.tokyo\/?p=164","title":{"rendered":"Amazon\u30d6\u30ed\u30b0\u306e\u300cESP32 \u3067AWS IoT\uff0bAmazon Rekognition \u3067\u52d5\u7269\u3068\u4eba\u3092\u691c\u77e5\u300d\u3092\u8a02\u6b63\u3057\u305f\u5099\u5fd8\u9332"},"content":{"rendered":"\n<p>AWS \u306e\u30aa\u30d5\u30a3\u30b7\u30e3\u30eb\u30d6\u30ed\u30b0\u306b\u300c<a rel=\"noreferrer noopener\" href=\"https:\/\/aws.amazon.com\/blogs\/iot\/creating-object-recognition-with-espressif-esp32\/\" target=\"_blank\">Creating Object Recognition with Espressif ESP32<\/a>\u300d\uff08Espressif ESP32 \u3092\u4f7f\u7528\u3057\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u8a8d\u8b58\u306e\u4f5c\u6210\uff09\u304c10\u6708\u306b\u63b2\u8f09\u3055\u308c\u305f\u3002<\/p>\n\n\n\n<p>\u5927\u5909\u52c9\u5f37\u306b\u306a\u3063\u305f\u304c\u3001\u305d\u306e\u307e\u307e\u3067\u306f\u52d5\u304b\u305a\u3001\u8272\u3005\u8a66\u3057\u3066\u3084\u3063\u3068\u52d5\u4f5c\u3002\u4ee5\u4e0b\u5099\u5fd8\u9332\u3002<\/p>\n\n\n\n<ul><li>1.IoT\u306e\u30dd\u30ea\u30b7\u30fc(Esp32Policy)\u306b\u4e0b\u8a18\u8ffd\u52a0\u304c\u5fc5\u8981\u3002esp32\/sub\/+ \u3078\u306e\u30b5\u30d6\u30b9\u30af\u30e9\u30a4\u30d6\u3067\u62d2\u5426\u3055\u308c\u3066\u3044\u305f\u3002<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>    {\n      \"Effect\": \"Allow\",\n      \"Action\": \"iot:Subscribe\",\n      \"Resource\": \"arn:aws:iot:REGION:ACCOUNT_ID:topicfilter\/esp32\/sub\/+\"\n    },<\/code><\/pre>\n\n\n\n<ul><li>2.Lambda&nbsp;\u306eesp32-request-url&nbsp;&nbsp;\u3092\u4fee\u6b63\u3002boto3\u5229\u7528\u6642\u306bS3v4\u7f72\u540d \u660e\u8a18\u304c\u5fc5\u8981\u3002<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># s3 = boto3.client('s3')\ns3 = boto3.client('s3',config=Config(signature_version='s3v4'))<\/code><\/pre>\n\n\n\n<ul><li>ESP32&nbsp;\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\u3067 rtc_gpio_desc \u6709\u52b9\u5316<\/li><li>&nbsp;platformio run -t menuconfig&nbsp;\u306b\u3066\u3001<ul><li>Component config \u2192 Driver configurations \u2192 RTCIO configuration<\/li><li>&nbsp;[*]Support array &#8216;<code>rtc_gpio_desc'<\/code> for ESP32 <\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" src=\"http:\/\/ssj.siosalt.tokyo\/wp-content\/uploads\/2020\/10\/espconf.png\" alt=\"\" class=\"wp-image-165\" width=\"672\" height=\"236\" srcset=\"http:\/\/ssj.siosalt.tokyo\/wp-content\/uploads\/2020\/10\/espconf.png 754w, http:\/\/ssj.siosalt.tokyo\/wp-content\/uploads\/2020\/10\/espconf-300x106.png 300w\" sizes=\"(max-width: 672px) 100vw, 672px\" \/><figcaption>Component config \u2192 Driver configurations \u2192 RTCIO configuration<\/figcaption><\/figure>\n\n\n\n<p>\u3053\u308c\u3067\u4e0b\u8a18\u30a8\u30e9\u30fc\u304c\u51fa\u306a\u304f\u306a\u308b\u3002<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/maximkulkin\/esp32-homekit-camera\/issues\/57\" target=\"_blank\">\u3053\u3053\u3092\u53c2\u8003\u306b\u3057\u305f\u3002<\/a><\/p>\n\n\n\n<!--more-->\n\n\n\n<pre class=\"wp-block-code\"><code>components\\cam\\driver\\twi.c: In function 'pinMode':\ncomponents\\cam\\driver\\twi.c:61:24: error: 'rtc_gpio_desc' undeclared (first use in this function); did you mean 'rtc_io_desc'?\n     uint32_t rtc_reg = rtc_gpio_desc&#91;pin].reg;<\/code><\/pre>\n\n\n\n<ul><li>4)&nbsp;src\/CMakeLists.txt \u306e\u7f72\u540d\u30d5\u30a1\u30a4\u30eb\u4fee\u6b63\u3002\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3059\u308b\u3002<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#if(CONFIG_EXAMPLE_EMBEDDED_CERTS)\n#target_add_binary_data(${COMPONENT_TARGET} \"certs\/aws-root-ca.pem\" TEXT)\n#target_add_binary_data(${COMPONENT_TARGET} \"certs\/certificate.pem.crt\" TEXT)\n#target_add_binary_data(${COMPONENT_TARGET} \"certs\/private.pem.key\" TEXT)\n#endif()<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u4e0b\u8a18\u30a8\u30e9\u30fc\u304c\u306a\u304f\u306a\u308b\u3002\u8a3c\u660e\u66f8\u3092platformio.ini \u3068src\/CMakeLists.txt \u306e\u4e21\u65b9\u3067\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u304b\u3089\u304a\u304b\u3057\u304f\u306a\u3063\u3066\u3044\u308b\u306e\u304c\u539f\u56e0\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\aws-root-ca.pem.S.o: in function `aws_root_ca_pem':\n(.rodata.embedded+0x0): multiple definition of `aws_root_ca_pem'; .pio\\build\\esp32dev\\aws-root-ca.pem.o:(.rodata.embedded+0x0): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\aws-root-ca.pem.S.o: in function `aws_root_ca_pem':\n(.rodata.embedded+0x0): multiple definition of `_binary_aws_root_ca_pem_start'; .pio\\build\\esp32dev\\aws-root-ca.pem.o:(.rodata.embedded+0x0): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\aws-root-ca.pem.S.o: in function `_binary_aws_root_ca_pem_end':\n(.rodata.embedded+0x4a5): multiple definition of `_binary_aws_root_ca_pem_end'; .pio\\build\\esp32dev\\aws-root-ca.pem.o:(.rodata.embedded+0x4a5): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\aws-root-ca.pem.S.o: in function `_binary_aws_root_ca_pem_end':\n(.rodata.embedded+0x4a5): multiple definition of `aws_root_ca_pem_length'; .pio\\build\\esp32dev\\aws-root-ca.pem.o:(.rodata.embedded+0x4a5): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\certificate.pem.crt.S.o: in function `certificate_pem_crt':\n(.rodata.embedded+0x0): multiple definition of `certificate_pem_crt'; .pio\\build\\esp32dev\\certificate.pem.crt.o:(.rodata.embedded+0x0): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\certificate.pem.crt.S.o: in function `certificate_pem_crt':\n(.rodata.embedded+0x0): multiple definition of `_binary_certificate_pem_crt_start'; .pio\\build\\esp32dev\\certificate.pem.crt.o:(.rodata.embedded+0x0): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\certificate.pem.crt.S.o: in function `_binary_certificate_pem_crt_end':\n(.rodata.embedded+0x4c5): multiple definition of `_binary_certificate_pem_crt_end'; .pio\\build\\esp32dev\\certificate.pem.crt.o:(.rodata.embedded+0x4c5): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\certificate.pem.crt.S.o: in function `_binary_certificate_pem_crt_end':\n(.rodata.embedded+0x4c5): multiple definition of `certificate_pem_crt_length'; .pio\\build\\esp32dev\\certificate.pem.crt.o:(.rodata.embedded+0x4c5): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\private.pem.key.S.o: in function `private_pem_key':\n(.rodata.embedded+0x0): multiple definition of `private_pem_key'; .pio\\build\\esp32dev\\private.pem.key.o:(.rodata.embedded+0x0): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\private.pem.key.S.o: in function `private_pem_key':\n(.rodata.embedded+0x0): multiple definition of `_binary_private_pem_key_start'; .pio\\build\\esp32dev\\private.pem.key.o:(.rodata.embedded+0x0): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\private.pem.key.S.o: in function `_binary_private_pem_key_end':\n(.rodata.embedded+0x690): multiple definition of `_binary_private_pem_key_end'; .pio\\build\\esp32dev\\private.pem.key.o:(.rodata.embedded+0x690): first defined here\nc:\/users\/username\/.platformio\/packages\/toolchain-xtensa32\/bin\/..\/lib\/gcc\/xtensa-esp32-elf\/8.2.0\/..\/..\/..\/..\/xtensa-esp32-elf\/bin\/ld.exe: .pio\\build\\esp32dev\\esp-idf\\.pio\\build\\esp32dev\\private.pem.key.S.o: in function `_binary_private_pem_key_end':\n(.rodata.embedded+0x690): multiple definition of `private_pem_key_length'; .pio\\build\\esp32dev\\private.pem.key.o:(.rodata.embedded+0x690): first defined here<\/code><\/pre>\n\n\n\n<p>\u4e3b\u306b\u3053\u3093\u306a\u3082\u306e\u304b\u3002\u3042\u3068str_split \u3067\u9577\u3055\uff10\u306e\u5165\u529b\u3067\u843d\u3061\u308b\u306e\u4fee\u6b63\u306a\u3069\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AWS \u306e\u30aa\u30d5\u30a3\u30b7\u30e3\u30eb\u30d6\u30ed\u30b0\u306b\u300cCreating Object Recognition with Espressif ESP32\u300d\uff08Espressif ESP32 \u3092\u4f7f\u7528\u3057\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u8a8d\u8b58\u306e\u4f5c\u6210\uff09\u304c10\u6708\u306b\u63b2\u8f09\u3055\u308c\u305f\u3002 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/ssj.siosalt.tokyo\/?p=164\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;Amazon\u30d6\u30ed\u30b0\u306e\u300cESP32 \u3067AWS IoT\uff0bAmazon Rekognition \u3067\u52d5\u7269\u3068\u4eba\u3092\u691c\u77e5\u300d\u3092\u8a02\u6b63\u3057\u305f\u5099\u5fd8\u9332&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[8,9],"tags":[34,6,35],"_links":{"self":[{"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=\/wp\/v2\/posts\/164"}],"collection":[{"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=164"}],"version-history":[{"count":5,"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=\/wp\/v2\/posts\/164\/revisions"}],"predecessor-version":[{"id":205,"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=\/wp\/v2\/posts\/164\/revisions\/205"}],"wp:attachment":[{"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=164"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ssj.siosalt.tokyo\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}