Min sambo tyckte för övrigt det var lite omständligt att lägga in dagarna genom domoticz gränsnitt så jag gjorde en lättare variant.
(index.html i en katalog på webserverdelen som lades in som en bookmark i telefonen.)
Minimalt med knappar och information.
Listar alla timers med en knapp för att radera och en för att av- eller aktivera.
Sist ett enkelt sätt att lägga till en ny timer.
(Javascript)
Byt ut idDevice och ip, och förmodligen vill ni ändra title
var idDevice = 14; // idx till dummy switch innehållande timers
var ip_jason = "
http://192.168.1.46:8060"; // Ip till domoticz
Kod: Markera allt
<!DOCTYPE html>
<html lang="sv-se">
<html>
<head>
<meta charset="utf-8">
<title>Susannes motorvärmare</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1> Timers </h1>
<p id="timers"></p>
<p> Lägg till ny timer </p>
<p id="addtime"></p>
</body>
</html>
<script type="text/javascript">
var idDevice = 14; // idx till dummy switch innehållande timers
var ip_jason = "http://192.168.1.46:8060"; // Ip till domoticz
var d = new Date();
var y = d.getFullYear();
var m = lengthdate(d.getMonth() + 1);
var day = lengthdate(d.getDate());
var h = lengthdate(d.getHours());
var min = lengthdate(d.getMinutes());
document.getElementById("addtime").innerHTML = "<input type='datetime-local' id='myLocalDate' value=" + y + "-" + m + "-" + day + "T" + h + ":" + min + ">" + "<button onclick='getDateFunction()'>Lägg till</button>"
function lengthdate(aaa){
var aa = aaa.toString();
if (aa.length < 2)
return "0" + aaa;
else
return aaa;
}
function getDateFunction() {
var x = document.getElementById("myLocalDate").value;
var reformatdate = x.split("T");
var reformattime = reformatdate[1].split(":");
addtimer(reformatdate[0], reformattime[0], reformattime[1]);
}
var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status === 200) {
callback(null, xhr.response);
} else {
callback(status, xhr.response);
}
};
xhr.send();
};
getJSON(ip_jason + '/json.htm?idx=' + idDevice + '&type=timers',
function(err, data) {
if (err !== null) {
alert('Something went wrong: ' + err);
} else {
var nbtimers = data.result.length;
var txt =" ";
for (i = 0; i<data.result.length; i++) {
if (i > 0){
txt = txt + "-----------------------------------------------<br>";
}
if (data.result[i].Active == "true"){
txt = txt + "Timern är Aktiv!";
}
if (data.result[i].Active == "false"){
txt = txt + "Timern är Avstängd!";
}
if (data.result[i].Days == "256")
txt = txt + "<br> Startar på vardagar"
if (data.result[i].Days == "0")
txt = txt + "<br> Datum: " + data.result[i].Date;
txt = txt + "<br> Tid: " + data.result[i].Time;
txt = txt + "<br>";
txt = txt + "<button onclick=\"document.getElementById('timers').innerHTML = removetimer(" + data.result[i].idx + ")\">Radera Timer?</button>";
if (data.result[i].Active == "true"){
txt = txt + "<button onclick=\"document.getElementById('timers').innerHTML = act_deact(2 ," + data.result[i].idx + ")\">Av-Aktivera?</button>";
}
if (data.result[i].Active == "false"){
txt = txt + "<button onclick=\"document.getElementById('timers').innerHTML = act_deact(1 ," + data.result[i].idx + ")\">Aktivera?</button>";
}
txt = txt + "<br>";
}
document.getElementById("timers").innerHTML = txt;
}
});
act_deact = function(actornot, id_timer){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("timers").innerHTML = this.responseText;
}
};
if (actornot == 2){
xhttp.open("POST", ip_jason + "/json.htm?type=command¶m=disabletimer&idx=" + id_timer, true);
}
if (actornot == 1){
xhttp.open("POST", ip_jason + "/json.htm?type=command¶m=enabletimer&idx=" + id_timer, true);
}
xhttp.send();
setTimeout(function(){ location.reload(); }, 2000);
}
removetimer = function(id_timer){
var r = confirm("Är du säker att du vill radera timern?");
if (r == true) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("timers").innerHTML = this.responseText;
}
};
xhttp.open("POST", ip_jason + "/json.htm?type=command¶m=deletetimer&idx=" + id_timer, true);
xhttp.send();
setTimeout(function(){ location.reload(); }, 2000);
} else {
setTimeout(function(){ location.reload(); }, 200);
}
}
addtimer = function(date, hour, min){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("timers").innerHTML = this.responseText;
}
};
xhttp.open("POST", ip_jason + "/json.htm?type=command¶m=addtimer&idx=" + idDevice + "&active=true&timertype=5&hour=" + hour + "&min=" + min + "&randomness=false&command=0&days=0&date=" + date + "",true);
xhttp.send();
setTimeout(function(){ location.reload(); }, 2000);
}
</script>