Skip to main content

A small smart hub building blocks package

Project description

Micro Smart Hub

Micro Smart Hub is a flexible and lightweight smart home automation platform designed for managing various devices and automations. It is easy to extend and configure, making it ideal for a wide range of home automation tasks.

Table of Contents

  1. Features
  2. Installation
  3. Running the Scheduler Application
  4. Developing with Micro Smart Hub
  5. Extending with New Automations
  6. Creating New Devices
  7. Configuration
  8. Examples
  9. License

Features

  • Supports custom automations and devices
  • Asynchronous scheduling of tasks
  • Configuration via YAML files
  • Lightweight and portable

Installation

Micro Smart Hub is available as a Python package and can be installed using pip:

pip install microsmarthub

Running the Scheduler Application

To run the Micro Smart Hub scheduler, use the micro-smart-server command-line application. This application reads configuration files and manages the execution of scheduled tasks.

Usage

micro-smart-server [options]

Options

  • -s, --schedule: Path to the schedule YAML file. Default is ./schedule.yaml.
  • -d, --devices: Directories containing device modules. Default is the current directory.
  • -a, --automations: Directories containing automation modules. Default is the current directory.
  • -c, --config: Path to the configuration YAML file. Default is ./config.yaml.

Example

'''bash micro-smart-server -s ./schedule.yaml -d ./devices ./extra_devices -a ./automations ./extra_automations -c ./config.yaml '''

Developing with Micro Smart Hub

Extending with New Automations

To create a new automation, inherit from the Automation class and implement the run method:

from micro_smart_hub.registry import register_class
from micro_smart_hub.automation import Automation


@register_class
class MyAutomation(Automation):
    def run(self, action, parameters, devices):
        print(f"Running {action} with parameters {parameters} on devices {devices}")

Creating New Devices

To create a new device, inherit from the MicroDevice class and implement the required methods:

from micro_smart_hub.registry import register_class
from micro_smart_hub.device import MicroDevice
import requests


@register_class
class MyIoTSwitch(IoTSwitch):
    def __init__(self, definition=None):
        super().__init__(definition)
        self.device_id = self.definition.get("device_id", "default_id")

    def load_info(self):
        response = requests.get(f"http://{self.device_id}/info")
        self.info = response.json().get('device', {})

    def load_state(self):
        response = requests.get(f"http://{self.device_id}/state")
        self.status = response.json().get('status', {})

    @property
    def on(self):
        return self._on

    @on.setter
    def on(self, value):
        if value:
            requests.post(f"http://{self.device_id}/turn_on")
        else:
            requests.post(f"http://{self.device_id}/turn_off")
        self._on = value

    def off(self):
        self.on = False

Configuration

Configuration is done via YAML files. Define your schedule, devices, and automations in separate YAML files.

Schedule Example

FakeAutomation:
  schedule:
    monday:
      - time: 6       # Without minutes (6:00)
        action: on
      - time: 18.30   # With minutes
        action: off
  devices:
    - FakeSwitch

Irrigation:
  schedule:
    monday:
      - time: "6:05"    # With minutes but as a string
        action: on
      - time: 18      # Without minutes (18:00)
        action: off
  devices:
    - Irrigation_Pump

Device Configuration Example (config.yaml)

Define your devices and their parameters in a config.yaml file. Here is an example configuration:

Pump:
  class: SwitchBox
  parameters:
    url: 192.168.0.3

Garden Light:
  class: SwitchBox
  parameters:
    url: 192.168.0.197      

SmartIrrigation:
  class: Irrigation
  parameters:
    latitude: 12.24541322
    longitude: 32.32243421

# Pump: An instance of SwitchBox with a specific IP address.
# Garden Light: Another SwitchBox with a different IP.
# SmartIrrigation: An instance of Irrigation with specific geolocation parameters.

Examples

Check out the examples directory for more detailed examples of how to set up and run automations and devices.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Acknowledgments

  • Thanks to all contributors and users for their support and feedback.

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

micro_smart_hub-0.1.9.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

micro_smart_hub-0.1.9-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file micro_smart_hub-0.1.9.tar.gz.

File metadata

  • Download URL: micro_smart_hub-0.1.9.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for micro_smart_hub-0.1.9.tar.gz
Algorithm Hash digest
SHA256 34f6bfb46e996a517e55f9f5d1c5d1f5684912cfbc533cd68b3125911a4fe112
MD5 72e1fe8f3eb8bde87f7a09878adbd54e
BLAKE2b-256 a2123081f3e03a8c6e7a2b51b7b0848b86cd7d028e57997c589a33c8729aa2b9

See more details on using hashes here.

File details

Details for the file micro_smart_hub-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for micro_smart_hub-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 3ea6b4c7139fdc8a388cc16e2b91d32f5fee893a252d1289d0beaa16404018fb
MD5 012dd69e59c1ad5131a7913589340d17
BLAKE2b-256 9a9e73dd52ebcca37ac48a6585ea2e3f72132cec9610a4b7ce888a8e68665651

See more details on using hashes here.

Supported by

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