Connected Devices/Projects/Project Link
Project Link aims to be your own, personal user agent for the smart home, creating a web of things that is completely yours. Instead of entrusting your data to a third party, your Link agent understands your preferences for how you want to interact with the world of devices in your home, and can even automate your connected world for you. All of this still done conveniently and securely, but completely under your control.
If you would like to participate, you can get in touch with our connected devices participation team, or find us on irc.mozilla.org, channel #foxlink.
Project Overview
Project Link (formerly Foxlink) is a short-term experiment to build software building blocks that can interact with various "things". Most code is done in Rust.
We are using the "Design Thinking" innovation approach by IDEO, where the philosophy of Product Innovation is at the center of technology (feasibility), person (desirability) & business (viability).
Phase 1
As the first step, we worked toward delivering a prototype that allows a user to -
- Setup "Link"
- Have their devices that use Z-wave/WiFi protocols be discovered by Link
- Interact & control their devices whether they are home or remote via a web-app.
- Configure rules around how these devices should automatically interact with each other for specific scenarios
- Receive notifications
Devices Supported in Phase 1
Device | Standard |
---|---|
D-Link Pan & Tilt Wi-Fi Camera DCS-5020L | WiFi |
Fibaro Motion Sensor | Z-Wave |
Philips Hue Lights | Zigbee (via Phillips Hue Bridge) |
Kwikset Door Lock SmartCode 910 | Z-Wave |
Schlage Door Lock BE469NXCAM619 | Z-Wave |
For more details, see Pilot Scenes
Phase 1 Status - Completed
Milestone | Date | Status |
---|---|---|
Gate 0 approval | 2016.1.11 | Done |
Project kickoff | 2016.2.1 | Done |
Integration Meetup | 2016.3.21 | Done |
Pilot Scene 1 End to End Integration | 2016.4.15 | Done |
Pilot Scene 2 End to End Integration | 2016.4.15 | Done |
Phase 1 Team Participants
- Aleh Zasypkin
- Andrew Osmond
- Christiane Ruetten
- Dave Hylands
- David Rajchenbach-Teller
- Fabrice Desré
- Fernando Jiménez Moreno
- Francisco Jordano
- Guillaume Marty
- Hema Koka
- Johan Lorenzo
- Julie McCracken
- Julien Wajsberg
- Marcus Cavanaugh
- Michiel Bertus de Jong
- No-Jun Park
- Preeti Sanketh
- Sam Giles
Participation
Project Link is at a very early stage and we are still figuring out many thing, including how to best accept contributions. But don't let this deter you!
The core of Project Link is developed in Rust. The front-end is developed in HTML5/JS using REST/WebSocket.
Help Wanted
We maintain lists of issues for which we are looking for help.
- Help Wanted.
- Help Wanted... in Rust.
- Help Wanted... in HTML5/JS .
- Help Wanted... coming up with use cases and stories
We also maintain a full, unclassified, list of ongoing issues. If you wish to help, don't hesitate to look at them, but they may not be as easy or as detailed:
And all our source code may be found on GitHub repositories.
Getting In Touch
Please subscribe to our mailing-list.
We've established Project Link on Discourse
Otherwise, the best way to get in touch with us is to come and chat through irc. We can be found on channel #foxlink of irc.mozilla.org.
If you wish to file a bug, please visit our GitHub repositories and file an issue.
We also discuss our design decisions, improvements or radical new directions as Requests For Comments. Feel free to take a look and to participate.
Development
Technical documentation
- Straw-man PoC description on etherpad
- Google Drive folder
- Box-Client networking (draft)
- Authentication
- Taxonomy
- Philips Hub API
- OpenZWave Library
- Tunneling
- Registration Server
- TLS
Presentations
Following are presentations made during the 2016/03 workweek.
- Overall Architecture Diagram
- Pilot Scenes
- UI (Theme View v0.75)
- UI (Home View v1.0)
- Web App Implementation
- UPnP and SSDP
- WebPush
- Networking Overview
- Authentication and Tunneling
- Market Research
Repositories
All code is open source and hosted on https://github.com/fxbox. Please file bugs on Github issues for these repositories.
- foxbox: foxbox daemon
- openzwave-adapter: the foxbox adapter for openzwave
- openzwave-rust: Rust wrapper for the open-zwave library
- app for Project Link
- thinkerbell: scripting engine for the Foxbox
- openzwave-stateful-rust
- taxonomy: shared implementation of the taxonomy data structures
- registration-server: to help with foxbox discovery
- users: project Link user management and authentication lib
- multicast dns utils: basic command line utils that demonstate multicast-dns lib capabilities
- multicast dns: experimental mDNS Rust wrapper around Avahi C libraries
- RFC: discussion about design decisions
- dns server: server that helps the Box to announce its local IP address without relying on mDNS, and to register its LetsEncrypt cert for use on its local IP address
- open zwave: a C++ and DotNet library to control Z-Wave Networks via a Z-Wave Controller
- iron cors: helping to add CORS to an Iron server
- [https://github.com/fxbox/adapters adapters: API for defining and registering adapters for the Foxbox
- standalone ipcam: standalone IP camera (uses USB camera or RPi camera) and also IP camera simulator
- libxbee-rust: A wrapper for libxbee
Complex and/or breaking changes are discussed as Requests For Comments.
IRC
You can find us on irc.mozilla.org, channel #foxlink.
Team Meetings
We are using some agile practices:
- "Stand-up" meetings happen on etherpad and on IRC every weekday between 5pm and 5:15pm UTC.
- Weekly meetings happen in Vidyo and on etherpad every monday between 5pm and 6pm UTC.
QA
Project Link Test Plan
Project Link Test Cases
Integration Test Environment Design Document
Proposals
Add more:
Connected Devices/Projects/Project Link/Proposal Template - {{subst:Proposal}}
Enter your proposal name/topic into box below to create a wiki using the Link Proposal template and click the create button. <createbox> align=left type=create preload=Connected Devices/Projects/Project Link/Proposal Template prefix=Project Link Proposal/ </createbox>