//
// Nach dem Laden des Dokumentes:
$(document).ready(function() {
console.log("Es geht los");
const URL = "switch/";
const POLL_INTERVAL_MS = 1000;
const queryToken = new URLSearchParams(window.location.search).get('token');
const storedToken = localStorage.getItem('switchApiToken');
const API_TOKEN = queryToken || storedToken || '';
let interval = null;
let status = "";
if (queryToken) {
localStorage.setItem('switchApiToken', queryToken);
}
$('#versn').html("V " + VERSION + ' ' + VDATE); // Vesion anzeigen
$("#auszeile").hide(); // Meldezeile AUS schalten
// sendCommand(URL,"PowerOnState%200"); // OFF bei Power ON
// sendCommand(URL,"PulseTime%20"+(brenndauer+100)); // Brenndauer einstellen
startPolling();
document.addEventListener('visibilitychange', function (event) {
if (!document.hidden) {
startPolling();
} else {
stopPolling();
}
});
sendCommand(URL, "get_status")
$("#schalter").click(function () {
if (status === 'ON') {
console.log("Sende OFF")
sendCommand(URL, "switch_off")
} else {
console.log("Sende ON")
sendCommand(URL, "switch_on")
}
});
function sendCommand(url, cmnd) {
console.log("sendCommand", cmnd);
let endpoint = url + cmnd;
if (API_TOKEN) {
endpoint += '?token=' + encodeURIComponent(API_TOKEN);
}
return new Promise((resolve, reject) => {
$.getJSON(endpoint)
.done(function (data) {
console.log("gekommen: ", data);
resolve(data);
})
.fail(function (_jqXHR, textStatus, errorThrown) {
const msg = errorThrown || textStatus || "Unbekannter Fehler";
reject(msg);
});
});
}
function startPolling() {
if (interval !== null) {
clearInterval(interval);
}
interval = setInterval(sendTimedCommand, POLL_INTERVAL_MS);
}
function stopPolling() {
if (interval !== null) {
clearInterval(interval);
interval = null;
}
}
function sendTimedCommand() {
// console.log("time check");
sendCommand(URL, 'check')
.then(data => {
// console.log("Timed Status= ", st);
status = data.relais;
if (status !== 'pending') {
if (status === 'ON') {
$('#schalter').html('Laufschrift AUS schalten');
$('#status').text('EIN');
$('#laufzeile').addClass('machrot');
if (data.offtime !== undefined) {
$('#auszeit').text(data.offtime);
$('#auszeile').show();
}
} else {
$('#schalter').html('Laufschrift EIN schalten');
$('#status').text('AUS');
$('#laufzeile').removeClass('machrot');
$('#auszeile').hide();
}
}
})
.catch(err => {
console.log('Statusabfrage fehlgeschlagen:', err);
});
}
});