GithubHelp home page GithubHelp logo

cozy-nest's Introduction

cozy-nest

Home Automation brought to Cozy.

based on Brightnest

Run

Clone this repository, install dependencies and run server (it requires Node.js)

git clone git://github.com/Aldream/cozy-nest.git
cd cozy-template
npm install
node server.coffee

What is Cozy?

Cozy Logo

Cozy is a platform that brings all your web services in the same private space. With it, your web apps and your devices can share data easily, providing you with a new experience. You can install Cozy on your own hardware where no one profiles you. You install only the applications you want. You can build your own one too.

cozy-nest's People

Contributors

benjaminplanche avatar

Stargazers

Benjamin Bouvier avatar

Watchers

James Cloos avatar  avatar

cozy-nest's Issues

Measure - Condensate per min/hour/day/...

Idea

To adapt the granularity when fetching measures, the server could crunch once and for all the measures of a stream over a set time span, saving the result in DB.

This way, if a User wants to display measures taken over a large period, we could avoid flooding him with too much data points.

Proposition

  • Create a new model, extending Measure, with 2 timestamps to define the covered time span and several condensate values (avg, med, min, max, ...?)
  • Adapt the Measure controller and its routes

Manage Drivers

What Drivers are:

Node module exporting functions matching a predefined interface (init, add, update, delete, + apply for actuators).

Their init() may launch other programs, stored in a joined folder (ex: launching a server to communicate with the devices).

They should be easy to export/import. (archive?)

How Drivers should work:

  • In the app, add form to define and load a driver
  • Save the files (after decompression?) in a distinct folder in the driver repo.
  • Dynamically require and init its node module and add it to the list

To consider:

  • Save them somehow in DB?
  • Prevent malicious behavior (sandbox, permissions, ...)?
  • Offer an online catalog?

View - Devices

Idea

A page to manage the devices (sensors and actuators), and their drivers. They are all listed, with various tools to search among them, and details appearing on selection.

Proposition

Mockup published soon.

Measure - Normalize Dimensions & Units

Idea

Add some semantic to Measure.type, in order to let the app knows what kind of measures it is handling (can come handy when drawing or comparing measures).

Proposition

  • Add 1 or 2 model(s) to define the known dimensions (ex: temp, humidity, sum, ...) and units (ex: °c, K, %, NA, ...)
  • Replace the attribute Measure.type by a "foreign key" to the corresponding pair.

Make sure SensorDriver can only post Measures for Sensors it is taking care of.

Idea:

  • In Sensor.create, generate a closure function such as:

    thisSensor = @
    createMeasureForThisSensor = (data) -> thisSensor.createMeasure(data)
  • Pass this to SensorDriver .add, so that the driver can use it.

  • Delete controller method and route to create measure otherwise.

Not sure if such a solution is working -> test.

Add string interpretation & variables for ActuatorRule.value

Idea:

  • Possibility to use predefined variables in ActuatorRule.value field (such as the measures SensorRules are watching over)

    ex: actuatorRule.value = " {{ conditions[1].currentValue }} "

  • Add possibility to do simple operations in this field:

    ex: actuatorRule.value = " {{ (conditions[0].currentValue + conditions[1].currentValue) / 2 }} "

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.