The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Power::Outlet::MQTT - Control and query an outlet or relay via MQTT

SYNOPSIS

Tasmota defaults

  my $outlet = Power::Outlet::MQTT->new(
                                        host                => "mqtt",
                                        name                => "my_device",
                                        relay               => "POWER1",
                                       );

or topic defaults

  my $outlet = Power::Outlet::MQTT->new(
                                        host                => "mqtt",
                                        publish_topic       => "cmnd/my_device/POWER1",
                                        subscribe_topic     => "stat/my_device/POWER1",
                                       );

or explicit definitions with no defaults

  my $outlet = Power::Outlet::MQTT->new(
                                        host                => "mqtt",
                                        publish_on          => "cmnd/my_device/POWER1+ON", #plus sign delimited topic and message
                                        publish_off         => "cmnd/my_device/POWER1+OFF",
                                        publish_switch      => "cmnd/my_device/POWER1+TOGGLE",
                                        publish_query       => "cmnd/my_device/POWER1+",
                                        subscribe_topic     => "stat/my_device/POWER1",
                                        subscribe_value_on  => 'ON'  #or qr/\A(?:ON|1)\Z/i,
                                        subscribe_value_off => 'OFF, #or qr/\A(?:OFF|0)\Z/i,
                                       );
  print $outlet->query, "\n";
  print $outlet->on, "\n";
  print $outlet->off, "\n";

DESCRIPTION

Power::Outlet::MQTT is a package for controlling and querying an outlet or relay via MQTT

Examples:

  $ mosquitto_pub -h mqtt -t "cmnd/my_device/POWER1" -m ON
  $ mosquitto_pub -h mqtt -t "cmnd/my_device/POWER1" -m OFF
  $ mosquitto_sub -h mqtt -t "stat/my_device/POWER1" -v

USAGE

  use Power::Outlet::MQTT;
  my $outlet = Power::Outlet::MQTT->new(host=>"mqtt", name=>"my_device");
  print $outlet->on, "\n";

CONSTRUCTOR

new

  my $outlet = Power::Outlet->new(type=>"MQTT", host=>"mqtt");
  my $outlet = Power::Outlet::MQTT->new(host=>"mqtt");

PROPERTIES

host

Sets and returns the host name of the MQTT broker.

Default: mqtt

port

Sets and returns the port number of the MQTT broker.

Default: 1883

secure

Sets and returns a boolean property to use secure MQTT protocol or not.

Default: if port=8883 then 1 else 0

device

Sets and returns the device name of the MQTT topic.

Note: Only used when topics are autogenerated for devices that support the Tasmota MQTT topic conventions.

relay

Sets and returns the relay of the device. Only used when name is used to define default publish and subscribe topics.

Default: POWER1

publish_topic

MQTT topic to publish to control the relay

Default: "cmnd/$device/$relay"

publish_on

MQTT topic and message payload to publish to turn the relay on (plus sign delimited)

Default: "cmnd/$device/$relay+ON"

publish_off

MQTT topic and message payload to turn the relay off (plus sign delimited)

Default: "cmnd/$device/$relay+OFF"

publish_switch

MQTT topic and message payload to toggle the relay (plus sign delimited)

Default: "cmnd/$device/$relay+TOGGLE"

publish_query

MQTT topic and message payload to request the turn the current state of the relay (plus sign delimited)

Default: "cmnd/$device/$relay+"

subscribe_topic

MQTT topic which indicates the current state of the relay

Default: "stat/$device/$relay+"

subscribe_value_on

MQTT message payload to indicate the current state of the relay as on

Default: "ON" or 1

subscribe_value_off

MQTT message payload to indicate the current state of the relay as off

Default: "OFF" or 0

user

Sets and returns the authentication user for the MQTT broker.

Default: undef

password

Sets and returns the password used for authentication with the MQTT broker

Default: ""

METHODS

name

Sets and returns a user friendly name of this device relay.

query

Sends an HTTP message to the device to query the current state

on

Sends a message to the device to Turn Power ON

off

Sends a message to the device to Turn Power OFF

switch

cycle

ACCESSORS

mqtt

Returns a cached connected Net::MQTT::Simple or Net::MQTT::Simple::SSL object.

BUGS

Please log on GitHub

AUTHOR

  Michael R. Davis

COPYRIGHT

Copyright (c) 2023 Michael R. Davis

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

SEE ALSO