SHC Tea Maker

Tea Maker

(In early implementation phase!)

Purpose

The tea maker consists of a control unit, a heating plate to heat water in a tea pot, a winch to put a tea bag or other tea container into the water, a sensor measuring the water temperature, a display and some navigation buttons for user input.

The device doesn't depend very much on smarthomatic. It could be used without a smarthomatic network at all. But it will receive the current time to be used by a timer function and it sends the curent device status, so it can be monitored by your home automation system.

Requirements & Development Process

After writing down things I wanted to implement for the tea maker, I thought about it and started writing a thorough and complete list of requirements which I'm now very happy about. After thinking about what to implement first, I created a small feature list. Then I thought about the development approach in general and decided to write down a system development process now used for the development of the tea maker. Please read it to better understand the lists below.

Functions, Behavior

Here's the WBS of the tea maker to track development progress. Only bugs are entered in GitHub and visible at the Kanban board.

Status Model

  • Not Started: Todo, open, initial state, implementation wasn't started yet.
  • Implementing: Implementation was started, but tesing of the feature is not possible yet.
  • Testing: Implemented / built up (in SW / HW / ME), feature can be tested.
  • Done: Testing done (for now), feature available to end user, but may contain bugs.
  • Verified: Feature covers all requirements, no known bugs, 100% ready for productive use.
EXCELTABLE IMPORTER

Tea Maker Menu Flow

EXCELTABLE IMPORTER

E2P Device Configuration

