diff -r 14322825cb3d -r 48f8f3fce7c0 www/js/mon_fermenter.js --- a/www/js/mon_fermenter.js Thu May 14 14:38:20 2020 +0200 +++ b/www/js/mon_fermenter.js Mon May 18 11:00:59 2020 +0200 @@ -46,11 +46,6 @@ var record = {}, blank = {}, ppayload = '', - newBase = false, - newProduct = false, - newSwitch = false, - newProfile = false, - schedule = 0, yl = 12, // Normal yeast temp range yh = 24, @@ -85,9 +80,7 @@ } return data; }, - loadError: function(jqXHR, status, error) { - $('#err').text(status + ' ' + error); - }, + loadError: function(jqXHR, status, error) { console.log(status + ' ' + error); }, }), profileSource = { datatype: 'json', @@ -114,8 +107,8 @@ empty['record'] = -1; empty['uuid'] = ''; empty['name'] = 'Wis profiel'; - empty['inittemp_lo'] = 20; - empty['inittemp_hi'] = 20; + empty['inittemp_lo'] = 20.0; + empty['inittemp_hi'] = 20.2; empty['fridgemode'] = 0; empty['totalsteps'] = 0; empty['duration'] = 0; @@ -220,166 +213,192 @@ dataAdapter = new $.jqx.dataAdapter(source, { loadComplete: function(records) { record = dataAdapter.records[0]; - var range, oline = (record.online) ? 'On-line' : 'Off-line'; - $('#info_uuid').html(record.uuid); - $('#info_system').html(record.node + '/' + record.alias); - $('#info_online').html(oline); - $('#info_beer').html(record.beercode + ' - ' + record.beername); - $('#info_mode').jqxDropDownList('selectItem', record.mode); - $('#info_stage').jqxDropDownList('selectItem', record.stage); - $('#info_profile').html(record.profile_name); + updateScreen(); blank['name'] = record.alias; blank['code'] = record.alias.toUpperCase(); blank['uuid'] = record.uuid; - if (record.profile_name == '') - $('#info_mode').jqxDropDownList('disableItem', 'PROFILE'); - else - $('#info_mode').jqxDropDownList('enableItem', 'PROFILE'); - $('#target_lo').val(record.setpoint_low); - $('#target_hi').val(record.setpoint_high); - if (record.online && ((record.mode == 'FRIDGE') || (record.mode == 'BEER'))) { - $('#target_lo').jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); - $('#target_hi').jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); - } else { - $('#target_lo').jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); - $('#target_hi').jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); - } + } + }); + + function updateScreen() { + $('#info_uuid').html(record.uuid); + $('#info_system').html(record.node + '/' + record.alias); - if (record.online && record.door_address && (record.door_state != '0')) { - $('#fermenter_doorled').html('
Door'); - } else { - $('#fermenter_doorled').html('
Door'); - } - if (record.online && record.light_address && (record.light_state != '0')) { - $('#fermenter_lightled').html('
Light'); - } else { - $('#fermenter_lightled').html('
Light'); - } + if (record.online) { + $('#info_online').html('On-line'); + $('#info_beer').html(record.beercode + ' - ' + record.beername); + $('#info_mode').jqxDropDownList('selectItem', record.mode); + $('#info_stage').jqxDropDownList('selectItem', record.stage); + if (record.door_address) { + if (record.door_state != '0') { + $('#fermenter_doorled').html('
Door'); + } else { + $('#fermenter_doorled').html('
Door'); + } + } + if (record.light_address) { + if (record.light_state != '0') { + $('#fermenter_lightled').html('
Light'); + } else { + $('#fermenter_lightled').html('
Light'); + } + } + if (record.mode != 'OFF') { + $('#fermenter_powerled').html('
Power'); + $('#select_beer').jqxDropDownList({ disabled: true }); + $('#select_beer').jqxDropDownList('clearSelection'); + $('#select_beer').hide(); + } else { + $('#fermenter_powerled').html('
Power'); + $('#select_beer').show(); + $('#select_beer').jqxDropDownList({ disabled: false }); + } + if (record.alarm != '0') { + $('#fermenter_alarmled').html('
Alarm'); + } else { + $('#fermenter_alarmled').html('
Alarm'); + } + + $('#target_lo').val(record.setpoint_low); + $('#target_hi').val(record.setpoint_high); + if ((record.mode == 'FRIDGE') || (record.mode == 'BEER')) { + $('#target_lo').jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); + $('#target_hi').jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); + } else { + $('#target_lo').jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); + $('#target_hi').jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); + } - if (record.online && (record.mode != 'OFF')) { - $('#fermenter_powerled').html('
Power'); - $('#select_beer').jqxDropDownList({ disabled: true }); - $('#select_beer').jqxDropDownList('clearSelection'); - $('#select_beer').hide(); - } else { - $('#fermenter_powerled').html('
Power'); - $('#select_beer').show(); - $('#select_beer').jqxDropDownList({ disabled: false }); - } - if (record.online && (record.alarm != '0')) { - $('#fermenter_alarmled').html('
Alarm'); - } else { - $('#fermenter_alarmled').html('
Alarm'); - } + $('.f_control_leds').show(); + if (record.heater_state != '0') { + $('#fermenter_led1').html('
Heat'); + } else { + $('#fermenter_led1').html('
Heat'); + } + if (record.cooler_state != '0') { + $('#fermenter_led2').html('
Cool'); + } else { + $('#fermenter_led2').html('
Cool'); + } + if (record.fan_state != '0') { + $('#fermenter_led3').html('
Fan'); + } else { + $('#fermenter_led3').html('
Fan'); + } + + if (record.mode == 'NONE') { + $('.f_control_switches').show(); + } else { + $('.f_control_switches').hide(); + } + if ((record.heater_state != '0') != $('#fermenter_toggle1').jqxSwitchButton('val')) + $('#fermenter_toggle1').val(record.heater_state != '0'); + if ((record.cooler_state != '0') != $('#fermenter_toggle2').jqxSwitchButton('val')) + $('#fermenter_toggle2').val(record.cooler_state != '0'); + if ((record.fan_state != '0') != $('#fermenter_toggle3').jqxSwitchButton('val')) + $('#fermenter_toggle3').val(record.fan_state != '0'); + + $('#info_profile').html(record.profile_name); + if (record.profile_name == '') + $('#info_mode').jqxDropDownList('disableItem', 'PROFILE'); + else + $('#info_mode').jqxDropDownList('enableItem', 'PROFILE'); - if (record.online && (record.heater_state != '0')) { - $('#fermenter_led1').html('
Heat'); - } else { - $('#fermenter_led1').html('
Heat'); - } - if (record.online && (record.cooler_state != '0')) { - $('#fermenter_led2').html('
Cool'); - } else { - $('#fermenter_led2').html('
Cool'); - } - if (record.online && (record.fan_state != '0')) { - $('#fermenter_led3').html('
Fan'); - } else { - $('#fermenter_led3').html('
Fan'); - } - if (record.online && (record.mode == 'NONE')) { - $('#fermenter_toggle1').jqxSwitchButton('enable'); - $('#fermenter_toggle2').jqxSwitchButton('enable'); - $('#fermenter_toggle3').jqxSwitchButton('enable'); - } else { - $('#fermenter_toggle1').jqxSwitchButton('disable'); - $('#fermenter_toggle2').jqxSwitchButton('disable'); - $('#fermenter_toggle3').jqxSwitchButton('disable'); - $('#fermenter_toggle1').val(record.heater_state != '0'); - $('#fermenter_toggle2').val(record.cooler_state != '0'); - $('#fermenter_toggle3').val(record.fan_state != '0'); - } - - if (record.online && (record.mode == 'PROFILE')) { - if (record.profile_state == 'OFF') { + if (record.mode == 'PROFILE') { + if (record.profile_state == 'OFF') { + $('#select_profile').show(); + $('#select_profile').jqxDropDownList({ disabled: false }); + $('#info_mode').jqxDropDownList({ disabled: false }); + $('#Profile1').jqxButton({ template: 'success', value: 'Starten' }); + $('#Profile1').show(); + $('#Profile2').hide(); + $('#status_profile').html(''); + } else if (record.profile_state == 'RUN') { + $('#select_profile').jqxDropDownList({ disabled: true }); + $('#select_profile').hide(); + $('#info_mode').jqxDropDownList({ disabled: true }); + $('#Profile1').jqxButton({ template: 'danger', value: 'Afbreken' }); + $('#Profile2').jqxButton({ template: 'primary', value: 'Pauze' }); + $('#Profile1').show(); + $('#Profile2').show(); + $('#status_profile').html('Profiel actief, ' + record.profile_percent + '% gereed'); + } else if (record.profile_state == 'PAUSE') { + $('#select_profile').jqxDropDownList({ disabled: true }); + $('#select_profile').hide(); + $('#info_mode').jqxDropDownList({ disabled: true }); + $('#Profile1').jqxButton({ template: 'danger', value: 'Afbreken' }); + $('#Profile2').jqxButton({ template: 'success', value: 'Doorgaan' }); + $('#Profile1').show(); + $('#Profile2').show(); + $('#status_profile').html('Profiel pauze, ' + record.profile_percent + '% gereed'); + } else if (record.profile_state == 'DONE') { + $('#select_profile').jqxDropDownList({ disabled: true }); + $('#select_profile').hide(); + $('#info_mode').jqxDropDownList({ disabled: true }); + $('#Profile1').jqxButton({ template: 'primary', value: 'Profiel Ok' }); + $('#Profile1').show(); + $('#Profile2').hide(); + $('#status_profile').html('Profiel is gereed'); + } + } else { $('#select_profile').show(); $('#select_profile').jqxDropDownList({ disabled: false }); $('#info_mode').jqxDropDownList({ disabled: false }); - $('#Profile1').jqxButton({ template: 'success', value: 'Starten' }); - $('#Profile1').show(); + $('#Profile1').hide(); $('#Profile2').hide(); $('#status_profile').html(''); - } else if (record.profile_state == 'RUN') { - $('#select_profile').jqxDropDownList({ disabled: true }); - $('#select_profile').hide(); - $('#info_mode').jqxDropDownList({ disabled: true }); - $('#Profile1').jqxButton({ template: 'danger', value: 'Afbreken' }); - $('#Profile2').jqxButton({ template: 'primary', value: 'Pauze' }); - $('#Profile1').show(); - $('#Profile2').show(); - $('#status_profile').html('Profiel actief, ' + record.profile_percent + '% gereed'); - } else if (record.profile_state == 'PAUSE') { - $('#select_profile').jqxDropDownList({ disabled: true }); - $('#select_profile').hide(); - $('#info_mode').jqxDropDownList({ disabled: true }); - $('#Profile1').jqxButton({ template: 'danger', value: 'Afbreken' }); - $('#Profile2').jqxButton({ template: 'success', value: 'Doorgaan' }); - $('#Profile1').show(); - $('#Profile2').show(); - $('#status_profile').html('Profiel pauze, ' + record.profile_percent + '% gereed'); - } else if (record.profile_state == 'DONE') { - $('#select_profile').jqxDropDownList({ disabled: true }); - $('#select_profile').hide(); - $('#info_mode').jqxDropDownList({ disabled: true }); - $('#Profile1').jqxButton({ template: 'primary', value: 'Profiel Ok' }); - $('#Profile1').show(); - $('#Profile2').hide(); - $('#status_profile').html('Profiel is gereed'); + } + + if (record.webcam_url != '') { + $('#Camera').show(); + } else { + $('#Camera').hide(); + } + + var yl = record.yeast_lo; + var yh = record.yeast_hi; + var range = { ranges: [{ startValue: 0, endValue: yl, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, + { startValue: yl, endValue: yh, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, + { startValue: yh, endValue: 45, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }]}; + $('#gaugeContainer_air').jqxGauge(range); + $('#gaugeContainer_beer').jqxGauge(range); + + $('#gaugeContainer_air').jqxGauge({ caption: { value: 'Lucht: ' + record.air_temperature.toFixed(3) }}); + $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); + if (record.air_state == 'OK') { + $('#gaugeContainer_air').jqxGauge({ disabled: false }); + } else { + $('#gaugeContainer_air').jqxGauge({ disabled: true }); } - } else { - $('#select_profile').show(); - $('#select_profile').jqxDropDownList({ disabled: false }); - $('#info_mode').jqxDropDownList({ disabled: false }); - $('#Profile1').hide(); - $('#Profile2').hide(); - $('#status_profile').html(''); - } - if (record.online && (record.webcam_url != '')) { - $('#Camera').show(); - } else { + $('#gaugeContainer_beer').jqxGauge({ caption: { value: 'Bier: ' + record.beer_temperature.toFixed(3) }}); + $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); + if (record.beer_state == 'OK') { + $('#gaugeContainer_beer').jqxGauge({ disabled: false }); + } else { + $('#gaugeContainer_beer').jqxGauge({ disabled: true }); + } + $('#gaugeContainer_chiller').jqxGauge({ value: record.chiller_temperature }); + if (record.chiller_state == 'OK') { + $('#gaugeContainer_chiller').jqxGauge({ disabled: false }); + } else { + $('#gaugeContainer_chiller').jqxGauge({ disabled: true }); + } + } else { // offline + $('#info_online').html('Off-line'); + $('#info_beer').html(''); + $('#info_mode').hide(); + $('#info_stage').hide(); + $('#select_beer').hide(); + $('#select_profile').hide(); + $('.f_display,.f_control_switches,.f_control_leds').hide(); + $('#fermenter_powerled').html('
Power'); + $('#fermenter_alarmled').html('
Alarm'); + $('#gaugeContainer_air').jqxGauge({ disabled: true }); + $('#gaugeContainer_beer').jqxGauge({ disabled: true }); + $('#gaugeContainer_chiller').jqxGauge({ disabled: true }); $('#Camera').hide(); } - - yl = record.yeast_lo; - yh = record.yeast_hi; - range = { ranges: [{ startValue: 0, endValue: yl, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, - { startValue: yl, endValue: yh, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, - { startValue: yh, endValue: 45, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }]}; - $('#gaugeContainer_air').jqxGauge(range); - $('#gaugeContainer_beer').jqxGauge(range); - - $('#gaugeContainer_air').jqxGauge({ caption: { value: 'Lucht: ' + record.air_temperature.toFixed(3) }}); - $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); - if (record.air_state == 'OK') { - $('#gaugeContainer_air').jqxGauge({ disabled: false }); - } else { - $('#gaugeContainer_air').jqxGauge({ disabled: true }); - } - $('#gaugeContainer_beer').jqxGauge({ caption: { value: 'Bier: ' + record.beer_temperature.toFixed(3) }}); - $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); - if (record.beer_state == 'OK') { - $('#gaugeContainer_beer').jqxGauge({ disabled: false }); - } else { - $('#gaugeContainer_beer').jqxGauge({ disabled: true }); - } - $('#gaugeContainer_chiller').jqxGauge({ value: record.chiller_temperature }); - if (record.chiller_state == 'OK') { - $('#gaugeContainer_chiller').jqxGauge({ disabled: false }); - } else { - $('#gaugeContainer_chiller').jqxGauge({ disabled: true }); - } - } - }); + } $('#select_beer').jqxDropDownList({ placeHolder: 'Kies bier:', @@ -429,114 +448,24 @@ $('#Profile1').hide(); // Hide these until they are needed. $('#Profile2').hide(); - function sendBase(stage, mode, tlo, thi) { - - console.log('sendBase(' + stage + ', ' + mode + ', ' + tlo + ', ' + thi + ')'); - var data = 'node=' + record.node + '&alias=' + record.alias + '&payload={"stage":"' + stage; - data += '","mode":"' + mode + '","setpoint":{"low":' + tlo + ',"high":' + thi + '}}'; - $.ajax({ - url: 'cmd_fermenter.php', - data: data, - type: 'POST', - success: function(data) {}, - error: function(jqXHR, textStatus, errorThrown) { console.log('sendBase() error'); } - }); - } - - function sendSwitch(sw1, sw2, sw3, sw4) { - - console.log('sendSwitch(' + sw1 + ', ' + sw2 + ', ' + sw3 + ', ' + sw4 + ')'); - var data = 'node=' + record.node + '&alias=' + record.alias + '&payload='; - data += '{"heater":{"state":' + sw1 + '},"cooler":{"state":' + sw2 + '},"fan":{"state":' + sw3 + '},"light":{"state":' + sw4 + '}}'; - $.ajax({ - url: 'cmd_fermenter.php', - data: data, - type: 'POST', - success: function(data) {}, - error: function(jqXHR, textStatus, errorThrown) { console.log('sendSwitch() error'); } - }); - } - - function sendProduct(code, name, uuid, yeast_lo, yeast_hi) { - - console.log('sendProduct(' + code + ', ' + name + ', ' + uuid + ', ' + yeast_lo + ', ' + yeast_hi + ')'); - var data = 'node=' + record.node + '&alias=' + record.alias + '&payload='; - data += '{"product":{"code":"' + code + '","name":"' + name + '","uuid":"' + uuid + '","yeast_lo":' + yeast_lo + ',"yeast_hi":' + yeast_hi + '}}'; - $.ajax({ - url: 'cmd_fermenter.php', - data: data, - type: 'POST', - success: function(data) {}, - error: function(jqXHR, textStatus, errorThrown) { console.log('sendProduct() error'); } - }); - } - - function sendProfile(payload) { - - console.log('sendProfile(' + payload + ')'); - var data = 'node=' + record.node + '&alias=' + record.alias + '&payload=' + payload; - $.ajax({ - url: 'cmd_fermenter.php', - data: data, - type: 'POST', - success: function(data) {}, - error: function(jqXHR, textStatus, errorThrown) { console.log('sendProfile() error'); } - }); - } - - // Get the data immediatly and then at regular intervals to refresh. dataAdapter.dataBind(); - setInterval(function() { - var skip = false; - if (newBase) { - sendBase(record.stage, record.mode, record.setpoint_low, record.setpoint_high); - newBase = false; - skip = true; - } - if (newSwitch) { - sendSwitch(record.heater_state, record.cooler_state, record.fan_state, record.light_state); - newSwitch = false; - skip = true; - } - if (newProduct) { - sendProduct(record.beercode, record.beername, record.beeruuid, record.yeast_lo, record.yeast_hi); - newProduct = false; - skip = true; - } - if (newProfile) { - sendProfile(ppayload); - newProfile = false; - skip = true; - } - if (skip) { - schedule = 4; // 2 seconds wait to get the results - } else { - if (schedule > 0) - schedule--; - } - - if (schedule <= 0) { - dataAdapter.dataBind(); - schedule = 20; - } - }, 500); $('#info_mode').on('select', function(event) { - var args = event.args; - if (args) { - record.mode = args.item.value; - $('#fermenter_toggle1').val(0); - $('#fermenter_toggle2').val(0); - $('#fermenter_toggle3').val(0); + if (event.args && event.args.item.value != record.mode) { + record.mode = event.args.item.value; + console.log('set mode ' + record.mode); + var msg = '{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","mode":"' + record.mode + '"}'; + websocket.send(msg); } - newBase = true; }); $('#info_stage').on('select', function(event) { - var args = event.args; - if (args) - record.stage = args.item.value; - newBase = true; + if (event.args && event.args.item.value != record.stage) { + record.stage = event.args.item.value; + console.log('set stage ' + record.stage); + var msg = '{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","stage":"' + record.stage + '"}'; + websocket.send(msg); + } }); $('#select_beer').on('select', function(event) { if (event.args) { @@ -547,7 +476,11 @@ record.beeruuid = datarecord.uuid; record.yeast_lo = datarecord.yeast_lo; record.yeast_hi = datarecord.yeast_hi; - newProduct = true; + console.log('set beer ' + record.beercode + ' ' + record.beername); + var msg = '{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + + '","beeruuid":"' + record.beeruuid + '","beercode":"' + record.beercode + '","beername":"' + record.beername + + '","yeast_lo":' + record.yeast_lo + ',"yeast_hi":' + record.yeast_hi + '}'; + websocket.send(msg); } }); $('#select_profile').on('select', function(event) { @@ -556,9 +489,9 @@ datarecord = profilelist.records[index], row, i; if (datarecord.record == -1) { - ppayload = '{"profile":null}'; + ppayload = '","profile":null}'; } else { - ppayload = '{"profile":{"uuid":"' + datarecord.uuid + '","name":"' + datarecord.name + '",'; + ppayload = '","profile":{"uuid":"' + datarecord.uuid + '","name":"' + datarecord.name + '",'; ppayload += '"inittemp":{"low":' + datarecord.inittemp_lo + ',"high":' + datarecord.inittemp_hi + '},'; ppayload += '"fridgemode":' + datarecord.fridgemode + ',"steps":['; for (i = 0; i < datarecord.steps.length; i++) { @@ -571,7 +504,8 @@ } ppayload += ']}}'; } - newProfile = true; + var msg = '{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + ppayload; + websocket.send(msg); } }); @@ -582,7 +516,9 @@ record.setpoint_high = record.setpoint_low; $('#target_hi').val(record.setpoint_high); } - newBase = true; + console.log('set setpoints ' + record.setpoint_low + ' ' + record.setpoint_high); + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + + '","setpoint_low":' + record.setpoint_low + ',"setpoint_high":' + record.setpoint_high + '}'); }); $('#target_hi').on('change', function(event) { record.setpoint_high = parseFloat(event.args.value); @@ -591,72 +527,64 @@ record.setpoint_low = record.setpoint_high; $('#target_lo').val(record.setpoint_low); } - newBase = true; + console.log('set setpoints ' + record.setpoint_low + ' ' + record.setpoint_high); + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + + '","setpoint_low":' + record.setpoint_low + ',"setpoint_high":' + record.setpoint_high + '}'); }); $('#fermenter_toggle1').on('checked', function(event) { - if (record.mode == 'NONE') { - record.heater_state = 0; - newSwitch = true; + if (record.mode == 'NONE' && record.heater_state != 0) { + console.log('set heater ' + $("#fermenter_toggle1").jqxSwitchButton('val')); + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","heater_state":0}'); } }); $('#fermenter_toggle1').on('unchecked', function(event) { - if (record.mode == 'NONE') { - record.heater_state = 100; - record.cooler_state = 0; - $('#fermenter_toggle2').val(0); - newSwitch = true; + if (record.mode == 'NONE' && record.heater_state == 0) { + console.log('set heater ' + $("#fermenter_toggle1").jqxSwitchButton('val')); + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","heater_state":100,"cooler_state":0}'); } }); $('#fermenter_toggle2').on('checked', function(event) { - if (record.mode == 'NONE') { - record.cooler_state = 0; - newSwitch = true; + if (record.mode == 'NONE' && record.cooler_state != 0) { + console.log('set cooler ' + $("#fermenter_toggle2").jqxSwitchButton('val')); + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","cooler_state":0}'); } }); $('#fermenter_toggle2').on('unchecked', function(event) { - if (record.mode == 'NONE') { - record.cooler_state = 100; - record.heater_state = 0; - $('#fermenter_toggle1').val(0); - newSwitch = true; + if (record.mode == 'NONE' & record.cooler_state == 0) { + console.log('set cooler ' + $("#fermenter_toggle2").jqxSwitchButton('val')); + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","cooler_state":100,"heater_state":0}'); } }); $('#fermenter_toggle3').on('checked', function(event) { - if (record.mode == 'NONE') { - record.fan_state = 0; - newSwitch = true; + if (record.mode == 'NONE' && record.fan_state != 0) { + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","fan_state":0}'); } }); $('#fermenter_toggle3').on('unchecked', function(event) { - if (record.mode == 'NONE') { - record.fan_state = 100; - newSwitch = true; + if (record.mode == 'NONE' && record.fan_state == 0) { + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","fan_state":100}'); } }); $('#Profile1').click(function() { if (record.mode == 'PROFILE') { if (record.profile_state == 'OFF') { - ppayload = '{"profile":{"command":"start"}}'; - newProfile = true; + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","profile":{"command":"start"}}'); } else if ((record.profile_state == 'RUN') || (record.profile_state == 'PAUSE')) { // Open a popup to confirm this action. $('#eventWindow').jqxWindow('open'); $('#delOk').click(function() { - ppayload = '{"profile":{"command":"abort"}}'; - newProfile = true; + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","profile":{"command":"abort"}}'); }); } else if (record.profile_state == 'DONE') { - ppayload = '{"profile":{"command":"done"}}'; - newProfile = true; + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","profile":{"command":"done"}}'); } } }); $('#Profile2').click(function() { if (record.mode == 'PROFILE') { if ((record.profile_state == 'RUN') || (record.profile_state == 'PAUSE')) { - ppayload = '{"profile":{"command":"pause"}}'; - newProfile = true; + websocket.send('{"device":"fermenters","node":"' + record.node + '","unit":"' + record.alias + '","profile":{"command":"pause"}}'); } } }); @@ -669,8 +597,61 @@ $('#Camera').jqxButton({ template: 'primary', width: '150px', theme: theme }); $('#Camera').click(function() { record.light_state = 100; - newSwitch = true; window.open(record.webcam_url); }); createAbortElements(); + + websocket.onmessage = function(evt) { + var msg = evt.data; + var obj = JSON.parse(msg); + + if (obj.device == "fermenters" && obj.node == record.node && obj.unit == record.alias) { + console.log('ws got this device ' + msg); + record.online = obj.online; + if (obj.online) { + record.beeruuid = obj.beeruuid; + record.beercode = obj.beercode; + record.beername = obj.beername; + record.yeast_lo = obj.yeast_lo; + record.yeast_hi = obj.yeast_hi; + record.air_state = obj.air_state; + record.air_temperature = obj.air_temperature; + record.beer_state = obj.beer_state; + record.beer_temperature = obj.beer_temperature; + record.chiller_state = obj.chiller_state; + record.chiller_temperature = obj.chiller_temperature; + record.heater_state = obj.heater_state; + record.cooler_state = obj.cooler_state; + record.fan_state = obj.fan_state; + if (obj.door_address) + record.door_state = obj.door_state; + if (obj.light_address) + record.light_state = obj.light_state; + if (obj.psu_address) + record.psu_state = obj.psu_state; + record.mode = obj.mode; + record.stage = obj.stage; + record.alarm = obj.alarm; + record.setpoint_low = obj.setpoint_low; + record.setpoint_high = obj.setpoint_high; + record.webcam_url = obj.webcam_url; + record.webcam_light = obj.webcam_light; + if (obj.profile_name) { + record.profile_uuid = obj.profile_uuid; + record.profile_name = obj.profile_name; + record.profile_state = obj.profile_state; + record.profile_percent = obj.profile_percent; + record.profile_inittemp_high = obj.profile_inittemp_high; + record.profile_inittemp_low = obj.profile_inittemp_low; + } else { + record.profile_uuid = ''; + record.profile_name = ''; + record.profile_state = ''; + record.profile_percent = 0; + } + } + updateScreen(); + } + ws_global(msg); + } });