├── index.js ├── .gitignore ├── lib ├── commands │ ├── userMode.js │ ├── setUserMode.js │ ├── setFireplaceMode.js │ ├── supplyTemperature.js │ ├── gasUsagePage.js │ ├── location.js │ ├── hotWaterSupply.js │ ├── setHotWaterSupply.js │ ├── pressure.js │ ├── program.js │ ├── displayCode.js │ ├── gasUsage.js │ ├── status.js │ └── setTemperature.js ├── index.js ├── utils.js └── data │ └── display-codes.json ├── package.json ├── example └── status.js ├── LICENSE └── README.md /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib'); 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | debugging 3 | TODO 4 | -------------------------------------------------------------------------------- /lib/commands/userMode.js: -------------------------------------------------------------------------------- 1 | module.exports = function userMode() { 2 | return this.get('/heatingCircuits/hc1/usermode').then((r) => {; 3 | return { value : r.value }; 4 | }); 5 | }; 6 | -------------------------------------------------------------------------------- /lib/commands/setUserMode.js: -------------------------------------------------------------------------------- 1 | module.exports = function setUserMode(value) { 2 | return this.put('/heatingCircuits/hc1/usermode', { value : value }).then(() => { 3 | return { status : 'ok' }; 4 | }); 5 | }; 6 | -------------------------------------------------------------------------------- /lib/commands/setFireplaceMode.js: -------------------------------------------------------------------------------- 1 | module.exports = function setFireplaceMode(value) { 2 | return this.put('/ecus/rrc/userprogram/fireplacefunction', {value : (value ? 'on' : 'off')}).then(() => { 3 | return { status : 'ok' }; 4 | }); 5 | }; 6 | -------------------------------------------------------------------------------- /lib/commands/supplyTemperature.js: -------------------------------------------------------------------------------- 1 | module.exports = function supplyTemperature() { 2 | return this.get('/heatingCircuits/hc1/actualSupplyTemperature').then((r) => { 3 | return { temperature : r.value, unit : r.unitOfMeasure }; 4 | }); 5 | }; 6 | -------------------------------------------------------------------------------- /lib/commands/gasUsagePage.js: -------------------------------------------------------------------------------- 1 | module.exports = function gasUsagePage(page) { 2 | return this.get('/ecus/rrc/recordings/gasusagePointer').then((pointer) => { 3 | // 32 entries per page. 4 | return Math.ceil(pointer.value / 32); 5 | }); 6 | }; 7 | -------------------------------------------------------------------------------- /lib/commands/location.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | 3 | module.exports = function location() { 4 | return Promise.props({ 5 | lat : this.get('/system/location/latitude') .then((r) => Number(r.value)), 6 | lng : this.get('/system/location/longitude').then((r) => Number(r.value)), 7 | }); 8 | }; 9 | -------------------------------------------------------------------------------- /lib/commands/hotWaterSupply.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const status = require('./status'); 3 | 4 | module.exports = function hotWaterSupply() { 5 | return status.call(this, true).then(status => { 6 | let endpoint = status['user mode'] === 'clock' ? 'dhwOperationClockMode' : 'dhwOperationManualMode'; 7 | return this.get('/dhwCircuits/dhwA/' + endpoint); 8 | }).then(r => { 9 | return { value : r.value }; 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /lib/commands/setHotWaterSupply.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const status = require('./status'); 3 | 4 | module.exports = function setHotWaterSupply(value) { 5 | return status.call(this, true).then(status => { 6 | let endpoint = status['user mode'] === 'clock' ? 'dhwOperationClockMode' : 'dhwOperationManualMode'; 7 | return this.put('/dhwCircuits/dhwA/' + endpoint, { value : value }); 8 | }).then(() => { 9 | return { status : 'ok' }; 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /lib/commands/pressure.js: -------------------------------------------------------------------------------- 1 | module.exports = function pressure() { 2 | return this.get('/system/appliance/systemPressure').then((r) => { 3 | var minValue = r.minValue || 0; 4 | var maxValue = r.maxValue || 25; 5 | var pressure = r.value; 6 | 7 | // Invalid pressure? 8 | if (r.value < minValue || r.value > maxValue) { 9 | pressure = null; 10 | } 11 | 12 | return { pressure : r.value, unit : r.unitOfMeasure }; 13 | }); 14 | }; 15 | -------------------------------------------------------------------------------- /lib/commands/program.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | const utils = require('../utils'); 3 | 4 | module.exports = function program() { 5 | return Promise.props({ 6 | active : this.get('/ecus/rrc/userprogram/activeprogram').then((r) => r.value), 7 | program1 : this.get('/ecus/rrc/userprogram/program1').then((r) => utils.parseProgramData(r.value)), 8 | program2 : this.get('/ecus/rrc/userprogram/program2').then((r) => utils.parseProgramData(r.value)), 9 | }); 10 | }; 11 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const Promise = require('bluebird'); 3 | const NefitEasyClient = require('nefit-easy-core').NefitEasyClient; 4 | const utils = require('./utils'); 5 | 6 | class NefitEasyCommands extends NefitEasyClient {} 7 | 8 | Object.assign(NefitEasyCommands.prototype, require('require-all')(__dirname + '/commands')); 9 | 10 | module.exports = function(opts) { 11 | return new NefitEasyCommands(opts); 12 | }; 13 | 14 | module.exports.NefitEasyCommands = NefitEasyCommands; 15 | -------------------------------------------------------------------------------- /lib/utils.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parseBoolean(value) { 3 | return value === 'on' ? true : value === 'off' ? false : null; 4 | }, 5 | 6 | parseProgramData(data) { 7 | return data.filter((point) => point.active === 'on').map((point) => { 8 | var hour = (point.t / 60) | 0; 9 | var minute = point.t % 60; 10 | return { 11 | dow : [ 'Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa' ].indexOf(point.d), 12 | time : ('00' + hour).slice(-2) + ':' + ('00' + minute).slice(-2), 13 | temp : point.T 14 | }; 15 | }) 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /lib/commands/displayCode.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | const CODES = require('../data/display-codes.json'); 3 | 4 | module.exports = function displayCode() { 5 | return Promise.all([ 6 | this.get('/system/appliance/displaycode'), 7 | this.get('/system/appliance/causecode'), 8 | ]).spread((displayCode, causeCode) => { 9 | var matches = CODES.filter((code) => code.status == displayCode.value && code.code == causeCode.value); 10 | return { 11 | code : displayCode.value, 12 | cause : causeCode.value, 13 | description : matches.length ? matches[0].description : null, 14 | action : matches.length ? matches[0].action : null, 15 | }; 16 | }); 17 | }; 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nefit-easy-commands", 3 | "version": "3.0.5", 4 | "description": "Nefit Easy™ commands library", 5 | "main": "index.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/robertklep/nefit-easy-commands.git" 9 | }, 10 | "author": "Robert Klep ", 11 | "license": "MIT", 12 | "bugs": { 13 | "url": "https://github.com/robertklep/nefit-easy-commands/issues" 14 | }, 15 | "engines": { 16 | "node": ">=4" 17 | }, 18 | "homepage": "https://github.com/robertklep/nefit-easy-commands#readme", 19 | "dependencies": { 20 | "bluebird": "^3.5.1", 21 | "nefit-easy-core": "^4.0.1", 22 | "require-all": "^2.2.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/commands/gasUsage.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | 3 | module.exports = function gasUsage(page) { 4 | var p = page ? Promise.resolve(page) : this.gasUsagePage(); 5 | 6 | return p.then((page) => { 7 | return this.get('/ecus/rrc/recordings/gasusage?page=' + page); 8 | }).then((data) => { 9 | return data.value.filter((v) => v.d !== "255-256-65535").map((v) => { 10 | var m = v.d.match(/^(\d{2})-(\d{2})-(\d{4})$/); 11 | return { 12 | date : new Date(m[3], m[2] - 1, m[1]), 13 | 'hot water' : v.hw, 14 | 'central heating' : v.ch, 15 | 'average outdoor temperature' : v.T / 10, 16 | }; 17 | }); 18 | }); 19 | }; 20 | 21 | -------------------------------------------------------------------------------- /example/status.js: -------------------------------------------------------------------------------- 1 | const NefitEasyClient = require('..'); 2 | 3 | // Instantiate client 4 | const client = NefitEasyClient({ 5 | serialNumber : process.env.NEFIT_SERIAL_NUMBER, 6 | accessKey : process.env.NEFIT_ACCESS_KEY, 7 | password : process.env.NEFIT_PASSWORD, 8 | }); 9 | 10 | // Connect client and retrieve status and pressure. 11 | client.connect().then( () => { 12 | return Promise.all([ client.status(), client.pressure() ]); 13 | }).then(response => { 14 | const status = response[0]; 15 | const pressure = response[1]; 16 | console.log( 17 | 'Temperature is set to %s°C, current is %s°C.\n' + 18 | 'Outside temperature is %s°C.\n' + 19 | 'System pressure is %s %s.', 20 | status['temp setpoint'].toFixed(1), 21 | status['in house temp'].toFixed(1), 22 | status['outdoor temp'].toFixed(1), 23 | pressure.pressure, 24 | pressure.unit 25 | ); 26 | }).catch(e => { 27 | console.error('error', e) 28 | }).finally(() => { 29 | client.end(); 30 | }); 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Robert Klep 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /lib/commands/status.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const Promise = require('bluebird'); 3 | const utils = require('../utils'); 4 | 5 | module.exports = function status(skipOutdoorTemperature) { 6 | let promises = [ this.get('/ecus/rrc/uiStatus') ]; 7 | if (skipOutdoorTemperature !== true) { 8 | promises.push( this.get('/system/sensors/temperatures/outdoor_t1') ); 9 | } 10 | return Promise.all(promises).spread((status, outdoor) => { 11 | let v = status.value; 12 | let r = { 13 | 'user mode' : v.UMD, 14 | 'clock program' : v.CPM, 15 | 'in house status' : v.IHS, 16 | 'in house temp' : Number(v.IHT), 17 | 'hot water active' : utils.parseBoolean(v.DHW), 18 | 'boiler indicator' : { 'CH' : 'central heating', 'HW' : 'hot water', 'No' : 'off' }[v.BAI] || null, 19 | 'control' : v.CTR, 20 | 'temp override duration' : Number(v.TOD), 21 | 'current switchpoint' : Number(v.CSP), 22 | 'ps active' : utils.parseBoolean(v.ESI), 23 | 'powersave mode' : utils.parseBoolean(v.ESI), 24 | 'fp active' : utils.parseBoolean(v.FPA), 25 | 'fireplace mode' : utils.parseBoolean(v.FPA), 26 | 'temp override' : utils.parseBoolean(v.TOR), 27 | 'holiday mode' : utils.parseBoolean(v.HMD), 28 | 'boiler block' : utils.parseBoolean(v.BBE), 29 | 'boiler lock' : utils.parseBoolean(v.BLE), 30 | 'boiler maintenance' : utils.parseBoolean(v.BMR), 31 | 'temp setpoint' : Number(v.TSP), 32 | 'temp override temp setpoint' : Number(v.TOT), 33 | 'temp manual setpoint' : Number(v.MMT), 34 | 'hed enabled' : utils.parseBoolean(v.HED_EN), 35 | 'hed device at home' : utils.parseBoolean(v.HED_DEV), 36 | }; 37 | if (outdoor) { 38 | Object.assign(r, { 39 | 'outdoor temp' : outdoor.value, 40 | 'outdoor source type' : outdoor.srcType, 41 | }); 42 | } 43 | return r; 44 | }); 45 | }; 46 | -------------------------------------------------------------------------------- /lib/commands/setTemperature.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | const SPECIFIERS = { 3 | '>' : (s, t, p) => s > p ? null : p, 4 | '<' : (s, t, p) => s < p ? null : p, 5 | 'inhousetemp+' : (s, t, p) => t + p, 6 | 'inhousetemp-' : (s, t, p) => t - p, 7 | 'setpoint+' : (s, t, p) => s + p, 8 | 'setpoint-' : (s, t, p) => s - p, 9 | }; 10 | 11 | module.exports = function setTemperature(value) { 12 | return parseValue.call(this, value).then((value) => { 13 | if (! value) 14 | { 15 | return { status : 'provided value is not parseable'}; 16 | } 17 | if (! value.newSetpoint) { 18 | return { status : 'current value already meets specification', 19 | newSetpoint: value.newSetpoint, 20 | previousSetpoint: value.previousSetpoint, 21 | currentTemperature: value.currentTemperature }; 22 | } 23 | var data = { value : value.newSetpoint }; 24 | return Promise.all([ 25 | this.put('/heatingCircuits/hc1/temperatureRoomManual', data), 26 | this.put('/heatingCircuits/hc1/manualTempOverride/status', { value : 'on' }), 27 | this.put('/heatingCircuits/hc1/manualTempOverride/temperature', data), 28 | ]).then(() => { 29 | return { status : 'ok', 30 | newSetpoint: value.newSetpoint, 31 | previousSetpoint: value.previousSetpoint, 32 | currentTemperature: value.currentTemperature }; 33 | }); 34 | }); 35 | }; 36 | 37 | function parseValue(value) { 38 | if (typeof value === 'number') return Promise.resolve({ newSetpoint: value}); 39 | if (typeof value !== 'string') return Promise.resolve(null); 40 | 41 | // Check for a specifier. 42 | var m = /^(?:(\D*?)\s*)([\d.]+)/.exec(value); 43 | 44 | var specifier; 45 | if (m && m[1]) { 46 | // Remove all spaces from specifier for better matching 47 | specifier = m[1].replace(/\s+/g, ''); 48 | } 49 | 50 | // No match or no (valid) specifier: try to convert to a number and be done. 51 | if (! specifier || !(specifier in SPECIFIERS)) { 52 | return Promise.resolve({ newSetpoint: Number(m ? m[2] : value)}); 53 | } 54 | 55 | // If a valid specifier was found, we need to retrieve the current status. 56 | var parameter = Number(m[2]); 57 | 58 | return this.status().then((status) => { 59 | // Determine the currently set temperature, according to the active user mode. 60 | var curSetpoint = Number(status[ status['user mode'] === 'manual' ? 'temp manual setpoint' : 'temp setpoint' ]); 61 | var curTemp = Number(status['in house temp']); 62 | 63 | // Let the specifier function determine a new temperature. 64 | var val = SPECIFIERS[specifier](curSetpoint, curTemp, parameter); 65 | return { newSetpoint: val, previousSetpoint: curSetpoint, currentTemperature: curTemp}; 66 | }); 67 | } 68 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nefit Easy™ commands 2 | 3 | High-level command implementation for Nefit Easy™. 4 | 5 | ## Please be considerate! 6 | 7 | Use this library in moderation: don't flood the backend with new connections made every X seconds. Instead, if you want to poll the backend for data, create a connection once and reuse it for each command. In the end, it's your own responsibility to not get blocked because of excessive (ab)use. 8 | 9 | ## Installation 10 | 11 | ``` 12 | $ npm i nefit-easy-commands 13 | ``` 14 | 15 | ## API 16 | 17 | #### Constructor 18 | 19 | ``` 20 | const NefitEasyCommands = require('nefit-easy-commands'); 21 | const client = NefitEasyCommands({ 22 | serialNumber : NEFIT_SERIAL_NUMBER, 23 | accessKey : NEFIT_ACCESS_KEY, 24 | password : NEFIT_PASSWORD, 25 | [ requestTimeout : Number ] 26 | }); 27 | ``` 28 | 29 | #### Current status 30 | 31 | ``` 32 | client.status([skipOutdoorTemperature]) : Promise 33 | ``` 34 | 35 | If `skipOutdoorTemperature` is `true`, the client won't make an extra request to retrieve the current outdoor temperature. 36 | 37 | #### Current pressure 38 | 39 | ``` 40 | client.pressure() : Promise 41 | ``` 42 | 43 | #### Hot water supply state 44 | 45 | ``` 46 | client.hotWaterSupply() : Promise 47 | ``` 48 | 49 | #### Known location for device 50 | 51 | ``` 52 | client.location() : Promise 53 | ``` 54 | 55 | #### Program data 56 | 57 | ``` 58 | client.program() : Promise 59 | ``` 60 | 61 | #### User mode 62 | 63 | ``` 64 | client.userMode() : Promise 65 | ``` 66 | 67 | #### Set hot water supply state 68 | 69 | ``` 70 | client.setHotWaterSupply(value : String) : Promise 71 | ``` 72 | 73 | `value` should be one of `on`/`off`. 74 | 75 | #### Set user mode 76 | 77 | ``` 78 | client.setUserMode(value : String) : Promise 79 | ``` 80 | 81 | `value` should be one of `manual`/`clock`. 82 | 83 | #### Set temperature 84 | 85 | ``` 86 | client.setTemperature(value : [Number|String]) : Promise 87 | ``` 88 | 89 | `value` can be prefixed with a specifier to add a bit of logic to changing the setpoint. 90 | 91 | The specifier can contain a base for relative changes: 92 | * `setpoint` : this is the current target temperature; 93 | * `in house temp` : this is the current measured temperature; 94 | 95 | Valid specifiers: 96 | * `> VALUE` : only change setpoint to "VALUE" if it's larger than the current setpoint; 97 | * `< VALUE` : only change setpoint to "VALUE" if it's smaller than the current setpoint; 98 | * `setpoint + VALUE` : increase the setpoint by "VALUE" 99 | * `setpoint - VALUE` : decrease the setpoint by "VALUE" 100 | * `in house temp + VALUE` : change the setpoint to in house temperature + "VALUE" 101 | * `in house temp - VALUE` : change the setpoint to in house temperature - "VALUE" 102 | 103 | Examples: 104 | * _"Set the thermostat to 21°C, but only if it's not already set higher than that."_ 105 | 106 | ``` 107 | client.setTemperature('> 21').then(...) 108 | ``` 109 | 110 | * _"Increase the setpoint by 2.5°C"_ 111 | 112 | ``` 113 | client.setTemperature('setpoint + 2.5').then(...) 114 | ``` 115 | 116 | * _"Set the setpoint to the current in house temperature and add 2.5°C"_ 117 | 118 | ``` 119 | client.setTemperature('in house temp + 2.5').then(...) 120 | ``` 121 | -------------------------------------------------------------------------------- /lib/data/display-codes.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "status": "-A", 4 | "code": 208, 5 | "description": "Het cv-toestel bevindt zich in schoorsteenvegerbedrijf of in servicebedrijf." 6 | }, 7 | { 8 | "status": "-H", 9 | "code": 200, 10 | "description": "Het cv-toestel bevindt zich in cv-bedrijf." 11 | }, 12 | { 13 | "status": "=H", 14 | "code": 201, 15 | "description": "Het cv-toestel bevindt zich in warmwaterbedrijf." 16 | }, 17 | { 18 | "status": "0A", 19 | "code": 202, 20 | "description": "Het cv-toestel wacht. Er is vaker dan 1x per 10 minuten een warmtevraag van een aan/uit- of een ModuLine-regeling geweest." 21 | }, 22 | { 23 | "status": "0A", 24 | "code": 305, 25 | "description": "Het cv-toestel wacht na einde warmwaterbedrijf." 26 | }, 27 | { 28 | "status": "0A", 29 | "code": 353, 30 | "description": "Het cv-toestel wacht. Het cv-toestel is binnen 24 uur nooit langer dan 20 minuten uit geweest." 31 | }, 32 | { 33 | "status": "0C", 34 | "code": 283, 35 | "description": "Het cv-toestel bereidt zich voor op een branderstart. De ventilator en de pomp worden aangestuurd." 36 | }, 37 | { 38 | "status": "0E", 39 | "code": 265, 40 | "description": "Het cv-toestel wacht. Het cv-toestel schakelt geregeld in op laaglast om aan de warmtevraag te voldoen." 41 | }, 42 | { 43 | "status": "0H", 44 | "code": 203, 45 | "description": "Het cv-toestel staat stand-by." 46 | }, 47 | { 48 | "status": "0L", 49 | "code": 284, 50 | "description": "Het gasregelblok wordt aangestuurd." 51 | }, 52 | { 53 | "status": "0P", 54 | "code": 205, 55 | "description": "Het cv-toestel wacht op het schakelen van de luchtdrukschakelaar." 56 | }, 57 | { 58 | "status": "0U", 59 | "code": 270, 60 | "description": "Het cv-toestel wordt opgestart." 61 | }, 62 | { 63 | "status": "0Y", 64 | "code": 204, 65 | "description": "Het cv-toestel wacht. De gemeten aanvoertemperatuur is hoger dan de berekende of ingestelde cv-watertemperatuur." 66 | }, 67 | { 68 | "status": "0Y", 69 | "code": 276, 70 | "description": "De aanvoertemperatuursensor heeft een temperatuur gemeten die hoger is dan 95 ºC." 71 | }, 72 | { 73 | "status": "0Y", 74 | "code": 277, 75 | "description": "De safetytemperatuursensor heeft een temperatuur gemeten die hoger is dan 95 ºC." 76 | }, 77 | { 78 | "status": "0Y", 79 | "code": 285, 80 | "description": "De retourtemperatuursensor heeft een temperatuur gemeten die hoger is dan 95 ºC." 81 | }, 82 | { 83 | "status": "0Y", 84 | "code": 359, 85 | "description": "De warmwatertemperatuursensor heeft een te hoge temperatuur gemeten." 86 | }, 87 | { 88 | "status": "1A", 89 | "code": 316, 90 | "description": "De rookgastemperatuursensor heeft een te hoge temperatuur gemeten." 91 | }, 92 | { 93 | "status": "1C", 94 | "code": 210, 95 | "description": "De rookgasthermostaat heeft een te hoge temperatuur gemeten en staat geopend." 96 | }, 97 | { 98 | "status": "1P", 99 | "code": 346, 100 | "description": "De temperatuur van de rookgastemperatuursensor stijgt te snel." 101 | }, 102 | { 103 | "status": "1U", 104 | "code": 317, 105 | "description": "De contacten van de rookgastemperatuursensor zijn kortgesloten." 106 | }, 107 | { 108 | "status": "1Y", 109 | "code": 318, 110 | "description": "De contacten van de rookgastemperatuursensor zijn onderbroken." 111 | }, 112 | { 113 | "status": "2A", 114 | "code": 343, 115 | "description": "Tijdens cv-bedrijf: de rookgastemperatuursensor meet een temperatuurstijging, maar de aanvoertemperatuursensor niet." 116 | }, 117 | { 118 | "status": "2A", 119 | "code": 344, 120 | "description": "Tijdens warmwaterbedrijf: de rookgastemperatuursensor meet een temperatuurstijging, maar de aanvoertemperatuursensor niet." 121 | }, 122 | { 123 | "status": "2C", 124 | "code": 348, 125 | "description": "Tijdens warmwaterbedrijf: de aanvoertemperatuur is hoger dan 85 ºC." 126 | }, 127 | { 128 | "status": "2E", 129 | "code": 207, 130 | "description": "De cv-waterdruk is te laag." 131 | }, 132 | { 133 | "status": "2E", 134 | "code": 357, 135 | "description": "Het ontluchtingsprogramma is actief." 136 | }, 137 | { 138 | "status": "2F", 139 | "code": 260, 140 | "description": "De aanvoertemperatuursensor meet geen temperatuurstijging na een branderstart." 141 | }, 142 | { 143 | "status": "2F", 144 | "code": 271, 145 | "description": "Het gemeten temperatuursverschil tussen de aanvoer- en safetytemperatuursensor is te groot." 146 | }, 147 | { 148 | "status": "2F", 149 | "code": 338, 150 | "description": "Branderstart te vaak afgebroken." 151 | }, 152 | { 153 | "status": "2F", 154 | "code": 345, 155 | "description": "De aanvoertemperatuursensor meet geen temperatuurstijging na een branderstart." 156 | }, 157 | { 158 | "status": "2H", 159 | "code": 358, 160 | "description": "De 3-wegklep wordt gedeblokkeerd." 161 | }, 162 | { 163 | "status": "2L", 164 | "code": 266, 165 | "description": "De pomptest is mislukt." 166 | }, 167 | { 168 | "status": "2L", 169 | "code": 329, 170 | "description": "De druksensor meet geen waterstroming." 171 | }, 172 | { 173 | "status": "2P", 174 | "code": 212, 175 | "description": "De gemeten temperatuur door de aanvoertemperatuursensor of de safetytemperatuursensor, stijgt te snel." 176 | }, 177 | { 178 | "status": "2P", 179 | "code": 341, 180 | "description": "De gemeten temperatuur door de aanvoertemperatuursensor of de retourtemperatuursensor, stijgt te snel." 181 | }, 182 | { 183 | "status": "2P", 184 | "code": 342, 185 | "description": "De gemeten temperatuur door de aanvoertemperatuursensor stijgt te snel." 186 | }, 187 | { 188 | "status": "2U", 189 | "code": 213, 190 | "description": "De gemeten temperatuur tussen de aanvoer- en de retourtemperatuursensor is te groot." 191 | }, 192 | { 193 | "status": "2U", 194 | "code": 349, 195 | "description": "Het op laaglast gemeten temperatuurverschil tussen de aanvoertemperatuursensor en de retourtemperatuursensor is te groot." 196 | }, 197 | { 198 | "status": "2Y", 199 | "code": 281, 200 | "description": "De pomp zit vast of draait in lucht." 201 | }, 202 | { 203 | "status": "2Y", 204 | "code": 282, 205 | "description": "Het stuursignaal van de pomp ontbreekt." 206 | }, 207 | { 208 | "status": "3A", 209 | "code": 264, 210 | "description": "Het stuursignaal of de spanning van de ventilator is tijdens bedrijf weggevallen." 211 | }, 212 | { 213 | "status": "3C", 214 | "code": 217, 215 | "description": "Het ventilatortoerental is onregelmatig tijdens het opstarten." 216 | }, 217 | { 218 | "status": "3F", 219 | "code": 273, 220 | "description": "Het cv-toestel is maximaal 2 minuten uitgeschakeld geweest, omdat het cv-toestel gedurende 24 uur continu in bedrijf is geweest. Dit is een veiligheidscontrole." 221 | }, 222 | { 223 | "status": "3L", 224 | "code": 214, 225 | "description": "Ventilator draait niet tijdens de opstartfase (0C)." 226 | }, 227 | { 228 | "status": "3P", 229 | "code": 216, 230 | "description": "Het ventilatortoerental is te laag." 231 | }, 232 | { 233 | "status": "3Y", 234 | "code": 215, 235 | "description": "Het ventilatortoerental is te hoog." 236 | }, 237 | { 238 | "status": "4A", 239 | "code": 218, 240 | "description": "De aanvoertemperatuursensor heeft een temperatuur gemeten die hoger is dan 105 ºC." 241 | }, 242 | { 243 | "status": "4A", 244 | "code": 332, 245 | "description": "De aanvoertemperatuursensor heeft een temperatuur gemeten die hoger is dan 110 ºC." 246 | }, 247 | { 248 | "status": "4C", 249 | "code": 224, 250 | "description": "Een toestelthermostaat (bv. maximaal- of branderthermostaat) heeft een te hoge temperatuur gemeten en staat geopend." 251 | }, 252 | { 253 | "status": "4E", 254 | "code": 225, 255 | "description": "Er is een overwacht groot temperatuurverschil gemeten in de dubbelsensor." 256 | }, 257 | { 258 | "status": "4E", 259 | "code": 278, 260 | "description": "De sensortest is mislukt." 261 | }, 262 | { 263 | "status": "4E", 264 | "code": 347, 265 | "description": "De retourtemperatuursensor heeft een hogere cv-watertemperatuur gemeten dan de aanvoertemperatuursensor. Na 10 minuten volgt een herstart." 266 | }, 267 | { 268 | "status": "4E", 269 | "code": 375, 270 | "description": "De contacten de externe sensor (bv. solar-sensor) zijn kortgesloten." 271 | }, 272 | { 273 | "status": "4E", 274 | "code": 376, 275 | "description": "De contacten de externe sensor (bv. solar-sensor) zijn onderbroken." 276 | }, 277 | { 278 | "status": "4F", 279 | "code": 219, 280 | "description": "De safetytemperatuursensor heeft een temperatuur gemeten die hoger is dan 105 ºC." 281 | }, 282 | { 283 | "status": "4L", 284 | "code": 220, 285 | "description": "De contacten van de safetytemperatuursensor zijn kortgesloten of de safetytemperatuursensor heeft een temperatuur gemeten die hoger is dan 130 ºC." 286 | }, 287 | { 288 | "status": "4P", 289 | "code": 221, 290 | "description": "De contacten van de safetytemperatuursensor zijn onderbroken." 291 | }, 292 | { 293 | "status": "4U", 294 | "code": 222, 295 | "description": "De contacten de aanvoertemperatuursensor zijn kortgesloten." 296 | }, 297 | { 298 | "status": "4U", 299 | "code": 350, 300 | "description": "De contacten de aanvoertemperatuursensor zijn kortgesloten." 301 | }, 302 | { 303 | "status": "4Y", 304 | "code": 223, 305 | "description": "De contacten van de aanvoertemperatuursensor zijn onderbroken." 306 | }, 307 | { 308 | "status": "4Y", 309 | "code": 351, 310 | "description": "De contacten van de aanvoertemperatuursensor zijn onderbroken." 311 | }, 312 | { 313 | "status": "5A", 314 | "code": -6, 315 | "description": "Door Nefit Service Tool/Handterminal gegenereerde storingscode." 316 | }, 317 | { 318 | "status": "5C", 319 | "code": 226, 320 | "description": "Service Tool is aangesloten geweest." 321 | }, 322 | { 323 | "status": "5F", 324 | "code": -1, 325 | "description": "Service Tool: servicetest duurt te lang." 326 | }, 327 | { 328 | "status": "5H", 329 | "code": 268, 330 | "description": "Componententest." 331 | }, 332 | { 333 | "status": "5Y", 334 | "code": -2, 335 | "description": "Service Tool: servicetest duurt te lang of een het cv-toestelparameter is gewijzigd." 336 | }, 337 | { 338 | "status": "6A", 339 | "code": 227, 340 | "description": "Er is onvoldoende ionisatiestroom gemeten na het ontsteken van de brander." 341 | }, 342 | { 343 | "status": "6C", 344 | "code": 228, 345 | "description": "Er is een ionisatiestroom gemeten voordat de brander is gestart." 346 | }, 347 | { 348 | "status": "6C", 349 | "code": 306, 350 | "description": "Er is een ionisatiestroom gemeten, nadat de brander gedoofd is." 351 | }, 352 | { 353 | "status": "6H", 354 | "code": -7, 355 | "description": "Ionisatie valt weg kort na het ontsteken van de brander." 356 | }, 357 | { 358 | "status": "6L", 359 | "code": 229, 360 | "description": "Er is onvoldoende ionisatiestroom gemeten tijdens het branden." 361 | }, 362 | { 363 | "status": "6P", 364 | "code": 269, 365 | "description": "De ontstekingsunit is te lang aangestuurd." 366 | }, 367 | { 368 | "status": "7A", 369 | "code": -8, 370 | "description": "De netspanning of ModuLine thermostaat wordt extern beïnvloed." 371 | }, 372 | { 373 | "status": "7C", 374 | "code": 231, 375 | "description": "De netspanning is tijdens een vergrendelende storing onderbroken geweest." 376 | }, 377 | { 378 | "status": "7F", 379 | "code": -9, 380 | "description": "Zekering F3 is defect" 381 | }, 382 | { 383 | "status": "7H", 384 | "code": 328, 385 | "description": "Er is een kortstondige onderbreking van de netspanning geweest." 386 | }, 387 | { 388 | "status": "7L", 389 | "code": 261, 390 | "description": "De branderautomaat is defect." 391 | }, 392 | { 393 | "status": "7L", 394 | "code": 280, 395 | "description": "De branderautomaat is defect." 396 | }, 397 | { 398 | "status": "8C", 399 | "code": 373, 400 | "description": "De branderthermostaat heeft, vaker dan is toegestaan, een te hoge temperatuur gemeten." 401 | }, 402 | { 403 | "status": "8C", 404 | "code": 374, 405 | "description": "Er is, vaker dan toegestaan, onvoldoende ionisatiestroom gemeten tijdens het branden." 406 | }, 407 | { 408 | "status": "8U", 409 | "code": 364, 410 | "description": "Het gasregelblok vertoont symptomen van veroudering." 411 | }, 412 | { 413 | "status": "8U", 414 | "code": 365, 415 | "description": "Het gasregelblok vertoont symptomen van veroudering." 416 | }, 417 | { 418 | "status": "8Y", 419 | "code": 232, 420 | "description": "Het externe schakelcontact is geopend." 421 | }, 422 | { 423 | "status": "9A", 424 | "code": 235, 425 | "description": "De KIM is te nieuw voor de branderautomaat." 426 | }, 427 | { 428 | "status": "9A", 429 | "code": 360, 430 | "description": "De geplaatste KIM correspondeert niet met de branderautomaat." 431 | }, 432 | { 433 | "status": "9A", 434 | "code": 361, 435 | "description": "De geplaatste branderautomaat correspondeert niet met de KIM." 436 | }, 437 | { 438 | "status": "9C", 439 | "code": 322, 440 | "description": "De branderautomaat ziet geen KIM." 441 | }, 442 | { 443 | "status": "9C", 444 | "code": -10, 445 | "description": "De branderautomaat ziet geen KIM." 446 | }, 447 | { 448 | "status": "9F", 449 | "code": -11, 450 | "description": "De branderautomaat is defect." 451 | }, 452 | { 453 | "status": "9H", 454 | "code": 237, 455 | "description": "De branderautomaat of de KIM is defect." 456 | }, 457 | { 458 | "status": "9H", 459 | "code": 267, 460 | "description": "De branderautomaat of de KIM is defect." 461 | }, 462 | { 463 | "status": "9H", 464 | "code": 272, 465 | "description": "De branderautomaat of de KIM is defect." 466 | }, 467 | { 468 | "status": "9L", 469 | "code": 234, 470 | "description": "De contacten van het gasregelblok zijn onderbroken." 471 | }, 472 | { 473 | "status": "9L", 474 | "code": 238, 475 | "description": "De branderautomaat of de KIM is defect." 476 | }, 477 | { 478 | "status": "9P", 479 | "code": 239, 480 | "description": "De branderautomaat of de KIM is defect." 481 | }, 482 | { 483 | "status": "9U", 484 | "code": 233, 485 | "description": "De branderautomaat of de KIM is defect." 486 | }, 487 | { 488 | "status": "C0", 489 | "code": 288, 490 | "description": "De waterdruk is te hoog of de contacten van de druksensor zijn onderbroken." 491 | }, 492 | { 493 | "status": "C0", 494 | "code": 289, 495 | "description": "De contacten van de druksensor zijn kortgesloten." 496 | }, 497 | { 498 | "status": "CA", 499 | "code": 286, 500 | "description": "De retourtemperatuursensor heeft een cv-retourtemperatuur gemeten die hoger is dan 105 ºC." 501 | }, 502 | { 503 | "status": "CU", 504 | "code": 240, 505 | "description": "De contacten van de retourtemperatuursensor zijn kortgesloten." 506 | }, 507 | { 508 | "status": "CY", 509 | "code": 241, 510 | "description": "De contacten van de retourtemperatuursensor zijn onderbroken." 511 | }, 512 | { 513 | "status": "E1", 514 | "code": 242, 515 | "description": "De branderautomaat of de KIM is defect." 516 | }, 517 | { 518 | "status": "E1", 519 | "code": 243, 520 | "description": "De branderautomaat of de KIM is defect." 521 | }, 522 | { 523 | "status": "E1", 524 | "code": 244, 525 | "description": "De branderautomaat of de KIM is defect." 526 | }, 527 | { 528 | "status": "E1", 529 | "code": 245, 530 | "description": "De branderautomaat of de KIM is defect." 531 | }, 532 | { 533 | "status": "E1", 534 | "code": 247, 535 | "description": "De branderautomaat of de KIM is defect." 536 | }, 537 | { 538 | "status": "E1", 539 | "code": 248, 540 | "description": "De branderautomaat of de KIM is defect." 541 | }, 542 | { 543 | "status": "E1", 544 | "code": 249, 545 | "description": "De branderautomaat of de KIM is defect." 546 | }, 547 | { 548 | "status": "E1", 549 | "code": 255, 550 | "description": "De branderautomaat of de KIM is defect." 551 | }, 552 | { 553 | "status": "E1", 554 | "code": 257, 555 | "description": "De branderautomaat of de KIM is defect." 556 | }, 557 | { 558 | "status": "EA", 559 | "code": 246, 560 | "description": "De branderautomaat of de KIM is defect." 561 | }, 562 | { 563 | "status": "EA", 564 | "code": 252, 565 | "description": "De branderautomaat of de KIM is defect." 566 | }, 567 | { 568 | "status": "EA", 569 | "code": 253, 570 | "description": "De branderautomaat of de KIM is defect." 571 | }, 572 | { 573 | "status": "EC", 574 | "code": 251, 575 | "description": "De branderautomaat of de KIM is defect." 576 | }, 577 | { 578 | "status": "EC", 579 | "code": 256, 580 | "description": "De branderautomaat of de KIM is defect." 581 | }, 582 | { 583 | "status": "EF", 584 | "code": 254, 585 | "description": "De branderautomaat of de KIM is defect." 586 | }, 587 | { 588 | "status": "EH", 589 | "code": 250, 590 | "description": "De branderautomaat of de KIM is defect." 591 | }, 592 | { 593 | "status": "EH", 594 | "code": 258, 595 | "description": "De branderautomaat of de KIM is defect." 596 | }, 597 | { 598 | "status": "EH", 599 | "code": 262, 600 | "description": "De branderautomaat of de KIM is defect." 601 | }, 602 | { 603 | "status": "EL", 604 | "code": 259, 605 | "description": "De branderautomaat of de KIM is defect." 606 | }, 607 | { 608 | "status": "EL", 609 | "code": 279, 610 | "description": "De branderautomaat of de KIM is defect." 611 | }, 612 | { 613 | "status": "EL", 614 | "code": 290, 615 | "description": "De branderautomaat of de KIM is defect." 616 | }, 617 | { 618 | "status": "EP", 619 | "code": 287, 620 | "description": "De branderautomaat of de KIM is defect." 621 | }, 622 | { 623 | "status": "EY", 624 | "code": 263, 625 | "description": "De branderautomaat of de KIM is defect." 626 | }, 627 | { 628 | "status": "A01", 629 | "code": 800, 630 | "description": "De buitentemperatuursensor is defect of geeft een onrealistische waarde." 631 | }, 632 | { 633 | "status": "A01", 634 | "code": 808, 635 | "description": "De warmwatertemperatuursensor van de eerste ww-groep is defect of geeft een onrealistische waarde." 636 | }, 637 | { 638 | "status": "A01", 639 | "code": 809, 640 | "description": "De warmwatertemperatuursensor van de tweede ww-groep is defect of geeft een onrealistische waarde." 641 | }, 642 | { 643 | "status": "A01", 644 | "code": 810, 645 | "description": "De warmwatervoorziening blijft koud of de warmwatertemperatuur is tijdens opwarming gedurende 2 uur niet gestegen." 646 | }, 647 | { 648 | "status": "A01", 649 | "code": 811, 650 | "description": "De thermische desinfectie van de warmwaterboiler is niet gelukt of de temperatuur voor het desinfecteren van de warmwaterboiler is niet gehaald binnen 3 uur." 651 | }, 652 | { 653 | "status": "A01", 654 | "code": 816, 655 | "description": "Er is geen communicatie mogelijk over de communicatiebus." 656 | }, 657 | { 658 | "status": "A01", 659 | "code": 828, 660 | "description": "Waterdruksensor geeft storing." 661 | }, 662 | { 663 | "status": "A02", 664 | "code": 816, 665 | "description": "Geen communicatie met het bedieningspaneel van de cv-ketel." 666 | }, 667 | { 668 | "status": "A11", 669 | "code": 801, 670 | "description": "Er is een interne fout opgetreden." 671 | }, 672 | { 673 | "status": "A11", 674 | "code": 802, 675 | "description": "De tijd is niet ingesteld." 676 | }, 677 | { 678 | "status": "A11", 679 | "code": 803, 680 | "description": "De datum is niet ingesteld." 681 | }, 682 | { 683 | "status": "A11", 684 | "code": 804, 685 | "description": "Er is een interne fout opgetreden." 686 | }, 687 | { 688 | "status": "A11", 689 | "code": 806, 690 | "description": "De ruimtetemperatuursensor van de ModuLine-regeling is defect of geeft een onrealistische waarde." 691 | }, 692 | { 693 | "status": "A11", 694 | "code": 821, 695 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 696 | }, 697 | { 698 | "status": "A11", 699 | "code": 822, 700 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 701 | }, 702 | { 703 | "status": "A11", 704 | "code": 823, 705 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 706 | }, 707 | { 708 | "status": "A11", 709 | "code": 824, 710 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 711 | }, 712 | { 713 | "status": "A11", 714 | "code": 825, 715 | "description": "Er zijn 2 ModuLine-regelingen toegekend aan 1 cv-groep." 716 | }, 717 | { 718 | "status": "A11", 719 | "code": 826, 720 | "description": "De ruimtetemperatuursensor van de ModuLine 400 regeling is defect of geeft onrealistische waarde." 721 | }, 722 | { 723 | "status": "A11", 724 | "code": 827, 725 | "description": "De ruimtetemperatuursensor van de ModuLine 400 regeling is defect of geeft onrealistische waarde." 726 | }, 727 | { 728 | "status": "A11", 729 | "code": 828, 730 | "description": "De waterdruksensor is defect of geeft onrealistische waarde." 731 | }, 732 | { 733 | "status": "A12", 734 | "code": 815, 735 | "description": "De aanvoertemperatuursensor van de open verdeler is defect of geeft een onrealistische waarde." 736 | }, 737 | { 738 | "status": "A12", 739 | "code": 816, 740 | "description": "Er is geen communicatie mogelijk met de verdelermodule (WM10)." 741 | }, 742 | { 743 | "status": "A18", 744 | "code": 825, 745 | "description": "Er zijn 2 ModuLine-regelingen toegekend aan 1 cv-groep." 746 | }, 747 | { 748 | "status": "A21", 749 | "code": 806, 750 | "description": "De ruimtetemperatuursensor van de ModuLine-regeling van de betreffende cv-groep is defect of geeft een onrealistische waarde." 751 | }, 752 | { 753 | "status": "A21", 754 | "code": 816, 755 | "description": "Er is geen communicatie mogelijk met de ModuLine-regeling van de betreffende cv-groep." 756 | }, 757 | { 758 | "status": "A21", 759 | "code": 829, 760 | "description": "Er is geen cv-groep toegekend aan de ModuLine-regeling, of er is een cv-groep toegekend aan een niet aanwezige ModuLine-regeling." 761 | }, 762 | { 763 | "status": "A21", 764 | "code": 830, 765 | "description": "Er is een te lage batterijspanning voor de draadloze ModuLine-regeling van de betreffende cv-groep." 766 | }, 767 | { 768 | "status": "A21", 769 | "code": 839, 770 | "description": "Er is geen radiocommunicatie met de draadloze ModuLine-regeling van de betreffende cv-groep." 771 | }, 772 | { 773 | "status": "A21", 774 | "code": 842, 775 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 776 | }, 777 | { 778 | "status": "A21", 779 | "code": 843, 780 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 781 | }, 782 | { 783 | "status": "A22", 784 | "code": 806, 785 | "description": "De ruimtetemperatuursensor van de ModuLine-regeling van de betreffende cv-groep is defect of geeft een onrealistische waarde." 786 | }, 787 | { 788 | "status": "A22", 789 | "code": 816, 790 | "description": "Er is geen communicatie mogelijk met de ModuLine-regeling van de betreffende cv-groep." 791 | }, 792 | { 793 | "status": "A22", 794 | "code": 829, 795 | "description": "Er is geen cv-groep toegekend aan de ModuLine-regeling, of er is een cv-groep toegekend aan een niet aanwezige ModuLine-regeling." 796 | }, 797 | { 798 | "status": "A22", 799 | "code": 830, 800 | "description": "Er is een te lage batterijspanning voor de draadloze ModuLine-regeling van de betreffende cv-groep." 801 | }, 802 | { 803 | "status": "A22", 804 | "code": 839, 805 | "description": "Er is geen radiocommunicatie met de draadloze ModuLine-regeling van de betreffende cv-groep." 806 | }, 807 | { 808 | "status": "A22", 809 | "code": 842, 810 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 811 | }, 812 | { 813 | "status": "A22", 814 | "code": 843, 815 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 816 | }, 817 | { 818 | "status": "A23", 819 | "code": 806, 820 | "description": "De ruimtetemperatuursensor van de ModuLine-regeling van de betreffende cv-groep is defect of geeft een onrealistische waarde." 821 | }, 822 | { 823 | "status": "A23", 824 | "code": 816, 825 | "description": "Er is geen communicatie mogelijk met de ModuLine-regeling van de betreffende cv-groep." 826 | }, 827 | { 828 | "status": "A23", 829 | "code": 829, 830 | "description": "Er is geen cv-groep toegekend aan de ModuLine-regeling, of er is een cv-groep toegekend aan een niet aanwezige ModuLine-regeling." 831 | }, 832 | { 833 | "status": "A23", 834 | "code": 830, 835 | "description": "Er is een te lage batterijspanning voor de draadloze ModuLine-regeling van de betreffende cv-groep." 836 | }, 837 | { 838 | "status": "A23", 839 | "code": 839, 840 | "description": "Er is geen radiocommunicatie met de draadloze ModuLine-regeling van de betreffende cv-groep." 841 | }, 842 | { 843 | "status": "A23", 844 | "code": 842, 845 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 846 | }, 847 | { 848 | "status": "A23", 849 | "code": 843, 850 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 851 | }, 852 | { 853 | "status": "A24", 854 | "code": 806, 855 | "description": "De ruimtetemperatuursensor van de ModuLine-regeling van de betreffende cv-groep is defect of geeft een onrealistische waarde." 856 | }, 857 | { 858 | "status": "A24", 859 | "code": 816, 860 | "description": "Er is geen communicatie mogelijk met de ModuLine-regeling van de betreffende cv-groep." 861 | }, 862 | { 863 | "status": "A24", 864 | "code": 829, 865 | "description": "Er is geen cv-groep toegekend aan de ModuLine-regeling, of er is een cv-groep toegekend aan een niet aanwezige ModuLine-regeling." 866 | }, 867 | { 868 | "status": "A24", 869 | "code": 830, 870 | "description": "Er is een te lage batterijspanning voor de draadloze ModuLine-regeling van de betreffende cv-groep." 871 | }, 872 | { 873 | "status": "A24", 874 | "code": 839, 875 | "description": "Er is geen radiocommunicatie met de draadloze ModuLine-regeling van de betreffende cv-groep." 876 | }, 877 | { 878 | "status": "A24", 879 | "code": 842, 880 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 881 | }, 882 | { 883 | "status": "A24", 884 | "code": 843, 885 | "description": "Er is geen ModuLine-regeling toegepast voor de betreffende cv-groep." 886 | }, 887 | { 888 | "status": "A32", 889 | "code": 807, 890 | "description": "De aanvoertemperatuursensor van de betreffende cv-groep is defect of geeft een onrealistische waarde." 891 | }, 892 | { 893 | "status": "A32", 894 | "code": 816, 895 | "description": "Er is geen communicatie mogelijk met de mengklepmodule (MM10) van de betreffende cv-groep." 896 | }, 897 | { 898 | "status": "A33", 899 | "code": 807, 900 | "description": "De aanvoertemperatuursensor van de betreffende cv-groep is defect of geeft een onrealistische waarde." 901 | }, 902 | { 903 | "status": "A33", 904 | "code": 816, 905 | "description": "Er is geen communicatie mogelijk met de mengklepmodule (MM10) van de betreffende cv-groep." 906 | }, 907 | { 908 | "status": "A34", 909 | "code": 807, 910 | "description": "De aanvoertemperatuursensor van de betreffende cv-groep is defect of geeft een onrealistische waarde." 911 | }, 912 | { 913 | "status": "A34", 914 | "code": 816, 915 | "description": "Er is geen communicatie mogelijk met de mengklepmodule (MM10) van de betreffende cv-groep." 916 | }, 917 | { 918 | "status": "A51", 919 | "code": 812, 920 | "description": "De zonneboilerregeling is verkeerd ingesteld." 921 | }, 922 | { 923 | "status": "A51", 924 | "code": 813, 925 | "description": "De collectortemperatuursensor is defect of geeft een onrealistische waarde." 926 | }, 927 | { 928 | "status": "A51", 929 | "code": 814, 930 | "description": "De zonneboilertemperatuursensor is defect of geeft een onrealistische waarde." 931 | }, 932 | { 933 | "status": "A51", 934 | "code": 816, 935 | "description": "Er is geen communicatie mogelijk met de zonneboilermodule (SM10)." 936 | }, 937 | { 938 | "status": "AD1", 939 | "code": 817, 940 | "description": "De luchttemperatuursensor is defect of geeft onrealistische waarde." 941 | }, 942 | { 943 | "status": "AD1", 944 | "code": 818, 945 | "description": "De aanvoertemperatuur van het cv-toestel stijgt te weinig binnen 30 minuten." 946 | }, 947 | { 948 | "status": "AD1", 949 | "code": 819, 950 | "description": "Niet van toepassing op gasgestookte cv-toestellen." 951 | }, 952 | { 953 | "status": "AD1", 954 | "code": 820, 955 | "description": "Niet van toepassing op gasgestookte cv-toestellen." 956 | }, 957 | { 958 | "status": "H01", 959 | "code": -13, 960 | "description": "De rookgastemperatuur is hoger dan normaal." 961 | }, 962 | { 963 | "status": "H02", 964 | "code": -14, 965 | "description": "De ventilator draait langzamer dan normaal." 966 | }, 967 | { 968 | "status": "H03", 969 | "code": -15, 970 | "description": "Het aantal bedrijfsuren voor de volgende onderhoudsbeurt is verlopen." 971 | }, 972 | { 973 | "status": "H04", 974 | "code": -17, 975 | "description": "Onderhoudsmelding: de ionisatiestroom is lager dan normaal." 976 | }, 977 | { 978 | "status": "H05", 979 | "code": -18, 980 | "description": "Onderhoudsmelding: de ontsteekspanning is hoger dan normaal." 981 | }, 982 | { 983 | "status": "H06", 984 | "code": -19, 985 | "description": "Onderhoudsmelding: het aantal herstarts voor het in bedrijf brengen van de brander is meer dan normaal." 986 | }, 987 | { 988 | "status": "H07", 989 | "code": -20, 990 | "description": "De gemeten cv-waterdruk is te laag. Het vermogen voor zowel cv-bedrijf als voor warmwaterbedrijf wordt beperkt." 991 | }, 992 | { 993 | "status": "H08", 994 | "code": -21, 995 | "description": "De ingestelde onderhoudsdatum is verlopen. Onderhoud gewenst." 996 | }, 997 | { 998 | "status": "H11", 999 | "code": -25, 1000 | "description": "De warmwateruitstroomtemperatuursensor is defect. De functie wordt overgenomen door de software van het cv-toestel." 1001 | }, 1002 | { 1003 | "status": "H12", 1004 | "code": -26, 1005 | "description": "De bewaartemperatuursensor is defect. De functie wordt overgenomen door de software van het cv-toestel." 1006 | }, 1007 | { 1008 | "status": "H13", 1009 | "code": -27, 1010 | "description": "De ingestelde maximale onderhoudsperiode, is overschreden. Onderhoud gewenst." 1011 | }, 1012 | { 1013 | "status": "H13", 1014 | "code": -28, 1015 | "description": "Onderhoudsperiode is ingesteld." 1016 | }, 1017 | { 1018 | "status": "H25", 1019 | "code": -40, 1020 | "description": "De contacten van de druksensor zijn onderbroken." 1021 | }, 1022 | { 1023 | "status": "Hre", 1024 | "code": -48, 1025 | "description": "Het cv-toestel wordt gereset." 1026 | }, 1027 | { 1028 | "status": "re", 1029 | "code": -4, 1030 | "description": "Het cv-toestel wordt gereset." 1031 | } 1032 | ] 1033 | --------------------------------------------------------------------------------