Code Monkey home page Code Monkey logo

kizcool's Introduction

logo

Kizcool

A CLI and go package to control devices from Velux, Somfy and other vendors using the Overkiz platform.

Build Status

Components

  • Executable kizcool/exe/kizcmd is a command-line utility to control devices.
  • Package kizcool provides a high-level client with structs for events and devices. Documentation.
  • Package kizcool/api provides a lower-level api client that returns the raw responses from the server without parsing. Documentation.

Command line tool

Download and install kizcmd

go get -u github.com/sgrimee/kizcool/cmd/kizcmd
go install github.com/sgrimee/kizcool/cmd/kizcmd

Create a configuration file

kizcmd configure

Get all devices names

kizcmd get labels

Send a command to a device

kizcmd on "my light"
kizcmd off "my light"
kizcmd instensity "my light" 50

kizcmd open "my window"
kizcmd close "my window"

kizcmd open "my blind"
kizcmd close "my blind"
kizcmd closure "my blind" 75

Get all devices data

kizcmd get devices

Get one device in json format. Hint: jq is a nice json formatter

kizcmd get device "parents window" -ojson | jq

Continuously poll for events from the installation and display them on the console

kizcmd listen

Environment variables

As an alternative to the config file, configuration items can be given as environment variables:

  • KIZ_USERNAME
  • KIZ_PASSWORD
  • KIZ_BASE_URL

Requirements

Go version

Golang >= 1.13

Supported gateways

This packages interacts with the Overkiz API, as used by Somfy's Tahoma devices. It should work with other controllers but only Tahoma was tested.

Supported devices

Support is provided for the following devices:

  • Velux Integra electric window: GGL-GGU
  • Velux Integra electric roller shutter: SML
  • Velux Integra spotlight: KRA-100 (hard to find)

However, the Overkiz system supports many more devices from several vendors. Some may work out of the box. Support for others should be easy to add. Please file an issue to report other working devices or request the addition of new devices.

Supported platforms

This should work wherever go works. Tested on mac and linux. Efforts were made to support windows but it is not tested.

Roadmap

Upcoming features include:

  • KNX bridge to control velux devices from a KNX system (the main goal for this project).

Notice of Non-affiliation and Disclaimer

We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with Overkiz, Velux, Somfy, any other trademark mentioned in this project, or any of its subsidiaries or its affiliates. We are grateful for the great products and services they provide.

Please see the License and Disclaimer notice.

kizcool's People

Contributors

sgrimee avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

vincent-tr

kizcool's Issues

Context support

Hi,

Thanks for this great work!

I would love to have an API compatible with Context for interruption, for example, we currently have:

func (c *Client) GetDevices() (*http.Response, error) {
  // ...
}

I would love to see also:

func (c *Client) GetDevicesWithContext(ctx context.Context) (*http.Response, error) {
  // ...
}

Do you think this would be a relevant improvement?

Got panic sometime

Hello,

Sometime I get this panic:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x558f1de7c0]

goroutine 2374 [running]:
[github.com/sgrimee/kizcool.(*Kiz).PollEvents(0x4000f99da0](http://github.com/sgrimee/kizcool.(*Kiz).PollEvents(0x4000f99da0)?)
        /root/go/pkg/mod/[github.com/sgrimee/[email protected]/kizcool.go:265](http://github.com/sgrimee/[email protected]/kizcool.go:265) +0x90
...

After reading the code:
I see that in DoWithAuth function, at the first c.hc.Do(req) we check the result with checkStatusOk.
After the second call, if a Login occured, we do not.
And actually checkStatusOk ensure that there is a response Body.
(note that addr=0x40 correspond to the offset of Body in http.Response structure).

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.