.. ot-topic:: ecproposal.ec1.linux.exercise_sensors :dependencies: ecproposal.ec1.linux.dev_mgmt, ecproposal.ec1.cxx.iface, ecproposal.ec1.cxx.build, ecproposal.ec1.git EX: Temperature Sensors ======================= .. contents:: :local: Goals ----- Combine programming skills with OS/hardware knowledge. * Learn how to interact with hardware on Linux * Learn how to design and use software interfaces Hardware -------- A number of different temperature sensors. * DS18S20 (Onewire) (:download:`Datasheet `) * `LM73 (I2C) ` (:download:`Datasheet `) Outcome ------- * A set of C++ classes implementing an ad-hoc ``Thermometer`` interface * DS18S20 via Onewire filesystem (`here `__) * LM73 via userspace I2C (`here `__) * Both DS18S20 and LM73 via the ``hwmon`` driver interface (`here `__) * Code to read a JSON sensor configuration file * Using an external library, possibly `this one `__ * See how hard that is with C/C++ * A program or two to * Read out sensors, and output reports of different sorts * Calculate averages * Possibly see how `SQLite3 `__ goes. I'd rather not do this but save the time for an easier Python experience.