Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions seq-aiohttp/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>I am just a html file</h1>
</body>
</html>
56 changes: 56 additions & 0 deletions seq-aiohttp/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
from aiohttp import web
import asyncio
from scramjet.streams import Stream
from random import randint
import nest_asyncio
# from gpiozero import CPUTemperature, DiskUsage, LoadAverage, PingServer
import functools

connected = set()

requires = {
'requires': 'pi',
'contentType': 'text/plain'
}

async def root(request):
return web.Response(text="working..")

async def serve(request):
return web.FileResponse('index.html')

async def websocket_handler(request, input):
ws = web.WebSocketResponse()
connected.add(ws)
await ws.prepare(request)
async for msg in ws:
for connection in connected:
if msg.type == web.WSMsgType.TEXT:
if msg.data == 'close':
await ws.close()
else:
await connection.send_str(f'ok, data from topic:{await get_from_topic(input)}')
elif msg.type == web.WSMsgType.ERROR:
print(f'ws connection closed with exception {ws.exception()}')

print('websocket connection closed')
return ws


bound_handler = functools.partial(websocket_handler, input='input')

async def get_from_topic(input):
await asyncio.sleep(1)
topic_data = input.map(lambda s: f'consumer got: {s}').each(print)
return topic_data

async def run(context, input):
nest_asyncio.apply()
app = web.Application()
app.add_routes([web.get('/', root)])
app.add_routes([web.get('/ws', bound_handler)])
app.add_routes([web.static('/files', './', show_index=True)])
# web.run_app(app)
asyncio.gather(web.run_app(app), return_exceptions=True)


45 changes: 45 additions & 0 deletions seq-aiohttp/main_no_seq.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from aiohttp import web
import asyncio
from random import randint
# from gpiozero import CPUTemperature, DiskUsage, LoadAverage, PingServer
import functools


connected = set()

async def root(request):
return web.Response(text="working..")

async def websocket_handler(request, input):
ws = web.WebSocketResponse()
connected.add(ws)
await ws.prepare(request)
async for msg in ws:
for connection in connected:
if msg.type == web.WSMsgType.TEXT:
if msg.data == 'close':
await ws.close()
else:
await connection.send_str(f'ok, data from topic:{await get_from_topic(input)}')
elif msg.type == web.WSMsgType.ERROR:
print(f'ws connection closed with exception {ws.exception()}')

print('websocket connection closed')
return ws

async def get_from_topic(input):
await asyncio.sleep(3)
return 'TOPIC DATA'



bound_handler = functools.partial(websocket_handler, input='input')

app = web.Application()

app.add_routes([web.get('/', root)])
app.add_routes([web.static('/files', './', show_index=True)])

app.add_routes([web.get('/ws', bound_handler)])
web.run_app(app)
print('hi')
29 changes: 29 additions & 0 deletions seq-aiohttp/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "@scramjet/raspberry",
"version": "0.0.1",
"main": "main.py",
"author": "mcdominik",
"license": "GPL-3.0",
"description": "raspberry pi internal parameters fetcher example",
"keywords": [
"raspberry",
"python",
"gpiozero",
"topics"
],
"repository": {
"type": "git",
"url": "https://github.com/scramjetorg/raspberry-pi-dash"
},
"engines": {
"python3": "3.8.0"
},
"scripts": {
"build": "mkdir -p dist/__pypackages__/ && pip3 install -t dist/__pypackages__/ -r requirements.txt && cp main.py package.json ./dist/",
"pack" : "si seq pack dist",
"clean": "rm -rf ./dist"
},
"dependencies": {
"@scramjet/api-client": "0.32.1"
}
}
2 changes: 2 additions & 0 deletions seq-aiohttp/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
scramjet-framework-py==0.10
pyee==9.0.4
1 change: 0 additions & 1 deletion seq-basic-server/.gitignore

This file was deleted.

4 changes: 2 additions & 2 deletions seq-basic-server/basic_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
from functools import partial


async def run(context, input, port=8002):
async def run(context, input, port=8003):
Handler = partial(http.server.SimpleHTTPRequestHandler, directory='static/')
with socketserver.TCPServer(("", port), Handler) as httpd:
print(f"serving at port: {port}")
httpd.serve_forever()
httpd.serve_forever()
6 changes: 0 additions & 6 deletions seq-basic-server/run.py

This file was deleted.

2 changes: 1 addition & 1 deletion seq-basic-server/static/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<html><body>Hello World!</body></html>
<html><body>Hello World!</body></html>
25 changes: 19 additions & 6 deletions seq-rpi-internal/raspberry.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,31 @@
import asyncio
from scramjet.streams import Stream
from gpiozero import CPUTemperature, DiskUsage, LoadAverage, PingServer
from random import randint

mock = False
try:
from gpiozero import CPUTemperature, DiskUsage, LoadAverage, PingServer
except ImportError:
mock = True
print('gpiozero module not found, the script proceed with mocked values')


provides = {
'provides': 'pi',
'contentType': 'text/plain'
}

async def set_internals(stream, interval=3):
async def set_internals(stream, interval=3, mock=mock):
while True:
cpu_temp = round(CPUTemperature().temperature, 2)
disk_usage = round(DiskUsage().usage, 2)
load_avg = round(LoadAverage().load_average, 2)
stream.write([cpu_temp, disk_usage, load_avg])
if mock:
cpu_temp = randint(-20, 80)
disk_usage = randint(0, 99)
load_avg = randint(0, 99)
else:
cpu_temp = round(CPUTemperature().temperature, 2)
disk_usage = round(DiskUsage().usage, 2)
load_avg = round(LoadAverage().load_average, 2)
stream.write(['ok', cpu_temp, disk_usage, load_avg])
await asyncio.sleep(interval)

async def run(context, input):
Expand All @@ -22,3 +34,4 @@ async def run(context, input):
return stream.map(lambda x : x + "\n")



10 changes: 10 additions & 0 deletions seq-simple-react/basic_server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import http.server
import socketserver
from functools import partial


async def run(context, input, port=8002):
Handler = partial(http.server.SimpleHTTPRequestHandler, directory='static/')
with socketserver.TCPServer(("", port), Handler) as httpd:
print(f"serving at port: {port}")
httpd.serve_forever()
Loading