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

推薦する

PHP クラスにおける static と self の違いの簡単な分析

メソッドが定義されているクラスに応じて、現在のクラスへの静的参照を取得するには、self:: または...

ReactにおけるuseRefの具体的な使い方

React の経験がある人なら、コンポーネントインスタンスオブジェクトや DOM オブジェクトを取得...

HTML pre タグ内の自動改行

このとき、overflow:auto;(コードがコンテナの境界を超えたときにスクロールボックスを表示...

JavaScript ベースのパスワード ボックス検証情報の実装

この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...

CSS ファイルをインポートする 4 つの方法 (インライン、インライン、外部、インポート) の詳細な説明

CSS インポート方法 - インラインスタイルタグ属性を通じて、CSSのキーと値のペアがタグに直接書...

MySQLクエリ最適化プロセスを理解する

目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...

Linux bash: ./xxx: バイナリ ファイルを実行できません エラー

今日、Ubuntu 用の小さなツールを顧客に送りましたが、ユーザーはそれを受け取った後、実行できませ...

MySQLトリガーの概念、原理、使用法の詳細な説明

この記事では、例を使用して、MySQL トリガーの概念、原則、および使用方法を説明します。ご参考まで...

MySQLトリガートリガー例の詳細な説明

目次トリガーとは何かトリガーを作成する表は次のようになります。さらにいくつかの単語を挙げます。制限と...

Dockerのデフォルトネットワークセグメントの正しい変更手順

背景同僚がセキュリティ プロジェクトに取り組んでおり、AWS サーバーに秘密兵器を展開する必要があり...

Nginxを使ってサーバー内で複数コンテナの共存を実現する方法

背景Tencent Linux クラウド ホストがあり、その上に Docker (ServiceDo...

nginx の場所に複数の Proxy_pass メソッドがある

1. まず、nginxの位置情報に関する関連知識を確認しましょう1) 位置マッチング手順: ~ #波...

MySQLでカンマ区切り値の列を列に変換する方法

序文場合によっては、第 1 正規形設計パターンに従わないビジネス テーブルに遭遇することがあります。...

Dockerコンテナのセルフスタートを実装する方法

コンテナの自動起動Docker は、コンテナが終了したとき、または Docker が再起動されたとき...

Windows Server 2008 のサーバー パフォーマンス監視に関するチュートリアル

次に、ログ管理、ログのアーカイブ、ログのトラブルシューティング、イベントの転送と収集のためのコンピュ...