# ==================================================================== # Auth: dodd # File: sentinel.txt # Revn: 05-10-2022 0.2 # Func: jot down some ideas about what the hub is and how it works # # TODO: # ==================================================================== # CHANGE LOG # -------------------------------------------------------------------- # 04-27-2022: init # 05-10-2022: changed name from hub to sentinel # # ==================================================================== elevator pitch:: execute a command in terminal terminal sends request to external hub device hub pings one or more homemade smarthome devices smarthome devices repond to hub hub sends information back to terminal terminal displays requested data idea:: filter network model " /----\ /----\ / v / v |A| |B| |C| ( but with more C nodes ) ^ / ^ / \----/ \----/ " terminal program is node A hub is node B other devices are nodes C cat feeder ball lamp door monitor etc design:: how -> networking language _python_ --> easy to write, will work moves challenge to the project _c/c++_ --> segmentation fault (core dumped). pass _golang_ --> will need to learn networks pretty well I'm already getting pretty good experience with golang tho _rust_ --> can't even get the fucking syntax to highlight everything important is going to need to be hardcoded? ports, ip addresses probably would want to be connection-oriented protocol TCP/IP usage:: terminal commands ask:: -> ask deviceC property ==> send message to deviceC asking for status report on property ==> fail gracefully if property doesnt exist for given device --> ask cat-feeder fill example command --> cat-feeder.fill 50% example response --> ask ball-lamp soc example command --> ball-lamp.soc 20% example response tell:: -> tell deviceC command argument ==> send message to deviceC instructing it to commit an action ==> fail gracefully if command doesn't exist for device or if argument is invalid --> tell door arm on example command --> door.arm on example response --> tell ball-lamp color blue example command --> ball-lamp.color blue example response list:: -> list [deviceC] -v ==> return a list of devices (deviceC not specified) ==> ping deviceC to see what properties it has and their direction ==> including verbose -v flag shows devices and their properties ==> including -v and a device is treated like only specifying the device --> list example command --> door example response ball-lamp cat-feeder office-light --> list ball-lamp example command --> ball-lamp example response \--^ on \--^ off \--^ color \-- white \-- red \-- green \-- blue \-- rainbow \--^ bright[ness] \-- [1 - 100] \--v soc \--v batt[ery] --> list -v example command --> door example response \--^ arm \--v status \--v soc \--v batt[ery] ball-lamp \--^ on \--^ off \--^ color \-- white \-- red \-- green \-- blue \-- rainbow \--^ bright[ness] \-- [1 - 100] \--v soc \--v batt[ery] (etc) stats:: -> stats ==> request statistics from all online devices ===> uptime, battery, current status on all properties, en masse