BME280のマニュアルに従い、j3にはんだを流し込みi2c接続を有効化します。※マニュアルを見たい方は秋月電子通商のWebサイトにて通販コード「K-09421」を入力し、該当した商品ページから確認してください。Piは以下の配線で接続します。Botのwebhook用URLはhttpsである必要があります。Encryptを使用しました。DDNSを使用している場合、DDNSがmydns.jpだと同一ドメイン上限に引っかかってエラーになる可能性があります(1週間に20サブドメインらしい)。EncryptのSSL証明書発行にはcertbotという専用ツールがありますので、そちらをダウンロードし証明書を発行します。発行先サーバへhttpによるアクセスが必要となります。golangでエコーサーバ用スクリプトを作成し、rootで起動しておきましょう。nil)}正常に発行されると下記ディレクトリに証明書がインストールされます。配下のfullchain1.pem,privkey1.pemを使用しますので正常に生成されていることを確認します。Trialの申請を行います。して登録しないとPUSHメッセージが使用できないので間違えないようにしましょう。実装はGo言語で行います。Goは各種センサーに接続するライブラリが揃っていますし、並列処理により複数のセンサーにアクセスでき、かつシングルバイナリなので簡単に複数のサーバにプログラムを配布できるため個人的にはIoTと相性のよい言語だと思っています。パッケージ下記のパッケージをインポートします。Bot用、golang.org/x/exp/io/i2c,golang.org/x/exp/io/spiはそれぞれi2c,spiへアクセスするためのパッケージです。MCP3008からのデータを取得するため、github.com/advancedclimatesystems/io/spi/microchip,github.com/advancedclimatesystems/io/adcをインポートします。BME280からの数値取得はGoBotでも可能なようですが、私の環境ではうまく動きませんでしたのでgithub.com/quhar/bme280を使ってセンサーから温度・気圧・湿度を取得しました。github.com/aws/aws-sdk-go/はGoからAWSへの各種サービスを使用するためのSDKとなります。github.com/robfig/cronはcron表記で決まった時刻や間隔で特定の処理を実行するためのパッケージです。EncryptやLINEのトークンなどはまとめてconst設定しておきます。"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")aws-sdk-goからawsの各種サービスを使用するために~/.aws/credentialsに認証情報を記述します。XXXXXXXXXXXXHTTPSサーバの起動https接続を待ち受けるためにhttp.ListenAndServeTLSでWEBサーバを起動します。Goでは一般ユーザーでウェルノウンポートでhttpが起動できないので、root権限で実行する必要があります。log.Fatal(err)}BME280から温度・気圧・湿度を取得BME280から値を取得するために、i2cをオープンします。