Skip to content

Commit

Permalink
Release 1.2.0.0 - total new with Websocket / Asyncio
Browse files Browse the repository at this point in the history
  • Loading branch information
Guido Diener committed Apr 22, 2018
1 parent 659514f commit eef070b
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 197 deletions.
67 changes: 41 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,62 @@
## ZeptrionAir
## Zeptrion Air

This are the Classes to use the Zeptrion Air Lights etc. Zeptrion Air is
a product from Feller. Zeptrion Air Panel are switches for Light, Blinds
etc. A panel can have up to 8 switches. Each of this switches are called
Channels.
Button.

### 1) ZeptrionAir Hub
### 1) Hub

The ZeptrionAir Hub handles all the ZeptrionAir Panel. The Hub is
searching (browse) the panels with mDNS (zeroconf). If panels are found
with mDNS the Hub is requesting the panels for all additional needed
informations

### 2) ZeptrionAirPanel
### 2) Panel

ZeptrionAirPanel is the panel that can have up to 8 channels (Switches)
Panel is the panel that can have up to 8 buttons (Switches)

### 3) ZeptrionAirChannel
### 3) Button

The ZeptrionAirChannel is on of the channel that are hold on a Panel A
Channel is Switch for example for a Light or Blinds etc. With the
ZeptrionAirChannel Class you can read the status and control the device
The Button is on of the button that are hold on a Panel A
Button is Switch for example for a Light or Blinds etc. With the
Button Class you can read the status and control the device
Button Status is handled with websocket and is implemented with asyncio

### Python compatibility
Only working with Python 3 and above
Only working with Python 3.6 and above

### Sample to use it:

``` python
from zeptrionAirApi import ZeptrionAirHub

hub = ZeptrionAirHub(3) #Initialize the ZeptrionAIrHub and browse for 5sec
allZeptrionPanels = hub.get_all_panels() #returns all found panels
allZeptrionChannels = hub.get_all_channels() #returns all found channels
allLightChannels = hub.get_all_light_channels() #returns all found channels that are Light switches
allGroups = hub.get_all_group() #returns all groups, that have been defined on the zeptrion app
for group in allGroups:
print("Channels in Group: " + str(group))
print(hub.get_all_channels_by_group(group)) #returns all channles that are defined for that group

channels = hub.get_all_channels_by_cat(1) #returns all found channels that are Light switches --> Category 1
channel = channels[0] #pick the first light
channel.toggle_light() #toggle the light
channel.turn_on_light() #turn the light on
channel.turn_off_light() #turn the light off
import asyncio
import time
import json
from zeptrion_air_api import Hub

async def do_close(hub):
"""Close the System."""
await hub.close()

def press_info_handler(press_info):
"""Handle if the button is pressed."""
print(press_info)

def found_new_panels(panel):
"""Handle if a new Zeptrion Air Panel is found."""
for button in panel.all_buttons:
if button:
button.listen_to(press_info_handler)

if __name__ == '__main__':
"""Init the main test."""
loop = asyncio.get_event_loop()
za_hub = Hub(loop, found_new_panels)
try:
loop.run_forever()
except KeyboardInterrupt:
print("Unregistering...")
loop.run_until_complete(do_close(za_hub))
finally:
loop.close()
```
81 changes: 47 additions & 34 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,53 +1,66 @@
===========
ZeptrionAir
===========
This are the Classes to use the Zeptrion Air Lights etc.
Zeptrion Air is a product from Feller.
Zeptrion Air Panel are switches for Light, Blinds etc.
A panel can have up to 8 switches.
Each of this switches are called Channels.
This are the Classes to use the Zeptrion Air Lights etc. Zeptrion Air is
a product from Feller. Zeptrion Air Panel are switches for Light, Blinds
etc. A panel can have up to 8 switches. Each of this switches are called
Button.

