250 likes | 340 Views
Alex Edgcomb Oral Qualification March 2nd, 2011. A Graphical Monitoring and Notification Flow Language (MNFL) for User-Configurable In-Home Assistive Monitoring. The Goal: User-configurable notification systems for in-home use. In bathroom for 1 hour. Napping too long. Fall down at home.
E N D
Alex Edgcomb Oral Qualification March 2nd, 2011 A Graphical Monitoring and Notification Flow Language (MNFL) for User-Configurable In-Home Assistive Monitoring
The Goal: User-configurable notification systems for in-home use In bathroom for 1 hour Napping too long Fall down at home Identify person at front door
Not enough configurability QuietCare GrandCare BeClose
Too much configurability X10 (Also dangerous) SmartHome
Outside too long at night Grandma has Alzheimer’s Not safe to be outside at night Want to be notified if she is for long
Defining the system Leaving = motion to the right Night = 10PM to 5AM Returning = motion to the left Send a text message if someone leaves, without returning, for more than 10 minutes at night.
Microsoft VPL • If-statements with >1 variable require Join • Join operator only takes two values at a time • Join waits for both variables to receive data • Asynchronous data sources leads to raise condition. • If-statements require all variables using in If-statement and Calculations done afterward. • Hard (if not impossible) to increment on a raising/falling edge
Lego Mindstorms v2.0 • Lacks global variables. • Variables cannot be read/written more than once. • No sense of actual time.
Scratch New functionality leads to: • Redundant code • Complex code Reason: Independent behavior is not separated away. For example, add a 2nd door: • Create second code block • Embed new timer/variable
RIBS and RIMS inWindow = (time >= 10PM || time <= 5AM) var Time 10minWait = time Period length = 1 second 1) Define synch SM in RIBS. 2) Automatically convert to C code in RIMS. CS120B (Introduction to Embedded Systems) students take 5+ weeks to correctly describe exact behavior.
MNFL Data Types Number – Negative and positive whole numbers Boolean – True / False Picture – 2D array of pixels Video – Stream of pictures Tone – A pair of {frequency, amplitude} Sound – Stream of tones
MNFL Modifiers of Data Types Stream Snapshot Snippet
Video demo YouTube version of video: http://www.youtube.com/user/eslucr#p/u/9/xpaOkhYBXT8
Got up 5 or more times at night “Got up” = was motion, then no motion for 10 minutes
KPN Execution semantics • Kahn processing networks (KPN) • Processes communicate through channels • When all input channels have a token, the process executes and outputs tokens Kahn, G. The Semantics of a Simple Language for Parallel Programming. Information Processing 1974. North-Holland Publishing Company, 1974.
SDF Execution semantics • Synchronous data flow • Process = KPN process • Channel = KPN channel • Difference: • Processes read and write a constant number of tokens. Lee, Edward A. and David G. Messerschmitt. Synchronous Data Flow. Proceedings of the IEEE, vol. 75, no. 9, p 1235-1245, September, 1987.
MNFL Execution semantics • Monitoring and notification network language (MNFL) • Block = KPN process • Connection = KPN channel • Difference • Block’s execute when any input channel has a token
MNFL block SM • Inside each block is a state machine. • Q = queue of inputs I = current input • P = previous input O = output
Implementation figures(as of 02/27/11) • 8,000 total lines of ActionScript • 700 lines for discrete event simulation engine • 400 lines for base block class • 80% related to graphical appearance and behavior • 50 – 600 lines for each block • Largest two blocks: • Send message - high configurability • Fall extractor - detecting falls from silhouettes • 26 fully implemented blocks • Block spawn, deletion and connection creation take less than 1 ms on a single core 3.0GHz PC.
Conclusions and Future work • EasyNotify • Easy to use compared to currently available systems • Core blocks contain in-home functionality • MNFL • Data types tailored to in-home monitoring sensors • Non-restrictive block communication • Human subject trials to improve usability • Develop mechanism for users to build and integrate new blocks • Move computations to cloud