A general use case is where the objective is to observe the state of something and report or notify on a change of state.
This is a variation to the how-to-add-a-magnetic-sensor posted earlier.
I recently purchased a dehumidifier. It has a bucket full indicator. Unfortunately it is located in the basement. If I don’t go check it every few hours there will be hours when it is not running because the bucket is full.
Additional hardware needed to the ruuvi tag: photo sensor mounted on the back of the board in a clear enclosure. This would allow the firmware to use the LED to display the state of the indicator. Simply use clear double sided tape to attach the ruuvi to the dehumidifier.
Revision in firmware to observe the state of the photo sensor, reflect it to the LED and include it’s status in the packet using the least significant bit of a field. For example in format 03, byte holds hundredths of a degree centigrade with a maximum of 99. If you don’t care about that degree of resolution, jam a 1 (by ORing a 0x01) into that field to indicate presence (which 50% of the time will increase the temperature reported by .01°C) and clear the lowest bit by ANDing with 0xFE (which 50% of the time will decrease the temperature reported by .01°C.
Another more incompatible idea is to use the range over 99 (in the case of the humidity). For example if the sensor is present add 100. The result is that values over 99 are indicate presence, values 99 or less indicate not-present. This has the disadvantage of confusing existing receiver applications like RuuviStation and RuuviCollector, but may be easier to display with Grafana by simply dividing by 100.
Receiver ( iPhone / android / datacollector ) needs to interpret and either report it when the application is queried or send an alert (email / SMS) when the state changes.
Anyone have additional thoughts?