OK, I think I’ve cracked it.. does the below look ok?
metadata {
definition (name: "Virtual BME680", namespace: "hubitat", author: "Daniel Edge") {
capability "Carbon Dioxide Measurement"
capability "Illuminance Measurement"
capability "Relative Humidity Measurement"
capability "Temperature Measurement"
capability "Pressure Measurement"
command "setCarbonDioxide", ["Number"]
command "setIlluminance", ["Number"]
command "setRelativeHumidity", ["Number"]
command "setTemperature", ["Number"]
command "setPressure", ["Number"]
command "setIAQ", ["Number"]
command "setCalibrationStatus", ["Number"]
attribute "IAQ", "Number"
attribute "Calibration", "Number"
}
preferences {
input name: "logEnable", type: "bool", title: "Enable debug logging", defaultValue: true
input name: "txtEnable", type: "bool", title: "Enable descriptionText logging", defaultValue: true
}
}
def logsOff(){
log.warn "debug logging disabled..."
device.updateSetting("logEnable",[value:"false",type:"bool"])
}
def installed() {
log.warn "installed..."
/* arrived()
accelerationInactive()
COClear()
close()
setIlluminance(50)
setCarbonDioxide(350)
setRelativeHumidity(35)
motionInactive()
smokeClear()
setTemperature(70)
dry()*/
runIn(1800,logsOff)
}
def updated() {
log.info "updated..."
log.warn "debug logging is: ${logEnable == true}"
log.warn "description logging is: ${txtEnable == true}"
if (logEnable) runIn(1800,logsOff)
}
def parse(String description) {
}
def setIlluminance(lux) {
def descriptionText = "${device.displayName} is ${lux} lux"
if (txtEnable) log.info "${descriptionText}"
sendEvent(name: "illuminance", value: lux, descriptionText: descriptionText, unit: "Lux")
}
def setCarbonDioxide(CO2) {
def descriptionText = "${device.displayName} Carbon Dioxide is ${CO2} ppm"
if (txtEnable) log.info "${descriptionText}"
sendEvent(name: "carbonDioxide", value: CO2, descriptionText: descriptionText, unit: "ppm")
}
def setRelativeHumidity(humid) {
def descriptionText = "${device.displayName} is ${humid}% humidity"
if (txtEnable) log.info "${descriptionText}"
sendEvent(name: "humidity", value: humid, descriptionText: descriptionText, unit: "RH%")
}
def setTemperature(temp) {
def unit = "°${location.temperatureScale}"
def descriptionText = "${device.displayName} is ${temp}${unit}"
if (txtEnable) log.info "${descriptionText}"
sendEvent(name: "temperature", value: temp, descriptionText: descriptionText, unit: unit)
}
def setPressure(Pressure) {
def descriptionText = "${device.displayName} Pressure is ${Pressure} ohms"
if (txtEnable) log.info "${descriptionText}"
sendEvent(name: "Pressure", value: Pressure, descriptionText: descriptionText, unit: "mbar")
}
def setIAQ(IAQ) {
def descriptionText = "${device.displayName} IAQ is ${IAQ}"
if (txtEnable) log.info "${descriptionText}"
sendEvent(name: "IAQ", value: IAQ, descriptionText: descriptionText, unit: "IAQ")
}
def setCalibrationStatus(CalStatus) {
def descriptionText = "${device.displayName} CalStatus is ${CalStatus}"
if (txtEnable) log.info "${descriptionText}"
sendEvent(name: "Calibration", value: CalStatus, descriptionText: descriptionText, unit: "CalStatus")
}