Project

mqtt-homie

0.0
Low commit activity in last 3 years
A long-lived project that still receives updates
A ruby interface for creating a device conforming to the MQTT Homie convention.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

>= 0
>= 0

Runtime

~> 0.6
 Project Readme

MQTT::Homie

A ruby interface for creating a device conforming to the MQTT Homie convention. This gem builds upon the ruby-mqtt ruby gem.

The Homie convention defines a standardized way of how IoT devices and services announce themselves and their data to a MQTT broker.

Installation

Add this line to your application's Gemfile:

gem 'mqtt-homie'

And then execute:

$ bundle

Or install it yourself as:

$ gem install mqtt-homie

Quick Start

require 'rubygems'
require 'mqtt/homie'

# Set up a device, with a node and properties
device = MQTT::Homie.device_builder(id: 'device', name: 'Device')
  .node(id: "gate", name: "Front gate", type: "Gate")
  .property(id: "state", name: "Gate state", enum: [:open, :closed, :opening, :closing], value: :closed)
  .property(id: "position", name: "Gate position", datatype: :integer, unit: "%", value: 0)
  .property(id: "command", name: "Send gate command", settable: true, enum: [:open, :close]).build

# Create a client and connect to a MQTT broker
client = MQTT::Homie::Client.new(device: device, host: 'localhost')
client.connect

# access nodes and properties of the device
node = device.node('gate')
state = node.property('state')
state.value = :open  # publishes new state to MQTT

# listen for changes to properties via the Observer interface
node.property('command').add_observer(self)

Overview

TODO

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Mqtt::Homie project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.