--- a/www/js/mon_node.js Sun May 24 12:12:34 2020 +0200 +++ b/www/js/mon_node.js Thu May 28 14:23:14 2020 +0200 @@ -23,7 +23,8 @@ $(document).ready(function() { - var url = 'getnode.php?uuid="' + my_uuid + '"', + var record = {}, + url = 'getnode.php?uuid="' + my_uuid + '"', source = { datatype: 'json', datafields: [ @@ -55,50 +56,78 @@ }, dataAdapter = new $.jqx.dataAdapter(source, { loadComplete: function(records) { - var record = dataAdapter.records[0], - oline = (record.online) ? 'On-line' : 'Off-line', - html = '<div id="node_table">'; - html += '<table style="width: 100%; padding: 10px;">'; - html += '<tr><th colspan=2>Systeem overzicht</th></tr>'; - html += '<tr><td>Uuid</td><td>' + record.uuid + '</td></tr>'; - html += '<tr><td>Systeem</td><td>' + record.node + '</td></tr>'; - html += '<tr><td>Online</td><td>' + oline + '</td></tr>'; - html += '<tr><td>Type</td><td>' + record.group_id + '</td></tr>'; - html += '<tr><td>Eerst gezien</td><td>' + record.firstseen + '</td></tr>'; - html += '<tr><td>Laatst gezien</td><td>' + record.lastseen + '</td></tr>'; + record = dataAdapter.records[0]; + updateScreen(); + } + }); + + function updateScreen() { + var oline = (record.online) ? 'On-line' : 'Off-line', + html = '<div id="node_table">'; + html += '<table style="width: 100%; padding: 10px;">'; + html += '<tr><th colspan=2>Systeem overzicht</th></tr>'; + html += '<tr><td>Uuid</td><td>' + record.uuid + '</td></tr>'; + html += '<tr><td>Systeem</td><td>' + record.node + '</td></tr>'; + html += '<tr><td>Online</td><td>' + oline + '</td></tr>'; + html += '<tr><td>Type</td><td>' + record.group_id + '</td></tr>'; + html += '<tr><td>Eerst gezien</td><td>' + record.firstseen + '</td></tr>'; + html += '<tr><td>Laatst gezien</td><td>' + record.lastseen + '</td></tr>'; + if (record.online) { html += '<tr><td>Hardware maker</td><td>' + record.hardwaremake + '</td></tr>'; html += '<tr><td>Hardware model</td><td>' + record.hardwaremodel + '</td></tr>'; html += '<tr><td>OS</td><td>' + record.os + ' versie: ' + record.os_version + '</td></tr>'; html += '<tr><td>Firmware</td><td>' + record.firmware + '</td></tr>'; + + if (record.temperature > 0) + html += '<tr><td>Temperatuur</td><td>' + record.temperature.toFixed(1) + '°C</td></tr>'; + if (record.humidity > 0) + html += '<tr><td>Vochtigheid</td><td>' + record.humidity.toFixed(1) + '%</td></tr>'; + if (record.barometer > 0) + html += '<tr><td>Luchtdruk</td><td>' + record.barometer.toFixed(0) + '</td></tr>'; + if ((record.gps_latitude != 0) && (record.gps_longitude != 0)) + html += '<tr><td>GPS</td><td>' + record.gps_latitude + ' ' + record.gps_longitude + ' ' + record.gps_altitude + '</td></tr>'; + html += '<tr><td>Netwerk</td><td>' + record.net_ifname + ' ' + record.net_address + '</td></tr>'; + if (record.net_rssi < 0) + html += '<tr><td>WiFi signaal</td><td>' + record.net_rssi + '</td></tr>'; + html += '<tr><td>Update interval</td><td>' + record.up_interval + ' sec.</td></tr>'; + } + html += '</<table>'; + html += '</div>'; + $('#ContentPanel').html(html); + } + + // Get the data. + dataAdapter.dataBind(); + + websocket.onmessage = function(evt) { + var msg = evt.data; + var obj = JSON.parse(msg); + if (! obj.device && obj.node == record.node) { + record.online = obj.online; if (record.online) { - if (record.temperature > 0) { - html += '<tr><td>Temperatuur</td><td>' + record.temperature.toFixed(1) + '°C</td></tr>'; - } - if (record.humidity > 0) { - html += '<tr><td>Vochtigheid</td><td>' + record.humidity.toFixed(1) + '%</td></tr>'; - } - if (record.barometer > 0) { - html += '<tr><td>Luchtdruk</td><td>' + record.barometer.toFixed(0) + '</td></tr>'; - } - if ((record.gps_latitude != 0) && (record.gps_longitude != 0)) { - html += '<tr><td>GPS</td><td>' + record.gps_latitude + ' ' + record.gps_longitude + ' ' + record.gps_altitude + '</td></tr>'; - } - html += '<tr><td>Netwerk</td><td>' + record.net_ifname + ' ' + record.net_address + '</td></tr>'; - if (record.net_rssi < 0) { - html += '<tr><td>WiFi signaal</td><td>' + record.net_rssi + '</td></tr>'; - } - html += '<tr><td>Update interval</td><td>' + record.up_interval + ' sec.</td></tr>'; + record.group_id = obj.group_id; + record.lastseen = obj.lastseen; + if (obj.hardwaremake) + record.harwaremake = obj.hardwaremake; + if (obj.hardwaremodel) + record.hardwaremodel = obj.hardwaremodel; + if (obj.os) + record.os = obj.os; + if (obj.os_version) + record.os_version = obj.os_version; + if (obj.firmware) + record.firmware = obj.firmware; + if (obj.temperature) + record.temperature = obj.temperature; + if (obj.humidity) + record.humidity = obj.humidity; + record.net_ifname = obj.net_ifname; + record.net_address = obj.net_address; + if (obj.net_rssi) + record.net_rssi = obj.net_rssi; } - html += '</<table>'; - html += '</div>'; - $('#ContentPanel').html(html); + updateScreen(); } - }); - - // Get the data immediatly and then at regular intervals to refresh. - dataAdapter.dataBind(); - setInterval(function() { - dataAdapter.dataBind(); - }, 30000); + } });