[PYTHON] Messen Sie die Temperatur und Luftfeuchtigkeit im Innen- und Außenbereich und zeigen Sie sie auf dem Armaturenbrett an

Zweck

Ich möchte ein Thermo-Hygrometer verwenden, um die Innen- und Außenbedingungen auf dem Armaturenbrett zu überprüfen.

Selbst als ich das SwitchBot-Thermo-Hygrometer kaufte, hatte ich das Gefühl, dass es nicht verbraucht war, aber ich wurde von diesem Artikel bemerkt und kam auf die Produktion. Danke: Bogen: Erfassen Sie Sensordaten im Haus mit Raspberry Pi und realisieren Sie ein Super-IoT-Haus

Überblick

Es gibt viele Artikel, die mit Raspeye verarbeitet werden, aber dieses Mal werde ich den x86_64-Server zu Hause verwenden, der bereits ausgeführt wird. Verwenden Sie das von Wonder Labs veröffentlichte Python-Programm, um den Wert vom Sensor abzurufen. https://github.com/OpenWonderLabs/python-host Der erfasste Wert wird über das Google Apps-Skript in der Google-Tabelle erfasst. Verwenden Sie diese als Datenquelle und visualisieren Sie sie im Google Data Portal.

Das ist der Fluss. Untitled.png

Vorbereitung

Verfahren

Installation des SwitchBot-Thermo-Hygrometers

Legen Sie den Akku nach dem Kauf ein und setzen Sie ihn an der zu messenden Stelle ein. Treffen Sie bei der Installation im Freien wasserdichte Maßnahmen. Sie können es in etwas einschließen, aber wenn es aus Metall besteht, stört es die Kommunikation. Installieren Sie die SwitchBot-App, um die BLE MAC-Adresse zu ermitteln, die Sie im nächsten Schritt benötigen.

Erstellen einer Google-Tabelle

Erstellen Sie eine Tabelle mit einem beliebigen Ort und Namen. Geben Sie zu diesem Zeitpunkt die erste Zeile ein, wie in der Abbildung unten gezeigt. (Vor _t und _h steht die MAC-Adresse von BLE) Sie benötigen die URL im nächsten Schritt. logs-Google-スプレッドシート.png

Erstellen Sie ein Google Apps-Skript

Erstellen Sie ein Google Apps-Skript mit einem beliebigen Ort und Namen. Weitere Informationen zum Erstellen und Vorbereiten finden Sie in anderen Artikeln. https://qiita.com/tags/googleappsscript Schreiben Sie das Skript mit dem folgenden Inhalt neu.

var SPREADSHEET_ID = "********"; //Hier ist die Tabellenkalkulations-URL

// Compiled using ts2gas 3.6.3 (TypeScript 3.9.7)
var MySpreadsheet = /** @class */ (function () {
    function MySpreadsheet(id, sheetId) {
        if (sheetId === void 0) { sheetId = 0; }
        if (id.match(/^https:\/\//)) {
            this.ss = SpreadsheetApp.openByUrl(id);
        }
        else {
            this.ss = SpreadsheetApp.openById(id);
        }
        this.sheet = this.ss.getSheets()[sheetId];
    }
    MySpreadsheet.prototype.headers = function () {
        var range = this.sheet.getRange(1, 1, 1, this.sheet.getMaxColumns());
        return range.getValues()[0];
    };
    MySpreadsheet.prototype.appendRow = function (row) {
        var insertRow = [];
        this.headers().forEach(function (name, index) {
            insertRow.push((name && name in row) ? row[name] : "");
        });
        this.ss.appendRow(insertRow);
    };
    MySpreadsheet.prototype.unshiftRow = function (row) {
        this.sheet.insertRowAfter(1);
        var range = this.sheet.getRange(2, 1, 1, this.sheet.getMaxColumns());
        this.headers().forEach(function (name, index) {
            if (name) {
                range.getCell(1, index + 1).setValue(row[name]);
            }
        });
    };
    return MySpreadsheet;
}());
var MyResponse = /** @class */ (function () {
    function MyResponse(status, message) {
        this.status = status;
        this.message = message;
    }
    MyResponse.prototype.toJSON = function () {
        return {
            status: this.status,
            message: this.message
        };
    };
    MyResponse.prototype.create = function () {
        var output = ContentService.createTextOutput();
        output.setMimeType(ContentService.MimeType.JSON);
        output.setContent(JSON.stringify(this));
        return output;
    };
    return MyResponse;
}());
function doPost(e) {
    var data = JSON.parse(e.postData.contents);
    var response = new MyResponse("success", "ok");
    try {
        var ss = new MySpreadsheet(SPREADSHEET_ID);
        ss.unshiftRow(data);
    }
    catch (err) {
        console.error(err);
        console.log(data);
        response.status = "error";
        response.message = err.message;
    }
    return response.create();
}

Veröffentlichen von Google Apps Script

Veröffentlichen Sie das Skript nach dem Speichern. Menü> Veröffentlichen> Als Webanwendung eingeführt ... Sie benötigen die URL im nächsten Schritt.

Installation des Serverprogramms

Der Docker-Container ist bis zu dem Punkt für die Öffentlichkeit zugänglich, an dem die vom Python-Programm erfassten Sensorwerte an eine bestimmte URL gesendet werden. Bitte ziehen Sie hierher. https://hub.docker.com/repository/docker/kunikada/switchbot-meter-relay Geben Sie die URL an, die Sie zuvor in POST_URL veröffentlicht haben.

Weitere Informationen zum Ausführen des Docker-Containers finden Sie in anderen Artikeln. https://qiita.com/tags/docker

Zu diesem Zeitpunkt sollten Sie Daten in Ihrer Google-Tabelle gesammelt haben.

Google Data Portal-Einstellungen

SwitchBot温湿度計-›-PC用レイアウト.png Ich werde die spezifischen Schritte weglassen, aber als Ergebnis von Versuch und Irrtum wurde so etwas wie ein Bild erstellt. Die Temperatur wird oben angezeigt, die Luftfeuchtigkeit wird unten angezeigt und Innen- / Außendaten und Unterschiede werden in einem angezeigt. Die linke Seite ist der Verlauf und die rechte Seite ist der aktuelle Wert. Es gibt verschiedene Parameter für den Verlauf, Sie können ihn jedoch mit einem Zeitreihendiagramm festlegen. Der aktuelle Wert wird durch Überlagerung von zwei Donut-Diagrammen und zwei Scorecards angezeigt. Die Datenquelle erstellt außerdem dedizierte Daten in einem separaten Blatt der Tabelle.

Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar.

Bemerkungen

Referenz

API-Spezifikationen für Thermo-Hygrometer https://github.com/OpenWonderLabs/python-host/wiki/Meter-BLE-open-API

Google Apps-Skriptreferenz https://developers.google.com/apps-script/reference

Japanische Docker-Referenz https://docs.docker.jp/index.html

Google Data Portal-Hilfe https://support.google.com/datastudio/?hl=ja

Recommended Posts

Messen Sie die Temperatur und Luftfeuchtigkeit im Innen- und Außenbereich und zeigen Sie sie auf dem Armaturenbrett an
Himbeere + am2302 Temperatur und Luftfeuchtigkeit mit Temperatur- und Feuchtigkeitssensor messen
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Installieren Sie matplotlib und zeigen Sie das Diagramm in Jupyter Notebook an
DISPLAY-Fehler in wxPython (und featuresui) auf vscode
Zeigen Sie Bilder an und spielen Sie Videos im Neovim Terminal ab
Zeigen Sie die CPU-Temperatur alle 5 Sekunden auf dem Raspberry Pi 4 an
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi