Skip to main content

Cle

CLE is an I/O servers that allows the supervision of CLE automation hotel management modules.

This driver complies with the Xcom communication protocol

List of supported modules
Thermostats: various models (articles MCT5, MCT6, MCU5, MCU6) installed as TermoA and B
Internal pocket: (article MTS3) installed as MTS A and MTS B
External out of the door reader: (article MFP, PRX) or integrated on the control panel
Wireless receivers: article WRX only presence
Safe: CSF only presence

Communication

The driver supports communication through RS-485 serial interface.

RS-485 parameters:

Baud rate<19200-57600>
Data bits8
Stop bit1
Paritynone
Flow controlnone

Options

IDDefaultValuesDescription
guitruetrueenable support for the UI object, UISET actions and USER commands
falsedisable UI support
startupeventsfalsetruegenerate IO events also during the driver’s start-up phase
falsestart generating events only after HSYCO is aligned with the current status of the system
debugfalsetrueenable debug log
falsedisable debug log
controllersmaxaddress00 ... 255can be used to declare consecutive controllers starting from 1 to controllersmaxaddress. Set to 0 to disable
controllerlistsemicolon separated list of numberssemicolon separated list of controller addresses
controllerrangelistdash separated list of range of numbersdash separated list of range of addresses, for example 1-4;6-9
termolistsemicolon separated list of numberssemicolon separated list of thermostat addresses
tocheckskip10001 ... 2147483647if there is a read error on a thermostat or controller, skip tocheckskip polling loops before reading it again
cardreadercommstringname of the serial port used to connect the card reader, for example ttyUSB0

Datapoints

IdIndexR/WValueValue meaningInfo (ITA)Info (ENG)
cle.<addr>.digital.output.<x>.value<x>: 1..8WVal: 0,1Controlla uscita digitale XCheck digital output X
cle.<addr>.digital.input.resetWVal: 11 = resetResetta tutti gli ingressi digitaliReset all digital inputs
cle.<addr>.digital.input.<x>.reset<x>: 1..8WVal: 11 = resetResetta ingressi digitali XReset digital input X
cle.<addr>.settings.resetWVal: 11 = resetResetta impostazioni pluginReset plugin settings
cle.<addr>.digital.input.<x>.name<x>: 1..8WVal: stringCambia il nome all’ingresso digitaleChange name of digital input
cle.<addr>.digital.output.<x>.name<x>: 1..8WVal: stringCambia il nome all’uscitaChange name of output
cle.<addr>.<mct>.name<mct>: mcta,mctbWVal: stringCambia il nome al termostatoChange name of thermostat
cle.<addr>.<mct>.season<mct>: mcta,mctbWVal: summer, winterModifica stagione termostatoModify thermostat season
cle.<addr>.<mct>.temp.anti.freeze<mct>: mcta,mctbWVal: integerModifica setpoint antigeloModify anti-freeze setpoint
cle.<addr>.<mct>.temp.comfort<mct>: mcta,mctbWVal: integerModifica setpoint comfortModify comfort setpoint
cle.<addr>.<mct>.temp.maintenance<mct>: mcta,mctbWVal: integerModifica setpoint manutenzioneModify maintenance setpoint
cle.<addr>.<mct>.temp.maintenance.max<mct>: mcta,mctbWVal: integerModifica setpoint max manutenzioneModify max maintenance setpoint
cle.<addr>.<mct>.temp.max<mct>: mcta,mctbWVal: integerModifica setpoint maxModify max setpoint
cle.<addr>.<mct>.temp.min<mct>: mcta,mctbWVal: integerModifica setpoint minModify min setpoint
cle.<addr>.<mct>.flag.maintenance.or.comfort<mct>: mcta,mctbWVal: maintenance, comfortImposta MCT in manutenzione o comfortSet MCT to maintenance or comfort
cle.<addr>.onlineRVal: 0,11=onlineStato connessione busBus connection status
cle.<addr>.aux.digital.input.<x>.disabled<x>: 1..8RVal: 0,11=disabled
cle.<addr>.card.<number>.enabledRUsati da plugin, non usareUsed by plugin, do not use
cle.<addr>.card.new.codeRUsati da plugin, non usareUsed by plugin, do not use
cle.<addr>.card.new.enableRUsati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.byte.dataRUsati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.dayRUsati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.daylight.savings.timeRUsati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.errorRUsati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.hourRVal:0..23Usati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.minuteRVal:1.59Usati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.monthRVal:1..12Usati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.secondRVal:1.59Usati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.week.dayRVal:1..7Usati da plugin, non usareUsed by plugin, do not use
cle.<addr>.date.time.yearRVal:last two digits of current yearUsati da plugin, non usareUsed by plugin, do not use
cle.<addr>.digital.input.<x>.normally.open<x>: 1..8RVal: 0,11=NASe l’ingresso digitale X è normalmente apertoIf digital input X is normally open
cle.<addr>.digital.input.<x>.retentive<x>: 1..8RVal: 0,11=latchingSe l’ingresso digitale X è ritentivoDigital input X status is latching
cle.<addr>.digital.input.<x>.value<x>: 1..8RVal: 0,11=closeStato dell’ingresso digitale XIndicate if output X is linked to digital input Y
cle.<addr>.digital.output.<x>.bind.di<y><x>: 1..8 - <y>: 1..8RVal: 0,11=bindedIndica se l’uscita X è legata all’ingresso digitale Y
cle.<addr>.digital.output.<x>.bind.virtual.input.incma<x>: 1..8RVal: 0,11=bindedIndica se l’uscita X è legata alll’input virtuale incmaIndicate if output X is linked to virtual input incma
cle.<addr>.digital.output.<x>.bind.virtual.input.incmb<x>: 1..8RVal: 0,11=bindedIndica se l’uscita X è legata alll’input virtuale incmbIndicate if output X is linked to virtual input incmb
cle.<addr>.digital.output.<x>.disabled<x>: 1..8RVal: 0,11=disabledUscita X disabilitataOutput X disabled
cle.<addr>.digital.output.<x>.inputs.mode<x>: 1..8RVal: and,or
cle.<addr>.digital.output.<x>.normally.open<x>: 1..8RVal: 0,11=NAUscita X normalmente apertaOutput X normally open
cle.<addr>.digital.output.<x>.type<x>: 1..8RVal: timerized,monostable,bistableTipo dell’uscita XType of output X
cle.<addr>.digital.output.<x>.value<x>: 1..8RVal: 0,11=closeStato dell’uscita XStatus of output X
cle.<addr>.esxj4r_a.existsRVal: 0,11=exists
cle.<addr>.esxj4r_a.offlineRVal: 0,11=offline
cle.<addr>.esxj4r_b.existsRVal: 0,11=exists
cle.<addr>.esxj4r_b.offlineRVal: 0,11=offline
cle.<addr>.esxj4r_c.existsRVal: 0,11=exists
cle.<addr>.esxj4r_c.offlineRVal: 0,11=offline
cle.<addr>.esxy4.existsRVal: 0,11=exists
cle.<addr>.esxy4.offlineRVal: 0,11=offline
cle.<addr>.firmware.nameRVal: stringNome del firmware installato sul modulo hotelFirmware name installed on hotel module
cle.<addr>.firmware.releaseRVal: stringRelease del firmware installato sul modulo hotelFirmware release installed on hotel module
cle.<addr>.firmware.versionRVal: stringVersione del firmware installato sul modulo hotelFirmware version installed on hotel module
cle.<addr>.function.anti.intrusion.insertionRVal: manual,automatc
cle.<addr>.function.anti.theft.activeRVal: 0,11=activeStato antifurtoAnti-theft status
cle.<addr>.function.call.cleaner.activeRVal: 0,11=activeStato chiamata pulizia cameraHousekeeping call status
cle.<addr>.function.dbk.activeRVal: 0,1
cle.<addr>.function.door.open.without.card.in.pouch.activeRVal: 0,11=activePorta camera aperta e tessera non presente nella tascaRoom door open and keycard not present
cle.<addr>.function.fc8.activeRVal: 0,1
cle.<addr>.function.intrusion.alarm.activeRVal: 0,1
cle.<addr>.function.maintenance.request.activeRVal: 0,11=activeAllarme antifurtoAlarm activated
cle.<addr>.function.not.disturb.activeRVal: 0,11=activeDo not Disturb attivatoDo Not Disturb mode activated
cle.<addr>.function.pouch.input.simulation.activeRVal: 0,11=activeSimulazione ingresso tasca attivato"Pocket entry simulation activated
cle.<addr>.function.programming.authorization.activeRVal: 0,1
cle.<addr>.function.room.checked.and.ready.activeRVal: 0,11=activeStanza pronta e effettuato check-inRoom ready and check-in done
cle.<addr>.function.room.checked.not.ready.activeRVal: 0,11=activeStanza non prontaRoom not ready
cle.<addr>.function.room.cleaning.request.activeRVal: 0,11=activeRichiesta pulizia camera attivaHousekeeping request active
cle.<addr>.function.room.maintance.done.and.ready.activeRVal: 0,11=activeManutenzione camera effettuataRoom maintenance done
cle.<addr>.function.room.maintance.done.not.ready.activeRVal: 0,11=activeManutenzione camera non effettuataRoom maintenance not done
cle.<addr>.function.room.ready.activeRVal: 0,11=activeStanza prontaRoom ready
cle.<addr>.function.serial.bus.alarm.simulation.activeRVal: 0,11=activeSimulazione allarme sul bus serialeSerial bus alarm simulation activated
cle.<addr>.function.sos.activeRVal: 0,11=activeFunzione SOS attivataSOS function activated
cle.<addr>.function.st43.activeRVal: 0,11=active
cle.<addr>.function.st44.activeRVal: 0,11=active
cle.<addr>.function.stac.activeRVal: 0,11=active
cle.<addr>.function.stad.activeRVal: 0,11=active
cle.<addr>.function.starc.activeRVal: 0,11=active
cle.<addr>.function.stard.activeRVal: 0,11=active
cle.<addr>.function.stc.activeRVal: 0,11=active
cle.<addr>.function.std.activeRVal: 0,11=active
cle.<addr>.function.wd43.activeRVal: 0,11=active
cle.<addr>.function.wd44.activeRVal: 0,11=active
cle.<addr>.function.wdc.activeRVal: 0,11=active
cle.<addr>.function.wdd.activeRVal: 0,11=active
cle.<addr>.mcb.existsRVal: 0,11=existsMCB esisteMCB exists
cle.<addr>.mcb.offlineRVal: 0,11=offlineMCB offlineMCB offline
cle.<addr>.<mct>.exists<mct>: mcta,mctbRVal: 0,11=esisteMCT esisteMCT exists
cle.<addr>.<mct>.fancoil.speed<mct>: mcta,mctbR,WVal: 0-10Modo fancoilFan coil mode
cle.<addr>.<mct>.flag.actuator.work.mode<mct>: mcta,mctbRVal: remoteoff,localoff,aautomatic,chronoVelocità fancoilFan coil speed
cle.<addr>.<mct>.flag.auto.summer.winter.commutation<mct>: mcta,mctbRVal: 0,11=automaticCommutazione estate inverno automaticaAutomatic summer/winter switch
cle.<addr>.<mct>.flag.datetime.error<mct>: mcta,mctbRVal: 0,11=errorErrore dataDate error
cle.<addr>.<mct>.flag.display.intensity.included<mct>: mcta,mctbRVal: 0,1
cle.<addr>.<mct>.flag.electrovalve.work.mode<mct>: mcta,mctbRVal: regular,setpoint
cle.<addr>.<mct>.flag.external.sensor.fault<mct>: mcta,mctbRVal: 0,11=errorErrore sensore temperatura esternoExternal temperature sensor error
cle.<addr>.<mct>.flag.external.sensor.temp.anomaly<mct>: mcta,mctbRVal: 0,11=errorAnomalia sensore temperatura esternoExternal temperature sensor anomaly
cle.<addr>.<mct>.flag.fahrenheit.or.celsius<mct>: mcta,mctbRVal:fahrenheit,celsius
cle.<addr>.<mct>.flag.internal.sensor.fault<mct>: mcta,mctbRVal: 0,1Errore sensore temperatura internoInternal temperature sensor error
cle.<addr>.<mct>.flag.internal.sensor.temp.anomaly<mct>: mcta,mctbRVal: 0,1Anomalia sensore temperatura internoInternal temperature sensor anomaly
cle.<addr>.<mct>.flag.ir.input.function.b.enabled<mct>: mcta,mctbRVal: 0,1
cle.<addr>.<mct>.flag.ir.status<mct>: mcta,mctbRVal: 0,1
cle.<addr>.<mct>.flag.is.winter<mct>: mcta,mctbRVal: 0,11=winterE’ inverno?Is it winter?
cle.<addr>.<mct>.flag.keypad.locked<mct>: mcta,mctbRVal: 0,11=activeBlocco keypadKeypad lock
cle.<addr>.<mct>.flag.normally.closed.contact.window<mct>: mcta,mctbRVal: 0,11=NCContatto finestra normalmente chiusoNormally closed window contact
cle.<addr>.<mct>.flag.pgm.allow<mct>: mcta,mctbRVal: 0,1
cle.<addr>.<mct>.flag.rsir1.function.b.enabled<mct>: mcta,mctbRVal: 0,1
cle.<addr>.<mct>.flag.window.open<mct>: mcta,mctbRVal: 0,11=openFinestra apertaWindow open
cle.<addr>.<mct>.flag.window.open.control.included<mct>: mcta,mctbRVal: 0,11=includedControllo finestra apertaWindow open check
cle.<addr>.<mct>.flag.wrx.auto.learning<mct>: mcta,mctbRVal: 0,1
cle.<addr>.<mct>.keypad.event<mct>: mcta,mctbRVal:click,down,upEvento dal keypadKeypad event
cle.<addr>.<mct>.keypad.event.data<mct>: mcta,mctbRVal: plus, minus, fan, manu,crTipo di dato inviato dal keypadData type sent from keypad
cle.<addr>.<mct>.offline<mct>: mcta,mctbRVal: 0,11=offlineOfflineOffline
cle.<addr>.<mct>.percentage.pi<mct>: mcta,mctbRVal: 0,100Percentuale di apertura della valvolaValve opening percentage
cle.<addr>.<mct>.relay.<x>.active<mct>: mcta,mctb, <x>: 1..8RVal: 0,11=activeRelè X attivo o noRelay X active or not
cle.<addr>.<mct>.temp.actual<mct>: mcta,mctbRVal: yy.zzzzEs: 22.3456 Temperatura corrente della stanzaEx: 22.3456 Current room temperature
cle.<addr>.<mct>.temp.setpoint<mct>: mcta,mctbRVal: integerTemperature di setpoint della stanzaRoom setpoint temperature
cle.<addr>.<mfp>.card.code<mfp>: mfpa,mfpbRVal: integerCodice carta presente nella MFPCode card present in MFP
cle.<addr>.<mfp>.card.dnd<mfp>: mfpa,mfpbRVal: 0,11=activeCarta non disturbare presenteDo Not Disturb card present
cle.<addr>.<mfp>.card.due.day<mfp>: mfpa,mfpbRVal: 0..31Giorno di scadenza cartaCard expiration day
cle.<addr>.<mfp>.card.due.hour<mfp>: mfpa,mfpbRVal:0..23Ora di scadenza cartaCard expiration time
cle.<addr>.<mfp>.card.due.month<mfp>: mfpa,mfpbRVal:1..12Mese di scadenza cartaCard expiration month
cle.<addr>.<mfp>.card.due.year<mfp>: mfpa,mfpbRVal:last two digits of current yearAnno di scadenza cartaCard expiration year
cle.<addr>.<mfp>.card.level<mfp>: mfpa,mfpbRVal: integerLivello carta inserita in MFPCard level inserted in MFP
cle.<addr>.<mfp>.card.reader.validity<mfp>: mfpa,mfpbRVal: enabled, disabled, outoftime, clientinroom, cardexpired,abdisabled,safeopenTipo validità carta inserita in MFPValidity type of card inserted in MFP
cle.<addr>.<mfp>.card.slot<x><mfp>: mfpa,mfpb - <x>: 1..5RVal: 0,11=active
cle.<addr>.<mfp>.excluded.festivity<mfp>: mfpa,mfpbRVal: 0,11=disabled
cle.<addr>.<mfp>.excluded.friday<mfp>: mfpa,mfpbRVal: 0,11=disabled
cle.<addr>.<mfp>.excluded.monday<mfp>: mfpa,mfpbRVal: 0,11=disabled
cle.<addr>.<mfp>.excluded.saturday<mfp>: mfpa,mfpbRVal: 0,11=disabled
cle.<addr>.<mfp>.excluded.sunday<mfp>: mfpa,mfpbRVal: 0,11=disabled
cle.<addr>.<mfp>.excluded.thursday<mfp>: mfpa,mfpbRVal: 0,11=disabled
cle.<addr>.<mfp>.excluded.tuesday<mfp>: mfpa,mfpbRVal: 0,11=disabled
cle.<addr>.<mfp>.excluded.wednesday<mfp>: mfpa,mfpbRVal: 0,11=disabled
cle.<addr>.<mfp>.exists<mfp>: mfpa,mfpbRVal: 0,11=existsMFP esiste o noMFP exists or not
cle.<addr>.<mfp>.flag.card.inserted<mfp>: mfpa,mfpbRVal: 0,11=presentCarta inseritaCard inserted
cle.<addr>.<mfp>.flag.card.read.error<mfp>: mfpa,mfpbRVal: 0,11=errorErrore di lettura cartaCard reading error
cle.<addr>.<mfp>.flag.card.read.error.different.password<mfp>: mfpa,mfpbRVal: 0,11=error
cle.<addr>.<mfp>.flag.password.error<mfp>: mfpa,mfpbRVal: 0,11=error
cle.<addr>.<mfp>.flag.plant.code.error<mfp>: mfpa,mfpbRVal: 0,11=error
cle.<addr>.<mfp>.led.call.cleaner<mfp>: mfpa,mfpbRVal: on,off,slow,quickStato led cleanerCleaner LED status
cle.<addr>.<mfp>.led.customer.in.camera<mfp>: mfpa,mfpbRVal: on,off,slow,quickStato led cliente nella stanzaRoom client LED status
cle.<addr>.<mfp>.led.not.disturb<mfp>: mfpa,mfpbRVal: on,off,slow,quickStato led DNDDo Not Disturb LED status
cle.<addr>.<mfp>.led.rejection<mfp>: mfpa,mfpbRVal: on,off,slow,quickStato led carta rifiutataRejected card LED status
cle.<addr>.<mfp>.led.sos<mfp>: mfpa,mfpbRVal: on,off,slow,quickStato led SOSSOS LED status
cle.<addr>.<mfp>.offline<mfp>: mfpa,mfpbRVal: 0,11=offlineMFP offline o noMFP offline or not
cle.<addr>.<mfp>.plant.code<mfp>: mfpa,mfpbRVal: integerCodice impiantoSystem code
cle.<addr>.<mfp>.transit.day<mfp>: mfpa,mfpbRVal:1..31
cle.<addr>.<mfp>.transit.hour<mfp>: mfpa,mfpbRVal:0..23
cle.<addr>.<mfp>.transit.minute<mfp>: mfpa,mfpbRVal:1..59
cle.<addr>.<mfp>.transit.month<mfp>: mfpa,mfpbRVal:1..12
cle.<addr>.<mfp>.transit.times<mfp>: mfpa,mfpbRVal: integer
cle.<addr>.<mfp>.value<mfp>: mfpa,mfpbRVal: 0,1
cle.<addr>.pouch.simulation.inputsRVal: integer
cle.<addr>.scf.existsRVal: 0,11=exists
cle.<addr>.scf.offlineRVal: 0,11=exists
cle.<addr>.slot<x>.end.hour<x>: 0..4RVal:0..23
cle.<addr>.slot<x>.end.minute<x>: 0..4RVal:1..59
cle.<addr>.slot<x>.start.hour<x>: 0..4RVal:0..23
cle.<addr>.slot<x>.start.minute<x>: 0..4RVal:1..59
cle.<addr>.tr.valueRVal: integer
cle.<addr>.<tsc>.card.code<tsc>:tsca,tscbRVal: integerCodice carta presenta nella tasca TSCCode card present in TSC pocket
cle.<addr>.<tsc>.card.dnd<tsc>:tsca,tscbRVal: 0,1Carta non disturbare presenteDo Not Disturb card present
cle.<addr>.<tsc>.card.due.day<tsc>:tsca,tscbRVal:1..31Giorno di scadenza cartaCard expiration day
cle.<addr>.<tsc>.card.due.hour<tsc>:tsca,tscbRVal:0..23Ora di scadenza cartaCard expiration time
cle.<addr>.<tsc>.card.due.month<tsc>:tsca,tscbRVal:1..12Mese di scadenza cartaCard expiration month
cle.<addr>.<tsc>.card.due.year<tsc>:tsca,tscbRVal:last two digits of current yearAnno di scadenza cartaCard expiration year
cle.<addr>.<tsc>.card.level<tsc>:tsca,tscbRVal: integerLivello carta inserita in TSCCard level inserted in TSC pocket
cle.<addr>.<tsc>.card.reader.validity<tsc>:tsca,tscbRVal: enabled, disabled, outoftime, clientinroom, cardexpired,abdisabled,safeopenTipo validità carta inserita in TSCValidity type of card inserted in TSC pocket
cle.<addr>.<tsc>.card.slot<x><tsc>:tsca,tscb - <x>: 1..5"RVal: 0,1
cle.<addr>.<tsc>.excluded.festivity<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.excluded.friday<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.excluded.monday<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.excluded.saturday<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.excluded.sunday<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.excluded.thursday<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.excluded.tuesday<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.excluded.wednesday<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.exists<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.flag.card.inserted<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.flag.card.read.error<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.flag.card.read.error.different.password<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.flag.password.error<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.flag.plant.code.error<tsc>:tsca,tscbRVal: 0,1
cle.<addr>.<tsc>.led.arrow<tsc>:tsca,tscbRVal: on,off,slow,quick
cle.<addr>.<tsc>.led.call.cleaner<tsc>:tsca,tscbRVal: on,off,slow,quick
cle.<addr>.<tsc>.offline<tsc>:tsca,tscbRVal: 0,11=offlineTSC offline o noTSC offline or not
cle.<addr>.<tsc>.plant.code<tsc>:tsca,tscbRVal: integerCodice impiantoSystem code
cle.<addr>.virtual.input.incma.modeRVal: normal, relative
cle.<addr>.virtual.input.incmb.modeRVal: normal, relative
cle.<addr>.wrx.existsRVal: 0,11=exists
cle.<addr>.wrx.offlineRVal: 0,11=exists

Persistent Variable

The persistent variable $CLE.SLEEP! (default value = 5) is used to add a delay (in milliseconds) before each command request on the bus. This delay should be increased as the length of the bus grows. Empirical observation suggests setting it to 5 milliseconds for short distances (< 30 meters) and 15-20 milliseconds for longer distances (> 100 meters).