Erstellen Sie mit Node.JS ein Echtzeit-Warnsystem für Unwetter

Erstellen Sie mit Node.JS ein Echtzeit-Warnsystem für Unwetter

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-Schnittstelle

Es 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.

Nutzen Sie die 10 Minuten zwischen den Unterrichtsstunden, um ein Echtzeit-Warnsystem für Unwetter zu erstellen

Schritt 2: Wettervorhersage-Schnittstelle nutzen und Programmcode generieren

Gemäß den Anweisungen zur Verwendung aggregierter Daten können wir das Schnittstellen-Debugging-Tool verwenden, um die Schnittstelle zu debuggen. Hier verwenden wir ApiPost-Tests.

Nutzen Sie die 10 Minuten zwischen den Unterrichtsstunden, um ein Echtzeit-Warnsystem für Unwetter zu erstellen

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 Nodemailer

Der 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') 

Nutzen Sie die 10 Minuten zwischen den Unterrichtsstunden, um ein Echtzeit-Warnsystem für Unwetter zu erstellen

Erstellen Sie ein neues weather.js mit dem obigen Code darin.

Knotenwetter.js

Sie können das Versenden von E-Mails testen.

Nutzen Sie die 10 Minuten zwischen den Unterrichtsstunden, um ein Echtzeit-Warnsystem für Unwetter zu erstellen

Erfolgreich gesendet, E-Mail erfolgreich empfangen.

Schritt 4: Holen Sie sich regelmäßig das Wetter in nodeJS und senden Sie es an das angegebene Postfach

Klicken 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.

Nutzen Sie die 10 Minuten zwischen den Unterrichtsstunden, um ein Echtzeit-Warnsystem für Unwetter zu erstellen

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).

Nutzen Sie die 10 Minuten zwischen den Unterrichtsstunden, um ein Echtzeit-Warnsystem für Unwetter zu erstellen

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:
  • So erhalten Sie Wetterdaten und tägliche Grüße mit dem Node.js-Crawler
  • Einfache Implementierung der Wettervorhersage für China in node.js

<<:  MySQL-Beispiel zur Erläuterung von Einzelzeilenfunktionen und Zeichenmathematik, Datumsprozesssteuerung

>>:  Reines CSS zum Erreichen der Funktion „Klicken zum Erweitern und Lesen des Volltexts“

Artikel empfehlen

Tutorial zu HTML-Tabellen-Tags (13): Regeln für interne Rahmenstilattribute

Mit REGELN kann die Art der inneren Rahmen der Ta...

JS berechnet die Gewinnwahrscheinlichkeit basierend auf dem Preisgewicht

Inhaltsverzeichnis 1. Beispielszenario 1.1. Legen...

MySQL-Abfragedaten stündlich, geben Sie 0 ein, wenn keine Daten vorhanden sind

Nachfragehintergrund Als statistische Schnittstel...

Zusammenfassung der Verwendung von clipboard.js

Inhaltsverzeichnis (1) Einleitung: (2) Zum Kopier...

Informationen zur Installation von Homebrew auf dem Mac

Vor kurzem hat Xiao Ming einen neuen Mac gekauft ...

Implementierung eines laufenden Springboot-Projekts mit Docker

Einführung: Die Konfiguration von Docker, auf dem...

Was sind die Unterschiede zwischen xHTML- und HTML-Tags?

Alle Tags müssen klein geschrieben sein In XHTML m...

Detaillierte Erklärung zur Verwendung von Router-View-Komponenten in Vue

Wenn Sie ein Vue-Projekt entwickeln, müssen Sie h...