diff -r ecfcb1104b54 -r 8b3c86124a08 www/js/fermenter.js --- a/www/js/fermenter.js Mon Apr 15 17:06:15 2024 +0200 +++ b/www/js/fermenter.js Tue Apr 16 16:03:47 2024 +0200 @@ -141,13 +141,13 @@ { name: 'alarm', map: 'metric>alarm', type: 'int' }, { name: 'setpoint_high', map: 'metric>setpoint>high' }, { name: 'setpoint_low', map: 'metric>setpoint>low' }, - { name: 'profile_uuid', type: 'string' }, - { name: 'profile_name', type: 'string' }, - { name: 'profile_state', type: 'string' }, - { name: 'profile_percent', type: 'int' }, - { name: 'profile_inittemp_high', type: 'float' }, - { name: 'profile_inittemp_low', type: 'float' }, - { name: 'profile_steps', type: 'string' }, + { name: 'profile_uuid', map: 'metric>profile>uuid' }, + { name: 'profile_name', map: 'metric>profile>name' }, + { name: 'profile_state', map: 'metric>profile>state', type: 'string' }, + { name: 'profile_percent', map: 'metric>profile>percent', type: 'int' }, + { name: 'profile_inittemp_high', map: 'metric>profile>inittemp>high', type: 'float' }, + { name: 'profile_inittemp_low', map: 'metric>profile>inittemp>low', type: 'float' }, + { name: 'profile_steps', map: 'metric>profile>steps', type: 'string' }, { name: 'stage', map: 'metric>stage', type: 'string' }, { name: 'beeruuid', map: 'metric>product>uuid' } ], @@ -162,6 +162,7 @@ }); function updateScreen() { + console.log('mode ' + record.mode + ' profile ' + record.profile_state + ' name ' + record.profile_name); $('#room_thb').html(global.room_temp + '°C  ' + global.room_hum + '% humidity'); $('#info_system').html(record.unit); $('#info_beer').html(record.beercode + ' - ' + record.beername); @@ -186,126 +187,126 @@ } else { $('#fermenter_powerled').html('
Power'); } - 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.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'); - } + $('#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.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'); + $('.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 == 'PROFILE') { - if (record.profile_state == 'OFF') { - $('#info_mode').jqxDropDownList({ disabled: false }); - $('#Profile1').jqxButton({ template: 'success', value: 'Starten' }); - $('#Profile1').show(); - $('#Profile2').hide(); - $('#status_profile').html(''); - } else if (record.profile_state == 'RUN') { - $('#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') { - $('#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') { - $('#info_mode').jqxDropDownList({ disabled: true }); - $('#Profile1').jqxButton({ template: 'primary', value: 'Profiel Ok' }); - $('#Profile1').show(); - $('#Profile2').hide(); - $('#status_profile').html('Profiel is gereed'); - } - } else { + 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.mode == 'PROFILE') { + if (record.profile_state == 'OFF') { $('#info_mode').jqxDropDownList({ disabled: false }); - $('#Profile1').hide(); + $('#Profile1').jqxButton({ template: 'success', value: 'Starten' }); + $('#Profile1').show(); $('#Profile2').hide(); $('#status_profile').html(''); + } else if (record.profile_state == 'RUN') { + $('#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') { + $('#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') { + $('#info_mode').jqxDropDownList({ disabled: true }); + $('#Profile1').jqxButton({ template: 'primary', value: 'Profiel Ok' }); + $('#Profile1').show(); + $('#Profile2').hide(); + $('#status_profile').html('Profiel is gereed'); } + } else { + $('#info_mode').jqxDropDownList({ disabled: false }); + $('#Profile1').hide(); + $('#Profile2').hide(); + $('#status_profile').html(''); + } - 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 }, + 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(range); + $('#gaugeContainer_beer').jqxGauge(range); - if (record.air_temperature !== undefined) { - $('#gaugeContainer_air').jqxGauge({ caption: { value: 'Air: ' + 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 }); - } - if (record.beer_temperature !== undefined) { - $('#gaugeContainer_beer').jqxGauge({ caption: { value: 'Beer: ' + 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 }); - } - if (record.chiller_temperature !== undefined) { - $('#gaugeContainer_chiller').jqxGauge({ value: record.chiller_temperature }); - } - if (record.chiller_state == 'OK') { - $('#gaugeContainer_chiller').jqxGauge({ disabled: false }); - } else { - $('#gaugeContainer_chiller').jqxGauge({ disabled: true }); - } + if (record.air_temperature !== undefined) { + $('#gaugeContainer_air').jqxGauge({ caption: { value: 'Air: ' + 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 }); + } + if (record.beer_temperature !== undefined) { + $('#gaugeContainer_beer').jqxGauge({ caption: { value: 'Beer: ' + 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 }); + } + if (record.chiller_temperature !== undefined) { + $('#gaugeContainer_chiller').jqxGauge({ value: record.chiller_temperature }); + } + if (record.chiller_state == 'OK') { + $('#gaugeContainer_chiller').jqxGauge({ disabled: false }); + } else { + $('#gaugeContainer_chiller').jqxGauge({ disabled: true }); + } } $('#gaugeContainer_air').jqxGauge(gaugeoptions); @@ -331,7 +332,7 @@ $('#Profile1').hide(); // Hide these until they are needed. $('#Profile2').hide(); - // Get the data immediatly and then at regular intervals to refresh. + // Get the data immediatly and then via websockets to refresh. dataAdapter.dataBind(); globalData.dataBind(); @@ -438,15 +439,27 @@ var msg = evt.data; var obj = JSON.parse(msg); - console.log('ws got ' + msg); +// console.log('ws got ' + msg); if (obj.ping == 1) { - console.log('ws got ping'); +// console.log('ws got ping'); websocket.send('{"pong":1}'); } + if (obj.type == 'global') { + console.log('ws got global ' + msg); + global.name = obj.name; + global.node = obj.node; + global.os = obj.os; + global.os_version = obj.os_version; + global.FW = obj.FW; + global.room_temp = obj.THB.temperature; + global.room_hum = obj.THB.humidity; + updateScreen(); + } + if (obj.type == 'fermenter' && obj.unit == record.unit) { - console.log('ws got this device ' + msg); +// console.log('ws got this device ' + msg); record.beeruuid = obj.metric.product.uuid; record.beercode = obj.metric.product.code; record.beername = obj.metric.product.name; @@ -475,15 +488,15 @@ record.alarm = obj.metric.alarm; record.setpoint_low = obj.metric.setpoint.low; record.setpoint_high = obj.metric.setpoint.high; - if (obj.profile) { - 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; + if (obj.metric.profile) { + record.profile_uuid = obj.metric.profile.uuid; + record.profile_name = obj.metric.profile.name; + record.profile_state = obj.metric.profile.state; + record.profile_percent = obj.metric.profile.percent; + record.profile_inittemp_high = obj.metric.profile.inittemp.high; + record.profile_inittemp_low = obj.metric.profile.inittemp.low; } else { - record.profile_uuid = ''; + record.profile_uuid = 'Haha'; record.profile_name = ''; record.profile_state = ''; record.profile_percent = 0;