Internet Of Things (IOT) integration with Linux using MQTT
Project description
LNX link
This is a Linux service for integrating your system with an external application like Home Assistant using MQTT. It is inspired by IOT Link.
Features
- System control: Shutdown, Restart, Send Keys, Notify, Media, Screen On/Off.
- System monitor: CPU, Ram, Network, Media, Microphone, Idle, Bluetooth battery.
- Home Assistant: Uses MQTT Autodiscovery to create entities.
- No sudo required: No need to be root user to install and use, unless used on server setup.
- Easily expanded: Any new module is automatically imported.
Installation
Install or update:
sudo apt install patchelf meson libdbus-glib-1-dev libglib2.0-dev libasound2-dev
pip3 install -U lnxlink
lnxlink -c config.yaml
You can manually update the configuration file config.yaml
and restart the service with the use of systemctl:
systemctl --user restart lnxlink.service
Examples
Send a notification with an image as a preview:
service: mqtt.publish
data:
topic: {prefix}/{clientId}/commands/notify
payload: >-
{ "title": "Notification Title",
"message": "Testing notification",
"iconUrl": "http://hass.local:8123/local/myimage.jpg" }
Send a series of keys:
service: mqtt.publish
data:
topic: {prefix}/{clientId}/commands/send-keys
payload: "<CTRL>+t"
Combine with Wake on Lan to control your PC with one switch:
switch:
- platform: template
switches:
my_pc:
friendly_name: "My PC"
unique_id: my_pc
value_template: "{{ not is_state('button.shutdown', 'unavailable') }}"
turn_on:
service: switch.turn_on
data:
entity_id: switch.pc_wol
turn_off:
service: button.press
data:
entity_id: button.shutdown
Create a media player using mqtt-mediaplayer using the information collected from the media sensor:
Technical Notes (click to expand)
Creating new senosr
To expand the supported features, create a new python file on modules folder and use this template:
class Addon():
name = 'Example'
icon = 'mdi:home-assistant'
unit = ''
def startControl(self, topic, data):
''' When a command is sent, it will run this method '''
print(topic, data)
def getInfo(self):
''' Returns any type that can be converted to JSON '''
return 15
def exposedControls(self):
''' Optional method which exposes an entity '''
return {
"mybutton": {
"type": "button",
"icon": "mdi:button-cursor",
}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
lnxlink-2022.10.4.tar.gz
(12.7 kB
view hashes)
Built Distribution
Close
Hashes for lnxlink-2022.10.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68d8bfe1971b9b56713becee15b1f683ad6c12cee8b4d6e6051dea6f19a0668f |
|
MD5 | 87466a54a5c5980e647d295f98d785f0 |
|
BLAKE2b-256 | 5ae43fa5f877a811c6bdc8286070ac1d499d4dfb95561aa06962fcb570da31db |