ftexplore


Nameftexplore JSON
Version 2.5.0 PyPI version JSON
download
home_pagehttps://www.henrici.name/projects/ftexplore.html
Summaryft-Explore allows to control motors and to check inputs by GUI and user-provided Python code
upload_time2025-01-26 20:59:03
maintainerNone
docs_urlNone
authorDirk Henrici
requires_python>=3.5
licenseNone
keywords motorhat raspberrypi fischertechnik education
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ft-Explore

> ft-Explore allows to control motors and to check inputs by GUI and user-provided Python code.

<!-- <a href="https://www.henrici.name/projects/ftexplore.html"><img src="https://www.henrici.name/projects/images/ftexplore1_401.gif" title="ft-Explore GUI" alt="ft-Explore GUI"></a> -->

[![ft-Explore GUI](https://www.henrici.name/projects/images/ftexplore1.gif)](https://www.henrici.name/projects/ftexplore.html)

ft-Explore was implemented to interface with hardware of technical models for educational purposes. It is open-source and contains interface modules for widely available hardware (RaspberryPi with Adafruit Motor HAT).

---

## Features

- Graphical user interface for controlling four motors/lights and showing the state of eight digital inputs
- Platform independent, tested on Windows and Linux (Debian and Raspbian)
- No dependencies except hardware drivers when operating locally
- Controlling motors/lights and getting the state of the inputs can be done by user-provided Python scripts
- The user-provided Python scripts can be executed and interrupted in the GUI. Script output and exceptions are shown there
- Manual control via GUI and script-based control is possible simultaneously
- GUI and hardware can be distributed to multiple machines, e.g. hardware on a headless RaspberryPi can be controlled via GUI on a Windows notebook

---

## Installation

ft-Explore can be installed easily. See the sections below depending on your platform.

### Windows

- Download msi installer file (can be found "dist_msi" folder in the repository)
- Install using the msi installer
- Afterwards the application can be started via shortcut "ft-Explore" in start menu

Alternatively, you can download the source code and run it after installing Python (e.g. via https://www.anaconda.com/distribution/). See the Linux section below for required Python packages.

### Linux

- Make sure that you use Python version 3.5 or newer
- Install Python libraries as needed:

> in case the application shall not just be used locally and shall use the network

```shell
$ pip install cffi pynng
```

> in case you are running on a RaspberryPi and want to access the GPIOs as inputs

```shell
$ pip install RPi.GPIO
```

> in case you are running on a RaspberryPi with an Adafruit Motor HAT

```shell
$ pip install adafruit_motorkit
```

> in case you want to be able to watch for keyboard events

```shell
$ pip install keyboard
```

- Install ft-Explore:

```shell
$ pip install ftexplore
```

- Run ft-Explore

> run and show help page

```shell
$ python -m ftexplore --help
```

---

### Clone (for developers only)

- Clone this repo to your local machine using `https://www.towalink.de/gitea/HNET/ftexplore.git`

---

## Usage

- Demo usage

> Show GUI and use no real hardware for demo purposes (the default):

```shell
$ python -m ftexplore
```

> This is equivalent to

```shell
$ python -m ftexplore --loglevel info --hardware demo
```

In this mode, there is just emulated hardware. When you control the motors, depending on the direction of the motors the inputs are set.

- Show GUI and use the locally available default hardware (Adafruit Motor HAT and eight RaspberryPi GPIOs as inputs)

```shell
$ python -m ftexplore --hardware default
```

Use this mode if you're working locally on a RaspberryPi with an Adafruit Motor HAT shield.0

- Distributed operation with local GUI and remote hardware

> Listening side with the hardware (adapt port as needed)

```shell
$ python -m ftexplore --hardware default --listen 2201
```
> Client side with the GUI (adapt IP address and port as needed)

```shell
$ python -m ftexplore --hardware 192.168.1.1:2201
```

- Show help page for details on command line arguments

```shell
$ python -m ftexplore --help
```

## Documentation

### Writing Usercode

See the separate documentation for writing usercode in the doc directory:

[Documentation on writing user code](https://www.towalink.de/gitea/HNET/ftexplore/src/branch/master/doc/usercode.md)

### Source Code Organization

- src/ftexplore/eventprocessor

This folder contains code for event processing and event distribution to the applications submodules. The application works by broadcasting events between the different application modules.

- src/ftexplore/gui

This folder contains the code for the graphical user interface. That interface is based on Tk.

- src/ftexplore/hardware

This folder contains modules to communicate with different types of hardware. A special hardware is "remote" hardware that resides on another machine and is accessed via network. Adapt the demo hardware to quickly implement support for your special hardware.

- src/ftexplore/listener

This folder contains the module that provides access to the local hardware via the network. One or more clients can be connected.

- src/ftexplore/usercode 

This folder contains the code controlling the execution of user-provided code.

---

## License

[![License](http://img.shields.io/:license-gpl3-blue.svg?style=flat-square)](http://opensource.org/licenses/gpl-license.php)

- **[GPL3 license](http://opensource.org/licenses/gpl-license.php)**
- Copyright 2019-2025 <a href="https://www.henrici.name/projects/ftexplore.html" target="_blank">Dirk Henrici</a>

            

Raw data

            {
    "_id": null,
    "home_page": "https://www.henrici.name/projects/ftexplore.html",
    "name": "ftexplore",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.5",
    "maintainer_email": null,
    "keywords": "motorhat raspberrypi fischertechnik education",
    "author": "Dirk Henrici",
    "author_email": "ftexplore@henrici.name",
    "download_url": "https://files.pythonhosted.org/packages/6f/56/2ac7d6c34961ab9f10212427326ce11c40372c963b5b1188cfc28863eeb4/ftexplore-2.5.0.tar.gz",
    "platform": null,
    "description": "# ft-Explore\r\n\r\n> ft-Explore allows to control motors and to check inputs by GUI and user-provided Python code.\r\n\r\n<!-- <a href=\"https://www.henrici.name/projects/ftexplore.html\"><img src=\"https://www.henrici.name/projects/images/ftexplore1_401.gif\" title=\"ft-Explore GUI\" alt=\"ft-Explore GUI\"></a> -->\r\n\r\n[![ft-Explore GUI](https://www.henrici.name/projects/images/ftexplore1.gif)](https://www.henrici.name/projects/ftexplore.html)\r\n\r\nft-Explore was implemented to interface with hardware of technical models for educational purposes. It is open-source and contains interface modules for widely available hardware (RaspberryPi with Adafruit Motor HAT).\r\n\r\n---\r\n\r\n## Features\r\n\r\n- Graphical user interface for controlling four motors/lights and showing the state of eight digital inputs\r\n- Platform independent, tested on Windows and Linux (Debian and Raspbian)\r\n- No dependencies except hardware drivers when operating locally\r\n- Controlling motors/lights and getting the state of the inputs can be done by user-provided Python scripts\r\n- The user-provided Python scripts can be executed and interrupted in the GUI. Script output and exceptions are shown there\r\n- Manual control via GUI and script-based control is possible simultaneously\r\n- GUI and hardware can be distributed to multiple machines, e.g. hardware on a headless RaspberryPi can be controlled via GUI on a Windows notebook\r\n\r\n---\r\n\r\n## Installation\r\n\r\nft-Explore can be installed easily. See the sections below depending on your platform.\r\n\r\n### Windows\r\n\r\n- Download msi installer file (can be found \"dist_msi\" folder in the repository)\r\n- Install using the msi installer\r\n- Afterwards the application can be started via shortcut \"ft-Explore\" in start menu\r\n\r\nAlternatively, you can download the source code and run it after installing Python (e.g. via https://www.anaconda.com/distribution/). See the Linux section below for required Python packages.\r\n\r\n### Linux\r\n\r\n- Make sure that you use Python version 3.5 or newer\r\n- Install Python libraries as needed:\r\n\r\n> in case the application shall not just be used locally and shall use the network\r\n\r\n```shell\r\n$ pip install cffi pynng\r\n```\r\n\r\n> in case you are running on a RaspberryPi and want to access the GPIOs as inputs\r\n\r\n```shell\r\n$ pip install RPi.GPIO\r\n```\r\n\r\n> in case you are running on a RaspberryPi with an Adafruit Motor HAT\r\n\r\n```shell\r\n$ pip install adafruit_motorkit\r\n```\r\n\r\n> in case you want to be able to watch for keyboard events\r\n\r\n```shell\r\n$ pip install keyboard\r\n```\r\n\r\n- Install ft-Explore:\r\n\r\n```shell\r\n$ pip install ftexplore\r\n```\r\n\r\n- Run ft-Explore\r\n\r\n> run and show help page\r\n\r\n```shell\r\n$ python -m ftexplore --help\r\n```\r\n\r\n---\r\n\r\n### Clone (for developers only)\r\n\r\n- Clone this repo to your local machine using `https://www.towalink.de/gitea/HNET/ftexplore.git`\r\n\r\n---\r\n\r\n## Usage\r\n\r\n- Demo usage\r\n\r\n> Show GUI and use no real hardware for demo purposes (the default):\r\n\r\n```shell\r\n$ python -m ftexplore\r\n```\r\n\r\n> This is equivalent to\r\n\r\n```shell\r\n$ python -m ftexplore --loglevel info --hardware demo\r\n```\r\n\r\nIn this mode, there is just emulated hardware. When you control the motors, depending on the direction of the motors the inputs are set.\r\n\r\n- Show GUI and use the locally available default hardware (Adafruit Motor HAT and eight RaspberryPi GPIOs as inputs)\r\n\r\n```shell\r\n$ python -m ftexplore --hardware default\r\n```\r\n\r\nUse this mode if you're working locally on a RaspberryPi with an Adafruit Motor HAT shield.0\r\n\r\n- Distributed operation with local GUI and remote hardware\r\n\r\n> Listening side with the hardware (adapt port as needed)\r\n\r\n```shell\r\n$ python -m ftexplore --hardware default --listen 2201\r\n```\r\n> Client side with the GUI (adapt IP address and port as needed)\r\n\r\n```shell\r\n$ python -m ftexplore --hardware 192.168.1.1:2201\r\n```\r\n\r\n- Show help page for details on command line arguments\r\n\r\n```shell\r\n$ python -m ftexplore --help\r\n```\r\n\r\n## Documentation\r\n\r\n### Writing Usercode\r\n\r\nSee the separate documentation for writing usercode in the doc directory:\r\n\r\n[Documentation on writing user code](https://www.towalink.de/gitea/HNET/ftexplore/src/branch/master/doc/usercode.md)\r\n\r\n### Source Code Organization\r\n\r\n- src/ftexplore/eventprocessor\r\n\r\nThis folder contains code for event processing and event distribution to the applications submodules. The application works by broadcasting events between the different application modules.\r\n\r\n- src/ftexplore/gui\r\n\r\nThis folder contains the code for the graphical user interface. That interface is based on Tk.\r\n\r\n- src/ftexplore/hardware\r\n\r\nThis folder contains modules to communicate with different types of hardware. A special hardware is \"remote\" hardware that resides on another machine and is accessed via network. Adapt the demo hardware to quickly implement support for your special hardware.\r\n\r\n- src/ftexplore/listener\r\n\r\nThis folder contains the module that provides access to the local hardware via the network. One or more clients can be connected.\r\n\r\n- src/ftexplore/usercode \r\n\r\nThis folder contains the code controlling the execution of user-provided code.\r\n\r\n---\r\n\r\n## License\r\n\r\n[![License](http://img.shields.io/:license-gpl3-blue.svg?style=flat-square)](http://opensource.org/licenses/gpl-license.php)\r\n\r\n- **[GPL3 license](http://opensource.org/licenses/gpl-license.php)**\r\n- Copyright 2019-2025 <a href=\"https://www.henrici.name/projects/ftexplore.html\" target=\"_blank\">Dirk Henrici</a>\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "ft-Explore allows to control motors and to check inputs by GUI and user-provided Python code",
    "version": "2.5.0",
    "project_urls": {
        "German Homepage": "https://www.henrici.name/projects/ftexplore.html",
        "Homepage": "https://www.henrici.name/projects/ftexplore.html",
        "Repository": "https://www.hosting-srv.de/gitea/HNET/ftexplore/",
        "Source": "https://www.hosting-srv.de/gitea/HNET/ftexplore/src/branch/master/src"
    },
    "split_keywords": [
        "motorhat",
        "raspberrypi",
        "fischertechnik",
        "education"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2062b680fb4581960ee730a5f802c74767f85ef25d3ec164fd1b04ab56c80a52",
                "md5": "26abfc3ec7c2c5b343e6312f40996aa7",
                "sha256": "bbbdafc32f5be426381d60cecc957529f94cd95769c47630f85eb33b60b974c8"
            },
            "downloads": -1,
            "filename": "ftexplore-2.5.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "26abfc3ec7c2c5b343e6312f40996aa7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.5",
            "size": 50988,
            "upload_time": "2025-01-26T20:59:01",
            "upload_time_iso_8601": "2025-01-26T20:59:01.852517Z",
            "url": "https://files.pythonhosted.org/packages/20/62/b680fb4581960ee730a5f802c74767f85ef25d3ec164fd1b04ab56c80a52/ftexplore-2.5.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6f562ac7d6c34961ab9f10212427326ce11c40372c963b5b1188cfc28863eeb4",
                "md5": "89bc0d273fc1a2ea6b8594ef2358f124",
                "sha256": "f19de938919dc8562e98b0d29a571a931646bcf3ae6d968769871030ff37fe6c"
            },
            "downloads": -1,
            "filename": "ftexplore-2.5.0.tar.gz",
            "has_sig": false,
            "md5_digest": "89bc0d273fc1a2ea6b8594ef2358f124",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.5",
            "size": 43654,
            "upload_time": "2025-01-26T20:59:03",
            "upload_time_iso_8601": "2025-01-26T20:59:03.215994Z",
            "url": "https://files.pythonhosted.org/packages/6f/56/2ac7d6c34961ab9f10212427326ce11c40372c963b5b1188cfc28863eeb4/ftexplore-2.5.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-26 20:59:03",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "ftexplore"
}
        
Elapsed time: 8.29858s