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
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.
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 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.
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 Sie das Skript nach dem Speichern. Menü> Veröffentlichen> Als Webanwendung eingeführt ... Sie benötigen die URL im nächsten Schritt.
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.
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.
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