homebridge-nibe
Version:
Homebridge plugin for Nibe services
168 lines (155 loc) • 25.8 kB
HTML
<style>
@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css');
.fa-external-link:before {content: "\f08e" ;}
legend {font-weight: bold;}
#links {margin-bottom: 2rem;}
#links img {width: 6rem;}
#instruction {margin: -5px;}
#instruction ol {padding-inline-start: 25px;}
#instruction ol li {margin-bottom: 0.5rem; color:#9e9e9e;line-height: 200%;}
#instruction ol li strong {color:#fff;font-weight: normal;}
#instruction ol li a.btn {margin: 0;}
#instruction-toogle {cursor: pointer;}
#accessories {margin: -5px;margin-top: 20px;}
#accessories-list {list-style: none; padding: 0; margin: 0;}
.hidden {display: none;}
.bmc-button {background-color: rgb(255,221,0); float: right}
#instruction img {height: 1rem;}
#instruction a {margin-right: 5px ; padding: 1px 5px 1px;}
</style>
<div id="links">
<a target="_blank" href="https://myuplink.com" class="btn btn-white" role="button">
<img class="img-fluid" src="https://myuplink.com/myUplink_logo.png" alt="Nibe myUplink">
</a>
<a target="_blank" href="https://dev.myuplink.com/" class="btn btn-white" role="button">
<img class="img-fluid" src="data:image/png;base64,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" alt="Nibe myUplink Devs">
</a>
<a href="https://www.buymeacoffee.com/hpruszyn" class="btn bmc-button" target="_blank">
<img class="img-fluid" src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee">
</a>
</div>
<div id="instruction" class="card card-body">
<legend id="instruction-toogle" class="legend">
<i id="instruction-chevron" class="fa fa-chevron-right" aria-hidden="true"></i>
Setup instructions <i class="fa fa-book" aria-hidden="true"></i>
</legend>
<p id="instruction-help" class="help-block">Expand to see instructions and help</p>
<div id="instruction-content" class="hidden">
<ol>
<li>
You need a free <a target="_blank" href="https://myuplink.com" class="btn btn-white" role="button">
<img class="img-fluid" src="https://myuplink.com/myUplink_logo.png" alt="Nibe myUplink">
</a> account. Make sure the account being used has active devices.
</li>
<li>
You need an application at Nibe myUplink Devs. Click <a target="_blank" href="https://dev.myuplink.com/" class="btn btn-white" role="button">
<img class="img-fluid" src="data:image/png;base64,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" alt="Nibe myUplink Devs">
</a> to go to Nibe myUplink Devs and log in with your myUplink account.
Navigate to <i>Applications</i> and click on <i>Create New Application</i>.
Enter a <i>Name</i> and <i>Description</i>, which can be anything, such as <i>Homebridge</i>.
The <i>Callback URL</i> can be left empty.
Accept the NIBE myUplink API Services Agreement and click <i>Create</i>.
<br />You will then receive a <strong>Client Identifier</strong> and <strong>Client Secret</strong> - paste them below.
</li>
</ol>
</div>
</div>
<div id="accessories" class="card card-body hidden">
<legend class="legend">Accessories</legend>
<p class="help-block">Use toggle to enable/disable accessory</p>
<ul id="accessories-list">
</ul>
</div>
<script>
(async () => {
let pluginConfig = await homebridge.getPluginConfig();
if (pluginConfig && pluginConfig.length == 0) {
pluginConfig = [{
"identifier": "",
"secret": "",
"language": "en",
"pollingPeriod": 60,
"platform": "Nibe",
"disabledAccessories": []
}];
await homebridge.updatePluginConfig(pluginConfig);
await homebridge.savePluginConfig();
}
await homebridge.showSchemaForm();
var instructionContent = document.getElementById('instruction-content');
var instructionChevron = document.getElementById('instruction-chevron');
var instructionHelp = document.getElementById('instruction-help');
document.getElementById('instruction-toogle').addEventListener('click', () => {
instructionContent.classList.toggle('hidden');
instructionHelp.classList.toggle('hidden');
instructionChevron.classList.toggle('fa-chevron-right');
instructionChevron.classList.toggle('fa-chevron-down');
});
const accessories = [];
const cachedAccessories = await homebridge.getCachedAccessories();
cachedAccessories
.filter(accessory => pluginConfig[0].disabledAccessories.map(a => a.substring(0, a.indexOf(";"))).some(da => (da.indexOf(';') > 0 ? da.substring(0, da.indexOf(';')) : da) !== accessory.context.accessoryId))
.forEach(accessory => {
const names = accessory.services
.flatMap(service => service.characteristics)
.filter(characteristics => characteristics.displayName == 'Name')
.filter(characteristics => characteristics.value !== '' && characteristics.value != accessory.displayName)
.map(characteristics => characteristics.value);
accessories.push({
context: accessory.context,
name: '[' + accessory.context.systemName +', '+ accessory.context.deviceName + '] ' + (names.length > 0 ? names[0] : accessory.context.accessoryId),
checked: true
});
});
if (pluginConfig[0] && pluginConfig[0].disabledAccessories && pluginConfig[0].disabledAccessories.length > 0) {
pluginConfig[0].disabledAccessories.forEach(a => {
var id = a.indexOf(';') > 0 ? a.substring(0, a.indexOf(';')) : a;
if (id) {
var context = {accessoryId: id, name: id}
try {
context = JSON.parse(atob(a.replace(id+';', '')));
} catch (e) {}
accessories.push({
context: context,
name: context.name,
checked: false
});
}
});
}
if (accessories.length > 0) {
document.getElementById('accessories').classList.remove('hidden');
var accessoriesList = document.getElementById('accessories-list');
accessories.forEach(accessory => {
let label = document.createElement("label");
label.textContent = accessory.name;
label.className = 'custom-control-label';
label.htmlFor = 'switch-'+accessory.context.accessoryId;
let input = document.createElement("input");
input.type = "checkbox";
input.id = 'switch-' + accessory.context.accessoryId;
input.className = 'custom-control-input'
input.checked = accessory.checked;
input.onclick = async () => {
if (!pluginConfig[0].disabledAccessories) {
pluginConfig[0].disabledAccessories = [];
}
if (input.checked) {
pluginConfig[0].disabledAccessories = pluginConfig[0].disabledAccessories.filter(a => a !== accessory.context.accessoryId);
} else {
pluginConfig[0].disabledAccessories.push(accessory.context.accessoryId+';'+btoa(JSON.stringify({...accessory.context, ...{name: accessory.name}})));
}
await homebridge.updatePluginConfig(pluginConfig);
await homebridge.savePluginConfig();
}
let li = document.createElement("li");
let div = document.createElement("div");
div.className = 'custom-control custom-switch';
div.append(input);
div.append(label);
li.append(div);
accessoriesList.append(li);
});
}
})();
</script>