Giter Club home page Giter Club logo

simulux's Introduction

SIMULUX

A complete server-client stack to bring all smart light vendors together under one app.


One day I came into my room containing Yeelight wifi lights and tried to turn them on with their app. No dice. The server in Singapore was down. What?! Why must I rely on a server many thousand kilometers away to turn on the lights right above my head. I reluctantly reached for the physical light switch as I began thinking of how I could fix this problem.

The solution is Simulux, which roughly translates from latin to Together Light. Simulux aims to abstract the logic between smart light vendors and represent them together, under the same app while bridging them using your own server (a Pi on a local network maybe?).


Angular SPA Client

The front-end app is written as an Angular SPA. Development is ongoing as features are continuously added. The project is currently in early phases.


Go HTTP Server

The back-end HTTP server is written using Go. Go was chosen for its simplicity, speed and cross-compilation. The aim is for the complete app to be an easily installable binary + resource files and simply work on whichever computer you choose to run it on. The http server currently registers two primary route prefixes:

  • /api - for its CRUD operations.
  • / - for the SPA and its resources.

Light Vendors

The structure of the server code which looks after the abstraction is still under development. However, once there is a clear methodology in place I welcome collaborators to implement plugins for vendors currently not supported on this platform such as Phillips Hue and LiFX.

Current Vendor Support

  • Yeelight (partial)

Database

Simulux uses SQLite to store its application information. A relational database was chosen due to the nature of the relationships used in the application as well as the expectation for low data volumes. In essence, the data is high in complexity and low in volume. SQLite is chosen as the database vendor as it offers the right feature set while being extremely lightweight. It also operates without the need for a database server, simplifying the application further and removing possible failure points. This application needs to run as stable as possible without specialist user intervention.


Build Pipeline

A build pipeline is planned.


Contributors

  • Tom van Dinther (Code Owner)

License

Mozilla Public License 2.0

simulux's People

Contributors

dependabot[bot] avatar tvandinther avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.