Skip to main content

Internet Of Things (IOT) integration with Linux using MQTT

Reason this release was yanked:

WIP

Project description

license OS - Linux Python 3.5 Last commit

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

One command install and update:

bash <(curl -s "https://raw.githubusercontent.com/bkbilly/lnxlink/master/install.sh")

You can manually update the configuration file /opt/lnxlink/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:

image

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


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.0.tar.gz (12.7 kB view hashes)

Uploaded Source

Built Distribution

lnxlink-2022.10.0-py3-none-any.whl (15.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page