メニュー

Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

ESP32上でのMQTTとTwilioS Syncの使用

In this quickstart, we'll combine the lightweight messaging protocol MQTT with Twilio Sync for IoT, the Arduino IDE, and Espressif's powerful ESP32. We'll walk through the Twilio Device Manager to create a Device Fleet then detail the ESP32 to Sync connection. Last but not least... we'll light up an LED! Let's make some magic and some photons!

Sync for IoT is currently in Developer Preview, which means access is by invite only. If you'd like to try what you see in these docs, sign up for the developer preview and the team at Twilio will get you onboarded as soon as possible.

Twilioアカウントにサインイン(またはサインアップ)する

新規Twilioアカウントを作成するか(無料のトライアルアカウントにサインアップします)、既存のTwilioアカウントにサインインします。

Once you are logged in, click this Device Manager link to go to the Sync for IoT console.

Deploy a Fleet of ESP32 Things

A Device Fleet is a collection of devices, keys, certificates, and configurations inside of Sync. While you can have multiple fleets, every individual fleet is isolated. That's perfect for the common use case where you want to keep your thing collections from accidentally interacting.

A default Fleet is already provisioned for you automatically, navigate to it in the Device Management console.

Twilio Consoleでdefault Fleetを見つける

またREST APIを使用してFleetをDeployすることも簡単です。

        
        
        
        
        APIを使用してSync for IoTでDevice Fleetを作成します。

        デバイスフリートを作成する

        APIを使用してSync for IoTでDevice Fleetを作成します。

        Fleetが作成されたので、デプロイに取り掛かりましょう。

        Default Fleetのデプロイを構成する

        Twilio will automatically configure a default Deployment once the Fleet is created. The 'Default Deployment' field in your Fleet will be populated similar to the following screenshot:

        既定のデプロイメントは、各新規デバイスフリートに対して自動で準備されます。

        「Configure the Deployment (デプロイメントを構成する) 」と書かれたリンクをクリックします:

        各デプロイメントは既定のServiceインスタンスで構成されます。

        Twilio also has automatically created a new Sync Service Instance as you can see above. An instance is similar to a database; the updates you make on Sync primitives (such as the Document we use today) are stored only in this one Sync instance.

        上記と同様に、APIを使用してDeploymentを作成することも可能です。

              
              
              
              

              Deploymentのハンドル(およびインスタンスへのポインター)を入手したら、認証用のデバイス証明書の作成準備は万端です。

              ESP32 Deviceおよびデバイス証明書を作成する

              A Device refers to a particular piece of hardware and is (appropriately enough) managed through the Device Manager. When an IoT device connects to Sync, Twilio will identify the device based upon the credentials you supply, either through a key or certificate. Our ESP32 has the resources to handle a certificate - and we encourage you to use certificate credentialing whenever possible. (See the ESP8266 Sync for IoT guide for an example of device key authentication to Sync).

              ここで、Fleet内で左側の「Device (デバイス) 」リンクをクリックします。 「ESP32」に関連するような賢明で覚えやすくわかりやすい、かつ一意な名前を入力し、「作成 (Create) 」ボタンをクリックします。

              Twilio Consoleでデバイスを作成する

              本稿で見てきたように、DeviceはAPIでも作成可能です。

                    
                    
                    
                    

                    Next, when in your fleet, click the 'Certificate' link in the left sidebar followed by the red plus sign (+) to create a new Device Certificate. It will automatically link to the ESP32 device you created a second ago.

                    Enter a friendly name for your certificate and check the 'Self-signed certificate' box. Next, hit the 'Create' button!

                    ESP32用のSync証明書とキーのダウンロード

                    In the success screen (similar to the above), download both the Certificate and Private key, and copy the key decryption password. Note: you will not have another chance to do this! You'll have to create a new certificate if you miss this step!

                    例によって、APIを使用してデバイス証明書の作成や削除が可能です。

                          
                          
                          
                          

                          ESP32 C++ Arduinoのコード内で、certificates.hppファイルに証明書と復号キーをコピーします。

                          Syncオブジェクトを作成する

                          A Document is the simplest type of Sync object - great for a small application such as an LED blinker. You will have to create that document in some way before you connect your ESP32 to Sync; the Document name will directly map to the subscribed topic of the ESP32. Name your Document 'BoardLED' (case sensitive).

                                
                                
                                
                                
                                上記で示したように「Configure Deployment (デプロイを構成する) 」からSync Service SIDを使用します。

                                Syncオブジェクトを作成する

                                上記で示したように「Configure Deployment (デプロイを構成する) 」からSync Service SIDを使用します。

                                作成と並行して、「led」を「OFF」に初期化します。

                                ESP32をSyncと使用するための前提条件

                                You can grab all of our code on Github, here.

                                For this guide's development, we used a ESP32 development board (the 'Developer Edition', from Adafruit) with the Arduino IDE. If you pick the same board, use the 'ESP32 Dev Module' selection from the boards menu in the IDE.

                                Also, we connected an LED to pin 23 on that board then through a resistor to ground, so the LED would be active high. Use a suitable resistor to protect the LED (here is a LED resistor calculator to help).

                                デプロイ済みデバイスとESP32用のLED回路

                                Any other suitable ESP32 with an LED will work fine, just be sure to change the target pin in the code and select the proper board in the menu.

                                Arduino IDEを起動したら、下記の2つのライブラリーをインストールします:

                                • ArduinoJSON (by Benoit Blanchon - GitHub)
                                • PubSubClient (by Nick O'Leary - GitHub)

                                On my machine, the Library Manager was found through the menu combination 'Sketch' -> 'Include Library' -> 'Library Manager'. The libraries are installed and managed directly inside the IDE.

                                ESP32に証明書を追加する

                                A few steps above, you created a certificate for the ESP32 and downloaded an encrypted key and certificate. You will now need to add your decrypted client key and your client certificate.

                                Let's start with the client certificate - it can be used verbatim. In the Arduino IDE, go to the certificates.hpp file.

                                1. 使い慣れたテキストエディターでCYxxx.pemクライアント証明書ファイルを開いて全体をコピーします(ハイフンで始まる行[「---」]も含まれます)。
                                2. ()に囲まれた部分を、certificates.hpp内のclient_certにペーストします。
                                  const char* client_cert = R"(PASTE_IT_HERE)";​
                                  
                                  ヘルプが必要な場合は、root_certでヒントを確認できます。
                                3. Before you can paste the key, you have to decrypt the .key file. On *NIX, this can be done with:
                                  openssl rsa -in  CYxxxxxxxxxx.key -out CYxxxxxxxxxx.key.decrypted​
                                  
                                  パスワードを入力して復号化します。
                                4. Open it your choice of text editor and copy the decrypted key (again including the hyphen lines).
                                5. ()に囲まれた部分を、certificates.hpp内のclient_keyにペーストします。
                                  const char* client_key = R"(PASTE_IT_HERE)";​
                                  

                                      
                                      
                                      
                                      
                                      certificates.hppで復号化されたキーとダウンロードしたクライアント証明書をペーストします。

                                      クライアントキーと証明書をペーストする

                                      certificates.hppで復号化されたキーとダウンロードしたクライアント証明書をペーストします。

                                      クライアントキーと証明書を追加したら、.inoファイルに注意を向けられるようになります。

                                      Wi-Fiクレデンシャルでコードを編集する

                                      Switch tabs to the .ino file now. You'll need to make edits to the C++ sketch to get it on your network:

                                      • ssid
                                      • password
                                            
                                            
                                            
                                            
                                            WiFiのSSIDとパスワードを追加して、ESP32をご使用のWiFiネットワークに接続します。

                                            ESP32でSync for IoTに接続する

                                            WiFiのSSIDとパスワードを追加して、ESP32をご使用のWiFiネットワークに接続します。

                                            The next two variables may not have to change; if you didn't name your Sync Document BoardLED you will have to change it here though.

                                            • sync_document
                                            • sync_device_name

                                            ピン32でLEDを使用していない場合、LED_PINも変更してください。

                                            コードをESP32にアップロードし、LEDを点滅させる

                                            変数の設定をすべて終えたら、いよいよこれを点滅させて遊びましょう。

                                            Upload the code to the ESP. Open the Arduino Serial Monitor (the menu 'Tools' -> 'Serial Monitor'). You should see something like this streaming over serial:

                                            .......
                                            WiFi connected!  IP address: 192.168.1.169
                                            Attempting to connect to Twilio Sync...
                                            Connected!  Subscribing to sync/docs/BoardLED
                                            Message arrived on topic {"led":"OFF"}
                                            LED turned off!
                                            

                                            But wait - there's more! Let's blink that LED. Use the following code to send an UPDATE request to Sync and change the state of led.

                                                  
                                                  
                                                  
                                                  

                                                  ジャーン! 点きました!

                                                  素早く連続する下記の3つの更新が見て取れます:

                                                  • Syncが応答し、コマンドが成功したことを知らせます
                                                  • LEDが点灯します
                                                  • シリアル上にESP32からのハッピーメッセージが得られます

                                                  Syncのデプロイ済みDeviceを介して点滅しているESP32

                                                  ESP32からSyncを更新する

                                                  If you look in the code, there are a few commented out lines which show how to send updates back from the ESP32. Remove the comments to send a msg back to Sync.

                                                        
                                                        
                                                        
                                                        
                                                        これらの行のコメントを解除して、タイマーでSyncにデータを送り返します。

                                                        オプションでSyncにデータを送り返す

                                                        これらの行のコメントを解除して、タイマーでSyncにデータを送り返します。

                                                        Note that whatever you send should be in JSON format. You can generate JSON through the ArduinoJSON library rather simply, or craft it inline like we've done here.

                                                        同期されたモノのインターネット (The Internet of Synced Things)

                                                        It's that simple - blinky lights and a ESP32 all mediated through a Sync Document with the power of Twilio's Sync for IoT and MQTT.

                                                        Now you can take this infrastructure in any direction you desire, sharing the BoardLED Document across many devices - or perhaps using it on your server and creating a dashboard. Wherever you take it, let us know what you've built on Twitter!

                                                        Rate this page:

                                                        ヘルプが必要ですか?

                                                        We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.