1) ZeptrionAir Hub
1) Hub
------------------
The ZeptrionAir Hub handles all the ZeptrionAir Panel.
The Hub is searching (browse) the panels with mDNS (zeroconf).
If panels are found with mDNS the Hub is requesting the panels
for all additional needed informations
The ZeptrionAir Hub handles all the ZeptrionAir Panel. The Hub is
searching (browse) the panels with mDNS (zeroconf). If panels are found
with mDNS the Hub is requesting the panels for all additional needed
informations

2) ZeptrionAirPanel
2) Panel
-------------------
ZeptrionAirPanel is the panel that can have up to 8 channels (Switches)
Panel is the panel that can have up to 8 buttons (Switches)

3) ZeptrionAirChannel
3) Button
---------------------
The ZeptrionAirChannel is on of the channel that are hold on a Panel
A Channel is Switch for example for a Light or Blinds etc.
With the ZeptrionAirChannel Class you can read the status
and control the device
The Button is on of the button that are hold on a Panel A
Button is Switch for example for a Light or Blinds etc. With the
Button Class you can read the status and control the device
Button Status is handled with websocket and is implemented with asyncio

Python compatibility
---------------------
Only working with Python 3 and above
Only working with Python 3.6 and above

Sample to use it:
-----------------
.. code-block:: python
from zeptrionAirApi import ZeptrionAirHub
hub = ZeptrionAirHub(3) #Initialize the ZeptrionAIrHub and browse for 5sec
allZeptrionPanels = hub.get_all_panels() #returns all found panels
allZeptrionChannels = hub.get_all_channels() #returns all found channels
allLightChannels = hub.get_all_light_channels() #returns all found channels that are Light switches
allGroups = hub.get_all_group() #returns all groups, that have been defined on the zeptrion app
for group in allGroups:
print("Channels in Group: " + str(group))
print(hub.get_all_channels_by_group(group)) #returns all channles that are defined for that group
channels = hub.get_all_channels_by_cat(1) #returns all found channels that are Light switches --> Category 1
channel = channels[0] #pick the first light
channel.toggle_light() #toggle the light
channel.turn_on_light() #turn the light on
channel.turn_off_light() #turn the light off
import asyncio
import time
import json
from zeptrion_air_api import Hub
async def do_close(hub):
"""Close the System."""
await hub.close()
def press_info_handler(press_info):
"""Handle if the button is pressed."""
print(press_info)
def found_new_panels(panel):
"""Handle if a new Zeptrion Air Panel is found."""
for button in panel.all_buttons:
if button:
button.listen_to(press_info_handler)
if __name__ == '__main__':
"""Init the main test."""
loop = asyncio.get_event_loop()
za_hub = Hub(loop, found_new_panels)
try:
loop.run_forever()
except KeyboardInterrupt:
print("Unregistering...")
loop.run_until_complete(do_close(za_hub))
finally:
loop.close()
..
File renamed without changes.
77 changes: 0 additions & 77 deletions example/playwith.py

This file was deleted.

29 changes: 0 additions & 29 deletions example/sample.py

This file was deleted.

28 changes: 0 additions & 28 deletions example/sample_smart_button.py

This file was deleted.

File renamed without changes.
4 changes: 2 additions & 2 deletions test_script.sh → scripts/test_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ echo " ### pycodestyle --first test - "+$1
pycodestyle --first $1

echo " ### pylint 3.6 test - "+$1
# /Users/diener/Library/Python/3.6/bin/pylint ./zeptrion_air_api
# /Users/diener/Library/Python/3.6/bin/pylint ../zeptrion_air_api
pylint ./zeptrion_air_api

echo " ### python3 setup.py test"
Expand All @@ -22,4 +22,4 @@ python3 setup.py test
echo " ### pytest and coverage"
py.test --cov ./zeptrionAirApi

# py.test -s --cov-report html --cov ./zeptrionAirApi
# py.test -s --cov-report html --cov ../zeptrionAirApi
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
setup(
name='zeptrionAirApi',
packages=find_packages(exclude=['contrib', 'docs', 'tests']),
version='1.1.0.1',
version='1.2.0.0',
description="This are the Classes to use the Zeptrion Air Lights etc.",
long_description=long_description,
author="Swissglider",
Expand Down

0 comments on commit eef070b

Please sign in to comment.