このDiscord Botは、FHDW Weatherstationからの気象データを提供します。ボットは、チャンネルを購読および登録解除して、天気の更新を受け取り、現在サブスクライブされているチャネルをリストし、すべてのチャネルを一度に登録解除できます。
このリポジトリの目的は、MQTTプロトコルを使用してThings Stackのエンドデバイスからデータを不和ボットに統合する方法の包括的な例を提供することです。そうすることで、Lorawanテクノロジーと人気のある通信プラットフォームであるDiscordを使用して、IoTデバイス間のギャップを埋めます。これにより、ユーザーとコミュニティは、天気データなどのIoTデバイスから不一致チャネルで直接リアルタイムの更新を受信することができます。
このデモンストレーションを通じて、リポジトリは、開発者と愛好家にIoTデータをDiscordと統合する可能性を探求できるようにしようとしています。このプロジェクトは、革新的な方法でロラワンデータを活用する、より洗練されたアプリケーションを作成するための基盤として機能します。最終的に、このリポジトリは、IoTデータを利用して不一致のボットの機能を強化するための新しい創造的な方法を見つけるためにコミュニティに鼓舞することを目的としています。
Things StackからDiscordボットへのデータの統合は、IoTデバイス向けに設計された軽量で効率的なメッセージングプロトコルであるMQTTプロトコルを使用して達成されました。 MQTTは、エンドデバイスとDiscordボット間の安全で信頼できるデータ転送を可能にします。 Sthing Stackの適切なトピックを購読することにより、DiscordボットはIoTデバイスによって送信されたデータを受信できます。
必要なコードは、 mqttHandler.jsで補完されます。統合は、これらの手順に従うことによって達成されました。
index.jsでmqttHandler.jsファイルからcreateMqttClient関数をインポートします。config.jsonファイルにパスワードなどの必要な資格情報を提供して、MQTT設定を構成します。index.jsファイルでcreateMqttClient()関数を呼び出し、受信したメッセージを処理するために必要な資格情報とコールバック関数を提供して、MQTTクライアントを作成します。createMqttClient()関数は、物事に接続して指定されたトピックにサブスクライブすることにより、MQTTクライアントをセットアップします。index.jsファイルで定義されているコールバック関数:createWeatherEmbed()関数を呼び出すことにより、解析されたデータを使用して不一致埋め込みを作成します。dataStorageモジュールに保存されているチャネルIDを介して反復することにより、指定されたチャネルに埋め込まれた不一致を送信します。dataStorageモジュールからチャネルIDを削除します。プロセスを理解することにより、開発者はIoTデバイスを含む将来のプロジェクトのこの知識に基づいて構築できます。統合は、IoTデバイスをさまざまなプラットフォームに接続し、データの変換と処理、カスタムアラートまたは通知の作成など、さまざまなアプリケーションのテンプレートとして機能します。この例では、MQTTをIoTデバイスと他のアプリケーションとの間のギャップを埋めるための強力なツールとして使用して、モノのインターネット向けのより革新的で統合されたソリューションを促進する方法を示しています。
Discord Developer Portalにアクセスして、Discordアカウントにサインインします。
[新しいアプリケーション]ボタンをクリックし、アプリケーションに名前を付けて、[作成]をクリックします。
アプリケーションの設定で、[ボット]タブをクリックし、[ボットの追加]ボタンをクリックして、アプリケーション用のボットを作成します。 「はい、やる!」をクリックして確認してください。
[ボット]タブでは、「メッセージコンテンツの意図」がtrueに設定されていることを確認してください。
「トークン」セクションの下で、[コピー]をクリックしてボットトークンをコピーします。ボットを不和で認証するために使用されるため、このトークンを安全に保ちます。
(オプション)必要に応じて、ボットの名前、プロフィール写真、その他の設定をカスタマイズします。開ける
git clone https://github.com/yourusername/FHDW-Weatherstation-Discord-Bot.git... T heThingsNetwork-DiscordBot-FHDW-WeatherData B ot > npm install You might have to navigate to the Bot directory before running `npm install`.
To navigate use `cd folder_name`
{
"token" : " your_discord_bot_token " ,
"clientId" : " your_discord_bot_client_id " ,
"guildId" : " your_discord_server_guild_id " ,
"ttnAppUser" : " your_ttn_app_user " ,
"ttnAppPw" : " your_ttn_app_pw " ,
"ttnAdress" : " your_ttn_address " ,
"ttnAppDevice" : " your_ttn_app_device "
}例:
{
"token" : " AAA0000aaa000AAAA000AA.AAA00AAA.aaa-AaaaaAA0000AAAAAAAAAAaaaAAAA00AAAAAA " ,
"clientId" : " 1234567891234567891 " ,
"guildId" : " 1234567891234567891 " ,
"ttnAppUser" : " hello-world-weather " ,
"ttnAppPw" : " NXYXX.0A0AAAAAAAA0AAAAAAA4AAA00AAAMAAAAAAAAA.AA0AAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA " ,
"ttnAdress" : " mqtts://eu1.cloud.thethings.network:8883 " ,
"ttnAppDevice" : " eui-00a0000aa000a000 "
}https://discord.com/api/oauth2/authorize?client_id=your_discord_bot_client_id&permissions=8&scope=bot
例fhdw-weather-bot:https://discord.com/api/oauth2/authorize?client_id=10885555644333867069&permissions = 8&scope=bot
... T heThingsNetwork-DiscordBot-FHDW-WeatherData B ot > node deploy-commands.js (You might have to restart your Discord-Client afterwards)
3.1。ボットを起動するには、実行してください。
... T heThingsNetwork-DiscordBot-FHDW-WeatherData B ot > npm start3.2。 Nodemonで開発モードでボットを実行するには、実行してください。
... T heThingsNetwork-DiscordBot-FHDW-WeatherData B ot > npm run dev/subscribe [channel] :fhdw-weatherstationにチャネルを購読します。チャネルが提供されていない場合、現在のチャネルがサブスクライブされます。/unsubscribe [channel] :fhdw-weatherstationからチャネルを登録解除します。チャネルが提供されていない場合、現在のチャネルは登録されていません。/list :FHDW-WeatherStationに現在登録されているすべてのチャネルをリストします。/unsubscribe_all :fhdw-weatherstationからすべてのチャネルを登録する。 ホスティングプラットフォームにボットを展開するには、node.jsアプリケーションのプラットフォーム固有の指示に従ってください。 deploymentパッケージに資格情報を含むconfig.jsonファイルを必ず含めてください。
config.jsonファイルが展開に含まれており、ボットトークンやその他の機密情報が安全に保たれていることを確認してください。ホスティングプラットフォームが環境変数をサポートしている場合は、Config.jsonファイルに含めるのではなく、環境変数として資格情報を保存することをお勧めします。
たとえば、これらの手順に従うことで、ボットをHerokuに展開できます。
HerokuにDiscord Botを展開するためのより詳細な指示については、このガイドをご覧ください。
このプロジェクトは、MITライセンスの下でライセンスされています。