A level indicator empties to nothing; a thermometer does not. The bulb is the sensing element and always holds liquid, the column rises from it, and the scale belongs to the stem rather than to the whole instrument. Beyond that the component carries what a thermometer carries and a tank has no use for: a second scale in another temperature unit, the maximum and minimum reached since the memory was last reset, a setpoint marker, and alarm bands the liquid itself can take its colour from.
min, max and value are in the unit the instrument is written in. scalePosition chooses which sides carry a scale, and ticksVisibility and labelsVisibility decide how finely it is marked.
secondaryUnit puts a second scale down the far side in celsius, fahrenheit or kelvin. It is ticked at round values of its own unit and placed by converting each mark back, so the two scales do not line up — which is exactly what a dual-scale thermometer looks like, and the only honest way to draw one.
ranges paints the bands behind the column, colorByRange lets the liquid take the colour of the band it has reached, and showExtremes leaves the two markers a max-min thermometer leaves behind. resetExtremes() puts them back on the reading.
Highest and lowest hold where the reading has been.
orientation="horizontal" lays the instrument along a strip, filling from the bulb at the left. Setting bulb to false drops the reservoir for a thermometer drawn into a panel cut-out, where the bulb sits behind the fascia. The page sets it from script, because a boolean attribute is on whenever it is present, even as bulb="false".
quality is carried by every component that extends the scale engine. A bad reading is hatched and an uncertain or stale one is dimmed, so a value that must not be acted on never looks like one that can be.