序文:ここ数日、テレビをつけても、短い動画を見ても、河南省鄭州市が予想外の暴風雨に見舞われたことが分かる。特に、地下鉄の駅が洪水で逆流し、閉じ込められた乗客の状況は想像を絶するものだった。死を免れた目撃者たちの投稿をいくつか聞くと、突然の災害とそれに対処する能力のなさに直面した彼らがいかに無力で苛立ちを覚えたかが想像できる。 私たちが拠点を置く鄭州ハイテク産業開発区でも断水と停電が発生しています。この記事を書いている時点では、ラジオとテレビの帯域はまだ信号が回復しておらず、オフィスの同僚は基本的にまだホットスポットに接続して仕事をしています。 この記事では、実用的な観点から始め、NodeJS と、データを集約して完全なリアルタイム気象警報プロジェクト システムを作成するサードパーティの無料インターフェースを使用します。この記事は特に高度なテクノロジー スタックを使用していません。その目的は議論を刺激することです。 ステップ1: 無料の天気予報インターフェースを見つけるインターネット上には気象情報を取得するための無料APIインターフェースが多数存在します。ここで使用しているのは大手メーカーから比較的安定して提供されているデータを集約するものです。 アプリケーションアドレス: https://www.juhe.cn/docs/api/id/73 申請が成功すると、パーソナル センターでリクエスト キーが生成され、インターフェイスの送信時に使用されます。 ステップ2: 天気予報インターフェースを使用してプログラムコードを生成する集約データの使用手順に従い、インターフェース デバッグ ツールを使用してインターフェースをデバッグできます。ここでは、ApiPost テストを使用します。 リクエストが成功した後の 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('雨が降っています') 上記のコードを含む新しい weather.js を作成します。 ノード天気.js メールの送信をテストできます。 送信に成功しました。メールの受信に成功しました。 ステップ4: nodeJSで天気を定期的に取得し、指定されたメールボックスに送信するApiPost の右上隅にある [NodeJS (リクエスト) コードの生成] をクリックすると、NodeJS で集約された天気インターフェースを要求するためのプログラム コードが生成されます。setIntervalを組み合わせることで、上記の要件を実現できます。 完全なコードは次のとおりです。 /** * 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 分ごとに天気情報を送信します。 もちろん、必要に応じて送信することもできます。 注記:中国語のエンコードはリクエストで問題を引き起こす可能性があるため、都市名をエンコードするのが最適です (右クリック)。 Node.JS を使用してリアルタイムの悪天候警報システムを構築する方法についての記事はこれで終わりです。Node.JS 悪天候リアルタイム警報に関する関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: クリックして展開し、全文を読む機能を実現する純粋なCSS
メソッドが定義されているクラスに応じて、現在のクラスへの静的参照を取得するには、self:: または...
React の経験がある人なら、コンポーネントインスタンスオブジェクトや DOM オブジェクトを取得...
このとき、overflow:auto;(コードがコンテナの境界を超えたときにスクロールボックスを表示...
この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...
CSS インポート方法 - インラインスタイルタグ属性を通じて、CSSのキーと値のペアがタグに直接書...
目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...
今日、Ubuntu 用の小さなツールを顧客に送りましたが、ユーザーはそれを受け取った後、実行できませ...
この記事では、例を使用して、MySQL トリガーの概念、原則、および使用方法を説明します。ご参考まで...
目次トリガーとは何かトリガーを作成する表は次のようになります。さらにいくつかの単語を挙げます。制限と...
背景同僚がセキュリティ プロジェクトに取り組んでおり、AWS サーバーに秘密兵器を展開する必要があり...
背景Tencent Linux クラウド ホストがあり、その上に Docker (ServiceDo...
1. まず、nginxの位置情報に関する関連知識を確認しましょう1) 位置マッチング手順: ~ #波...
序文場合によっては、第 1 正規形設計パターンに従わないビジネス テーブルに遭遇することがあります。...
コンテナの自動起動Docker は、コンテナが終了したとき、または Docker が再起動されたとき...
次に、ログ管理、ログのアーカイブ、ログのトラブルシューティング、イベントの転送と収集のためのコンピュ...