{"version":3,"file":"legoino-device-information.min.js","sources":["../src/ensureAllParameters.js","../src/devices/OpenBio6.js","../src/index.js","../src/devices/OpenBio.js","../src/devices/OpenSpectro.js","../src/devices/SimpleSpectro.js","../src/devices/Solar2015.js","../src/devices/Beemos.js","../src/devices/Computer.js"],"sourcesContent":["'use strict';\n\n/**\n * add possibly missing parameters in the array\n * @param {*} device\n * @returns\n */\nfunction ensureAllParameters(device) {\n  const existingParameters = device.parameters;\n  let currentPosition = 0;\n  const parameters = [];\n  for (let parameter of existingParameters) {\n    if (!parameter.label) {\n      throw new Error(`missing label for ${JSON.stringify(parameter)}`);\n    }\n    const labelPosition = labelToNumber(parameter.label);\n    if (labelPosition < currentPosition) {\n      throw new Error(\n        `expectedPosition > currentPosition for ${JSON.stringify(parameter)}`,\n      );\n    }\n    while (labelPosition > currentPosition) {\n      parameters.push(undefined);\n      currentPosition++;\n    }\n    parameters.push(parameter);\n    currentPosition++;\n  }\n  device.parameters = parameters;\n  return device;\n}\n\nfunction labelToNumber(code) {\n  let value = 0;\n  for (let char of code) {\n    value *= 26;\n    value += char.charCodeAt(0) - 64;\n  }\n  return value - 1;\n}\n\nmodule.exports = ensureAllParameters;\n","'use strict';\n\nmodule.exports = {\n  name: 'Open bioreactor v6',\n  kind: 'OpenBio6',\n  description: '',\n  url: '',\n  id: '6',\n  numberParameters: 68,\n  numberLogParameters: 26,\n  parameters: [\n    {\n      label: 'A',\n      variable: 'externalTemperature1',\n      name: 'T° EXT 1',\n      description: 'External temperature 1',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n\n    {\n      label: 'B',\n      variable: 'externalTemperature2',\n      name: 'T° EXT 2',\n      description: 'External temperature 2',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n\n    {\n      label: 'C',\n      variable: 'pcbTemp',\n      name: 'T° PCB',\n      description: 'Temperature of the bioreactor circuit',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n\n    {\n      label: 'D',\n      variable: 'pidTemp',\n      name: 'Pid',\n      description: 'PID absolute value',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'E',\n      variable: 'targetTemp',\n      name: 'T° target',\n      description: 'Target temperature',\n      factor: 100,\n      unit: '°C',\n      writable: true,\n    },\n\n    {\n      label: 'F',\n      variable: 'weight',\n      name: 'Weight',\n      description: 'Weight of the bioreactor tank, in internal value',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'G',\n      variable: 'grWeight',\n      name: 'Weight (g)',\n      description: 'Weight of the bioreactor tank, in gr if calibrated',\n      factor: 1,\n      unit: 'g',\n      writable: false,\n    },\n\n    {\n      label: 'H',\n      variable: 'weightLastEvent',\n      name: 'Weight since last event',\n      description: 'Save the last weight to avoid problems when there are power outages',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'I',\n      variable: 'maxWeight',\n      name: 'Weight max',\n      description: 'Weight max in internal unit',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'J',\n    },\n\n    {\n      label: 'K',\n    },\n\n    {\n      label: 'L',\n    },\n\n    {\n      label: 'M',\n    },\n\n    {\n      label: 'N',\n    },\n\n    {\n      label: 'O',\n    },\n\n    {\n      label: 'P',\n    },\n\n    {\n      label: 'Q',\n    },\n\n    {\n      label: 'R',\n    },\n\n    {\n      label: 'S',\n    },\n\n    {\n      label: 'T',\n    },\n\n    {\n      label: 'U',\n    },\n\n    {\n      label: 'V',\n    },\n\n    {\n      label: 'W',\n      variable: 'currentStep',\n      name: 'Current step',\n      description: 'Current step in the pipeline',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'X',\n      variable: 'currentWaitTime',\n      name: 'Current wait time',\n      description: 'Current step wait time',\n      factor: 1,\n      unit: 'min',\n      writable: false,\n    },\n\n    {\n      label: 'Y',\n      variable: 'error',\n      name: 'Error',\n      unit: '',\n      factor: 1,\n      description: `\n            bit 0: pcb probe, 1: liquid probe 1, 2: liquid probe 2, 3: pcb temperature, 4: liquid temperature 1, 5: liquid temperature 2, 6: target temp. range, 7: weight range`,\n      writable: true,\n      flags: {\n        0: 'Pcb probe failed (one wire not answering)',\n        1: 'Liquid probe in the top failed (one wire not answering)',\n        2: 'Liquid probe in the bottom failed (one wire not answering)',\n        3: 'Temperature of PCB is out of range',\n        4: 'Temperature of liquid in the top is out of range',\n        5: 'Temperature of liquid in the bottom is out of range',\n        6: 'Target temperature is out of range',\n        7: 'Weight out of range',\n      },\n    },\n\n    {\n      label: 'Z',\n      variable: 'status',\n      name: 'Status',\n      description: `Status of the Bioreactor, the bits of this integer code\n        for the state of specific elements of the reactor (eg. motor ON/OFF, PUMP ON/OFF etc.).\n        bits: 0: pid, 1: stepper, 2: pump 1, 3: pump 2, 4: pump 3, 5: pump 4, 6: ph, 7: gas, 8: sedimentation, 9: filling, 10: emptying, 11: ph calibration, 12: acid addition, 13: base addition`,\n      factor: 1,\n      unit: '',\n      writable: true,\n      flags: {\n        0: 'Heating control',\n        1: 'Agitation control',\n        2: 'Food control 1',\n        3: 'Food control 2',\n        4: 'Food control 3',\n        5: 'Food control 4',\n        6: 'pH control',\n        7: 'Gas control',\n        8: 'Sedimentation stage',\n        9: 'Filling pump',\n        10: 'Emptying pump',\n        11: 'pH calibration',\n        12: 'Acid addition',\n        13: 'Base addition',\n      },\n    },\n\n    {\n      label: 'AA',\n      variable: 'stepperSpeed',\n      name: 'Stepper speed',\n      description: '',\n      factor: 1,\n      unit: 'RPM',\n      writable: true,\n    },\n\n    {\n      label: 'AB',\n      variable: 'stepperSteps',\n      name: 'Stepper steps',\n      description:\n        'Number of step before changing direction. 1 tour = 200 steps',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n\n    {\n      label: 'AC',\n      variable: 'stepperOffDelay',\n      name: 'Stepper off delay',\n      description: 'Time to wait in (s) before between stirring periods',\n      factor: 1,\n      unit: 's',\n      writable: true,\n    },\n\n    {\n      label: 'AD',\n      variable: 'weightFactor',\n      name: 'Weight factor',\n      description: 'Factor allowing to convert the internal weight value to g',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'AE',\n      variable: 'weightOffset',\n      name: 'Weight offset',\n      description: '',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'AF',\n      variable: 'sedimentationTime',\n      name: 'Sedimentation time',\n      description: 'Time to wait in (minutes) to wait without rotation before emptying',\n      factor: 1,\n      unit: 'min',\n      writable: false,\n    },\n\n    {\n      label: 'AG',\n      variable: 'fillingTime',\n      name: 'Filling time',\n      description: 'Time to wait in (minutes) to stay in the filled state',\n      factor: 1,\n      unit: 'min',\n      writable: false,\n    },\n\n    {\n      label: 'AH',\n    },\n\n    {\n      label: 'AI',\n    },\n\n    {\n      label: 'AJ',\n    },\n\n    {\n      label: 'AK',\n    },\n\n    {\n      label: 'AL',\n    },\n\n    {\n      label: 'AM',\n    },\n\n    {\n      label: 'AN',\n    },\n\n    {\n      label: 'AO',\n    },\n\n    {\n      label: 'AP',\n    },\n\n    {\n      label: 'AQ',\n    },\n\n    {\n      label: 'AR',\n    },\n\n    {\n      label: 'AS',\n    },\n\n    {\n      label: 'AT',\n    },\n\n    {\n      label: 'AU',\n    },\n\n    {\n      label: 'AV',\n    },\n\n    {\n      label: 'AW',\n    },\n\n    {\n      label: 'AX',\n    },\n\n    {\n      label: 'AY',\n    },\n\n    {\n      label: 'AZ',\n      variable: 'enable',\n      name: 'Enable',\n      description: 'bits: 0: pid, 1: stepper, 2: pump 1, 3: pump 2, 4: pumpo 3, 5: pump 4',\n      factor: 1,\n      unit: '',\n      writable: true,\n      flags: {\n        0: 'pid',\n        1: 'stepper',\n        2: 'output 1',\n        3: 'output 2',\n        4: 'output 3',\n        5: 'output 4',\n      },\n    },\n\n    {\n      label: 'BA',\n      variable: 'step01',\n      name: 'Step 1',\n      description: 'Step 1',\n    },\n\n    {\n      label: 'BB',\n      variable: 'step02',\n      name: 'Step 2',\n      description: 'Step 2',\n    },\n\n    {\n      label: 'BC',\n      variable: 'step03',\n      name: 'Step 3',\n      description: 'Step 3',\n    },\n\n    {\n      label: 'BD',\n      variable: 'step04',\n      name: 'Step 4',\n      description: 'Step 4',\n    },\n\n    {\n      label: 'BE',\n      variable: 'step05',\n      name: 'Step 5',\n      description: 'Step 5',\n    },\n\n    {\n      label: 'BF',\n      variable: 'step06',\n      name: 'Step 6',\n      description: 'Step 6',\n    },\n\n    {\n      label: 'BG',\n      variable: 'step07',\n      name: 'Step 7',\n      description: 'Step 7',\n    },\n\n    {\n      label: 'BH',\n      variable: 'step08',\n      name: 'Step 8',\n      description: 'Step 8',\n    },\n\n    {\n      label: 'BI',\n      variable: 'step09',\n      name: 'Step 9',\n      description: 'Step 9',\n    },\n\n    {\n      label: 'BJ',\n      variable: 'step10',\n      name: 'Step 10',\n      description: 'Step 10',\n    },\n\n    {\n      label: 'BK',\n      variable: 'step11',\n      name: 'Step 11',\n      description: 'Step 11',\n    },\n\n    {\n      label: 'BL',\n      variable: 'step12',\n      name: 'Step 12',\n      description: 'Step 12',\n    },\n\n    {\n      label: 'BM',\n      variable: 'step13',\n      name: 'Step 13',\n      description: 'Step 13',\n    },\n\n    {\n      label: 'BN',\n      variable: 'step14',\n      name: 'Step 14',\n      description: 'Step 14',\n    },\n\n    {\n      label: 'BO',\n      variable: 'step15',\n      name: 'Step 15',\n      description: 'Step 15',\n    },\n\n    {\n      label: 'BP',\n      variable: 'step16',\n      name: 'Step 16',\n      description: 'Step 16',\n    },\n  ],\n  events: [\n    {\n      id: 1,\n      name: 'Arduino boot',\n      description: '',\n    },\n    {\n      id: 2,\n      name: 'Set safe mode',\n      description: '',\n    },\n    {\n      id: 3,\n      name: 'Status enable',\n      description:\n        'bits: 0: pid, 1: stepper, 2: pump 1, 3: pump 2, 4: pumpo 3, 5: pump 4, 6: ph, 7: gas, 8: sedimentation, 9: filling, 10: emptying, 11: ph calibration, 12: acid addition, 13: base addition',\n      flags: {\n        0: 'Heating control',\n        1: 'Agitation control',\n        2: 'Food control 1',\n        3: 'Food control 2',\n        4: 'Food control 3',\n        5: 'Food control 4',\n        6: 'pH control',\n        7: 'Gas control',\n        8: 'Sedimentation stage',\n        9: 'Filling pump',\n        10: 'Emptying pump',\n        11: 'pH calibration',\n        12: 'Acid addition',\n        13: 'Base addition',\n      },\n    },\n    {\n      id: 4,\n      name: 'Status disable',\n      description:\n        'bits: 0: pid, 1: stepper, 2: pump 1, 3: pump 2, 4: pumpo 3, 5: pump 4, 6: ph, 7: gas, 8: sedimentation, 9: filling, 10: emptying, 11: ph calibration, 12: acid addition, 13: base addition',\n      flags: {\n        0: 'Heating control',\n        1: 'Agitation control',\n        2: 'Food control 1',\n        3: 'Food control 2',\n        4: 'Food control 3',\n        5: 'Food control 4',\n        6: 'pH control',\n        7: 'Gas control',\n        8: 'Sedimentation stage',\n        9: 'Filling pump',\n        10: 'Emptying pump',\n        11: 'pH calibration',\n        12: 'Acid addition',\n        13: 'Base addition',\n      },\n    },\n    {\n      id: 6,\n      name: 'Error: failed',\n      description: `\n            bit 0: pcb probe, 1: liquid probe 1, 2: liquid probe 2, 3: pcb temperature, 4: liquid temperature 1, 5: liquid temperature 2, 6: target temp. range, 7: weight range`,\n      writable: true,\n      flags: {\n        0: 'Pcb probe failed (one wire not answering)',\n        1: 'Liquid probe in the top failed (one wire not answering)',\n        2: 'Liquid probe in the bottom failed (one wire not answering)',\n        3: 'Temperature of PCB is out of range',\n        4: 'Temperature of liquid in the top is out of range',\n        5: 'Temperature of liquid in the bottom is out of range',\n        6: 'Target temperature is out of range',\n        7: 'Weight out of range',\n      },\n    },\n    {\n      id: 7,\n      name: 'Error: recover',\n      description: `\n            bit 0: pcb probe, 1: liquid probe 1, 2: liquid probe 2, 3: pcb temperature, 4: liquid temperature 1, 5: liquid temperature 2, 6: target temp. range, 7: weight range`,\n      writable: true,\n      flags: {\n        0: 'Pcb probe failed (one wire not answering)',\n        1: 'Liquid probe in the top failed (one wire not answering)',\n        2: 'Liquid probe in the bottom failed (one wire not answering)',\n        3: 'Temperature of PCB is out of range',\n        4: 'Temperature of liquid in the top is out of range',\n        5: 'Temperature of liquid in the bottom is out of range',\n        6: 'Target temperature is out of range',\n        7: 'Weight out of range',\n      },\n    },\n    {\n      id: 20,\n      name: 'Rotation start',\n      description: '',\n    },\n    {\n      id: 21,\n      name: 'Rotation stop',\n      description: '',\n    },\n    {\n      id: 150,\n      name: 'Not found log entry N',\n      description: '',\n    },\n    {\n      id: 255,\n      name: 'Save all parameters',\n      description: '',\n    },\n    {\n      id: 256,\n      name: 'Change value of A',\n      description: '',\n    },\n    {\n      id: 257,\n      name: 'Change value of B',\n      description: '',\n    },\n  ],\n};\n","'use strict';\n\nconst ensureAllParameters = require('./ensureAllParameters.js');\n\nlet devices = {\n  OpenBio: ensureAllParameters(require('./devices/OpenBio')),\n  OpenBio6: ensureAllParameters(require('./devices/OpenBio6')),\n  OpenSpectro: ensureAllParameters(require('./devices/OpenSpectro')),\n  SimpleSpectro: ensureAllParameters(require('./devices/SimpleSpectro')),\n  Solar2015: ensureAllParameters(require('./devices/Solar2015')),\n  Beemos: ensureAllParameters(require('./devices/Beemos')),\n  Computer: ensureAllParameters(require('./devices/Computer')),\n  fromDeviceID,\n};\n\n/**\n * Return a device information from the deviceID\n * @param {string|number} id\n * @returns\n */\nfunction fromDeviceID(id) {\n  if (typeof id === 'number') {\n    id = String.fromCharCode((id / 256) >> 0) + String.fromCharCode(id % 256);\n  }\n  if (typeof id !== 'string') {\n    throw Error('Device ID not a string or number');\n  }\n  if (id.length !== 2) {\n    throw Error(\n      `Device ID should be 2 character long and found: ${id.ldength}`,\n    );\n  }\n  const firstCharacter = id.substring(0, 1);\n  for (let key in devices) {\n    if (devices[key].id === firstCharacter) {\n      return ensureAllParameters(devices[key]);\n    }\n  }\n  return undefined;\n}\n\nmodule.exports = devices;\n","'use strict';\n\nmodule.exports = {\n  name: 'Open bioreactor',\n  kind: 'OpenBio',\n  description: '',\n  url: '',\n  id: '$',\n  numberParameters: 52,\n  numberLogParameters: 26,\n  parameters: [\n    {\n      label: 'A',\n      variable: 'liquidTemp',\n      name: 'T° LIQ',\n      description: 'Temperature of the bioreactor solution',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n\n    {\n      label: 'B',\n      variable: 'pcbTemp',\n      name: 'T° PCB',\n      description: 'Temperature of the bioreactor circuit',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n\n    {\n      label: 'C',\n      variable: 'pidTemp',\n      name: 'Pid',\n      description: 'PID absolute value',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'D',\n      variable: 'targetTemp',\n      name: 'T° target',\n      description: 'Target temperature',\n      factor: 100,\n      unit: '°C',\n      writable: true,\n    },\n\n    {\n      label: 'E',\n      variable: 'weight',\n      name: 'Weight',\n      description: 'Weight of the bioreactor tank, in internal value',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'F',\n      variable: 'grWeight',\n      name: 'Weight (g)',\n      description: 'Weight of the bioreactor tank, in gr if calibrated',\n      factor: 1,\n      unit: 'g',\n      writable: false,\n    },\n\n    {\n      label: 'G',\n      variable: 'waitSinceLast',\n      name: 'Time since last event',\n      description: 'Time in min since last weight event',\n      factor: 1,\n      unit: 'min',\n      writable: false,\n    },\n\n    {\n      label: 'H',\n      variable: 'minWeight',\n      name: 'Weight min',\n      description: 'Weight min in internal unit',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'I',\n      variable: 'maxWeight',\n      name: 'Weight max',\n      description: 'Weight max in internal unit',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'J',\n    },\n\n    {\n      label: 'K',\n    },\n\n    {\n      label: 'L',\n    },\n\n    {\n      label: 'M',\n    },\n\n    {\n      label: 'N',\n    },\n\n    {\n      label: 'O',\n    },\n\n    {\n      label: 'P',\n    },\n\n    {\n      label: 'Q',\n    },\n\n    {\n      label: 'R',\n    },\n\n    {\n      label: 'S',\n    },\n\n    {\n      label: 'T',\n    },\n\n    {\n      label: 'U',\n    },\n\n    {\n      label: 'V',\n    },\n\n    {\n      label: 'W',\n    },\n\n    {\n      label: 'X',\n    },\n\n    {\n      label: 'Y',\n      variable: 'error',\n      name: 'Error',\n      unit: '',\n      factor: 1,\n      description: `\n            bit 0: pcb probe, 1: liquid probe, 2: pcb temperature,\n            3: liquid temperature, 4: target temp. range, 5: weight range`,\n      writable: true,\n      flags: {\n        pcbProbe: {\n          bit: 0,\n          description: 'PCB temperature probe not responding',\n        },\n        liquidProbe: {\n          bit: 1,\n          description: 'Liquid temperature probe not responding',\n        },\n        pcbTemperature: {\n          bit: 2,\n          description: 'PCB temperature out of range',\n        },\n        liquidTemperature: {\n          bit: 3,\n          description: 'Liquid temperature out of range',\n        },\n        targetTemperature: {\n          bit: 4,\n          description: 'Target temperature out of range',\n        },\n        weight: {\n          bit: 5,\n          description: 'Weight out of range',\n        },\n      },\n    },\n\n    {\n      label: 'Z',\n      variable: 'status',\n      name: 'Status',\n      description: `Status of the Bioreactor, the bits of this integer code\n        for the state of specific elements of the reactor (eg. motor ON/OFF, PUMP ON/OFF etc.).\n        bits: 0: stepper, 1: weight, 2: pid, 7: sedimentation, 8: filling, 9: emptying\n        `,\n      factor: 1,\n      unit: '',\n      writable: true,\n      flags: {\n        stepper: {\n          bit: 0,\n          description: 'Stepper running',\n        },\n        food: {\n          bit: 1,\n          description: 'Food running',\n        },\n        pid: {\n          bit: 2,\n          description: 'PID running',\n        },\n        sedimentation: {\n          bit: 7,\n          description: 'Sedimentation running',\n        },\n        filling: {\n          bit: 8,\n          description: 'Filling tank',\n        },\n        emptying: {\n          bit: 9,\n          description: 'Emptying tank',\n        },\n      },\n    },\n\n    {\n      label: 'AA',\n      variable: 'stepperSpeed',\n      name: 'Stepper speed',\n      description: '',\n      factor: 1,\n      unit: 'RPM',\n      writable: true,\n    },\n\n    {\n      label: 'AB',\n      variable: 'stepperOnDelay',\n      name: 'Stepper on delay',\n      description: 'Time in (s) for which the stepper stays on',\n      factor: 1,\n      unit: 's',\n      writable: true,\n    },\n\n    {\n      label: 'AC',\n      variable: 'stepperOffDelay',\n      name: 'Stepper off delay',\n      description: 'Time to wait in (s) before between stirring periods',\n      factor: 1,\n      unit: 's',\n      writable: true,\n    },\n\n    {\n      label: 'AD',\n    },\n\n    {\n      label: 'AE',\n    },\n\n    {\n      label: 'AF',\n      variable: 'sedTime',\n      name: 'Sedimentation Time',\n      description:\n        'Sedimentation time in min after Semi-batch operation,' +\n        'corresponds to the waiting time without stirring before emptying the reactor to the minimum level',\n      min: 0,\n      max: 32767,\n      factor: 1,\n      unit: 'min',\n      writable: true,\n    },\n\n    {\n      label: 'AG',\n      variable: 'filledTime',\n      name: 'Filled Time',\n      description:\n        'Filled time in min after Semi-batch operation,' +\n        'corresponds to the total time with and without stirring before emptying the reactor to the minimum level' +\n        'must be set longer than the sedimentation time if stirring is desired',\n      min: 0,\n      max: 32767,\n      factor: 1,\n      unit: 'min',\n      writable: true,\n    },\n\n    {\n      label: 'AH',\n      variable: 'weightFactor',\n      name: 'Weight factor',\n      description: 'Factor allowing to convert the internal weight value to g',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'AI',\n      variable: 'weightOffset',\n      name: 'Weight offset',\n      description: '',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'AJ',\n    },\n\n    {\n      label: 'AK',\n    },\n\n    {\n      label: 'AL',\n    },\n\n    {\n      label: 'AM',\n    },\n\n    {\n      label: 'AN',\n    },\n\n    {\n      label: 'AO',\n    },\n\n    {\n      label: 'AP',\n    },\n\n    {\n      label: 'AQ',\n    },\n\n    {\n      label: 'AR',\n    },\n\n    {\n      label: 'AS',\n    },\n\n    {\n      label: 'AT',\n    },\n\n    {\n      label: 'AU',\n    },\n\n    {\n      label: 'AV',\n    },\n\n    {\n      label: 'AW',\n    },\n\n    {\n      label: 'AX',\n    },\n\n    {\n      label: 'AY',\n    },\n\n    {\n      label: 'AZ',\n      variable: 'enable',\n      name: 'Enable',\n      description: 'pid - food - stepper : ex. 1: only stepper',\n      factor: 1,\n      unit: '',\n      writable: true,\n      flags: {\n        stepper: {\n          bit: 0,\n          description: 'Stepper control',\n        },\n        food: {\n          bit: 1,\n          description: 'Food control',\n        },\n        pid: {\n          bit: 2,\n          description: 'PID control',\n        },\n      },\n    },\n  ],\n  events: [\n    {\n      id: 1,\n      name: 'Arduino boot',\n      description: '',\n    },\n    {\n      id: 2,\n      name: 'Set safe mode',\n      description: '',\n    },\n    {\n      id: 3,\n      name: 'Status enable',\n      description:\n        '0:stepper, 1:food, 2:pid, 7:sedimentation, 8:filling, 9:emptying',\n      flags: {\n        0: 'stepper',\n        1: 'food',\n        2: 'pid',\n        7: 'sedimentation',\n        8: 'filling',\n        9: 'emptying',\n      },\n    },\n    {\n      id: 4,\n      name: 'Status disable',\n      description:\n        '0:stepper, 1:food, 2:pid, 7:sedimentation, 8:filling, 9:emptying',\n      flags: {\n        0: 'stepper',\n        1: 'food',\n        2: 'pid',\n        7: 'sedimentation',\n        8: 'filling',\n        9: 'emptying',\n      },\n    },\n    {\n      id: 6,\n      name: 'Error: failed',\n      description:\n        '0:stepper, 1:food, 2:pid, 7:sedimentation, 8:filling, 9:emptying',\n      flags: {\n        0: 'pcb temperature probe',\n        1: 'liquid temperature probe',\n        2: 'pcb temperature range',\n        3: 'liquid temperature range',\n        4: 'target temperature range',\n        5: 'weight range',\n      },\n    },\n    {\n      id: 7,\n      name: 'Error: recover',\n      description:\n        '0:stepper, 1:food, 2:pid, 7:sedimentation, 8:filling, 9:emptying',\n      flags: {\n        0: 'pcb temperature probe',\n        1: 'liquid temperature probe',\n        2: 'pcb temperature range',\n        3: 'liquid temperature range',\n        4: 'target temperature range',\n        5: 'weight range',\n      },\n    },\n    {\n      id: 20,\n      name: 'Rotation start',\n      description: '',\n    },\n    {\n      id: 21,\n      name: 'Rotation stop',\n      description: '',\n    },\n    {\n      id: 150,\n      name: 'Not found log entry N',\n      description: '',\n    },\n    {\n      id: 255,\n      name: 'Save all parameters',\n      description: '',\n    },\n    {\n      id: 256,\n      name: 'Change value of A',\n      description: '',\n    },\n    {\n      id: 257,\n      name: 'Change value of B',\n      description: '',\n    },\n  ],\n};\n","'use strict';\n\nmodule.exports = {\n  name: 'Open spectrophotometer',\n  kind: 'OpenSpectro',\n  numberParameters: 26,\n  id: 'S',\n  description: '',\n  url: '',\n  parameters: [\n    {\n      label: 'A',\n      name: 'Red point',\n      description: 'which point of the linear detector is the maximum for red',\n      factor: 1,\n      unit: 'pixel#',\n      writable: false,\n    },\n\n    {\n      label: 'B',\n      name: 'Green point',\n      description:\n        'which point of the linear detector is the maximum for green',\n      factor: 1,\n      unit: 'pixel#',\n      writable: false,\n    },\n\n    {\n      label: 'C',\n      name: 'Blue point',\n      description: 'which point of the linear detector is the maximum for blue',\n      factor: 1,\n      unit: 'pixel#',\n      writable: false,\n    },\n\n    {\n      label: 'D',\n      name: 'Compression',\n      description: '0 means no compression, can be set',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n    {\n      label: 'E',\n      name: 'R-Intensity',\n      description: 'Red led intensity (0 to 255)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'F',\n      name: 'G-Intensity',\n      description: 'Green led intensity (0 to 255)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'G',\n      name: 'B-Intensity',\n      description: 'Blue led intensity (0 to 255)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'H',\n      name: 'Scan#',\n      description: 'Number of scans (maximum 64)',\n      factor: 1,\n      unit: '',\n      min: 1,\n      max: 64,\n      writable: true,\n    },\n\n    {\n      label: 'I',\n      name: 'DelayExp',\n      description: 'Delay between experiments in seconds',\n      factor: 1,\n      unit: 's',\n      writable: false,\n    },\n\n    {\n      label: 'J',\n      name: 'Acq Time',\n      description: 'Accumulation time in ms(in ms, good value=30)',\n      factor: 1,\n      unit: 'ms',\n      writable: true,\n    },\n\n    {\n      label: 'K',\n      name: 'lambda-R',\n      description: 'Red maximum wavelength (nm)',\n      factor: 1,\n      unit: 'nm',\n      writable: false,\n    },\n\n    {\n      label: 'L',\n      name: 'lambda-G',\n      description: 'Green maximum wavelength (nm)',\n      factor: 1,\n      unit: 'nm',\n      writable: false,\n    },\n\n    {\n      label: 'M',\n      name: 'lambda-M',\n      description: 'Blue maximum wavelength (nm)',\n      factor: 1,\n      unit: 'nm',\n      writable: false,\n    },\n\n    {\n      label: 'U',\n      name: 'red test',\n      description: 'Set intensity of red led for test (0 -> 255)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'V',\n      name: 'green test',\n      description: 'Set intensity of green led for test (0 -> 255)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'W',\n      name: 'blue test',\n      description: 'Set intensity of blue led for test (0 -> 255)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'X',\n      name: 'white test',\n      description: 'Set intensity of white led for test (0 -> 255)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'Y',\n    },\n    {\n      label: 'Z',\n    },\n  ],\n};\n","'use strict';\n\nmodule.exports = {\n  name: 'Simple spectrophotometer',\n  kind: 'SimpleSpectro',\n  numberParameters: 26,\n  description: '',\n  id: 'T',\n  url: '',\n  parameters: [\n    {\n      label: 'A',\n      name: 'Transmission of sample (Red)',\n      description: 'Frequency related to the energy of red led through sample',\n      factor: 1,\n      unit: 'Hz',\n      writable: false,\n    },\n\n    {\n      label: 'B',\n      name: 'Transmission of sample (Green)',\n      description:\n        'Frequency related to the energy of green led through sample',\n      factor: 1,\n      unit: 'Hz',\n      writable: false,\n    },\n\n    {\n      label: 'C',\n      name: 'Transmission of sample (Blue)',\n      description: 'Frequency related to the energy of blue led through sample',\n      factor: 1,\n      unit: 'Hz',\n      writable: false,\n    },\n\n    {\n      label: 'D',\n      name: 'Emission of sample (Blue)',\n      description:\n        'Frequency related to the energy of blue perpendicular led re-emitted by sample (fluorescence)',\n      factor: 1,\n      unit: 'Hz',\n      writable: false,\n    },\n\n    {\n      label: 'F',\n      name: 'Transmission of blank (Red)',\n      description: 'Frequency related to the energy of red led through blank',\n      factor: 1,\n      unit: 'Hz',\n      writable: false,\n    },\n\n    {\n      label: 'G',\n      name: 'Transmission of blank (Green)',\n      description: 'Frequency related to the energy of green led through blank',\n      factor: 1,\n      unit: 'Hz',\n      writable: false,\n    },\n\n    {\n      label: 'H',\n      name: 'Transmission of blank (Blue)',\n      description: 'Frequency related to the energy of blue led through blank',\n      factor: 1,\n      unit: 'Hz',\n      writable: false,\n    },\n\n    {\n      label: 'I',\n      name: 'Emission of blank (Blue)',\n      description:\n        'Frequency related to the energy of blue perpendicular led re-emitted by blank (fluorescence)',\n      factor: 1,\n      unit: 'Hz',\n      writable: false,\n    },\n\n    {\n      label: 'K',\n      name: 'Delay before blank',\n      description: 'Delay before the acquisition of the blank in seconds',\n      factor: 1,\n      unit: 's',\n      writable: true,\n    },\n\n    {\n      label: 'L',\n      name: 'Delay before sample',\n      description: 'Delay before the acquisition of the sample in seconds',\n      factor: 1,\n      unit: 's',\n      writable: true,\n    },\n\n    {\n      label: 'M',\n      name: 'Delay between experiments',\n      description:\n        'Delay between the acquisition of the experiments (kinetic) in seconds',\n      factor: 1,\n      unit: 's',\n      writable: true,\n    },\n\n    {\n      label: 'N',\n      name: 'Nb experiments',\n      description:\n        'Number of experiments for kinetic (max 240 / (number colors + 1))',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n\n    {\n      label: 'O',\n      name: 'Next exp. number',\n      description: 'Number of the next experiment',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'P',\n      name: 'Waiting time',\n      description: 'Current waiting time before next experiment',\n      factor: 1,\n      unit: 's',\n      writable: false,\n    },\n\n    {\n      label: 'Q',\n      name: 'Nb sampling',\n      description:\n        'Number of acquisitions of 100ms that will be taken (default 10). This value could be reduced for fast kinetic',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n\n    {\n      label: 'R',\n      name: 'Invert rotary',\n      description: ' Invert the rotary button direction',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n\n    {\n      label: 'S',\n      name: 'Battery voltage',\n      description: 'Current battery voltage',\n      factor: 100,\n      unit: 'V',\n      writable: true,\n    },\n\n    {\n      label: 'T',\n      name: 'Temperature',\n      description: 'Current temperature',\n      factor: 100,\n      unit: '°C',\n      writable: true,\n    },\n\n    {\n      label: 'V',\n      name: 'Active channels',\n      description:\n        'Active leds and other. A number between 0 and 63. Each bit represents a function (Red, Green, Blue, UV, Voltage, Temperature). 5 would correspond to Red and Blue (binary combination).',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n\n    {\n      label: 'W',\n      name: 'Error',\n      description: 'Error',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n\n    {\n      label: 'X',\n      name: 'Result channel',\n      description: 'Value of the channel that will be displayed in the result',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n\n    {\n      label: 'Y',\n      name: 'Status',\n      description: 'Status',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n\n    {\n      label: 'Z',\n      name: 'Current menu',\n      description: 'Current menu',\n      factor: 1,\n      unit: '',\n      writable: true,\n    },\n  ],\n};\n","'use strict';\n\nmodule.exports = {\n  name: 'Solar decathlon 2015',\n  kind: 'Solar',\n  numberParameters: 4,\n  numberLogParameters: 4,\n  id: '#',\n  description: '',\n  url: '',\n  parameters: [\n    {\n      label: 'A',\n      name: 'Temperature',\n      description: '',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n\n    {\n      label: 'B',\n      name: 'Light',\n      description: '',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'C',\n      name: 'Pressure',\n      description: '',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'D',\n      name: 'Humidity',\n      description: '',\n      factor: 10,\n      unit: '%',\n      writable: false,\n    },\n  ],\n};\n","'use strict';\n\nmodule.exports = {\n  name: 'Bee Monistoring System',\n  kind: 'Beemos',\n  numberParameters: 52,\n  numberLogParameters: 26,\n  id: 'B',\n  description: 'Bee Monitoring System data result',\n  url: '',\n  parameters: [\n    {\n      label: 'A',\n      variable: 'externalTemperature',\n      name: 'Ext temperature',\n      description: 'External temperature',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n    {\n      label: 'B',\n      variable: 'externalHumidity',\n      name: 'Ext humidity',\n      description: 'External humidity',\n      factor: 100,\n      unit: '%',\n      writable: false,\n    },\n    {\n      label: 'C',\n      variable: 'pressure',\n      name: 'Pressure',\n      description: 'Press',\n      factor: 10,\n      unit: 'mbar',\n      writable: false,\n    },\n    {\n      label: 'D',\n      variable: 'luminosity',\n      name: 'Luminosity',\n      description: 'Luminosity (Arbitrary unit)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'E',\n      variable: 'red',\n      name: 'Red',\n      description: 'Red luminosity (Arbitrary unit)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'F',\n      variable: 'green',\n      name: 'Green',\n      description: 'Green luminosity (Arbitrary unit)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'G',\n      variable: 'blue',\n      name: 'Blue',\n      description: 'Blue luminosity (Arbitrary unit)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'H',\n      variable: 'infrared',\n      name: 'Infrared',\n      description: 'Infrared luminosity (Arbitrary unit)',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'I',\n      variable: 'latitude',\n      name: 'Latitude',\n      description: 'Latitude',\n      factor: 100,\n      unit: '°',\n      writable: false,\n    },\n    {\n      label: 'J',\n      variable: 'longitude',\n      name: 'Longitude',\n      description: 'Longitude',\n      factor: 100,\n      unit: '°',\n      writable: false,\n    },\n    {\n      label: 'K',\n      variable: 'internalTemperature',\n      name: 'Int temperature',\n      description: 'Internal temperature',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n    {\n      label: 'L',\n      variable: 'internalHumidity',\n      name: 'Int humidity',\n      description: 'Internal humidity',\n      factor: 100,\n      unit: '%',\n      writable: false,\n    },\n    {\n      label: 'M',\n      variable: 'internalTemperatureA',\n      name: 'Int temperature A',\n      description: 'Internal temperature A',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n    {\n      label: 'N',\n      variable: 'internalTemperatureB',\n      name: 'Int temperature B',\n      description: 'Internal temperature B',\n      factor: 100,\n      unit: '°C',\n      writable: false,\n    },\n\n    {\n      label: 'O',\n      variable: 'weightInternalUnit',\n      name: 'Weight internal unit',\n      description: 'Weight in internal unit',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'P',\n      variable: 'weight',\n      name: 'Weight',\n      description: 'Weight',\n      factor: 100,\n      unit: 'kg',\n      writable: false,\n    },\n    {\n      label: 'W',\n      variable: 'battery',\n      name: 'Battery',\n      description: 'Battery voltage',\n      factor: 1000,\n      unit: 'V',\n      writable: false,\n    },\n    {\n      label: 'X',\n      variable: 'charging',\n      name: 'Charging',\n      description: 'Indication showing if the battery is charging',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'Y',\n      variable: 'rssi',\n      name: 'Wifi RSSI',\n      description: 'Power of Wifi signal',\n      factor: 1,\n      unit: 'dB',\n      writable: false,\n    },\n    {\n      label: 'Z',\n      variable: 'error',\n      name: 'Error',\n      description: 'Current error code',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'AA',\n      variable: 'loggingInterval',\n      name: 'Logging interval',\n      description: 'Interval in seconds between logs',\n      factor: 1,\n      unit: 's',\n      writable: true,\n    },\n    {\n      label: 'AB',\n      variable: 'weightOffset',\n      name: 'Weight offset',\n      description: 'Offset to convert weight from internal unit',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AC',\n      variable: 'weightFactor',\n      name: 'Weight factor',\n      description: 'Factor to convert the weight from internal unit',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n\n    {\n      label: 'AK',\n      variable: 'gate1In',\n      name: 'Gate 1 IN',\n      description: 'Number of input on gate 1',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AL',\n      variable: 'gate1Out',\n      name: 'Gate 1 OUT',\n      description: 'Number of output on gate 1',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AM',\n      variable: 'gate2In',\n      name: 'Gate 2 IN',\n      description: 'Number of input on gate 2',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AN',\n      variable: 'gate2Out',\n      name: 'Gate 2 OUT',\n      description: 'Number of output on gate 2',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AO',\n      variable: 'gate3In',\n      name: 'Gate 3 IN',\n      description: 'Number of input on gate 3',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AP',\n      variable: 'gate3Out',\n      name: 'Gate 3 OUT',\n      description: 'Number of output on gate 3',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AQ',\n      variable: 'gate4In',\n      name: 'Gate 4 IN',\n      description: 'Number of input on gate 4',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AR',\n      variable: 'gate4Out',\n      name: 'Gate 4 OUT',\n      description: 'Number of output on gate 4',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AS',\n      variable: 'gate5In',\n      name: 'Gate 5 IN',\n      description: 'Number of input on gate 5',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AT',\n      variable: 'gate5Out',\n      name: 'Gate 5 OUT',\n      description: 'Number of output on gate 5',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AU',\n      variable: 'gate6In',\n      name: 'Gate 6 IN',\n      description: 'Number of input on gate 6',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AV',\n      variable: 'gate6Out',\n      name: 'Gate 6 OUT',\n      description: 'Number of output on gate 6',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AW',\n      variable: 'gate7In',\n      name: 'Gate 7 IN',\n      description: 'Number of input on gate 7',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AX',\n      variable: 'gate7Out',\n      name: 'Gate 7 OUT',\n      description: 'Number of output on gate 7',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AY',\n      variable: 'gate8In',\n      name: 'Gate 8 IN',\n      description: 'Number of input on gate 8',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n    {\n      label: 'AZ',\n      variable: 'gate8Out',\n      name: 'Gate 8 OUT',\n      description: 'Number of output on gate 8',\n      factor: 1,\n      unit: '',\n      writable: false,\n    },\n  ],\n};\n","'use strict';\n\nmodule.exports = {\n  name: 'Computer monitoring',\n  kind: 'Computer',\n  numberParameters: 16,\n  numberLogParameters: 16,\n  description: '',\n  id: 'C',\n  url: '',\n  parameters: [\n    {\n      label: 'A',\n      variable: 'cpuTemperature',\n      name: 'CPU Temperature',\n      description: '',\n      factor: 1,\n      unit: '°C',\n      writable: false,\n    },\n\n    {\n      label: 'B',\n      variable: 'memFree',\n      name: 'Free memory',\n      description: 'Free memory in percent',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n\n    {\n      label: 'C',\n      variable: 'swapFree',\n      name: 'Free swap',\n      description: 'Free swap in percent',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n\n    {\n      label: 'D',\n      variable: 'fsRead',\n      name: 'FS Read',\n      description: 'File system read in kb',\n      factor: 1,\n      unit: 'kb',\n      writable: false,\n    },\n\n    {\n      label: 'E',\n      variable: 'fsWrite',\n      name: 'FS Write',\n      description: 'File system read in kb',\n      factor: 1,\n      unit: 'kb',\n      writable: false,\n    },\n\n    {\n      label: 'F',\n      variable: 'networkRead',\n      name: 'Network Read',\n      description: 'File system read in kb',\n      factor: 1,\n      unit: 'kb',\n      writable: false,\n    },\n\n    {\n      label: 'G',\n      variable: 'networkWrite',\n      name: 'Network Write',\n      description: 'File system read in kb',\n      factor: 1,\n      unit: 'kb',\n      writable: false,\n    },\n\n    {\n      label: 'H',\n      variable: 'load',\n      name: 'Load',\n      description: 'Total load',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n\n    {\n      label: 'I',\n      variable: 'userLoad',\n      name: 'User load',\n      description: 'Load from user',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n\n    {\n      label: 'J',\n      variable: 'systemLoad',\n      name: 'System load',\n      description: 'Load from system',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n\n    {\n      label: 'K',\n      variable: 'niceLoad',\n      name: 'Nice load',\n      description: 'Load for Nice',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n\n    {\n      label: 'L',\n      variable: 'idleLoad',\n      name: 'Idle load',\n      description: 'Idle percent of time',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n\n    {\n      label: 'M',\n      variable: 'irqLoad',\n      name: 'IRQ load',\n      description: 'Load due to IRQ',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n\n    {\n      label: 'N',\n      variable: 'fsMinimalUse',\n      name: 'FS minimal use',\n      description: 'Minimal percent spaced used in a filesystem',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n    {\n      label: 'O',\n      variable: 'fsMaximalUse',\n      name: 'FS maximal use',\n      description: 'Maximal percent spaced used in a filesystem',\n      factor: 1,\n      unit: '%',\n      writable: false,\n    },\n    {\n      label: 'P',\n    },\n  ],\n};\n"],"names":["labelToNumber","code","value","char","charCodeAt","OpenBio6","name","kind","description","url","id","numberParameters","numberLogParameters","parameters","label","variable","factor","unit","writable","flags","events","ensureAllParameters","device","existingParameters","currentPosition","parameter","Error","JSON","stringify","labelPosition","push","undefined","devices","OpenBio","pcbProbe","bit","liquidProbe","pcbTemperature","liquidTemperature","targetTemperature","weight","stepper","food","pid","sedimentation","filling","emptying","min","max","require$$2","OpenSpectro","SimpleSpectro","Solar2015","Beemos","Computer","fromDeviceID","String","fromCharCode","length","ldength","firstCharacter","substring","key"],"mappings":"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"}