bubble/static/temperature.js

83 lines
2.5 KiB
JavaScript

function init_temperature() {
//var elem = document.getElementById("temperature-page");
const host = 'ws://10.10.10.8:1884'
const options = {
keepalive: 60,
clientId: 'ipad',
protocolId: 'MQTT',
protocolVersion: 4,
clean: true,
reconnectPeriod: 1000,
connectTimeout: 30 * 1000,
will: {
topic: 'WillMsg',
payload: 'Connection Closed abnormally..!',
qos: 0,
retain: false
},
}
console.log('Connecting mqtt client')
const client = mqtt.connect(host, options)
client.on('error', (err) => {
console.log('Connection error: ', err)
client.end()
})
client.on('reconnect', () => {
console.log('Reconnecting...')
})
client.on('connect', () => {
console.log(`Client connected`)
// Subscribe
client.subscribe('shellies/shellyht-CAAB02/sensor/temperature', { qos: 0 })
client.subscribe('sensors/jardin-des-plantes/temperature', { qos: 0 })
})
client.on('message', (topic, message, packet) => {
switch (topic) {
case 'shellies/shellyht-CAAB02/sensor/temperature':
setInternalTemp(message.toString())
break;
case 'sensors/jardin-des-plantes/temperature':
setExternalTemp(message.toString())
break;
default:
return
}
console.log(`Received Message: ${message.toString()} On topic: ${topic}`)
})
}
function setInternalTemp(temperature) {
document.getElementById('internal-temp').innerText = temperature
setColorFromTemperature(Number(temperature), document.getElementById('internal-temp'))
}
function setExternalTemp(temperature) {
document.getElementById('external-temp').innerText = temperature
setColorFromTemperature(Number(temperature), document.getElementById('external-temp'))
}
function setColorFromTemperature(temperature, element) {
element.classList.remove(['very-cold', 'cold', 'normal-cold', 'normal', 'normal-hot', 'hot', 'very-hot'])
if(temperature < 0) {
element.classList.add('very-cold')
} else if(temperature < 10) {
element.classList.add('cold')
} else if(temperature < 18) {
element.classList.add('normal-cold')
} else if(temperature < 23) {
element.classList.add('normal')
} else if(temperature < 27) {
element.classList.add('normal-hot')
} else if(temperature < 34) {
element.classList.add('hot')
} else {
element.classList.add('very-hot')
}
}