序文:ここ数日、テレビをつけても、短い動画を見ても、河南省鄭州市が予想外の暴風雨に見舞われたことが分かる。特に、地下鉄の駅が洪水で逆流し、閉じ込められた乗客の状況は想像を絶するものだった。死を免れた目撃者たちの投稿をいくつか聞くと、突然の災害とそれに対処する能力のなさに直面した彼らがいかに無力で苛立ちを覚えたかが想像できる。 私たちが拠点を置く鄭州ハイテク産業開発区でも断水と停電が発生しています。この記事を書いている時点では、ラジオとテレビの帯域はまだ信号が回復しておらず、オフィスの同僚は基本的にまだホットスポットに接続して仕事をしています。 この記事では、実用的な観点から始め、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
目次1. はじめに1. コンポーネントデータ2. コンポーネントページのレイアウト1. ロゴエリアの...
//MySQL ステートメント SELECT * FROM `MyTable` WHERE `id...
この記事では、MySQL 8.0.12解凍版のインストールチュートリアルを参考までに紹介します。具体...
この記事では、シャトルボックス機能を実現するためのjQueryの具体的なコードを参考までに紹介します...
この記事では主に、オブジェクト内のフィールドを削除するための js の実装を紹介し、次のように共有し...
概要: この記事では、Avro データをシリアル化して生成し、FlinkSQL を使用して解析する方...
コードをコピーコードは次のとおりです。 <フレームセット cols="*,1280,...
html <div> 要素 <button type="button&q...
ReadOnly 属性を持つ TextBox は、クライアント上で次のマークアップとして表示されます...
html、アドレス、引用ブロック、本文、dd、div、 dl、dt、フィールドセット、フォーム、フレ...
目次1. 関連するbinlog設定2. binlogに関する詳細設定2.1 バイナリログモードの変更...
基礎トランザクションは、SQL ステートメントのグループに対するアトミック操作です。つまり、グループ...
目次addEventListener が必要な理由は何ですか? addEventListener を...
innobackupex を使用してバックアップする際に MySQL がサーバーに接続できない場合は...
最近、React Hooks を zarm コンポーネント ライブラリと組み合わせて使用し、js...