// Copyright (C) 2019-2026 Fredrik Öhrström (gpl-3.0-or-later)
driver {
name = rfmamb
meter_type = TempHygroMeter
default_fields = name,id,current_temperature_c,current_relative_humidity_rh,timestamp
manufacturer = BMeters
detect {
mvt = BMT,10,1b
}
mfct_tpl_status_bits {
mask_bits = 0x7f
default_message = OK
map {
name = APP_BUSY
value = 0x01
test = set
}
map {
name = APP_ERROR
value = 0x02
test = set
}
map {
name = LOW_BATTERY
value = 0x04
test = set
}
map {
name = MODULE_REMOVED
value = 0x08
test = set
}
map {
name = SENSOR_READ_ERROR
value = 0x10
test = set
}
map {
name = TEMP_OUT_OF_RANGE
value = 0x20
test = set
}
map {
name = RH_OUT_OF_RANGE
value = 0x40
test = set
}
}
fields {
field {
name = status
quantity = Text
info = 'Status and error flags.'
attributes = STATUS,INCLUDE_TPL_STATUS
}
field {
name = current_temperature
quantity = Temperature
info = 'The current temperature.'
match {
measurement_type = Instantaneous
vif_range = ExternalTemperature
}
}
field {
name = average_temperature_1h
quantity = Temperature
info = 'The average temperature over the last hour.'
match {
measurement_type = Instantaneous
vif_range = ExternalTemperature
storage_nr = 1
}
}
field {
name = average_temperature_24h
quantity = Temperature
info = 'The average temperature over the last 24 hours.'
match {
measurement_type = Instantaneous
vif_range = ExternalTemperature
storage_nr = 2
}
}
field {
name = maximum_temperature_1h
quantity = Temperature
info = 'The maximum temperature over the last hour.'
match {
measurement_type = Maximum
vif_range = ExternalTemperature
}
}
field {
name = maximum_temperature_24h
quantity = Temperature
info = 'The maximum temperature over the last 24 hours.'
match {
measurement_type = Maximum
vif_range = ExternalTemperature
storage_nr = 1
}
}
field {
name = minimum_temperature_1h
quantity = Temperature
info = 'The minimum temperature over the last hour.'
match {
measurement_type = Minimum
vif_range = ExternalTemperature
}
}
field {
name = minimum_temperature_24h
quantity = Temperature
info = 'The minimum temperature over the last 24 hours.'
match {
measurement_type = Minimum
vif_range = ExternalTemperature
storage_nr = 1
}
}
field {
name = current_relative_humidity
quantity = RelativeHumidity
info = 'The current relative humidity.'
match {
measurement_type = Instantaneous
vif_range = RelativeHumidity
}
}
field {
name = average_relative_humidity_1h
quantity = RelativeHumidity
info = 'The average relative humidity over the last hour.'
match {
measurement_type = Instantaneous
vif_range = RelativeHumidity
storage_nr = 1
}
}
field {
name = average_relative_humidity_24h
quantity = RelativeHumidity
info = 'The average relative humidity over the last 24 hours.'
match {
measurement_type = Instantaneous
vif_range = RelativeHumidity
storage_nr = 2
}
}
field {
name = maximum_relative_humidity_1h
quantity = RelativeHumidity
info = 'The maximum relative humidity over the last hour.'
match {
measurement_type = Maximum
vif_range = RelativeHumidity
}
}
field {
name = maximum_relative_humidity_24h
quantity = RelativeHumidity
info = 'The maximum relative humidity over the last 24 hours.'
match {
measurement_type = Maximum
vif_range = RelativeHumidity
storage_nr = 1
}
}
field {
name = minimum_relative_humidity_1h
quantity = RelativeHumidity
info = 'The minimum relative humidity over the last hour.'
match {
measurement_type = Minimum
vif_range = RelativeHumidity
}
}
field {
name = minimum_relative_humidity_24h
quantity = RelativeHumidity
info = 'The minimum relative humidity over the last 24 hours.'
match {
measurement_type = Minimum
vif_range = RelativeHumidity
storage_nr = 1
}
}
field {
name = device
quantity = PointInTime
info = 'The meter date time.'
match {
measurement_type = Instantaneous
vif_range = DateTime
}
}
}
tests {
test {
args = 'Rummet rfmamb 11772288 NOKEY'
telegram = 5744b40988227711101b7ab20800000265a00842658f088201659f08226589081265a0086265510852652b0902fb1aba0142fb1ab0018201fb1abd0122fb1aa90112fb1aba0162fb1aa60152fb1af501066d3b3bb36b2a00
json = '{"_":"telegram","media":"room sensor","meter":"rfmamb","name":"Rummet","id":"11772288","status":"MODULE_REMOVED","current_temperature_c":22.08,"average_temperature_1h_c":21.91,"average_temperature_24h_c":22.07,"maximum_temperature_1h_c":22.08,"minimum_temperature_1h_c":21.85,"maximum_temperature_24h_c":23.47,"minimum_temperature_24h_c":21.29,"current_relative_humidity_rh":44.2,"average_relative_humidity_1h_rh":43.2,"average_relative_humidity_24h_rh":44.5,"minimum_relative_humidity_1h_rh":42.5,"maximum_relative_humidity_1h_rh":44.2,"maximum_relative_humidity_24h_rh":50.1,"minimum_relative_humidity_24h_rh":42.2,"device_datetime":"2019-10-11 19:59","timestamp":"1111-11-11T11:11:11Z"}'
fields = 'Rummet;11772288;22.08;44.2;1111-11-11 11:11.11'
}
test {
args = 'Pokojak rfmamb 23699558 6C649F296476D737CACB75A2D639CE14'
telegram = 5e44b40958956923101b7a7f085005816afb5f6f40ec742610b93c109973edd8c098f505d5dfcfd53dfd72708178e4b81436cb753c6dff5094c48c26607c66419628d424ce41f38f9bd927757d82fa43396aa59a77c694acadab776460d472
json = '{"_":"telegram","media":"room sensor","meter":"rfmamb","name":"Pokojak","id":"23699558","status":"MODULE_REMOVED","current_temperature_c":20.91,"average_temperature_1h_c":20.95,"average_temperature_24h_c":19.5,"maximum_temperature_1h_c":20.98,"minimum_temperature_1h_c":20.91,"maximum_temperature_24h_c":19.88,"minimum_temperature_24h_c":19.07,"current_relative_humidity_rh":35.8,"average_relative_humidity_1h_rh":36.1,"average_relative_humidity_24h_rh":36.9,"minimum_relative_humidity_1h_rh":35.8,"maximum_relative_humidity_1h_rh":36.5,"maximum_relative_humidity_24h_rh":37,"minimum_relative_humidity_24h_rh":36.7,"device_datetime":"2026-02-09 08:59","timestamp":"1111-11-11T11:11:11Z"}'
fields = 'Pokojak;23699558;20.91;35.8;1111-11-11 11:11.11'
}
}
}