83 lines
2.5 KiB
JavaScript
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')
|
|
}
|
|
} |