Node.JS で悪天候のリアルタイム警報システムを構築する

Node.JS で悪天候のリアルタイム警報システムを構築する

序文:

ここ数日、テレビをつけても、短い動画を見ても、河南省鄭州市が予想外の暴風雨に見舞われたことが分かる。特に、地下鉄の駅が洪水で逆流し、閉じ込められた乗客の状況は想像を絶するものだった。死を免れた目撃者たちの投稿をいくつか聞くと、突然の災害とそれに対処する能力のなさに直面した彼らがいかに無力で苛立ちを覚えたかが想像できる。

私たちが拠点を置く鄭州ハイテク産業開発区でも断水と停電が発生しています。この記事を書いている時点では、ラジオとテレビの帯域はまだ信号が回復しておらず、オフィスの同僚は基本的にまだホットスポットに接続して仕事をしています。

この記事では、実用的な観点から始め、NodeJS と、データを集約して完全なリアルタイム気象警報プロジェクト システムを作成するサードパーティの無料インターフェースを使用します。この記事は特に高度なテクノロジー スタックを使用していません。その目的は議論を刺激することです。

ステップ1: 無料の天気予報インターフェースを見つける

インターネット上には気象情報を取得するための無料APIインターフェースが多数存在します。ここで使用しているのは大手メーカーから比較的安定して提供されているデータを集約するものです。

アプリケーションアドレス: https://www.juhe.cn/docs/api/id/73

申請が成功すると、パーソナル センターでリクエスト キーが生成され、インターフェイスの送信時に使用されます。

授業間の10分を利用して、悪天候に対するリアルタイム警報システムを構築する

ステップ2: 天気予報インターフェースを使用してプログラムコードを生成する

集約データの使用手順に従い、インターフェース デバッグ ツールを使用してインターフェースをデバッグできます。ここでは、ApiPost テストを使用します。

授業間の10分を利用して、悪天候に対するリアルタイム警報システムを構築する

リクエストが成功した後の json 形式は次のようになります。

{
    "reason": "クエリが成功しました!",
    "結果": {
        "都市": "鄭州",
        "リアルタイム": {
            "温度": "24",
            「湿度」: 「100」、
            "info": "小雨",
            "幅": "07",
            "direct": "北東の風",
            "パワー": "レベル2",
            "アキ": "32"
        },
        "未来": [
            {
                「日付」: 「2021-07-23」、
                "温度": "23/28℃",
                「天気」:「小雨が曇りに変わる」
                "幅": {
                    "日": "07",
                    「夜」:「02」
                },
                「direct」:「東風が北風に変わる」
            },
            {
                「日付」: 「2021-07-24」、
                "温度": "24/31℃",
                「天気」:「小雨が曇りに変わる」
                "幅": {
                    "日": "07",
                    「夜」:「01」
                },
                「direct」:「北東の風が東の風に変わる」
            },
            {
                「日付」: 「2021-07-25」、
                "温度": "23/31℃",
                「天気」:「曇り」
                "幅": {
                    "日": "01",
                    「夜」:「01」
                },
                「direct」:「東風が南東風に変わる」
            },
            {
                「日付」: 「2021-07-26」、
                "温度": "24/31℃",
                「天気」:「小雨」、
                "幅": {
                    "日": "07",
                    「夜」:「07」
                },
                「直進」:「北東の風」
            },
            {
                「日付」: 「2021-07-27」、
                "温度": "23/31℃",
                「天気」:「小雨が晴れに変わる」
                "幅": {
                    "日": "07",
                    「夜」:「00」
                },
                「直行」:「北東風が南風に変わる」
            }
        ]
    },
    「エラーコード」: 0
}

この時点で、今後 7 日間の天気データを取得しました。

ステップ3: nodemailerを使用してNodeJSでメールを送信する

nodeJS の nodemailer は電子メールの送信に使用され、非常に便利です。次のコマンドを使用してインストールできます。

npm インストール nodemailer

