This is the second post in a series discussing the development of a home weather station using Storyboard as the embedded user interface.
In the first post we discussed the general product idea and principle features. In this post we are going to put together a general system architecture. We can do this in block diagram format independent of our final hardware or operating system selection.
Without knowing the specific configuration of our hardware, we keep the design modular. We expect to create a controlling process for each of the local temperature, barometer and wind speed monitors. Each of these monitors will likely require a custom device driver interface, or use functionality from an existing device driver. These monitors will generate information that is consumed, and displayed, by the user interface. The user interface will not send information to these processes so the communication is one way from these modules.
The remote weather feed process is a more dynamic module. It receives configuration information that is generated by selections made in the user interface and then transmits data back to the user interface relating to the requested weather information. Initially we will only support long term forecast display for the current location, but in the future additional information may be generated and sent to the user interface module. This module will communicate over the standard network socket interface and the associated network stack. The specific details of how the information will be retrieved, i.e. using HTTP directly, an RSS feed or some other known service, are not important at this stage.
In order to continue application development while the final hardware and operating system decisions are made, we will leverage the Storyboard IO communication API.
In the next post we will define the system independent messages and their information payload. This definition will help to separate our embedded GUI design from the specific details of the platform it is running on and potentially allow us to start prototype development in a simulation environment.