HTPIO : Remote I/O Access Library
=================================

![PyPI](https://img.shields.io/pypi/v/htpio.svg)
![PyPI - License](https://img.shields.io/pypi/l/htpio.svg)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/htpio.svg)
![PyPI - Status](https://img.shields.io/pypi/status/htpio.svg)

HTPIO allows users to use Raspberry Pi's GPIOs or similiar hardware remotely using various telecommunication protocols. The library also 
offers a simple locking mechanism in order to implement advanced testing scenarios using shared hardware. 

![image](https://www.hilscher.com/fileadmin/user_upload/Typo3_pages/netX/netX_Roadmap_2016-01-1000px.png)

HTPIO is a subset of the Hilscher Test Framework for products of the netX family. A brief overview of some netX
products is given in the links below:

* [Network Controllers](https://www.hilscher.com/products/product-groups/network-controller/)
* [PC Cards](https://www.hilscher.com/products/product-groups/pc-cards/)
* [Embedded Modules](https://www.hilscher.com/products/product-groups/embedded-modules/)
* [Gateways](https://www.hilscher.com/products/product-groups/gateways/)
* [Industrial Internet / IoT](https://www.hilscher.com/products/product-groups/industrial-internet-industry-40/)
* [Analysis and Data Acquisition](https://www.hilscher.com/products/product-groups/analysis-and-data-acquisition/)
* [Automation and Visualization](https://www.hilscher.com/products/product-groups/automation-and-visualization/)
* [Software](https://www.hilscher.com/products/product-groups/software/)



Requirements
-------------

* Python >=2.7
* Python >=3.4

Features
---------------

- Remote GPIO access using various protocols  
- Pin locking to ensure shared use of hardware resources
- Command line interface for shell scripting


Installation
------------

First check if pip is installed on the your computer:
```
pip --version
pip 19.1.1 from c:\python\3.7.3\lib\site-packages\pip (python 3.7)
```

If the operating system doesn't recognize the command and your operating system is Linux or Windows 8+:
```
curl https://bootstrap.pypa.io/get-pip.py > get-pip.py
python get-pip.py
```

else visit https://bootstrap.pypa.io/get-pip.py and download the file. Then run the following command:
```
python get-pip.py
```

If pip is installed, we can proceed further to check for pipenv and eventually install it:
```
pipenv --version
pipenv, version 2018.11.26
```

If pipenv is not present on the system issue the following command :

```
pip install pipenv
```

To install htpio's latest stable release from PyPi use [pipenv](http://pipenv.org/) (or pip):

```
pipenv install htpio
```

or install the latest stable version from BitBucket:

```
pipenv install https://bitbucket.org/hilscherdtc/htpio/get/stable.tar.gz
```

Library interface
-----------------

```
>>> from htpio import bridge, socketio, telnetio
>>> device = telnetio.RaspberryPi('192.168.199.31')
>>> gpio = bridge.RemoteAccess(device)
>>> gpio.lock(14)
>>> gpio.unlock(14)
>>> gpio.islocked(14)
>>> gpio.configure(14, gpio.OUTPUT)
>>> gpio.set(14, 1)
>>> gpio.get(14)
>>> gpio.deconfigure(14)
>>> gpio.logout()
```

Command line interface
----------------------
```
$ htpio -p telnet set --host 192.168.199.31 --pin 14 --val 1
$ htpio -p socket get --host 192.168.199.31 --pin 14
$ htpio lock --host 192.168.199.31 --pin 14
$ htpio unlock --host 192.168.199.31 --pin 14
```
