Vorwort:Egal, ob Sie den Fernseher einschalten oder kurze Videos ansehen, Sie werden sehen, dass Zhengzhou in der Provinz Henan in den letzten Tagen von einem unvorhersehbaren Regensturm heimgesucht wurde. Insbesondere hätte niemand gedacht, dass die U-Bahn-Station durch Überschwemmungen überflutet würde, und die Situation der eingeschlossenen Passagiere war unvorstellbar. Nachdem wir einige Berichte von Augenzeugen gelesen haben, die berichten, wie sie dem Tod nur knapp entronnen sind, können wir uns vorstellen, wie hilflos und frustriert sie angesichts der plötzlichen Katastrophe und ihrer Unfähigkeit, damit umzugehen, waren. Auch in der Hightech-Zone von Zhengzhou, in der wir uns befinden, kam es zu Wasser- und Stromausfällen. Zum Zeitpunkt der Abfassung dieses Artikels war das Signal für Radio und Fernsehen noch nicht wiederhergestellt und unsere Bürokollegen mussten sich zum Arbeiten grundsätzlich noch immer mit Hotspots verbinden. Dieser Artikel beginnt aus einer praktischen Perspektive und verwendet NodeJS und eine kostenlose Schnittstelle eines Drittanbieters, die Daten aggregiert, um ein vollständiges Echtzeit-Wetterwarnprojektsystem zu erstellen. Dieser Artikel verwendet keinen besonders fortschrittlichen Technologie-Stack, sein Zweck besteht darin, die Diskussion anzuregen. Schritt 1: Finden Sie die kostenlose Wettervorhersage-SchnittstelleEs gibt viele kostenlose API-Schnittstellen zum Abrufen von Wetterbedingungen im Internet. Die von mir hier verwendete ist diejenige, die Daten aggregiert, die relativ stabil von großen Herstellern stammen. Bewerbungsadresse: https://www.juhe.cn/docs/api/id/73 Nach erfolgreicher Antragstellung wird im Personal Center ein Anforderungsschlüssel generiert, welcher beim Absenden der Schnittstelle verwendet wird. Schritt 2: Wettervorhersage-Schnittstelle nutzen und Programmcode generierenGemäß den Anweisungen zur Verwendung aggregierter Daten können wir das Schnittstellen-Debugging-Tool verwenden, um die Schnittstelle zu debuggen. Hier verwenden wir ApiPost-Tests. Sie können sehen, dass das JSON-Format nach erfolgreicher Anforderung wie folgt aussieht: { "reason": "Abfrage erfolgreich!", "Ergebnis": { "Stadt": "Zhengzhou", "Echtzeit": { "Temperatur": "24", "Luftfeuchtigkeit": "100", "info": "Leichter Regen", "wid": "07", "direct": "Nordostwind", "power": "Stufe 2", "aqi": "32" }, "Zukunft": [ { "Datum": "23.07.2021", "Temperatur": "23/28℃", "Wetter": "Leichter Regen, wechselnd bewölkt", "wid": { "Tag": "07", "Nacht": "02" }, "direkt": "Ostwind wird zu Nordwind" }, { "Datum": "24.07.2021", "Temperatur": "24/31℃", "Wetter": "Leichter Regen, wechselnd bewölkt", "wid": { "Tag": "07", "Nacht": "01" }, "direkt": "Nordostwind dreht auf Ostwind" }, { "Datum": "25.07.2021", "Temperatur": "23/31℃", "Wetter": "Bewölkt", "wid": { "Tag": "01", "Nacht": "01" }, "direkt": "Ostwind dreht auf Südostwind" }, { "Datum": "26.07.2021", "Temperatur": "24/31℃", "Wetter": "leichter Regen", "wid": { "Tag": "07", "Nacht": "07" }, "direkt": "Nordostwind" }, { "Datum": "27.07.2021", "Temperatur": "23/31℃", "Wetter": "Leichter Regen, der sich aufklart", "wid": { "Tag": "07", "Nacht": "00" }, "direkt": "Nordostwind dreht auf Südwind" } ] }, "Fehlercode": 0 } An dieser Stelle haben wir die Wetterdaten für die nächsten 7 Tage erhalten. Schritt 3: Senden Sie E-Mails in NodeJS mit NodemailerDer Nodemailer von nodeJS wird zum Senden von E-Mails verwendet und ist sehr nützlich. Sie können es mit dem folgenden Befehl installieren: npm installiere Nodemailer Nachfolgend finden Sie eine Funktion, die ich zum Senden von E-Mails geschrieben habe. Das E-Mail-Konto und den Autorisierungscode erhalten Sie beim entsprechenden E-Mail-Dienstanbieter. /** * nodeJS E-Mail senden * * */ Funktion sendEmail(text){ nodemailer = require('nodemailer'); let transporter = nodemailer.createTransport({ service:"126", //E-Mail secure:true, //Sicherer Sendemodus auth:{ user:"be***[email protected]", // E-Mail-Adresse des Absenders pass:"MLQ***PYU" // Autorisierungscode, der vom E-Mail-Dienstanbieter bezogen wird. Die Adresse zum Abrufen der 126-E-Mail-Adresse lautet: https://help.mail.163.com/faq.do?m=list&categoryID=197 } }) let mailOptions = { Von: „be***[email protected]“, // E-Mail-Adresse des Absenders. Belassen Sie sie einfach bei der oben angegebenen E-Mail-Adresse des Absenders. An: „[email protected]“, // E-Mail-Adresse des Empfängers. Dies ist die E-Mail-Adresse für den Empfang von Wettervorhersagen in Echtzeit. Betreff: „Wetter-Echtzeit-Überwachungssystem“, // Betreff (Titel) der E-Mail text:text // Aufsatz per E-Mail senden} transporter.sendMail(mailOptions,(err,data) => { wenn(fehler){ console.log(fehler); res.json({status:400,msg:"Senden fehlgeschlagen...."}) }anders{ konsole.log(Daten); res.json({status:200,msg:"Mail erfolgreich gesendet..."}) } }) } // Testen Sie das Senden einer E-Mail sendEmail('Es regnet') Erstellen Sie ein neues weather.js mit dem obigen Code darin. Knotenwetter.js Sie können das Versenden von E-Mails testen. Erfolgreich gesendet, E-Mail erfolgreich empfangen. Schritt 4: Holen Sie sich regelmäßig das Wetter in nodeJS und senden Sie es an das angegebene PostfachKlicken Sie oben rechts in ApiPost auf „NodeJS-Code (Anforderung) generieren“, um den Programmcode zum Anfordern der aggregierten Wetterschnittstelle in nodejs zu generieren. Wir können die oben genannten Anforderungen erfüllen, indem wir setInterval kombinieren. Der vollständige Code lautet wie folgt: /** * nodeJS E-Mail senden * * */ Funktion sendEmail(text){ nodemailer = require('nodemailer'); let transporter = nodemailer.createTransport({ service:"126", //E-Mail secure:true, //Sicherer Sendemodus auth:{ user:"be***[email protected]", // E-Mail-Adresse des Absenders pass:"MLQ***PYU" // Autorisierungscode, der vom E-Mail-Dienstanbieter bezogen wird. Die Adresse zum Abrufen der 126-E-Mail-Adresse lautet: https://help.mail.163.com/faq.do?m=list&categoryID=197 } }) let mailOptions = { Von: „be***[email protected]“, // E-Mail-Adresse des Absenders. Belassen Sie sie einfach bei der oben angegebenen E-Mail-Adresse des Absenders. An: „[email protected]“, // E-Mail-Adresse des Empfängers. Dies ist die E-Mail-Adresse für den Empfang von Wettervorhersagen in Echtzeit. Betreff: „Wetter-Echtzeit-Überwachungssystem“, // Betreff (Titel) der E-Mail text:text // Aufsatz per E-Mail senden} transporter.sendMail(mailOptions,(err,data) => { wenn(fehler){ console.log(fehler); res.json({status:400,msg:"Senden fehlgeschlagen...."}) }anders{ konsole.log(Daten); res.json({status:200,msg:"Mail erfolgreich gesendet..."}) } }) } setzeIntervall(Funktion(){ var Anfrage = erforderlich('Anfrage'); var Header = { „Benutzer-Agent“: „Apipost-Client-Laufzeit/+https://www.apipost.cn/“ }; var Optionen = { URL: „http://apis.juhe.cn/simpleWeather/query?city=%E9%83%91%E5%B7%9E&key=8763efe2a90b025c03e03fef95621cbc“, Überschriften: Überschriften }; Funktion Rückruf (Fehler, Antwort, Text) { Lassen Sie json = JSON.parse(body); konsole.log(json.ergebnis) wenn (!Fehler && response.statusCode == 200) { sendEmail('Zhengzhou zukünftiges Wetter' + json.result.future[0].weather) } } Anfrage (Optionen, Rückruf); }, 300000); Zu diesem Zeitpunkt ist das System bereits erstellt. Wir müssen nur einen kleinen Server finden, um auszuführen Knotenwetter.js Der Befehl sendet alle 5 Minuten die Wetterinformationen an die angegebene E-Mail-Adresse. Natürlich können Sie diese auch nach Bedarf versenden. Notiz:Da es aufgrund der chinesischen Kodierung zu Problemen bei der Abfrage kommen kann, empfiehlt es sich, den Städtenamen mitzukodieren (Rechtsklick). Damit ist dieser Artikel über die Verwendung von Node.JS zum Erstellen eines Echtzeit-Unwetterwarnsystems abgeschlossen. Weitere relevante Inhalte zu Echtzeit-Unwetterwarnungen mit Node.JS finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Reines CSS zum Erreichen der Funktion „Klicken zum Erweitern und Lesen des Volltexts“
1. Installieren Sie Python 3 1. Installieren Sie ...
Derzeit gibt es drei Möglichkeiten, die Mitte ein...
Holen Sie sich das aktuelle Datum + die aktuelle ...
Einführung in DNMP DNMP (Docker + Nginx + MySQL +...
Inhaltsverzeichnis Vorwort 1. Ereignisse und Zwis...
Geschäftsszenario: Abfragen von Tabellen in versc...
Über Semantik Die Semantik ist die Lehre von der ...
Vorwort Manchmal muss die Höhe eines Box-Containe...
Ich werde keine weitere Zeit mit Unsinnsgerede ve...
Inhaltsverzeichnis 1. Was ist bidirektionale Date...
Der Unterschied: 1. InnoDB unterstützt Transaktio...
Inhaltsverzeichnis Der erste Der Zweite Native Js...
Inhaltsverzeichnis Primärschlüsselindex Erstellen...
1. Docker auf dem Server installieren yum install...
Inhaltsverzeichnis Vorwort 1. Was ist ein Abschlu...