www/js/mon_co2meter.js

changeset 678
14322825cb3d
parent 526
2991acd35cdb
child 680
0bb48333d133
equal deleted inserted replaced
677:6e82fece1f8f 678:14322825cb3d
1 /***************************************************************************** 1 /*****************************************************************************
2 * Copyright (C) 2019 2 * Copyright (C) 2019-2020
3 * 3 *
4 * Michiel Broek <mbroek at mbse dot eu> 4 * Michiel Broek <mbroek at mbse dot eu>
5 * 5 *
6 * This file is part of BMS 6 * This file is part of BMS
7 * 7 *
16 * General Public License for more details. 16 * General Public License for more details.
17 * 17 *
18 * You should have received a copy of the GNU General Public License 18 * You should have received a copy of the GNU General Public License
19 * along with ThermFerm; see the file COPYING. If not, write to the Free 19 * along with ThermFerm; see the file COPYING. If not, write to the Free
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
21 *****************************************************************************/ 21 */
22 22
23 23
24 $(document).ready(function() { 24 $(document).ready(function() {
25 25
26 var record = {}, 26 var record = {},
27 blank = {}, 27 blank = {},
28 newProduct = false,
29 schedule = 0,
30 28
31 productSource = { 29 productSource = {
32 datatype: 'json', 30 datatype: 'json',
33 cache: false, 31 cache: false,
34 datafields: [ 32 datafields: [
166 $('#gaugeContainer_temperature').jqxGauge(gaugeoptionst); 164 $('#gaugeContainer_temperature').jqxGauge(gaugeoptionst);
167 $('#gaugeContainer_temperature').jqxGauge({ caption: { value: 'Temp: 00.000' }}); 165 $('#gaugeContainer_temperature').jqxGauge({ caption: { value: 'Temp: 00.000' }});
168 $('#gaugeContainer_pressure').jqxGauge(gaugeoptionsp); 166 $('#gaugeContainer_pressure').jqxGauge(gaugeoptionsp);
169 $('#gaugeContainer_pressure').jqxGauge({ caption: { value: 'Bar: 00.000' }}); 167 $('#gaugeContainer_pressure').jqxGauge({ caption: { value: 'Bar: 00.000' }});
170 168
171 function sendProduct(code, name, uuid) { 169 // Get the data
172
173 console.log('sendProduct(' + code + ', ' + name + ', ' + uuid + ')');
174 var data = 'uuid=' + record.uuid + '&beeruuid=' + uuid + '&beercode=' + code + '&beername=' + name;
175 $.ajax({
176 url: 'cmd_co2meter.php',
177 data: data,
178 type: 'POST',
179 success: function(data) {},
180 error: function(jqXHR, textStatus, errorThrown) { console.log('sendProduct() error'); }
181 });
182 }
183
184 // Get the data immediatly and then at regular intervals to refresh.
185 dataAdapter.dataBind(); 170 dataAdapter.dataBind();
186 setInterval(function() {
187 var skip = false;
188 if (newProduct) {
189 sendProduct(record.beercode, record.beername, record.beeruuid);
190 newProduct = false;
191 skip = true;
192 }
193 if (skip) {
194 schedule = 4; // 2 seconds wait to get the results
195 } else {
196 if (schedule > 0)
197 schedule--;
198 }
199
200 if (schedule <= 0) {
201 dataAdapter.dataBind();
202 schedule = 20;
203 }
204 }, 500);
205 171
206 $('#select_beer').on('select', function(event) { 172 $('#select_beer').on('select', function(event) {
207 if (event.args) { 173 if (event.args) {
208 var index = event.args.index, 174 var index = event.args.index,
209 datarecord = productlist.records[index]; 175 datarecord = productlist.records[index];
210 record.beercode = datarecord.code; 176 record.beercode = datarecord.code;
211 record.beername = datarecord.name; 177 record.beername = datarecord.name;
212 record.beeruuid = datarecord.uuid; 178 record.beeruuid = datarecord.uuid;
213 newProduct = true; 179 console.log('Select beer ' + record.beercode + ', ' + record.beername);
180 var msg = '{"device":"co2meters","node":"' + record.node + '","unit":"' + record.alias +
181 '","beeruuid":"' + record.beeruuid + '","beercode":"' + record.beercode + '","beername":"' + record.beername + '"}';
182 websocket.send(msg);
214 } 183 }
215 }); 184 });
216 185
217 // The chart button. 186 // The chart button.
218 $('#FLog').jqxButton({ template: 'primary', width: '150px', theme: theme }); 187 $('#FLog').jqxButton({ template: 'primary', width: '150px', theme: theme });
219 $('#FLog').click(function() { 188 $('#FLog').click(function() {
220 window.open('log_co2pressure.php?code=' + record.beercode + '&name=' + record.beername); 189 window.open('log_co2pressure.php?code=' + record.beercode + '&name=' + record.beername);
221 }); 190 });
191
192 websocket.onmessage = function(evt) {
193 var msg = evt.data;
194 var obj = JSON.parse(msg);
195 if (obj.device == "co2meters" && obj.node == record.node && obj.unit == record.alias) {
196 console.log('ws got this device ' + msg);
197 if (obj.online) {
198 $('#info_online').html('On-line');
199 } else {
200 $('#info_online').html('Off-line');
201 }
202 $('#info_beer').html(obj.beercode + ' - ' + obj.beername);
203 $('#info_mode').html(obj.mode);
204 if (obj.online && obj.mode != 'OFF') {
205 $('#co2meter_powerled').html('<div class="LEDblue_on"></div>Power');
206 $('#select_beer').jqxDropDownList({ disabled: true });
207 $('#select_beer').jqxDropDownList('clearSelection');
208 $('#select_beer').hide();
209 } else {
210 $('#co2meter_powerled').html('<div class="LEDblue_off"></div>Power');
211 $('#select_beer').show();
212 $('#select_beer').jqxDropDownList({ disabled: false });
213 }
214 if (obj.online && (obj.alarm != '0')) {
215 $('#co2meter_alarmled').html('<div class="LEDred_on"></div>Alarm');
216 } else {
217 $('#co2meter_alarmled').html('<div class="LEDred_off"></div>Alarm');
218 }
219
220 $('#gaugeContainer_temperature').jqxGauge({ caption: { value: 'Temp: ' + obj.temperature.toFixed(3) }});
221 $('#gaugeContainer_temperature').jqxGauge({ value: obj.temperature });
222 $('#gaugeContainer_pressure').jqxGauge({ caption: { value: 'Bar: ' + obj.pressure_bar.toFixed(2) }});
223 $('#gaugeContainer_pressure').jqxGauge({ value: obj.pressure_bar });
224
225 }
226 ws_global(msg);
227 }
222 }); 228 });

mercurial