Compare commits

...

7 commits

Author SHA1 Message Date
Kai Lauterbach
c79e15d7a1 Fixed updateLightStateAndPWMValues call 2023-05-17 19:44:55 +02:00
Kai Lauterbach
91d2d867b0 Revert "Button initialization refactorized."
This reverts commit dbaa21bd30.
2023-05-17 19:39:00 +02:00
Kai Lauterbach
88b738ac75 Revert "Refactorized the Plotly graph code"
This reverts commit bb0c390937.
2023-05-17 19:38:55 +02:00
Kai Lauterbach
bb0c390937 Refactorized the Plotly graph code 2023-05-17 19:01:32 +02:00
Kai Lauterbach
dbaa21bd30 Button initialization refactorized. 2023-05-17 18:54:00 +02:00
Kai Lauterbach
8deac5fc15 Merged two very similar functions into one. 2023-05-17 17:15:10 +02:00
Kai Lauterbach
df215a2c16 Added vscode arduino config file 2023-05-17 17:13:12 +02:00
5 changed files with 72 additions and 64 deletions

15
.vscode/arduino.json vendored Normal file
View file

@ -0,0 +1,15 @@
{
"configuration": "xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,eesz=4M2M,led=2,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=460800",
"board": "esp8266:esp8266:nodemcuv2",
"port": "/dev/tty.usbserial-110",
"programmer": "AVRISP mkII",
"sketch": "firmware/firmware.ino",
"includePath": [
"/Users/klaute/Documents/Arduino/libraries",
"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include",
"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/lib",
"/Applications/Arduino.app//Contents/Java/hardware/arduino/avr/libraries"
"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/include",
"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/x86_64-apple-darwin16.1.0/avr/include"
]
}

View file

@ -272,15 +272,23 @@ if (document.getElementById('tab-tde').classList.contains('visible')) {
loadTCGraphData(); loadTCGraphData();
} }
}, 2000); }, 2000);
function updateLightState() { function updateLightStateAndPWMValues() {
console.log('----> setting bri and power switch <----'); console.log('----> setting bri, power switch, and pwm data <----');
const promises = [];
for (let i = 1; i <= {{LIGHT_COUNT}}; i++) { for (let i = 1; i <= {{LIGHT_COUNT}}; i++) {
const lightURL = `http://{{IP_ADDRESS}}/state?light=${i}`; const lightURL = `http://{{IP_ADDRESS}}/state?light=${i}`;
fetch(lightURL).then(response => response.json()).then(data => { promises.push(fetch(lightURL).then(response => response.json()));
}
Promise.all(promises)
.then(dataArray => {
for (let i = 1; i <= {{LIGHT_COUNT}}; i++) {
const data = dataArray[i - 1];
const briSlider = document.getElementById(`bri${i - 1}`); const briSlider = document.getElementById(`bri${i - 1}`);
const briSliderVal = document.getElementById(`bri${i - 1}_val`); const briSliderVal = document.getElementById(`bri${i - 1}_val`);
const onLinkOn = document.getElementById(`on${i - 1}_on`); const onLinkOn = document.getElementById(`on${i - 1}_on`);
const onLinkOff = document.getElementById(`on${i - 1}_off`); const onLinkOff = document.getElementById(`on${i - 1}_off`);
const pwmElement = document.getElementById(`light${i - 1}_pwm`);
const pwmElementTxt = document.getElementById(`light${i - 1}_pwm_txt`);
briSlider.value = data.bri; briSlider.value = data.bri;
briSliderVal.innerHTML = (Math.round((data.bri * 100.0 / 255.0) * 100) / 100).toFixed(2); briSliderVal.innerHTML = (Math.round((data.bri * 100.0 / 255.0) * 100) / 100).toFixed(2);
if (data.on == true) { if (data.on == true) {
@ -290,30 +298,18 @@ onLinkOff.classList.remove('pure-button-primary');
onLinkOn.classList.remove('pure-button-primary'); onLinkOn.classList.remove('pure-button-primary');
onLinkOff.classList.add('pure-button-primary'); onLinkOff.classList.add('pure-button-primary');
} }
}).catch(error => console.error(error));
}
}
setInterval(updateLightState, 10000);
updateLightState();
function updatePWMValues() {
console.log('----> setting pwm data <----');
for (let i = 0; i < {{LIGHT_COUNT}}; i++) {
const lightID = i + 1;
const pwmElement = document.getElementById(`light${i}_pwm`);
const pwmElementTxt = document.getElementById(`light${i}_pwm_txt`);
if (pwmElement) { if (pwmElement) {
const url = `http://{{IP_ADDRESS}}/state?light=${lightID}`;
fetch(url).then(response => response.json()).then(data => {
const pwmValue = ((Math.round((data.curpwm - ((data.curpwm >= {{PWM_MIN}}) ? {{PWM_MIN}} : 0)) / {{PWM_MAX}} * 10000) / 100).toFixed(2)); const pwmValue = ((Math.round((data.curpwm - ((data.curpwm >= {{PWM_MIN}}) ? {{PWM_MIN}} : 0)) / {{PWM_MAX}} * 10000) / 100).toFixed(2));
pwmElement.innerText = pwmValue.toString(); pwmElement.innerText = pwmValue.toString();
pwmElement.value = pwmValue; pwmElement.value = pwmValue;
pwmElementTxt.innerText = pwmValue.toString(); pwmElementTxt.innerText = pwmValue.toString();
}).catch(error => console.error(error));
} }
} }
})
.catch(error => console.error(error));
} }
updatePWMValues(); updateLightStateAndPWMValues();
setInterval(updatePWMValues, 5000); setInterval(updateLightStateAndPWMValues, 5000);
var links = document.querySelectorAll('[id^="on"][id$="_off"]'); var links = document.querySelectorAll('[id^="on"][id$="_off"]');
links.forEach(function(link) { links.forEach(function(link) {
link.addEventListener('click', function(event) { link.addEventListener('click', function(event) {
@ -354,7 +350,7 @@ console.log('Error while sending data to server.');
} }
}; };
xhr.send(); xhr.send();
updateLightState(); updateLightStateAndPWMValues();
this.classList.add('pure-button-primary'); this.classList.add('pure-button-primary');
document.getElementById('on'+id+'_on').classList.remove('pure-button-primary'); document.getElementById('on'+id+'_on').classList.remove('pure-button-primary');
}); });
@ -399,7 +395,7 @@ console.log('Error while sending data to server.');
} }
}; };
xhr.send(); xhr.send();
updateLightState(); updateLightStateAndPWMValues();
this.classList.add('pure-button-primary'); this.classList.add('pure-button-primary');
document.getElementById('on'+id+'_off').classList.remove('pure-button-primary'); document.getElementById('on'+id+'_off').classList.remove('pure-button-primary');
}); });