以下は、メールを送信するために作成した関数です。メール アカウントと認証コードは、対応するメール サービス プロバイダーから取得できます。

/**
 * nodeJS メールを送信 *
 * */
関数sendEmail(テキスト){
    nodemailer を require('nodemailer'); とします。
 
    トランスポーターをnodemailer.createTransport({
        service:"126", //メール secure:true, //セキュア送信モード auth:{
            user:"be***[email protected]", // 送信者のメール アドレス pass:"MLQ***PYU" // メール サービス プロバイダーから取得した認証コード。126 メール アドレスを取得するためのアドレスは次のとおりです: https://help.mail.163.com/faq.do?m=list&categoryID=197
        }
    })
 
    mailOptions = {を設定します
        from:"be***[email protected]", // 送信者のメールアドレス。上記の送信者のメールアドレスと同じにしてください to:"[email protected]", // 受信者のメールアドレス。リアルタイムで天気予報を受信するためのメールアドレスです subject:"天気リアルタイム監視システム", // メールの件名 (タイトル)
        text:text // メールエッセイ}
 
    トランスポーター.sendMail(mailOptions,(err,data) => {
        もしエラーが起きたら
            コンソールログ(エラー);
            res.json({status:400,msg:"送信失敗....."})
        }それ以外{
            コンソールにログ出力します。
            res.json({status:200,msg:"メールは正常に送信されました..."})
        }
    })
}
 
// メール送信テスト sendEmail('雨が降っています') 

授業間の10分を利用して、悪天候に対するリアルタイム警報システムを構築する

上記のコードを含む新しい weather.js を作成します。

ノード天気.js

メールの送信をテストできます。

授業間の10分を利用して、悪天候に対するリアルタイム警報システムを構築する

送信に成功しました。メールの受信に成功しました。

ステップ4: nodeJSで天気を定期的に取得し、指定されたメールボックスに送信する

ApiPost の右上隅にある [NodeJS (リクエスト) コードの生成] をクリックすると、NodeJS で集約された天気インターフェースを要求するためのプログラム コードが生成されます。setInterval組み合わせることで、上記の要件を実現できます。

授業間の10分を利用して、悪天候に対するリアルタイム警報システムを構築する

完全なコードは次のとおりです。

/**
 * nodeJS メールを送信 * 
 * */
関数sendEmail(テキスト){
    nodemailer を require('nodemailer'); とします。
 
    トランスポーターをnodemailer.createTransport({
        service:"126", //メール secure:true, //セキュア送信モード auth:{
            user:"be***[email protected]", // 送信者のメール アドレス pass:"MLQ***PYU" // メール サービス プロバイダーから取得した認証コード。126 メール アドレスを取得するためのアドレスは次のとおりです: https://help.mail.163.com/faq.do?m=list&categoryID=197
        }
    })
 
    mailOptions = {を設定します
        from:"be***[email protected]", // 送信者のメールアドレス。上記の送信者のメールアドレスと同じにしてください to:"[email protected]", // 受信者のメールアドレス。リアルタイムで天気予報を受信するためのメールアドレスです subject:"天気リアルタイム監視システム", // メールの件名 (タイトル)
        text:text // メールエッセイ}
    トランスポーター.sendMail(mailOptions,(err,data) => {
        もしエラーが起きたら
            コンソールログ(エラー);
            res.json({status:400,msg:"送信失敗....."})
        }それ以外{
            コンソールにログ出力します。
            res.json({status:200,msg:"メールは正常に送信されました..."})
        }
    })
}
 
setInterval(関数(){
    var リクエスト = require('リクエスト');
 
    var ヘッダー = {
        'User-Agent': 'Apipost クライアント ランタイム/+https://www.apipost.cn/'
    };
 
    var オプション = {
        URL: 'http://apis.juhe.cn/simpleWeather/query?city=%E9%83%91%E5%B7%9E&key=8763efe2a90b025c03e03fef95621cbc',
        ヘッダー: ヘッダー
    };
 
    関数コールバック(エラー、レスポンス、本文) {
        json = JSON.parse(body);
        コンソールログ(json.result)
        if (!エラー && response.statusCode == 200) {
            sendEmail('鄭州の今後の天気' + json.result.future[0].weather)
        }
    }
 
    リクエスト(オプション、コールバック);
 
}, 300000);

