Untitled
<!DOCTYPE html> <html> <head> <title>Smart Relay Control</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> .switch { position: relative; display: inline-block; width: 60px; height: 34px; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; transition: .4s; } .slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; transition: .4s; } input:checked + .slider { background-color: #2196F3; } input:checked + .slider:before { transform: translateX(26px); } .slider.round { border-radius: 34px; } .slider.round:before { border-radius: 50%; } </style> </head> <body> <h1>Relay Control</h1> <label class="switch"> <input type="checkbox" id="relay1" %REL1% onchange="controlRelay(1, this.checked)"> <span class="slider round"></span> </label> <label>Relay 1</label><br> <!-- Diğer röleler için aynı yapıyı tekrarla --> <script> // AJAX ile durum güncelleme function controlRelay(relayNum, state) { fetch(`/control?relay=${relayNum}&state=${state ? 'on' : 'off'}`) .then(response => response.json()) .then(data => updateUI(data)); } // WebSocket bağlantısı const socket = new WebSocket('ws://' + window.location.hostname + ':81'); socket.onmessage = function(event) { updateUI(JSON.parse(event.data)); }; // UI Güncelleme function updateUI(data) { document.getElementById('relay1').checked = data.relay1; // Diğer röleleri güncelle } </script> </body> </html>
Leave a Comment