Compare commits
No commits in common. "pipelines" and "main" have entirely different histories.
10
Dockerfile
10
Dockerfile
|
@ -1,10 +0,0 @@
|
||||||
FROM --platform=$BUILDPLATFORM python:3.10-alpine
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY requirements.txt /app
|
|
||||||
RUN pip3 install -r requirements.txt
|
|
||||||
|
|
||||||
COPY . /app
|
|
||||||
|
|
||||||
CMD ["python", "main.py"]
|
|
|
@ -1,11 +1,12 @@
|
||||||
# Initialise flask
|
# Initialise flask
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
app.config['SERVER_NAME'] = '0.0.0.0:5000'
|
||||||
app.config.from_prefixed_env()
|
app.config.from_prefixed_env()
|
||||||
|
|
||||||
# Initialise the bluetooth stack
|
# Initialise the bluetooth stack
|
||||||
from bluewind import headwind
|
from bluewind import headwind
|
||||||
fan = headwind.Headwind(app.config["ADDRESS"])
|
fan = headwind.Headwind(app, app.config["ADDRESS"])
|
||||||
|
|
||||||
# Load the views
|
# Load the views
|
||||||
from bluewind import views
|
from bluewind import views
|
|
@ -15,12 +15,15 @@ CHARACTERISTIC = "a026e038-0a7d-4ab3-97fa-f1500f9feb8b"
|
||||||
# > bytearray(b'\xfd\x01\x00\x01')
|
# > bytearray(b'\xfd\x01\x00\x01')
|
||||||
|
|
||||||
class Headwind:
|
class Headwind:
|
||||||
def __init__(self, address):
|
fanClient = None
|
||||||
self.address = address
|
flaskApp = None
|
||||||
|
def __init__(self, flaskApp, address):
|
||||||
|
self.flaskApp = flaskApp
|
||||||
|
self.fanClient = BleakClient(address)
|
||||||
|
|
||||||
async def readSpeed(self):
|
async def readSpeed(self):
|
||||||
try:
|
try:
|
||||||
async with BleakClient(self.address) as client:
|
async with self.fanClient as client:
|
||||||
result = await client.read_gatt_char(CHARACTERISTIC)
|
result = await client.read_gatt_char(CHARACTERISTIC)
|
||||||
return result[2]
|
return result[2]
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -28,7 +31,7 @@ class Headwind:
|
||||||
|
|
||||||
async def readMode(self):
|
async def readMode(self):
|
||||||
try:
|
try:
|
||||||
async with BleakClient(self.address) as client:
|
async with self.fanClient as client:
|
||||||
result = await client.read_gatt_char(CHARACTERISTIC)
|
result = await client.read_gatt_char(CHARACTERISTIC)
|
||||||
return result[3] # Return state code, needs to figure out what each code means
|
return result[3] # Return state code, needs to figure out what each code means
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -36,32 +39,32 @@ class Headwind:
|
||||||
|
|
||||||
async def writeSleep(self):
|
async def writeSleep(self):
|
||||||
try:
|
try:
|
||||||
async with BleakClient(self.address) as client:
|
async with self.fanClient as client:
|
||||||
await client.write_gatt_char(CHARACTERISTIC, SLEEP, response=False)
|
await client.write_gatt_char(CHARACTERISTIC, SLEEP)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def writeOn(self):
|
async def writeOn(self):
|
||||||
try:
|
try:
|
||||||
async with BleakClient(self.address) as client:
|
async with self.fanClient as client:
|
||||||
await client.write_gatt_char(CHARACTERISTIC, ON, response=False)
|
await client.write_gatt_char(CHARACTERISTIC, ON)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def writeSpeedMode(self):
|
async def writeSpeedMode(self):
|
||||||
try:
|
try:
|
||||||
async with BleakClient(self.address) as client:
|
async with self.fanClient as client:
|
||||||
await client.write_gatt_char(CHARACTERISTIC, SPD, response=False)
|
await client.write_gatt_char(CHARACTERISTIC, SPD)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def writeHrMode(self):
|
async def writeHrMode(self):
|
||||||
try:
|
try:
|
||||||
async with BleakClient(self.address) as client:
|
async with self.fanClient as client:
|
||||||
await client.write_gatt_char(CHARACTERISTIC, HR, response=False)
|
await client.write_gatt_char(CHARACTERISTIC, HR)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return False
|
return False
|
||||||
|
@ -70,8 +73,8 @@ class Headwind:
|
||||||
if speed > 0:
|
if speed > 0:
|
||||||
value = [0x2, speed]
|
value = [0x2, speed]
|
||||||
try:
|
try:
|
||||||
async with BleakClient(self.address) as client:
|
async with self.fanClient as client:
|
||||||
await client.write_gatt_char(CHARACTERISTIC, value, response=False)
|
await client.write_gatt_char(CHARACTERISTIC, value)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return False
|
return False
|
||||||
|
@ -79,8 +82,8 @@ class Headwind:
|
||||||
|
|
||||||
async def writeOff(self):
|
async def writeOff(self):
|
||||||
try:
|
try:
|
||||||
async with BleakClient(self.address) as client:
|
async with self.fanClient as client:
|
||||||
await client.write_gatt_char(CHARACTERISTIC, OFF, response=False)
|
await client.write_gatt_char(CHARACTERISTIC, OFF)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return False
|
return False
|
|
@ -24,6 +24,7 @@ async def setSpeed(speed):
|
||||||
|
|
||||||
@app.route("/speed/increase", methods=["POST"])
|
@app.route("/speed/increase", methods=["POST"])
|
||||||
async def setIncreaseSpeed():
|
async def setIncreaseSpeed():
|
||||||
|
print("increase speed")
|
||||||
currentSpeed = await fan.readSpeed()
|
currentSpeed = await fan.readSpeed()
|
||||||
newSpeed = 0
|
newSpeed = 0
|
||||||
if currentSpeed < 25:
|
if currentSpeed < 25:
|
||||||
|
@ -41,6 +42,7 @@ async def setIncreaseSpeed():
|
||||||
|
|
||||||
@app.route("/speed/decrease", methods=["POST"])
|
@app.route("/speed/decrease", methods=["POST"])
|
||||||
async def setDecreaseSpeed():
|
async def setDecreaseSpeed():
|
||||||
|
print("decrease speed")
|
||||||
currentSpeed = await fan.readSpeed()
|
currentSpeed = await fan.readSpeed()
|
||||||
newSpeed = 0
|
newSpeed = 0
|
||||||
if currentSpeed == 100:
|
if currentSpeed == 100:
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
FLASK_ADDRESS='F2:B3:F7:6A:24:48'
|
FLASK_ADDRESS='F2:B3:F7:6A:24:48'
|
||||||
|
FLASK_URL='127.0.0.1:5000'
|
Loading…
Reference in New Issue