Je souhaite utiliser un thermo-hygromètre pour vérifier les conditions intérieures et extérieures sur le tableau de bord.
Même lorsque j'ai acheté un thermo-hygromètre SwitchBot, j'ai senti qu'il n'était pas épuisé, mais j'ai été remarqué par cet article et j'ai proposé la production. Merci: arc: Acquérir des données de capteur dans la maison avec Raspberry Pi et réaliser une super maison IoT
De nombreux articles sont traités à l'aide de Raspeye, mais cette fois, j'utiliserai le serveur x86_64 à la maison qui est déjà en cours d'exécution. Pour obtenir la valeur du capteur, utilisez le programme Python publié par Wonder Labs. https://github.com/OpenWonderLabs/python-host La valeur acquise est enregistrée dans la feuille de calcul Google via le script Google Apps. Utilisez-le comme source de données et visualisez-la dans le portail de données Google.
Voilà le flux.
Après l'achat, insérez la batterie et installez-la à l'endroit à mesurer. Lors de l'installation à l'extérieur, prenez des mesures d'étanchéité. Vous pouvez l'enfermer dans quelque chose, mais s'il est en métal, cela gênera la communication. Installez l'application SwitchBot pour connaître l'adresse MAC BLE dont vous aurez besoin à l'étape suivante.
Créez une feuille de calcul avec n'importe quel emplacement et nom. À ce stade, entrez la première ligne comme indiqué dans l'image ci-dessous. (Avant _t et _h est l'adresse MAC de BLE) Vous aurez besoin de l'URL à l'étape suivante.
Créez un script Google Apps avec n'importe quel emplacement et nom. Veuillez vous référer à d'autres articles pour savoir comment créer et préparer. https://qiita.com/tags/googleappsscript Réécrivez le script avec le contenu ci-dessous.
var SPREADSHEET_ID = "********"; //Voici l'URL de la feuille de calcul
// 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();
}
Après avoir enregistré le script, publiez-le. Menu> Publier> Introduit en tant qu'application Web ... Vous aurez besoin de l'URL à l'étape suivante.
Le conteneur Docker est ouvert au public jusqu'au point où les valeurs de capteur acquises par le programme Python sont POSTÉES vers une URL spécifique. Veuillez vous déplacer ici. https://hub.docker.com/repository/docker/kunikada/switchbot-meter-relay Pour POST_URL, spécifiez l'URL que vous avez publiée précédemment.
Veuillez vous référer à d'autres articles pour le processus d'exécution du conteneur Docker en premier lieu. https://qiita.com/tags/docker
À ce stade, vous devriez avoir accumulé des données dans votre feuille de calcul Google.
Je vais omettre les étapes spécifiques, mais à la suite d'essais et d'erreurs, quelque chose comme une image a été créé. La température est affichée au-dessus, l'humidité est affichée en dessous, et les données intérieures / extérieures et les différences sont affichées en un. Le côté gauche est l'historique et le côté droit est la valeur actuelle. Il existe différents paramètres pour l'historique, mais vous pouvez le définir avec un graphique de série chronologique. La valeur actuelle est affichée en superposant deux graphiques en anneau et deux cartes de performance. La source de données crée également des données dédiées dans une feuille distincte de la feuille de calcul.
Si vous avez des questions, laissez un commentaire.
Spécifications de l'API du thermo-hygromètre https://github.com/OpenWonderLabs/python-host/wiki/Meter-BLE-open-API
Référence de script Google Apps https://developers.google.com/apps-script/reference
Référence du japonais Docker https://docs.docker.jp/index.html
Aide du portail de données Google https://support.google.com/datastudio/?hl=ja
Recommended Posts