Skip to main content
testing phone networks with GSM modules


### requirements
* one or more eno hardware nodes (Beaglebone Black + a Fona module)
* Python 2.7


### installation

```shell
$ pip install eno
```


### usage
A cluster of eno hardware nodes are setup
with network connectivity to a testing machine.
The testing machine uses `eno.nodes.Node` to control the connected nodes
and to read data from them.
The nodes themselves run the `eno.server.app`.
Other clients (like the testing machine) connect to this server
to give instructions to the hardware and to read data back.
The hardware uses [python-gsmmodem](https://github.com/faucamp/python-gsmmodem)
to communicate with the onboard GSM modem.

The testing machine should have an `~/.enorc` describing the test cluster:

```yaml
- name: node A
ip_address: 192.168.1.102
sim: endaga
- name: node B
ip_address: 192.168.1.105
sim: endaga
- name: node C
ip_address: 192.168.1.107
sim: ting
phone_number: 19195551234
```

See additional examples in `server.py` and `sample_test.py`.


### testing concurrent calls
By default, when making a call, the test server
will make the modem hang up a few seconds after the call connects.
I experimented with a `/hangup` endpoint but that complicates things --
we would need signals and some WSGI runner
in order to have more than one server process.
So instead you can specify `hangup_after` as a request param,
this will hangup the call after the specified number of seconds.


### license
MIT


### releases
* 0.0.17 - adjusts return values in `server.call`
* 0.0.16 - fixes modem definition
* 0.0.15 - adds call functionality
* 0.0.14 - adds more request timeouts and `Node.get_info`
* 0.0.13 - adjusts handling of `Node.wait_for_activity`
* 0.0.12 - adds protocol in `Node.server_address`
* 0.0.11 - fixes port default
* 0.0.10 - allows tilde expansion when searching for enorc config file
* 0.0.9 - adds `Node.wait_for_activity` for sms
* 0.0.8 - adjusts handling of sms log in Node class
* 0.0.7 - changes sms log deletion method
* 0.0.6 - improves error handling and modem connection management
* 0.0.5 - adjusts package structure
* 0.0.4 - adds missing requests requirement
* 0.0.3 - adjusts server script filename
* 0.0.2 - adds SMS handling capabilities
* 0.0.1 - barebones setup for pypi


### release process
you need a `~/.pypirc` like this:

```
[distutils]
index-servers =
pypi

[pypi]
repository: https://pypi.python.org/pypi
username: yosemitebandit
password: mhm
```

bump the versions in `setup.py` and here in the readme, then run:

```shell
$ git tag 0.0.1 -m 'eno-python v0.0.1'
$ git push origin master --tags
$ python setup.py sdist upload -r pypi
```

Metadata

Release files for eno 0.0.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eno 0.0.17
File Size Uploaded Provenance
eno-0.0.17.tar.gz 5.9 kB Without provenance Details

Release files / eno-0.0.17.tar.gz

Download URL eno-0.0.17.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
334ec1151c23dd877d7ed8c8914b425be92f975d8fbd85b14583c4ecffc94c6f
BLAKE2b-256 checksum
How to use checksums
d681d9aea049a656eb907fe6c223fa71008a0e32961b83d7f5973baacd15565d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for eno 0.0.17

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page