3. PRESENTED BY
Richard A. Leddy
âą Many years programming since college (allworkandnoplaymakesjackadull-)
â AI Software, Web Software, Business Applications, Educational Software
â Real-time programming for data acquisition: Linux, Arduino, Teensy
â Recent Work (2017 -2018)
âą AxiomWare Bluetooth and MQTT Communication Stack Application Framework
âą Bioreactor Startup - Device to Web - Full Stack
â Writing: posts and more posts on their way
âą Blockchain Consensus, Evolutionary Computation
â Review Courses and Certs (Last Summer):
âą Blockchain, AI, Robotics
âą Quantum Computing ???
Who am I? Copious Systems - www.copious.world
4. PRESENTED BY
1 Freedom of Movement
User -> Device -> User. What does that mean? Remove control, Remote management,
Sensor continuity
2 Of Meshes and Databases
Device -> Store -> Web Server. Data collection, responsive apps, data availability, Fog,
Edge, Natural data shards.
3 Web Page Visualization
Web Server -> Page View. Reporting requirements.
Agenda:
6. PRESENTED BY
âą Remote Control
âą Remote Management
âą Sensor Continuity
Freedom of Movement
User -> Device -> User
Icons made by: Freepik from www.flaticon.com
7. PRESENTED BY
Remote Control
âą Commands Sent to MCU
â Sequence Recording
â Predictable Delayed Response
Remote Management
âą Control Parameters
â Sensor Limits
â Schedule Sequences of Operations
Sensor Continuity
âą Sensor in Motion
âą Gateway in Motion
Freedom of Movement
https://www.arduinolibraries.info/libraries/tiny-cmd-table
8. PRESENTED BY
Two Scenarios Suggest Different Use Cases
âą Sensor in Motion
â Measurement Routing
âą Crossover Points
âą Target Sequence Storage
âą Gateway in Motion
â Sensor Entry and Exit
â Measurement Collective
âą Topography Formation
Sensor Continuity
9. PRESENTED BY
Sensors in Motion
https://conferences.sigcomm.org/sigcomm/2013/papers/mcc/p15.pdf
https://conferences.sigcomm.org/sigcomm/2012/paper/mcc/p13.pdf
12. PRESENTED BY
âą Problems
âą Data Collection
âą Responsive Apps
âą Data Availability
âą Cloud, Fog, Edge
âą Natural Data Shards
âą Database Options
Of Meshes and Databases
Device -> Store -> Web Server
https://www.digitaltrends.com/computing/worlds-smallest-computer-dwarfed-by-rice-grain/
13. PRESENTED BY
The obvious - but should be mentioned
âą Data Collection
â Choose a Database
Problems
14. PRESENTED BY
âą Responsive Apps
âą Characterize Responses
âą Provide Data Marshaling
âą Manage Connections
âą Work in Gangs
âą Pathway Assignments
âą Pub/Sub
âą etc.
Problems
15. PRESENTED BY
Formalize Responses to Sensor Notifications
Code:
âš
dapi.on(âcom.axiomware.characteristic.axm_count", dapi.addResponse(AXM_countNotify,(value,format,units) => {
// do whatever...
})
);
dapi.on("com.sensirion.characteristic.humidity", dapi.addResponse(SmartHumi_Notify,(value,format,units) => {
// do whatever...
console.log("RESPOND -- com.sensirion.characteristic.humidity");
console.log(`${value}, ${format}, ${units}`);
})
);
https://www.axiomware.com/
16. PRESENTED BY
âą Data Availability
âą Sensor Events
âą Sensor Streams
âą Gathering Intervals
âą Merging into Archives
Problems
17. PRESENTED BY
Formalize Responses to Sensor Notifications
Code:
var redis = require("redis"),
redClient = redis.createClient(); // leave it to the module to figure out how to connect
redClient.on("error", function (err) {
console.log("Error " + err);
});
dapi.on("com.sensirion.characteristic.humidity", dapi.addResponse(SmartHumi_Notify,(value,format,units) => {
console.log(`${value}, ${format}, ${units}`);
var humidityOut = formatValue(value,format,units);
// redClient.append(myId(SmartHumi_Notify), `,${timeStamp()} : { humidity: ${humidityOut} }`)
// new way
redClient.xadd(myId(SmartHumi_Notify),`* humidity ${humidityOut}`)
})
);
18. PRESENTED BY
âą Cloud, Fog, Edge
âą Where to gather data
âą When to move data blocks
âą Save Time Series Analysis
âą Storing Likely Requests
Problems
Taking Networks into Consideration
19. PRESENTED BY
âą Natural Shards
âą Roving Sensors
âą Trajectories
âą Not a distributed hash
Problems
Segmented Trajectories
10:00
10:02
10:03
10:06
10:07
10:08
10:16
10:17
10:18
10:19
20. PRESENTED BY
Delivering Long Time Intervals (testing laptops 10K points)
âą MongoDB
â One Collection - linear time in number of points
â Part of Document -
âą InfluxDB
â Measurements - better speed
âą Redis
â One Key - fairly constant delivery time - might need higher clock resolution
â Stream
âą Just tried it out
Database Options http://www.copious.world/demos/runtimes.html
22. PRESENTED BY
âą Reporting Requirements
âą Streaming
âą Intervals
âą State
âą Rate of Display
âą Display Options
Web Page Visualization
Web Server -> Page View
23. PRESENTED BY
Web Page Display Techniques are not All Equal
âą D3
â Interesting DOM Management
â Speedy for Special Use Cases
âą But, the exception can be the rule
âą Virtual DOM Frameworks (Vue.js e.g.)
â DOM Manipulation with Time Series - Questionable
âą Canvas Versions Just a Little Faster
â Great for State Management and Programming Ease
âą Hardware Accelerated (Pixi.js - flat WebGL)
â High speed graphics rendering
â Still best to do analysis on the backend
Display Options
25. PRESENTED BY
1 Prefer Redis for Accessing Data
Small, Fast, Easy Formalism.
2 Try to Manage User Expectations but Warm Up Data
Coalesce, Archive, Relocate.
3 Stay Foggy
Analysis near complete data or wholistic trajectories - deliver less data less often.
Conclusions: