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

Detaillierte Erklärung des Unterschieds zwischen in und exists in MySQL

1. Bereiten Sie sich im Voraus vor Zu Ihrer Beque...

Beispiel für die Implementierung der Graphql-Schnittstelle in Vue

Hinweis: In diesem Artikel geht es um die grundle...

Vue-Direktiven v-html und v-text

Inhaltsverzeichnis 1. Anweisungen zum Rendern von...

Implementierung der MySQL GRANT-Benutzerautorisierung

Bei der Autorisierung geht es darum, einem Benutz...

Detaillierte Erläuterung der asynchronen Axios-Kommunikation in Vue

1. Zuerst erstellen wir eine JSON-Datei zur inter...

Praxis der mehrschichtigen verschachtelten Anzeige von Elementtabellen

Es wird eine Liste mit mehreren Bestellungen benö...

jQuery-Plugin zur Implementierung des Suchverlaufs

Jeden Tag ein jQuery-Plugin – um einen Suchverlau...

Detailliertes Tutorial zur schnellen Installation von Zookeeper in Docker

Docker: Zookeeper schnell installieren Ich habe Z...

Das Vue-CLI-Framework implementiert eine Timer-Anwendung

Technischer Hintergrund Diese Anwendung verwendet...

Lösungen für Websites mit hohem Datenverkehr

Erstens: Stellen Sie zunächst sicher, dass die Ser...

So erstellen Sie eine LNMP-Umgebung unter Ubuntu 20.04

Einfache Beschreibung Da es zuvor mit Centos7 ers...