OffsetBlockContentTypeSizeDescription
0Hardware
Values for hardware setup, which have no special meaning to SHC device concepts + the DeviceType, which decides about the existence of further blocks.
DeviceTypeEnumValue1 BytesThe device can check with this value if the EEPROM data is meant for the actual type of device. If not, the device goes into an error mode.
Values: 0 = BaseStation, 20 = EnvSensor, 40 = PowerSwitch, 50 = RGBDimmer, 60 = Dimmer, 70 = SoilMoistureMeter, 80 = Thermostat, 90 = TeaMaker
8OsccalModeIntValue1 BytesThis value is used to change the speed of the internal oscillator. 0 = don't use OSCCAL calibration (e.g. external crystal oszillator is used). -128 = OSCCAL measure mode: the LED blinks every 60s, so the user can measure the original speed. -127..+127 = The speed is adjusted by the given amount in per mill (e.g. 10 means to speed up the device by +1%).
MinVal: -128, MaxVal: 127, Default: 0
16Reserved6 Bytesn/a
64Generic
This block contains SHC configuration data which every device has.
DeviceIDUIntValue12 BitsThe DeviceID identifies the specific unit in the SHC network. It is used to address the device and in messages the device sends. Every device has to have a different DeviceID.
MinVal: 0, MaxVal: 4095
76Reserved4 Bitsn/a
80PacketCounterUIntValue3 BytesThe PacketCounter is counted up throughout the whole lifetime of the device and is used to make the encrypted packets differently from each other every time.
MinVal: 0, MaxVal: 16777215
104Reserved19 Bytesn/a
256AesKeyByteArray32 BytesThis key is used to encrypt packets before sending and also used as primary key to decrypt packets. Special devices may have additional keys in their device specific block.
512TeaMaker
This block contains the specific configuration data that only tea maker needs.
BaseStationPacketCounterUIntValue3 BytesThis is the last remembered packet counter of a command from the base station. Packets with the same or lower number are ignored.
MinVal: 0, MaxVal: 16777215
536StartupConfirmationMessageByteArray32 BytesText shown on LCD at startup until a button is pressed.
792Reserved160 Bytesn/a
2072PresetCountUIntValue1 BytesThe number of presets to use.
MinVal: 1, MaxVal: 9
2080PresetNameByteArray[9]16 Bytes x 9The name of the brewing preset (most times the type of tea used), shown on the LCD.
3232HeatingTemperatureUIntValue[9]2 Bytes x 9Temperature to which the water is heated up in 1/10 degrees celsius (range is 0 to 100 degree celsius).
MinVal: 0, MaxVal: 1000, Default: 900
3376HeatingTemperatureDropUIntValue[9]1 Bytes x 9The number of degrees that the temperature has to drop after the maximum temperature was reached after powering off the heating plate when HeatingTemperature was reached (in 1/10 degree celsius).
MinVal: 0, MaxVal: 50, Default: 10
3448LastHeatingTimeSecUIntValue[9]2 Bytes x 9This is the time it took the last time to heat up the water. The value is used to show and calculate a countdown. Range is from 0 to 30 minutes, in seconds.
MinVal: 0, MaxVal: 1800
3592BrewingTemperatureUIntValue[9]2 Bytes x 9Temperature (in 1/10 degree celsius) to which the water is cooled off until brewing is started, in 1/10 degree celsius. The water is held at this temperature during the brewing phase.
MinVal: 0, MaxVal: 1000, Default: 900
3736BrewingTimeSecUIntValue[9]2 Bytes x 9This is how long the tea bag is placed inside the water at brewing temperature. Range is from 0 to 30 minutes, in seconds.
MinVal: 0, MaxVal: 1800, Default: 240
3880WarmingTemperatureUIntValue[9]2 Bytes x 9Temperature at which the water is held after brewing is finished.
MinVal: 0, MaxVal: 1000, Default: 500
4024WarmingTimeSecUIntValue[9]2 Bytes x 9This is how long the water is held at the warming temperature after brewing is finished. Range is from 0 to 12 hours, in seconds.
MinVal: 0, MaxVal: 43200, Default: 7200
4168Reserved72 Bytesn/a
4744BrewingRegulationRangeAboveUIntValue1 BytesThis defines at which temperature the heating plate is turned off when heating up in the brewing phase, in 1/10 degree celsius.
MinVal: 0, MaxVal: 50, Default: 20
4752BrewingRegulationRangeBelowUIntValue1 BytesThis defines at which temperature the heating plate is turned on again when the water is cooling off currently in the brewing phase, in 1/10 degree celsius.
MinVal: 0, MaxVal: 50, Default: 20
4760WarmingRegulationRangeAboveUIntValue1 BytesThis defines at which temperature the heating plate is turned off when heating up in the warming phase, in 1/10 degree celsius.
MinVal: 0, MaxVal: 50, Default: 20
4768WarmingRegulationRangeBelowUIntValue1 BytesThis defines at which temperature the heating plate is turned on again when the water is cooling off currently in the warming phase, in 1/10 degree celsius.
MinVal: 0, MaxVal: 50, Default: 20
4776BrewingPWMPercentageUIntValue1 BytesThe percentage of time the heating plate is one in one cycle of several seconds to minutes. The value has to be high enough to actually heat up the water also at the maximum brewing temperature and the maximum amount of water in the kettle.
MinVal: 0, MaxVal: 100, Default: 30
4784BrewingPWMCycleSecUIntValue1 BytesThe length of one heating PWM cycle in seconds in the brewing phase.
MinVal: 0, MaxVal: 255, Default: 30
4792WarmingPWMPercentageUIntValue1 BytesThe percentage of time the heating plate is one in one cycle of several seconds to minutes. The value has to be high enough to actually heat up the water also at the maximum warming temperature and the maximum amount of water in the kettle. The PWM cycle in general should be slower in the warming phase compared to the brewing phase, because usually the temperature to regulate to is not so important.
MinVal: 0, MaxVal: 100, Default: 30
4800WarmingPWMCycleSecUIntValue1 BytesThe length of one heating PWM cycle in seconds in the warming phase.
MinVal: 0, MaxVal: 255, Default: 180

Hardware Overview

PCBTea Maker PCB (THTThrough hole technology This is the conventional technique to stick pins of components through the PCB and solder them. This is easy to build up, unlinke using SMD components.)
100 x 50 mm
MicrocontrollerATMega 324PA (40-pin TQFP)
Clock Source10,24 MHz external quartz
RFM Transceiver ModeRX + TX
UARTonly debug TX
Power5V power supply