mattludwigs
Grizzly - Z-Wave Library for Elixir
Grizzly is a library for working with Z-Wave devices. Z-Wave is a low-frequency radio protocol for controlling smart home devices on a mesh network. Grizzly leverages Z-Wave over IP (Z/IP) to communicate to Z-Wave devices via DTLS. Grizzly provides complete support for the various Z-Wave security groups, extensible device behavior, and reliable error isolation between device behaviors.
Hardware requirements are:
To get up and running fast with a raspberry pi 3 check out the grizzly quickstart.
The zipgateway binary will need to be cross-compiled for your target. This can be a bit tricky, so if you need help with this part of the setup process please reach out on the forum by using the grizzly tag.
Z-Wave is a complex protocol with many moving parts and pitfalls. We hope that Grizzly provides a simple API for handling these complexities. As home automation and IoT grows in popularity we are excited to help the Elixir ecosystem provide reliable solutions to hard problems in this space.
If you have questions please feel free to reach out on the forum using the grizzly tag.
Special thanks to SmartRent for their support in open sourcing Grizzly!
Happy IoT hacking!
Trending in Announcing
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #performance










First 10 of 48 Posts
tielur
Yay! I can’t wait to try it out! Big thanks to @mattludwigs and the entire SmartRent team!
ryanwinchester
I can’t wait to try it out!
slouchpie
This is really really cool. I have been using Hypriot OS with elixir on docker containers to do home network stuff and was thinking about how to use z-wave with pi and elixir. I can’t wait to get this working.
By the way, if you want to get more people involved, I think you should announce Grizzly here: https://www.reddit.com/r/homeautomation/ Some people there would love this project.
mattludwigs
Thank you! If you run into any issues getting setup feel free to ask a question.
Thanks for the suggestion, I will look into announcing it there too soon!
mattludwigs
New release v0.4.3
Grizzly.send_command/2andGrizzly.send_command/3can be passed a node id instead of a node.
mattludwigs
New release v0.5.0
TLDR; Provides better error handling when trying to encode command arguments. Improves robustness of Grizzly.
Introduces
Grizzly.Command.EncodeErrorexception and updates encoding anddecoding functions to return tagged tuples. We now use these things when trying
to send a command via
Grizzly.send_command/3so if you have invalid commandarguments we can provide useful error handling with
{:error, Grizzly.Command.EncodeError.t()}. TheEncodeError.t()implementsElixir’s exception behaviour so you can leverage the standard library to
work with the exception.
Unless you have implemented custom commands or used one of the many command
encoders or decodes explicitly this update should not affect you too much. If
you have used the encoder/decoders explicitly please see the documentation for
the ones you have used to see the updated API. If you have written a command we
encourage you to validate the arguments and return the
{:error, EncodeError.t()}to improve the usability of and robustness your command. The new
Grizzly.Command.Encodingmodule provides some useful functionality forvalidating specs for command arguments.
Grizzly.Command.EncodeError.()tuples for better handling of invalid command arguments
Grizzly.Command.Encodingmodules for helpingvalidate command argument specifications
Big thanks to @jfcloutier for the hard work on this!
mattludwigs
New Release: v0.6.0
Changed
Grizzly.CommandClass.CommandClassVersiontoGrizzly.CommandClass.Versionand changed
Grizzly.ComamndClass.CommandClassVersion.GettoGrizzly.CommandClass.Version.CommandClassGetas these names reflect the Z-Wavespecification better.
If you only have used
Grizzly.get_command_class_version/2and the related functionin
Grizzly.Nodemodule this change should not affect you.Grizzly.CommandClass.CommandClassVersiontoGrizzly.CommandClass.VersionGrizzly.CommandClass.CommandClassVersion.GettoGrizzly.CommandClass.Version.CommandClassGetAnother shout out to @jfcloutier for adding more support to for commands and command classes!
mattludwigs
New Release: v0.6.1
IntervalGetandManufacturerSpecificGetto be moreconsistent
ManufacturerSpecificinfo received fromdevices
mattludwigs
New Release: v0.6.2
pidofallowinggrizzlyto work on any nervesdevice without the need of
busyboxmattludwigs
New Release: v0.6.3