74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
|
import Mailjet from 'node-mailjet'
|
||
|
|
||
|
const monitoringUrl = "https://monitoringapi.solaredge.com/site/2516130/overview?api_key=GVF1BZAAM74IRDZ2WRWT32A5V0CY9G4Z&format=json"
|
||
|
|
||
|
async function getData() {
|
||
|
const response = await fetch(monitoringUrl);
|
||
|
|
||
|
return response.json();
|
||
|
}
|
||
|
|
||
|
async function getCurrentPower(data) {
|
||
|
return data.overview.currentPower.power
|
||
|
}
|
||
|
|
||
|
async function getLastUpdateTime(data) {
|
||
|
return data.overview.lastUpdateTime
|
||
|
}
|
||
|
|
||
|
async function sendAlert() {
|
||
|
console.log("sendAlert start")
|
||
|
|
||
|
const mailjet = Mailjet.apiConnect(
|
||
|
process.env.MJ_APIKEY_PUBLIC,
|
||
|
process.env.MJ_APIKEY_PRIVATE,
|
||
|
);
|
||
|
|
||
|
const request = mailjet
|
||
|
.post('send', { version: 'v3.1' })
|
||
|
.request({
|
||
|
Messages: [
|
||
|
{
|
||
|
From: {
|
||
|
Email: "admin@lestoitsduval.fr",
|
||
|
Name: "Les Toits du Val - Salle Greyzollon Duluth"
|
||
|
},
|
||
|
To: [
|
||
|
{
|
||
|
Email: "simon@lestoitsduval.fr",
|
||
|
Name: "Conseil de gestion"
|
||
|
}
|
||
|
],
|
||
|
Subject: "😱 Alert sur la production",
|
||
|
TextPart: "La production est de 0 watt !",
|
||
|
}
|
||
|
]
|
||
|
})
|
||
|
|
||
|
request
|
||
|
.then((result) => {
|
||
|
console.log("result")
|
||
|
console.log(result.body)
|
||
|
})
|
||
|
.catch((err) => {
|
||
|
console.log("err")
|
||
|
console.log(err)
|
||
|
})
|
||
|
console.log("sendAlert end")
|
||
|
return
|
||
|
}
|
||
|
|
||
|
|
||
|
const data = await getData();
|
||
|
const now = new Date();
|
||
|
const currentPower = await getCurrentPower(data);
|
||
|
const lastUpdateTime = await getLastUpdateTime(data);
|
||
|
console.log(`[${lastUpdateTime}] La salle Greyzollon Duluth produissait ${currentPower} watt${currentPower>0?'s':''} !`)
|
||
|
const secondDifference = Math.ceil(Math.abs(now.getTime() - new Date(lastUpdateTime).getTime()) / 1000);
|
||
|
if (secondDifference > (6 * 60)) {
|
||
|
console.log(`❌ L'installation n'a pas répondu depuis '${lastUpdateTime}' ça fait ${secondDifference} secondes !`);
|
||
|
await sendAlert();
|
||
|
} else {
|
||
|
console.log(`✅ L'installation répond correctement dernière mise à jour il y a ${secondDifference} secondes.`);
|
||
|
}
|