Usage¶
Once you’ve installed the lirc
python package, there will be a number
of things you can now import from it to get started.
from lirc import Client, LircdConnection
The most relevant of these is Client
, since this is the main class
you will be using. LircdConnection
is the object that is used to configure
the connection to LIRC when you initialize the Client
.
Initializing Lirc¶
The Client
class takes in one optional keyword argument: connection.
This connection must be a LircdConnection
. This connection, if not
specified manually, will have default values that depend on the operating
system you are on. So the simplest way to construct Client
is with no
arguments at all.
from lirc import Client
lirc_client = Client()
Overriding LIRC Defaults on Initialization¶
However, if we the defaults don’t work for us? Let’s say we’re on Windows
and we want to connect over TCP to a remote LIRC server on another Windows
machine. So we’ve passed in an address
to override the default so it doesn’t
look for the daemon on the localhost. socket
and timeout
are passed in
just to show that we can, these are already the defaults on Windows.
import socket
from lirc import Client, LircdConnection
client = Client(
connection=LircdConnection(
address=("10.16.30.2", 8765),
socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM),
timeout=5.0
)
)
LIRC Initialization Defaults per Operating System¶
From the options we may pass into the LircdConnection
, address
and socket
will change depending on the operating system you are using.
The timeout
always defaults to 5.0 (seconds).
On Linux, this will attempt to connect to the lircd socket at
/var/run/lirc/lircd
and create a socket using AF_UNIX
and
SOCK_STREAM
.
On macOS, it will be almost identical to Linux except that all the paths
will be prefixed by /opt/local/
so the connection to the lircd
socket will instead be at /opt/local/var/run/lirc/lircd
. The socket that
is created will be the same.
However if we are on Windows, we can’t use unix domain sockets. Instead,
WinLIRC uses TCP to communicate with the lirc daemon. So instead of a string
for the address, it defaults to a tuple of (“localhost”, 8765), which is the
default on WinLIRC. The first part contains the address whereas the second is
the port. Furthermore, the socket that is created uses AF_INET
and
SOCK_STREAM
instead so we can connect over TCP.
Sending IR Codes¶
In order to send IR signals with our remote, we can use the send_once
method on
the lirc.Client
.
import lirc
client = lirc.Client()
client.send_once('our-remote-name', 'key-in-the-remote-file')
Using the send_once()
method is quite simple. For any method, such as this one, that
takes in a remote and a key, the parameters are always in that order with the remote
name first and then the key name. Because the send_once
method does not get any meaningful
data back from lircd, there is no return value from it. Instead, as is the case for most
methods here that don’t have a meaningful return value, a lirc.LircdCommandFailureError
is raised if the command we sent failed.
Furthermore, we can also send the key in rapid succession. This is useful if we, say, want to go to channel 33.
client.send_once('our-remote-name', 'key_3', repeat_count=2)