View file

@ -18,7 +18,6 @@
</td> </td>
</tr> </tr>
</table> </table>
<br>
<a href="#" id="save-button" class="pure-button pure-button-primary" onclick="sendDataToServer();">save</a> <a href="#" id="save-button" class="pure-button pure-button-primary" onclick="sendDataToServer();">save</a>
</div> </div>
</div> <!-- end of tab-tde --> </div> <!-- end of tab-tde -->

View file

@ -317,50 +317,49 @@ setInterval(function() {
} }
}, 2000); }, 2000);
function updateLightState() { function updateLightStateAndPWMValues() {
console.log('----> setting bri and power switch <----'); console.log('----> setting bri, power switch, and pwm data <----');
const promises = [];
for (let i = 1; i <= {{LIGHT_COUNT}}; i++) { for (let i = 1; i <= {{LIGHT_COUNT}}; i++) {
const lightURL = `http://{{IP_ADDRESS}}/state?light=${i}`; const lightURL = `http://{{IP_ADDRESS}}/state?light=${i}`;
fetch(lightURL).then(response => response.json()).then(data => { promises.push(fetch(lightURL).then(response => response.json()));
const briSlider = document.getElementById(`bri${i - 1}`);
const briSliderVal = document.getElementById(`bri${i - 1}_val`);
const onLinkOn = document.getElementById(`on${i - 1}_on`);
const onLinkOff = document.getElementById(`on${i - 1}_off`);
briSlider.value = data.bri;
briSliderVal.innerHTML = (Math.round((data.bri * 100.0 / 255.0) * 100) / 100).toFixed(2);
if (data.on == true) {
onLinkOn.classList.add('pure-button-primary');
onLinkOff.classList.remove('pure-button-primary');
} else {
onLinkOn.classList.remove('pure-button-primary');
onLinkOff.classList.add('pure-button-primary');
}
}).catch(error => console.error(error));
} }
}
setInterval(updateLightState, 10000);
updateLightState();
function updatePWMValues() { Promise.all(promises)
console.log('----> setting pwm data <----'); .then(dataArray => {
for (let i = 0; i < {{LIGHT_COUNT}}; i++) { for (let i = 1; i <= {{LIGHT_COUNT}}; i++) {
const lightID = i + 1; const data = dataArray[i - 1];
const pwmElement = document.getElementById(`light${i}_pwm`); const briSlider = document.getElementById(`bri${i - 1}`);
const pwmElementTxt = document.getElementById(`light${i}_pwm_txt`); const briSliderVal = document.getElementById(`bri${i - 1}_val`);
if (pwmElement) { const onLinkOn = document.getElementById(`on${i - 1}_on`);
const url = `http://{{IP_ADDRESS}}/state?light=${lightID}`; const onLinkOff = document.getElementById(`on${i - 1}_off`);
fetch(url).then(response => response.json()).then(data => { const pwmElement = document.getElementById(`light${i - 1}_pwm`);
const pwmValue = ((Math.round((data.curpwm - ((data.curpwm >= {{PWM_MIN}}) ? {{PWM_MIN}} : 0)) / {{PWM_MAX}} * 10000) / 100).toFixed(2)); const pwmElementTxt = document.getElementById(`light${i - 1}_pwm_txt`);
//console.log('curpwm[' + i + '] = ' + data.curpwm + ' = ' + pwmValue);
pwmElement.innerText = pwmValue.toString(); briSlider.value = data.bri;
pwmElement.value = pwmValue; briSliderVal.innerHTML = (Math.round((data.bri * 100.0 / 255.0) * 100) / 100).toFixed(2);
pwmElementTxt.innerText = pwmValue.toString(); if (data.on == true) {
}).catch(error => console.error(error)); onLinkOn.classList.add('pure-button-primary');
} onLinkOff.classList.remove('pure-button-primary');
} } else {
onLinkOn.classList.remove('pure-button-primary');
onLinkOff.classList.add('pure-button-primary');
}
if (pwmElement) {
const pwmValue = ((Math.round((data.curpwm - ((data.curpwm >= {{PWM_MIN}}) ? {{PWM_MIN}} : 0)) / {{PWM_MAX}} * 10000) / 100).toFixed(2));
pwmElement.innerText = pwmValue.toString();
pwmElement.value = pwmValue;
pwmElementTxt.innerText = pwmValue.toString();
}
}
})
.catch(error => console.error(error));
} }
updatePWMValues();
setInterval(updatePWMValues, 5000); updateLightStateAndPWMValues();
setInterval(updateLightStateAndPWMValues, 5000);
// Suche nach allen Links auf der Seite mit IDs von on0_off bis on3_off // Suche nach allen Links auf der Seite mit IDs von on0_off bis on3_off
var links = document.querySelectorAll('[id^="on"][id$="_off"]'); var links = document.querySelectorAll('[id^="on"][id$="_off"]');
@ -410,7 +409,7 @@ links.forEach(function(link) {
// Sende die Anfrage im Hintergrund // Sende die Anfrage im Hintergrund
xhr.send(); xhr.send();
updateLightState(); updateLightStateAndPWMValues();
this.classList.add('pure-button-primary'); this.classList.add('pure-button-primary');
document.getElementById('on'+id+'_on').classList.remove('pure-button-primary'); document.getElementById('on'+id+'_on').classList.remove('pure-button-primary');
}); });
@ -463,7 +462,7 @@ links.forEach(function(link) {
// Sende die Anfrage im Hintergrund // Sende die Anfrage im Hintergrund
xhr.send(); xhr.send();
updateLightState(); updateLightStateAndPWMValues();
this.classList.add('pure-button-primary'); this.classList.add('pure-button-primary');
document.getElementById('on'+id+'_off').classList.remove('pure-button-primary'); document.getElementById('on'+id+'_off').classList.remove('pure-button-primary');
}); });

View file

@ -19,7 +19,6 @@
</tr> </tr>
</table> </table>
<br>
<a href="#" id="save-button" class="pure-button pure-button-primary" onclick="sendDataToServer();">save</a> <a href="#" id="save-button" class="pure-button pure-button-primary" onclick="sendDataToServer();">save</a>
</div> </div>
</div> <!-- end of tab-tde --> </div> <!-- end of tab-tde -->