218 url: url |
211 url: url |
219 }, |
212 }, |
220 dataAdapter = new $.jqx.dataAdapter(source, { |
213 dataAdapter = new $.jqx.dataAdapter(source, { |
221 loadComplete: function(records) { |
214 loadComplete: function(records) { |
222 record = dataAdapter.records[0]; |
215 record = dataAdapter.records[0]; |
223 var range, oline = (record.online) ? 'On-line' : 'Off-line'; |
216 updateScreen(); |
224 $('#info_uuid').html(record.uuid); |
|
225 $('#info_system').html(record.node + '/' + record.alias); |
|
226 $('#info_online').html(oline); |
|
227 $('#info_beer').html(record.beercode + ' - ' + record.beername); |
|
228 $('#info_mode').jqxDropDownList('selectItem', record.mode); |
|
229 $('#info_stage').jqxDropDownList('selectItem', record.stage); |
|
230 $('#info_profile').html(record.profile_name); |
|
231 blank['name'] = record.alias; |
217 blank['name'] = record.alias; |
232 blank['code'] = record.alias.toUpperCase(); |
218 blank['code'] = record.alias.toUpperCase(); |
233 blank['uuid'] = record.uuid; |
219 blank['uuid'] = record.uuid; |
234 if (record.profile_name == '') |
220 } |
235 $('#info_mode').jqxDropDownList('disableItem', 'PROFILE'); |
221 }); |
236 else |
222 |
237 $('#info_mode').jqxDropDownList('enableItem', 'PROFILE'); |
223 function updateScreen() { |
238 $('#target_lo').val(record.setpoint_low); |
224 $('#info_uuid').html(record.uuid); |
239 $('#target_hi').val(record.setpoint_high); |
225 $('#info_system').html(record.node + '/' + record.alias); |
240 if (record.online && ((record.mode == 'FRIDGE') || (record.mode == 'BEER'))) { |
226 |
241 $('#target_lo').jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); |
227 if (record.online) { |
242 $('#target_hi').jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); |
228 $('#info_online').html('On-line'); |
243 } else { |
229 $('#info_beer').html(record.beercode + ' - ' + record.beername); |
244 $('#target_lo').jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); |
230 $('#info_mode').jqxDropDownList('selectItem', record.mode); |
245 $('#target_hi').jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); |
231 $('#info_stage').jqxDropDownList('selectItem', record.stage); |
246 } |
232 if (record.door_address) { |
247 |
233 if (record.door_state != '0') { |
248 if (record.online && record.door_address && (record.door_state != '0')) { |
234 $('#fermenter_doorled').html('<div class="LEDyellow_on"></div>Door'); |
249 $('#fermenter_doorled').html('<div class="LEDyellow_on"></div>Door'); |
235 } else { |
250 } else { |
236 $('#fermenter_doorled').html('<div class="LEDyellow_off"></div>Door'); |
251 $('#fermenter_doorled').html('<div class="LEDyellow_off"></div>Door'); |
237 } |
252 } |
238 } |
253 if (record.online && record.light_address && (record.light_state != '0')) { |
239 if (record.light_address) { |
254 $('#fermenter_lightled').html('<div class="LEDyellow_on"></div>Light'); |
240 if (record.light_state != '0') { |
255 } else { |
241 $('#fermenter_lightled').html('<div class="LEDyellow_on"></div>Light'); |
256 $('#fermenter_lightled').html('<div class="LEDyellow_off"></div>Light'); |
242 } else { |
257 } |
243 $('#fermenter_lightled').html('<div class="LEDyellow_off"></div>Light'); |
258 |
244 } |
259 if (record.online && (record.mode != 'OFF')) { |
245 } |
260 $('#fermenter_powerled').html('<div class="LEDblue_on"></div>Power'); |
246 if (record.mode != 'OFF') { |
261 $('#select_beer').jqxDropDownList({ disabled: true }); |
247 $('#fermenter_powerled').html('<div class="LEDblue_on"></div>Power'); |
262 $('#select_beer').jqxDropDownList('clearSelection'); |
248 $('#select_beer').jqxDropDownList({ disabled: true }); |
263 $('#select_beer').hide(); |
249 $('#select_beer').jqxDropDownList('clearSelection'); |
264 } else { |
250 $('#select_beer').hide(); |
265 $('#fermenter_powerled').html('<div class="LEDblue_off"></div>Power'); |
251 } else { |
266 $('#select_beer').show(); |
252 $('#fermenter_powerled').html('<div class="LEDblue_off"></div>Power'); |
267 $('#select_beer').jqxDropDownList({ disabled: false }); |
253 $('#select_beer').show(); |
268 } |
254 $('#select_beer').jqxDropDownList({ disabled: false }); |
269 if (record.online && (record.alarm != '0')) { |
255 } |
270 $('#fermenter_alarmled').html('<div class="LEDred_on"></div>Alarm'); |
256 if (record.alarm != '0') { |
271 } else { |
257 $('#fermenter_alarmled').html('<div class="LEDred_on"></div>Alarm'); |
272 $('#fermenter_alarmled').html('<div class="LEDred_off"></div>Alarm'); |
258 } else { |
273 } |
259 $('#fermenter_alarmled').html('<div class="LEDred_off"></div>Alarm'); |
274 |
260 } |
275 if (record.online && (record.heater_state != '0')) { |
261 |
276 $('#fermenter_led1').html('<div class="LEDgreen_on"></div>Heat'); |
262 $('#target_lo').val(record.setpoint_low); |
277 } else { |
263 $('#target_hi').val(record.setpoint_high); |
278 $('#fermenter_led1').html('<div class="LEDgreen_off"></div>Heat'); |
264 if ((record.mode == 'FRIDGE') || (record.mode == 'BEER')) { |
279 } |
265 $('#target_lo').jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); |
280 if (record.online && (record.cooler_state != '0')) { |
266 $('#target_hi').jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); |
281 $('#fermenter_led2').html('<div class="LEDgreen_on"></div>Cool'); |
267 } else { |
282 } else { |
268 $('#target_lo').jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); |
283 $('#fermenter_led2').html('<div class="LEDgreen_off"></div>Cool'); |
269 $('#target_hi').jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); |
284 } |
270 } |
285 if (record.online && (record.fan_state != '0')) { |
271 |
286 $('#fermenter_led3').html('<div class="LEDgreen_on"></div>Fan'); |
272 $('.f_control_leds').show(); |
287 } else { |
273 if (record.heater_state != '0') { |
288 $('#fermenter_led3').html('<div class="LEDgreen_off"></div>Fan'); |
274 $('#fermenter_led1').html('<div class="LEDgreen_on"></div>Heat'); |
289 } |
275 } else { |
290 if (record.online && (record.mode == 'NONE')) { |
276 $('#fermenter_led1').html('<div class="LEDgreen_off"></div>Heat'); |
291 $('#fermenter_toggle1').jqxSwitchButton('enable'); |
277 } |
292 $('#fermenter_toggle2').jqxSwitchButton('enable'); |
278 if (record.cooler_state != '0') { |
293 $('#fermenter_toggle3').jqxSwitchButton('enable'); |
279 $('#fermenter_led2').html('<div class="LEDgreen_on"></div>Cool'); |
294 } else { |
280 } else { |
295 $('#fermenter_toggle1').jqxSwitchButton('disable'); |
281 $('#fermenter_led2').html('<div class="LEDgreen_off"></div>Cool'); |
296 $('#fermenter_toggle2').jqxSwitchButton('disable'); |
282 } |
297 $('#fermenter_toggle3').jqxSwitchButton('disable'); |
283 if (record.fan_state != '0') { |
298 $('#fermenter_toggle1').val(record.heater_state != '0'); |
284 $('#fermenter_led3').html('<div class="LEDgreen_on"></div>Fan'); |
299 $('#fermenter_toggle2').val(record.cooler_state != '0'); |
285 } else { |
300 $('#fermenter_toggle3').val(record.fan_state != '0'); |
286 $('#fermenter_led3').html('<div class="LEDgreen_off"></div>Fan'); |
301 } |
287 } |
302 |
288 |
303 if (record.online && (record.mode == 'PROFILE')) { |
289 if (record.mode == 'NONE') { |
304 if (record.profile_state == 'OFF') { |
290 $('.f_control_switches').show(); |
|
291 } else { |
|
292 $('.f_control_switches').hide(); |
|
293 } |
|
294 if ((record.heater_state != '0') != $('#fermenter_toggle1').jqxSwitchButton('val')) |
|
295 $('#fermenter_toggle1').val(record.heater_state != '0'); |
|
296 if ((record.cooler_state != '0') != $('#fermenter_toggle2').jqxSwitchButton('val')) |
|
297 $('#fermenter_toggle2').val(record.cooler_state != '0'); |
|
298 if ((record.fan_state != '0') != $('#fermenter_toggle3').jqxSwitchButton('val')) |
|
299 $('#fermenter_toggle3').val(record.fan_state != '0'); |
|
300 |
|
301 $('#info_profile').html(record.profile_name); |
|
302 if (record.profile_name == '') |
|
303 $('#info_mode').jqxDropDownList('disableItem', 'PROFILE'); |
|
304 else |
|
305 $('#info_mode').jqxDropDownList('enableItem', 'PROFILE'); |
|
306 |
|
307 if (record.mode == 'PROFILE') { |
|
308 if (record.profile_state == 'OFF') { |
|
309 $('#select_profile').show(); |
|
310 $('#select_profile').jqxDropDownList({ disabled: false }); |
|
311 $('#info_mode').jqxDropDownList({ disabled: false }); |
|
312 $('#Profile1').jqxButton({ template: 'success', value: 'Starten' }); |
|
313 $('#Profile1').show(); |
|
314 $('#Profile2').hide(); |
|
315 $('#status_profile').html(''); |
|
316 } else if (record.profile_state == 'RUN') { |
|
317 $('#select_profile').jqxDropDownList({ disabled: true }); |
|
318 $('#select_profile').hide(); |
|
319 $('#info_mode').jqxDropDownList({ disabled: true }); |
|
320 $('#Profile1').jqxButton({ template: 'danger', value: 'Afbreken' }); |
|
321 $('#Profile2').jqxButton({ template: 'primary', value: 'Pauze' }); |
|
322 $('#Profile1').show(); |
|
323 $('#Profile2').show(); |
|
324 $('#status_profile').html('Profiel actief, ' + record.profile_percent + '% gereed'); |
|
325 } else if (record.profile_state == 'PAUSE') { |
|
326 $('#select_profile').jqxDropDownList({ disabled: true }); |
|
327 $('#select_profile').hide(); |
|
328 $('#info_mode').jqxDropDownList({ disabled: true }); |
|
329 $('#Profile1').jqxButton({ template: 'danger', value: 'Afbreken' }); |
|
330 $('#Profile2').jqxButton({ template: 'success', value: 'Doorgaan' }); |
|
331 $('#Profile1').show(); |
|
332 $('#Profile2').show(); |
|
333 $('#status_profile').html('Profiel pauze, ' + record.profile_percent + '% gereed'); |
|
334 } else if (record.profile_state == 'DONE') { |
|
335 $('#select_profile').jqxDropDownList({ disabled: true }); |
|
336 $('#select_profile').hide(); |
|
337 $('#info_mode').jqxDropDownList({ disabled: true }); |
|
338 $('#Profile1').jqxButton({ template: 'primary', value: 'Profiel Ok' }); |
|
339 $('#Profile1').show(); |
|
340 $('#Profile2').hide(); |
|
341 $('#status_profile').html('Profiel is gereed'); |
|
342 } |
|
343 } else { |
305 $('#select_profile').show(); |
344 $('#select_profile').show(); |
306 $('#select_profile').jqxDropDownList({ disabled: false }); |
345 $('#select_profile').jqxDropDownList({ disabled: false }); |
307 $('#info_mode').jqxDropDownList({ disabled: false }); |
346 $('#info_mode').jqxDropDownList({ disabled: false }); |
308 $('#Profile1').jqxButton({ template: 'success', value: 'Starten' }); |
347 $('#Profile1').hide(); |
309 $('#Profile1').show(); |
|
310 $('#Profile2').hide(); |
348 $('#Profile2').hide(); |
311 $('#status_profile').html(''); |
349 $('#status_profile').html(''); |
312 } else if (record.profile_state == 'RUN') { |
350 } |
313 $('#select_profile').jqxDropDownList({ disabled: true }); |
351 |
314 $('#select_profile').hide(); |
352 if (record.webcam_url != '') { |
315 $('#info_mode').jqxDropDownList({ disabled: true }); |
353 $('#Camera').show(); |
316 $('#Profile1').jqxButton({ template: 'danger', value: 'Afbreken' }); |
354 } else { |
317 $('#Profile2').jqxButton({ template: 'primary', value: 'Pauze' }); |
355 $('#Camera').hide(); |
318 $('#Profile1').show(); |
356 } |
319 $('#Profile2').show(); |
357 |
320 $('#status_profile').html('Profiel actief, ' + record.profile_percent + '% gereed'); |
358 var yl = record.yeast_lo; |
321 } else if (record.profile_state == 'PAUSE') { |
359 var yh = record.yeast_hi; |
322 $('#select_profile').jqxDropDownList({ disabled: true }); |
360 var range = { ranges: [{ startValue: 0, endValue: yl, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, |
323 $('#select_profile').hide(); |
361 { startValue: yl, endValue: yh, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, |
324 $('#info_mode').jqxDropDownList({ disabled: true }); |
362 { startValue: yh, endValue: 45, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }]}; |
325 $('#Profile1').jqxButton({ template: 'danger', value: 'Afbreken' }); |
363 $('#gaugeContainer_air').jqxGauge(range); |
326 $('#Profile2').jqxButton({ template: 'success', value: 'Doorgaan' }); |
364 $('#gaugeContainer_beer').jqxGauge(range); |
327 $('#Profile1').show(); |
365 |
328 $('#Profile2').show(); |
366 $('#gaugeContainer_air').jqxGauge({ caption: { value: 'Lucht: ' + record.air_temperature.toFixed(3) }}); |
329 $('#status_profile').html('Profiel pauze, ' + record.profile_percent + '% gereed'); |
367 $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); |
330 } else if (record.profile_state == 'DONE') { |
368 if (record.air_state == 'OK') { |
331 $('#select_profile').jqxDropDownList({ disabled: true }); |
369 $('#gaugeContainer_air').jqxGauge({ disabled: false }); |
332 $('#select_profile').hide(); |
370 } else { |
333 $('#info_mode').jqxDropDownList({ disabled: true }); |
371 $('#gaugeContainer_air').jqxGauge({ disabled: true }); |
334 $('#Profile1').jqxButton({ template: 'primary', value: 'Profiel Ok' }); |
372 } |
335 $('#Profile1').show(); |
373 $('#gaugeContainer_beer').jqxGauge({ caption: { value: 'Bier: ' + record.beer_temperature.toFixed(3) }}); |
336 $('#Profile2').hide(); |
374 $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); |
337 $('#status_profile').html('Profiel is gereed'); |
375 if (record.beer_state == 'OK') { |
338 } |
376 $('#gaugeContainer_beer').jqxGauge({ disabled: false }); |
339 } else { |
377 } else { |
340 $('#select_profile').show(); |
378 $('#gaugeContainer_beer').jqxGauge({ disabled: true }); |
341 $('#select_profile').jqxDropDownList({ disabled: false }); |
379 } |
342 $('#info_mode').jqxDropDownList({ disabled: false }); |
380 $('#gaugeContainer_chiller').jqxGauge({ value: record.chiller_temperature }); |
343 $('#Profile1').hide(); |
381 if (record.chiller_state == 'OK') { |
344 $('#Profile2').hide(); |
382 $('#gaugeContainer_chiller').jqxGauge({ disabled: false }); |
345 $('#status_profile').html(''); |
383 } else { |
346 } |
384 $('#gaugeContainer_chiller').jqxGauge({ disabled: true }); |
347 if (record.online && (record.webcam_url != '')) { |
385 } |
348 $('#Camera').show(); |
386 } else { // offline |
349 } else { |
387 $('#info_online').html('Off-line'); |
|
388 $('#info_beer').html(''); |
|
389 $('#info_mode').hide(); |
|
390 $('#info_stage').hide(); |
|
391 $('#select_beer').hide(); |
|
392 $('#select_profile').hide(); |
|
393 $('.f_display,.f_control_switches,.f_control_leds').hide(); |
|
394 $('#fermenter_powerled').html('<div class="LEDblue_off"></div>Power'); |
|
395 $('#fermenter_alarmled').html('<div class="LEDred_on"></div>Alarm'); |
|
396 $('#gaugeContainer_air').jqxGauge({ disabled: true }); |
|
397 $('#gaugeContainer_beer').jqxGauge({ disabled: true }); |
|
398 $('#gaugeContainer_chiller').jqxGauge({ disabled: true }); |
350 $('#Camera').hide(); |
399 $('#Camera').hide(); |
351 } |
400 } |
352 |
401 } |
353 yl = record.yeast_lo; |
|
354 yh = record.yeast_hi; |
|
355 range = { ranges: [{ startValue: 0, endValue: yl, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, |
|
356 { startValue: yl, endValue: yh, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, |
|
357 { startValue: yh, endValue: 45, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }]}; |
|
358 $('#gaugeContainer_air').jqxGauge(range); |
|
359 $('#gaugeContainer_beer').jqxGauge(range); |
|
360 |
|
361 $('#gaugeContainer_air').jqxGauge({ caption: { value: 'Lucht: ' + record.air_temperature.toFixed(3) }}); |
|
362 $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); |
|
363 if (record.air_state == 'OK') { |
|
364 $('#gaugeContainer_air').jqxGauge({ disabled: false }); |
|
365 } else { |
|
366 $('#gaugeContainer_air').jqxGauge({ disabled: true }); |
|
367 } |
|
368 $('#gaugeContainer_beer').jqxGauge({ caption: { value: 'Bier: ' + record.beer_temperature.toFixed(3) }}); |
|
369 $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); |
|
370 if (record.beer_state == 'OK') { |
|
371 $('#gaugeContainer_beer').jqxGauge({ disabled: false }); |
|
372 } else { |
|
373 $('#gaugeContainer_beer').jqxGauge({ disabled: true }); |
|
374 } |
|
375 $('#gaugeContainer_chiller').jqxGauge({ value: record.chiller_temperature }); |
|
376 if (record.chiller_state == 'OK') { |
|
377 $('#gaugeContainer_chiller').jqxGauge({ disabled: false }); |
|
378 } else { |
|
379 $('#gaugeContainer_chiller').jqxGauge({ disabled: true }); |
|
380 } |
|
381 } |
|
382 }); |
|
383 |
402 |
384 $('#select_beer').jqxDropDownList({ |
403 $('#select_beer').jqxDropDownList({ |
385 placeHolder: 'Kies bier:', |
404 placeHolder: 'Kies bier:', |
386 theme: theme, |
405 theme: theme, |
387 source: productlist, |
406 source: productlist, |
427 $('#Profile1').jqxButton({ template: 'info', width: '150px', height: 24, theme: theme }); |
446 $('#Profile1').jqxButton({ template: 'info', width: '150px', height: 24, theme: theme }); |
428 $('#Profile2').jqxButton({ template: 'info', width: '150px', height: 24, theme: theme }); |
447 $('#Profile2').jqxButton({ template: 'info', width: '150px', height: 24, theme: theme }); |
429 $('#Profile1').hide(); // Hide these until they are needed. |
448 $('#Profile1').hide(); // Hide these until they are needed. |
430 $('#Profile2').hide(); |
449 $('#Profile2').hide(); |
431 |
450 |
432 function sendBase(stage, mode, tlo, thi) { |
|
433 |
|
434 console.log('sendBase(' + stage + ', ' + mode + ', ' + tlo + ', ' + thi + ')'); |
|
435 var data = 'node=' + record.node + '&alias=' + record.alias + '&payload={"stage":"' + stage; |
|
436 data += '","mode":"' + mode + '","setpoint":{"low":' + tlo + ',"high":' + thi + '}}'; |
|
437 $.ajax({ |
|
438 url: 'cmd_fermenter.php', |
|
439 data: data, |
|
440 type: 'POST', |
|
441 success: function(data) {}, |
|
442 error: function(jqXHR, textStatus, errorThrown) { console.log('sendBase() error'); } |
|
443 }); |
|
444 } |
|
445 |
|
446 function sendSwitch(sw1, sw2, sw3, sw4) { |
|
447 |
|
448 console.log('sendSwitch(' + sw1 + ', ' + sw2 + ', ' + sw3 + ', ' + sw4 + ')'); |
|
449 var data = 'node=' + record.node + '&alias=' + record.alias + '&payload='; |
|
450 data += '{"heater":{"state":' + sw1 + '},"cooler":{"state":' + sw2 + '},"fan":{"state":' + sw3 + '},"light":{"state":' + sw4 + '}}'; |
|
451 $.ajax({ |
|
452 url: 'cmd_fermenter.php', |
|
453 data: data, |
|
454 type: 'POST', |
|
455 success: function(data) {}, |
|
456 error: function(jqXHR, textStatus, errorThrown) { console.log('sendSwitch() error'); } |
|
457 }); |
|
458 } |
|
459 |
|
460 function sendProduct(code, name, uuid, yeast_lo, yeast_hi) { |
|
461 |
|
462 console.log('sendProduct(' + code + ', ' + name + ', ' + uuid + ', ' + yeast_lo + ', ' + yeast_hi + ')'); |
|
463 var data = 'node=' + record.node + '&alias=' + record.alias + '&payload='; |
|
464 data += '{"product":{"code":"' + code + '","name":"' + name + '","uuid":"' + uuid + '","yeast_lo":' + yeast_lo + ',"yeast_hi":' + yeast_hi + '}}'; |
|
465 $.ajax({ |
|
466 url: 'cmd_fermenter.php', |
|
467 data: data, |
|
468 type: 'POST', |
|
469 success: function(data) {}, |
|
470 error: function(jqXHR, textStatus, errorThrown) { console.log('sendProduct() error'); } |
|
471 }); |
|
472 } |
|
473 |
|
474 function sendProfile(payload) { |
|
475 |
|
476 console.log('sendProfile(' + payload + ')'); |
|
477 var data = 'node=' + record.node + '&alias=' + record.alias + '&payload=' + payload; |
|
478 $.ajax({ |
|
479 url: 'cmd_fermenter.php', |
|
480 data: data, |
|
481 type: 'POST', |
|
482 success: function(data) {}, |
|
483 error: function(jqXHR, textStatus, errorThrown) { console.log('sendProfile() error'); } |
|
484 }); |
|
485 } |
|
486 |
|
487 |
|
488 // Get the data immediatly and then at regular intervals to refresh. |
451 // Get the data immediatly and then at regular intervals to refresh. |
489 dataAdapter.dataBind(); |
452 dataAdapter.dataBind(); |
490 setInterval(function() { |
|
491 var skip = false; |
|
492 if (newBase) { |
|
493 sendBase(record.stage, record.mode, record.setpoint_low, record.setpoint_high); |
|
494 newBase = false; |
|
495 skip = true; |
|
496 } |
|
497 if (newSwitch) { |
|
498 sendSwitch(record.heater_state, record.cooler_state, record.fan_state, record.light_state); |
|
499 newSwitch = false; |
|
500 skip = true; |
|
501 } |
|
502 if (newProduct) { |
|
503 sendProduct(record.beercode, record.beername, record.beeruuid, record.yeast_lo, record.yeast_hi); |
|
504 newProduct = false; |
|
505 skip = true; |
|
506 } |
|
507 if (newProfile) { |
|
508 sendProfile(ppayload); |
|
509 newProfile = false; |
|
510 skip = true; |
|
511 } |
|
512 if (skip) { |
|
513 schedule = 4; // 2 seconds wait to get the results |
|
514 } else { |
|
515 if (schedule > 0) |
|
516 schedule--; |
|
517 } |
|
518 |
|
519 if (schedule <= 0) { |
|
520 dataAdapter.dataBind(); |
|
521 schedule = 20; |
|
522 } |
|
523 }, 500); |
|
524 |
453 |
525 $('#info_mode').on('select', function(event) { |
454 $('#info_mode').on('select', function(event) { |
526 var args = event.args; |
455 if (event.args && event.args.item.value != record.mode) { |
527 if (args) { |
456 record.mode = event.args.item.value; |
528 record.mode = args.item.value; |
457 console.log('set mode ' + record.mode); |
529 $('#fermenter_toggle1').val(0); |
458 var msg = '{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","mode":"' + record.mode + '"}'; |
530 $('#fermenter_toggle2').val(0); |
459 websocket.send(msg); |
531 $('#fermenter_toggle3').val(0); |
460 } |
532 } |
|
533 newBase = true; |
|
534 }); |
461 }); |
535 $('#info_stage').on('select', function(event) { |
462 $('#info_stage').on('select', function(event) { |
536 var args = event.args; |
463 if (event.args && event.args.item.value != record.stage) { |
537 if (args) |
464 record.stage = event.args.item.value; |
538 record.stage = args.item.value; |
465 console.log('set stage ' + record.stage); |
539 newBase = true; |
466 var msg = '{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","stage":"' + record.stage + '"}'; |
|
467 websocket.send(msg); |
|
468 } |
540 }); |
469 }); |
541 $('#select_beer').on('select', function(event) { |
470 $('#select_beer').on('select', function(event) { |
542 if (event.args) { |
471 if (event.args) { |
543 var index = event.args.index, |
472 var index = event.args.index, |
544 datarecord = productlist.records[index]; |
473 datarecord = productlist.records[index]; |
545 record.beercode = datarecord.code; |
474 record.beercode = datarecord.code; |
546 record.beername = datarecord.name; |
475 record.beername = datarecord.name; |
547 record.beeruuid = datarecord.uuid; |
476 record.beeruuid = datarecord.uuid; |
548 record.yeast_lo = datarecord.yeast_lo; |
477 record.yeast_lo = datarecord.yeast_lo; |
549 record.yeast_hi = datarecord.yeast_hi; |
478 record.yeast_hi = datarecord.yeast_hi; |
550 newProduct = true; |
479 console.log('set beer ' + record.beercode + ' ' + record.beername); |
|
480 var msg = '{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + |
|
481 '","beeruuid":"' + record.beeruuid + '","beercode":"' + record.beercode + '","beername":"' + record.beername + |
|
482 '","yeast_lo":' + record.yeast_lo + ',"yeast_hi":' + record.yeast_hi + '}'; |
|
483 websocket.send(msg); |
551 } |
484 } |
552 }); |
485 }); |
553 $('#select_profile').on('select', function(event) { |
486 $('#select_profile').on('select', function(event) { |
554 if (event.args) { |
487 if (event.args) { |
555 var index = event.args.index, |
488 var index = event.args.index, |
556 datarecord = profilelist.records[index], |
489 datarecord = profilelist.records[index], |
557 row, i; |
490 row, i; |
558 if (datarecord.record == -1) { |
491 if (datarecord.record == -1) { |
559 ppayload = '{"profile":null}'; |
492 ppayload = '","profile":null}'; |
560 } else { |
493 } else { |
561 ppayload = '{"profile":{"uuid":"' + datarecord.uuid + '","name":"' + datarecord.name + '",'; |
494 ppayload = '","profile":{"uuid":"' + datarecord.uuid + '","name":"' + datarecord.name + '",'; |
562 ppayload += '"inittemp":{"low":' + datarecord.inittemp_lo + ',"high":' + datarecord.inittemp_hi + '},'; |
495 ppayload += '"inittemp":{"low":' + datarecord.inittemp_lo + ',"high":' + datarecord.inittemp_hi + '},'; |
563 ppayload += '"fridgemode":' + datarecord.fridgemode + ',"steps":['; |
496 ppayload += '"fridgemode":' + datarecord.fridgemode + ',"steps":['; |
564 for (i = 0; i < datarecord.steps.length; i++) { |
497 for (i = 0; i < datarecord.steps.length; i++) { |
565 row = datarecord.steps[i]; |
498 row = datarecord.steps[i]; |
566 if (i > 0) |
499 if (i > 0) |
569 ppayload += ',"target_lo":' + row['target_lo'] + ',"target_hi":' + row['target_hi']; |
502 ppayload += ',"target_lo":' + row['target_lo'] + ',"target_hi":' + row['target_hi']; |
570 ppayload += ',"fridgemode":' + row['fridgemode'] + ',"name":"' + row['name'] + '"}'; |
503 ppayload += ',"fridgemode":' + row['fridgemode'] + ',"name":"' + row['name'] + '"}'; |
571 } |
504 } |
572 ppayload += ']}}'; |
505 ppayload += ']}}'; |
573 } |
506 } |
574 newProfile = true; |
507 var msg = '{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + ppayload; |
|
508 websocket.send(msg); |
575 } |
509 } |
576 }); |
510 }); |
577 |
511 |
578 $('#target_lo').on('change', function(event) { |
512 $('#target_lo').on('change', function(event) { |
579 record.setpoint_low = parseFloat(event.args.value); |
513 record.setpoint_low = parseFloat(event.args.value); |
580 // Keep the high target above the low. |
514 // Keep the high target above the low. |
581 if (record.setpoint_low > record.setpoint_high) { |
515 if (record.setpoint_low > record.setpoint_high) { |
582 record.setpoint_high = record.setpoint_low; |
516 record.setpoint_high = record.setpoint_low; |
583 $('#target_hi').val(record.setpoint_high); |
517 $('#target_hi').val(record.setpoint_high); |
584 } |
518 } |
585 newBase = true; |
519 console.log('set setpoints ' + record.setpoint_low + ' ' + record.setpoint_high); |
|
520 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + |
|
521 '","setpoint_low":' + record.setpoint_low + ',"setpoint_high":' + record.setpoint_high + '}'); |
586 }); |
522 }); |
587 $('#target_hi').on('change', function(event) { |
523 $('#target_hi').on('change', function(event) { |
588 record.setpoint_high = parseFloat(event.args.value); |
524 record.setpoint_high = parseFloat(event.args.value); |
589 // Keep the low target below the high. |
525 // Keep the low target below the high. |
590 if (record.setpoint_high < record.setpoint_low) { |
526 if (record.setpoint_high < record.setpoint_low) { |
591 record.setpoint_low = record.setpoint_high; |
527 record.setpoint_low = record.setpoint_high; |
592 $('#target_lo').val(record.setpoint_low); |
528 $('#target_lo').val(record.setpoint_low); |
593 } |
529 } |
594 newBase = true; |
530 console.log('set setpoints ' + record.setpoint_low + ' ' + record.setpoint_high); |
|
531 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + |
|
532 '","setpoint_low":' + record.setpoint_low + ',"setpoint_high":' + record.setpoint_high + '}'); |
595 }); |
533 }); |
596 |
534 |
597 $('#fermenter_toggle1').on('checked', function(event) { |
535 $('#fermenter_toggle1').on('checked', function(event) { |
598 if (record.mode == 'NONE') { |
536 if (record.mode == 'NONE' && record.heater_state != 0) { |
599 record.heater_state = 0; |
537 console.log('set heater ' + $("#fermenter_toggle1").jqxSwitchButton('val')); |
600 newSwitch = true; |
538 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","heater_state":0}'); |
601 } |
539 } |
602 }); |
540 }); |
603 $('#fermenter_toggle1').on('unchecked', function(event) { |
541 $('#fermenter_toggle1').on('unchecked', function(event) { |
604 if (record.mode == 'NONE') { |
542 if (record.mode == 'NONE' && record.heater_state == 0) { |
605 record.heater_state = 100; |
543 console.log('set heater ' + $("#fermenter_toggle1").jqxSwitchButton('val')); |
606 record.cooler_state = 0; |
544 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","heater_state":100,"cooler_state":0}'); |
607 $('#fermenter_toggle2').val(0); |
|
608 newSwitch = true; |
|
609 } |
545 } |
610 }); |
546 }); |
611 $('#fermenter_toggle2').on('checked', function(event) { |
547 $('#fermenter_toggle2').on('checked', function(event) { |
612 if (record.mode == 'NONE') { |
548 if (record.mode == 'NONE' && record.cooler_state != 0) { |
613 record.cooler_state = 0; |
549 console.log('set cooler ' + $("#fermenter_toggle2").jqxSwitchButton('val')); |
614 newSwitch = true; |
550 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","cooler_state":0}'); |
615 } |
551 } |
616 }); |
552 }); |
617 $('#fermenter_toggle2').on('unchecked', function(event) { |
553 $('#fermenter_toggle2').on('unchecked', function(event) { |
618 if (record.mode == 'NONE') { |
554 if (record.mode == 'NONE' & record.cooler_state == 0) { |
619 record.cooler_state = 100; |
555 console.log('set cooler ' + $("#fermenter_toggle2").jqxSwitchButton('val')); |
620 record.heater_state = 0; |
556 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","cooler_state":100,"heater_state":0}'); |
621 $('#fermenter_toggle1').val(0); |
|
622 newSwitch = true; |
|
623 } |
557 } |
624 }); |
558 }); |
625 $('#fermenter_toggle3').on('checked', function(event) { |
559 $('#fermenter_toggle3').on('checked', function(event) { |
626 if (record.mode == 'NONE') { |
560 if (record.mode == 'NONE' && record.fan_state != 0) { |
627 record.fan_state = 0; |
561 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","fan_state":0}'); |
628 newSwitch = true; |
|
629 } |
562 } |
630 }); |
563 }); |
631 $('#fermenter_toggle3').on('unchecked', function(event) { |
564 $('#fermenter_toggle3').on('unchecked', function(event) { |
632 if (record.mode == 'NONE') { |
565 if (record.mode == 'NONE' && record.fan_state == 0) { |
633 record.fan_state = 100; |
566 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","fan_state":100}'); |
634 newSwitch = true; |
|
635 } |
567 } |
636 }); |
568 }); |
637 $('#Profile1').click(function() { |
569 $('#Profile1').click(function() { |
638 if (record.mode == 'PROFILE') { |
570 if (record.mode == 'PROFILE') { |
639 if (record.profile_state == 'OFF') { |
571 if (record.profile_state == 'OFF') { |
640 ppayload = '{"profile":{"command":"start"}}'; |
572 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","profile":{"command":"start"}}'); |
641 newProfile = true; |
|
642 } else if ((record.profile_state == 'RUN') || (record.profile_state == 'PAUSE')) { |
573 } else if ((record.profile_state == 'RUN') || (record.profile_state == 'PAUSE')) { |
643 // Open a popup to confirm this action. |
574 // Open a popup to confirm this action. |
644 $('#eventWindow').jqxWindow('open'); |
575 $('#eventWindow').jqxWindow('open'); |
645 $('#delOk').click(function() { |
576 $('#delOk').click(function() { |
646 ppayload = '{"profile":{"command":"abort"}}'; |
577 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","profile":{"command":"abort"}}'); |
647 newProfile = true; |
|
648 }); |
578 }); |
649 } else if (record.profile_state == 'DONE') { |
579 } else if (record.profile_state == 'DONE') { |
650 ppayload = '{"profile":{"command":"done"}}'; |
580 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","profile":{"command":"done"}}'); |
651 newProfile = true; |
|
652 } |
581 } |
653 } |
582 } |
654 }); |
583 }); |
655 $('#Profile2').click(function() { |
584 $('#Profile2').click(function() { |
656 if (record.mode == 'PROFILE') { |
585 if (record.mode == 'PROFILE') { |
657 if ((record.profile_state == 'RUN') || (record.profile_state == 'PAUSE')) { |
586 if ((record.profile_state == 'RUN') || (record.profile_state == 'PAUSE')) { |
658 ppayload = '{"profile":{"command":"pause"}}'; |
587 websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","profile":{"command":"pause"}}'); |
659 newProfile = true; |
|
660 } |
588 } |
661 } |
589 } |
662 }); |
590 }); |
663 |
591 |
664 // The chart button. |
592 // The chart button. |