Skip to content

Commit 34a62d6

Browse files
author
James Boulton
committed
Initial commit and renaming.
1 parent 3e25c8f commit 34a62d6

30 files changed

+3303
-0
lines changed

.gitignore

+131
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
2+
# Created by https://www.gitignore.io/api/python
3+
# Edit at https://www.gitignore.io/?templates=python
4+
5+
### Python ###
6+
# Byte-compiled / optimized / DLL files
7+
__pycache__/
8+
*.py[cod]
9+
*$py.class
10+
11+
# C extensions
12+
*.so
13+
14+
# Distribution / packaging
15+
.Python
16+
build/
17+
develop-eggs/
18+
dist/
19+
downloads/
20+
eggs/
21+
.eggs/
22+
lib/
23+
lib64/
24+
parts/
25+
sdist/
26+
var/
27+
wheels/
28+
pip-wheel-metadata/
29+
share/python-wheels/
30+
*.egg-info/
31+
.installed.cfg
32+
*.egg
33+
MANIFEST
34+
35+
# PyInstaller
36+
# Usually these files are written by a python script from a template
37+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
38+
*.manifest
39+
*.spec
40+
41+
# Installer logs
42+
pip-log.txt
43+
pip-delete-this-directory.txt
44+
45+
# Unit test / coverage reports
46+
htmlcov/
47+
.tox/
48+
.nox/
49+
.coverage
50+
.coverage.*
51+
.cache
52+
nosetests.xml
53+
coverage.xml
54+
*.cover
55+
.hypothesis/
56+
.pytest_cache/
57+
58+
# Translations
59+
*.mo
60+
*.pot
61+
62+
# Django stuff:
63+
*.log
64+
local_settings.py
65+
db.sqlite3
66+
67+
# Flask stuff:
68+
instance/
69+
.webassets-cache
70+
71+
# Scrapy stuff:
72+
.scrapy
73+
74+
# Sphinx documentation
75+
docs/_build/
76+
77+
# PyBuilder
78+
target/
79+
80+
# Jupyter Notebook
81+
.ipynb_checkpoints
82+
83+
# IPython
84+
profile_default/
85+
ipython_config.py
86+
87+
# pyenv
88+
.python-version
89+
90+
# pipenv
91+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
93+
# having no cross-platform support, pipenv may install dependencies that don’t work, or not
94+
# install all needed dependencies.
95+
#Pipfile.lock
96+
97+
# celery beat schedule file
98+
celerybeat-schedule
99+
100+
# SageMath parsed files
101+
*.sage.py
102+
103+
# Environments
104+
.env
105+
.venv
106+
env/
107+
venv/
108+
ENV/
109+
env.bak/
110+
venv.bak/
111+
112+
# Spyder project settings
113+
.spyderproject
114+
.spyproject
115+
116+
# Rope project settings
117+
.ropeproject
118+
119+
# mkdocs documentation
120+
/site
121+
122+
# mypy
123+
.mypy_cache/
124+
.dmypy.json
125+
dmypy.json
126+
127+
# Pyre type checker
128+
.pyre/
129+
130+
# End of https://www.gitignore.io/api/python
131+
.vscode/

Examples/TestConfigControl.py