この時点で、システムが構築されました。実行するための小さなサーバーを見つけるだけです

ノード天気.js

このコマンドは、指定されたメールアドレスに 5 分ごとに天気情報を送信します。 もちろん、必要に応じて送信することもできます。

注記:

中国語のエンコードはリクエストで問題を引き起こす可能性があるため、都市名をエンコードするのが最適です (右クリック)。

授業間の10分を利用して、悪天候に対するリアルタイム警報システムを構築する

Node.JS を使用してリアルタイムの悪天候警報システムを構築する方法についての記事はこれで終わりです。Node.JS 悪天候リアルタイム警報に関する関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Node.js クローラーで天気と日々の挨拶を取得する方法
  • Node.js での中国の天気予報の簡単な実装

<<:  条件付きコメント形式の書き方とサンプルコード

>>:  クリックして展開し、全文を読む機能を実現する純粋なCSS

推薦する

Minio 軽量オブジェクト ストレージ サービスのインストールとブラウザの使用チュートリアル

目次導入インストール1. マウントするフォルダを作成する2. イメージをプルする3. コンテナを作成...

jsを使用してシンプルな弾幕スクリーンシステムを実装する

この記事では、弾幕効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的な...

リアクトルーティングガード(ルーティングインターセプション)の実装

React は Vue とは異なります。ルートにメタ文字を設定することでルートインターセプションを実...

docker compose デプロイメントにおけるマスタースレーブレプリケーションの実装

目次構成解析サービス構築ディレクトリ構造ファイルを作成インスタンス構成サービスを開始するテストRed...

Linux で cmake を使用して MySQL をコンパイルおよびインストールするための詳細なチュートリアル

1. cmakeをインストールする1. cmakeの圧縮パッケージを解凍する [root@mysql...

MySQL挿入パフォーマンスを最適化する方法の例

MySQL パフォーマンスの最適化MySQL パフォーマンスの最適化とは、リソースを合理的に配置し、...

MySQLとOracleのメタデータ抽出例分析

目次序文メタデータとは参照文書アドレスまずはMySQLについてお話しましょうOracleについて話し...

ウェブインターフェースデザインでウェブサイトのスタイルガイドを作成する方法(画像とテキスト付き)

スタイル ガイドとは何でしょうか? 簡単に言えば、ストーリーを伝える方法を説明するドキュメントです。...

Vue lazyload 画像遅延読み込み例の詳細な説明

ドキュメント: https://github.com/hilongjw/vue-lazyload 1...

JavaScriptエラーキャプチャの詳細な説明

目次1. 基本的な使い方とロジック2. 特徴3. エラーオブジェクト4. キャッチアンドスロー戦略の...

画像の下部の空白部分の問題を解決する

最近のプロジェクトに取り組んでいるとき、下の図に示すように、画像を参照すると常に下部に空白スペースが...

js のマクロタスクとマイクロタスクについての簡単な説明

目次1. JavaScriptについて2. JavaScript イベントループ3. マクロタスクと...

画像を読み込むための JavaScript キャンバス

この記事では、画像を読み込むためのJavaScriptキャンバスの具体的なコードを参考までに紹介しま...

HTMLでアンカーの位置を設定するためのいくつかの一般的な方法

HTML でアンカーの位置を設定する方法はいくつかあるので、ここで紹介します。 1. ID ポジショ...

ドメイン名、ポート、IPに基づいてnginx仮想ホストを構築する

nginxでサポートされている仮想ホストには3つの種類があります1. ドメイン名ベースの仮想ホスティ...