質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

Q&A

解決済

1回答

2243閲覧

golangのmqttクライアントでCloudMQTTにSSL接続するコード

raspypy

総合スコア247

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

0グッド

0クリップ

投稿2019/03/03 23:24

編集2019/03/05 02:56

golangのmqttクライアントでCloudMQTTにSSL接続するコード

前提・実現したいこと
LINEからのメッセージをトリガにして、LEDを点灯させるプログラムに挑戦しています。

発生している問題・エラーメッセージ
goで作成したプログラムを、デプロイした後、通信エラーが発生して困っています。
heroku logs --tailで取得したエラーの内容は次の通りです。
"crashed"が発生しています。

html

12019-02-27T12:19:34.034460+00:00 heroku[web.1]: C:\Users\nagata\go\src\applinane>heroku logs --tail 22019-02-27T12:11:48.715153+00:00 app[api]: Enable Logplex by user xxx@yyy 32019-02-27T12:11:48.467341+00:00 app[api]: Release v1 created by user xxx@yyy 42019-02-27T12:11:48.467341+00:00 app[api]: Initial release by user xxx@yyy 52019-02-27T12:11:48.715153+00:00 app[api]: Release v2 created by user xxx@yyy 62019-02-27T12:12:02.405260+00:00 app[api]: Release v3 created by user xxx@yyy 72019-02-27T12:12:02.405260+00:00 app[api]: Set CHANNEL_SECRET config vars by user xxx@yyy 82019-02-27T12:12:18.790510+00:00 app[api]: Release v4 created by user xxx@yyy 92019-02-27T12:12:18.790510+00:00 app[api]: Set CHANNEL_TOKEN config vars by user xxx@yyy 102019-02-27T12:12:40.449883+00:00 app[api]: @ref:cloudmqtt-concave-93011 completed provisioning, setting CLOUDMQTT_APIKEY, CLOUDMQTT_URL. by user xxx@yyy 112019-02-27T12:12:40.433307+00:00 app[api]: Attach CLOUDMQTT (@ref:cloudmqtt-concave-93011) by user xxx@yyy 122019-02-27T12:12:40.433307+00:00 app[api]: Running release v5 commands by user xxx@yyy 132019-02-27T12:12:40.449883+00:00 app[api]: Release v6 created by user xxx@yyy 142019-02-27T12:16:47.670797+00:00 app[api]: Set CLOUDMQTT_URL config vars by user xxx@yyy 152019-02-27T12:16:47.670797+00:00 app[api]: Release v7 created by user xxx@yyy 162019-02-27T12:16:55.988884+00:00 app[api]: Set CLOUDMQTT_URL config vars by user xxx@yyy 172019-02-27T12:16:55.988884+00:00 app[api]: Release v8 created by user xxx@yyy 182019-02-27T12:19:14.000000+00:00 app[api]: Build started by user xxx@yyy 192019-02-27T12:19:28.771183+00:00 heroku[web.1]: Starting process with command `applinane` 202019-02-27T12:19:30.970012+00:00 heroku[web.1]: State changed from starting to crashed 212019-02-27T12:19:30.982047+00:00 heroku[web.1]: State changed from crashed to starting 222019-02-27T12:19:30.949762+00:00 heroku[web.1]: Process exited with status 1 232019-02-27T12:19:30.873884+00:00 app[web.1]: 2019/02/27 12:19:30 missing channel secret 242019-02-27T12:19:31.600270+00:00 heroku[web.1]: Starting process with command `applinane` 252019-02-27T12:19:28.004732+00:00 app[api]: Deploy 0da44f23 by user xxx@yyy 262019-02-27T12:19:28.004732+00:00 app[api]: Release v9 created by user xxx@yyy 272019-02-27T12:19:28.021813+00:00 app[api]: Scaled to web@1:Free by user xxx@yyy 282019-02-27T12:19:34.034460+00:00 heroku[web.1]: State changed from starting to crashed 292019-02-27T12:19:33.958522+00:00 app[web.1]: 2019/02/27 12:19:33 missing channel secret 302019-02-27T12:19:34.020119+00:00 heroku[web.1]: Process exited with status 1 312019-02-27T12:19:47.000000+00:00 app[api]: Build succeeded 322019-02-27T12:21:45.611915+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/callback" host=applinane.herokuapp.com request_id=6a3f6 33501-52a1-4aef-831a-7dfe9231cfde fwd="203.104.146.155" dyno= connect= service= status=503 bytes= protocol=https 342019-02-27T12:19:33.958522+00:00 app[web.1]: 2019/02/27 12:19:33 missing channel secret

問題が発生するまでの流れ・手順
デプロイが完了するまでの手順を記載します。
通信ログからもデプロイが完了していると考えているので、"crashed"の原因は、goプログラムの内容にあると考えました。

html

1$ GoPath>cd src 2$ mkdir appli 3$ cd appli 4$ echo web: appli > Procfile 5$ git init 6$ git add . 7$ git commit -m "first commit" 8 9$ heroku login 10$ heroku create appli -b https://github.com/heroku/heroku-buildpack-go.git 11$ heroku config:set --app appli CHANNEL_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 12$ heroku config:set --app appli CHANNEL_TOKEN="yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" 13$ heroku addons:add --app appli cloudmqtt 14$ heroku config:set --app appli CLOUDMQTT_URL=" xxxxxxx@m16.cloudmqtt.com:25412" 15//SSLポートに変更しています。 16 17$ godep save 18& godep go install 19$ git add . 20$ git commit -m "second commit" 21$ git push heroku master

ソースコード
次のサイトを参照しながら、goで記述しています。
参照先: https://www.cloudmqtt.com/docs-go.html

ClientOptionを設定する部分の記述の仕方が分かりません。
herokuで設定した環境変数を設定しなければならないと思っていますが、↓のコードにどのように反映させればよいのかが分かりません。初歩的な質問かもしれませんが、ここの記述の例を示していただけると助かります。

イメージ説明

html

1func createClientOptions(clientId string, uri *url.URL) *mqtt.ClientOptions { 2 opts := mqtt.NewClientOptions() 3 opts.AddBroker(fmt.Sprintf("tcp://%s", uri.Host)) 4 opts.SetUsername(uri.User.Username()) 5 password, _ := uri.User.Password() 6 opts.SetPassword(password) 7 opts.SetClientID(clientId) 8 return opts 9}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

crashの原因は、goプログラムの作成~Herokuへのデプロイの手順によるものでした。
別の方法でデプロイまで行った結果、crashが無くなることを確認できました。

投稿2019/03/13 02:30

raspypy

総合スコア247

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問