+161
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
#!/bin/python3
2+
3+
import time
4+
import datetime
5+
import random
6+
import argparse
7+
import sys
8+
import signal
9+
import dashio
10+
import platform
11+
import psutil
12+
import logging
13+
14+
class TestControls():
15+
16+
def signal_cntrl_c(self, os_signal, os_frame):
17+
self.shutdown = True
18+
19+
def init_logging(self, logfilename, level):
20+
if level == 0:
21+
log_level = logging.WARN
22+
elif level == 1:
23+
log_level = logging.INFO
24+
elif level == 2:
25+
log_level = logging.DEBUG
26+
if not logfilename:
27+
formatter = logging.Formatter('%(asctime)s.%(msecs)03d, %(message)s')
28+
handler = logging.StreamHandler()
29+
handler.setFormatter(formatter)
30+
logger = logging.getLogger()
31+
logger.addHandler(handler)
32+
logger.setLevel(log_level)
33+
else:
34+
logging.basicConfig(filename=logfilename,
35+
level=log_level,
36+
format='%(asctime)s.%(msecs)03d, %(message)s',
37+
datefmt="%Y-%m-%d %H:%M:%S")
38+
logging.info('==== Started ====')
39+
40+
def parse_commandline_arguments(self):
41+
parser = argparse.ArgumentParser()
42+
parser.add_argument("-v",
43+
"--verbose",
44+
const=1,
45+
default=1,
46+
type=int,
47+
nargs="?",
48+
help='''increase verbosity:
49+
0 = only warnings, 1 = info, 2 = debug.
50+
No number means info. Default is no verbosity.''')
51+
parser.add_argument("-s",
52+
"--server",
53+
help="Server URL.",
54+
dest='server',
55+
default='mqtt://localhost')
56+
parser.add_argument("-p",
57+
"--port",
58+
type=int,
59+
help="Port number.",
60+
default=1883,
61+
dest='port',)
62+
parser.add_argument("-c",
63+
"--connection_name",
64+
dest="connection",
65+
default='TestMQTT',
66+
help="IotDashboard Connection name")
67+
parser.add_argument("-u",
68+
"--username",
69+
help="MQTT Username",
70+
dest='username',
71+
default='')
72+
parser.add_argument("-w",
73+
"--password",
74+
help='MQTT Password',
75+
default='')
76+
parser.add_argument("-l",
77+
"--logfile",
78+
dest="logfilename",
79+
default="",
80+
help="logfile location",
81+
metavar="FILE")
82+
args = parser.parse_args()
83+
return args
84+
85+
def __init__(self):
86+
self.bttn1_value = False
87+
88+
# Catch CNTRL-C signel
89+
signal.signal(signal.SIGINT, self.signal_cntrl_c)
90+
self.shutdown = False
91+
args = self.parse_commandline_arguments()
92+
self.init_logging(args.logfilename, args.verbose)
93+
94+
logging.info('Connecting to server: %s', args.server)
95+
logging.info(' Connection ID: %s', args.connection)
96+
logging.info(' Control topic: %s/%s/control', args.username, args.connection)
97+
logging.info(' Data topic: %s/%s/data', args.username, args.connection)
98+
99+
self.ic = dashio.iotConnectionThread(args.connection, args.server, args.port, args.username, args.password, use_ssl=True)
100+
self.ic.start()
101+
102+
self.test_menu = dashio.Menu("TestTheMenu")
103+
104+
self.up_btn = dashio.Button('UP_BTN')
105+
self.up_btn.btn_state = self.bttn1_value
106+
self.up_btn.icon_name = dashio.Icon.UP
107+
self.up_btn.on_colour = dashio.Colour.GREEN
108+
self.up_btn.text = 'Up Button'
109+
self.up_btn.text_colour = dashio.Colour.WHITE
110+
self.up_btn.title = 'Up'
111+
self.ic.add_control(self.up_btn)
112+
self.test_menu.add_control(self.up_btn)
113+
114+
self.down_btn = dashio.Button('DOWN_BTN')
115+
self.down_btn.btn_state = self.bttn1_value
116+
self.down_btn.icon_name = dashio.Icon.DOWN
117+
self.down_btn.on_colour = dashio.Colour.GREEN
118+
self.down_btn.text = ''
119+
self.down_btn.text_colour = dashio.Colour.WHITE
120+
self.down_btn.title = 'Down'
121+
self.ic.add_control(self.down_btn)
122+
self.test_menu.add_control(self.down_btn)
123+
124+
self.sldr_cntrl = dashio.SliderSingleBar('SLDR')
125+
self.sldr_cntrl.title = 'Slider'
126+
self.sldr_cntrl.max = 10
127+
self.sldr_cntrl.slider_enabled = True
128+
self.sldr_cntrl.red_value
129+
self.ic.add_control(self.sldr_cntrl)
130+
self.test_menu.add_control(self.sldr_cntrl)
131+
132+
self.text_cntrl1 = dashio.TextBox('TXT1')
133+
self.text_cntrl1.text = 'Test box1'
134+
self.text_cntrl1.title = 'TextBx1'
135+
self.text_cntrl1.keyboard_type = dashio.Keyboard.ALL_CHARS
136+
self.text_cntrl1.close_key_board_on_send = True
137+
self.ic.add_control(self.text_cntrl1)
138+
self.test_menu.add_control(self.text_cntrl1)
139+
140+
self.text_cntrl2 = dashio.TextBox('TXT2')
141+
self.text_cntrl2.text = 'Test box2'
142+
self.text_cntrl2.title = 'TextBx2'
143+
self.text_cntrl2.keyboard_type = dashio.Keyboard.ALL_CHARS
144+
self.text_cntrl2.close_key_board_on_send = True
145+
self.ic.add_control(self.text_cntrl2)
146+
self.test_menu.add_control(self.text_cntrl2)
147+
148+
self.ic.add_control(self.test_menu)
149+
150+
while not self.shutdown:
151+
time.sleep(5)
152+
153+
self.ic.running = False
154+
155+
156+
def main():
157+
tc = TestControls()
158+
159+
160+
if __name__ == '__main__':
161+
main()

0 commit comments

Comments
 (0)