Compare commits

..

No commits in common. "pipelines" and "main" have entirely different histories.

6 changed files with 26 additions and 29 deletions

View File

@ -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"]

View File

@ -1,11 +1,12 @@
# Initialise flask
from flask import Flask
app = Flask(__name__)
app.config['SERVER_NAME'] = '0.0.0.0:5000'
app.config.from_prefixed_env()
# Initialise the bluetooth stack
from bluewind import headwind
fan = headwind.Headwind(app.config["ADDRESS"])
fan = headwind.Headwind(app, app.config["ADDRESS"])
# Load the views
from bluewind import views

View File

@ -15,12 +15,15 @@ CHARACTERISTIC = "a026e038-0a7d-4ab3-97fa-f1500f9feb8b"
# > bytearray(b'\xfd\x01\x00\x01')
class Headwind:
def __init__(self, address):
self.address = address
fanClient = None
flaskApp = None
def __init__(self, flaskApp, address):
self.flaskApp = flaskApp
self.fanClient = BleakClient(address)
async def readSpeed(self):
try:
async with BleakClient(self.address) as client:
async with self.fanClient as client:
result = await client.read_gatt_char(CHARACTERISTIC)
return result[2]
except Exception:
@ -28,7 +31,7 @@ class Headwind:
async def readMode(self):
try:
async with BleakClient(self.address) as client:
async with self.fanClient as client:
result = await client.read_gatt_char(CHARACTERISTIC)
return result[3] # Return state code, needs to figure out what each code means
except Exception:
@ -36,32 +39,32 @@ class Headwind:
async def writeSleep(self):
try:
async with BleakClient(self.address) as client:
await client.write_gatt_char(CHARACTERISTIC, SLEEP, response=False)
async with self.fanClient as client:
await client.write_gatt_char(CHARACTERISTIC, SLEEP)
return True
except Exception as e:
return False
async def writeOn(self):
try:
async with BleakClient(self.address) as client:
await client.write_gatt_char(CHARACTERISTIC, ON, response=False)
async with self.fanClient as client:
await client.write_gatt_char(CHARACTERISTIC, ON)
return True
except Exception as e:
return False
async def writeSpeedMode(self):
try:
async with BleakClient(self.address) as client:
await client.write_gatt_char(CHARACTERISTIC, SPD, response=False)
async with self.fanClient as client:
await client.write_gatt_char(CHARACTERISTIC, SPD)
return True
except Exception as e:
return False
async def writeHrMode(self):
try:
async with BleakClient(self.address) as client:
await client.write_gatt_char(CHARACTERISTIC, HR, response=False)
async with self.fanClient as client:
await client.write_gatt_char(CHARACTERISTIC, HR)
return True
except Exception as e:
return False
@ -70,8 +73,8 @@ class Headwind:
if speed > 0:
value = [0x2, speed]
try:
async with BleakClient(self.address) as client:
await client.write_gatt_char(CHARACTERISTIC, value, response=False)
async with self.fanClient as client:
await client.write_gatt_char(CHARACTERISTIC, value)
return True
except Exception as e:
return False
@ -79,8 +82,8 @@ class Headwind:
async def writeOff(self):
try:
async with BleakClient(self.address) as client:
await client.write_gatt_char(CHARACTERISTIC, OFF, response=False)
async with self.fanClient as client:
await client.write_gatt_char(CHARACTERISTIC, OFF)
return True
except Exception as e:
return False

View File

@ -24,6 +24,7 @@ async def setSpeed(speed):
@app.route("/speed/increase", methods=["POST"])
async def setIncreaseSpeed():
print("increase speed")
currentSpeed = await fan.readSpeed()
newSpeed = 0
if currentSpeed < 25:
@ -41,6 +42,7 @@ async def setIncreaseSpeed():
@app.route("/speed/decrease", methods=["POST"])
async def setDecreaseSpeed():
print("decrease speed")
currentSpeed = await fan.readSpeed()
newSpeed = 0
if currentSpeed == 100:

View File

@ -1 +1,2 @@
FLASK_ADDRESS='F2:B3:F7:6A:24:48'
FLASK_URL='127.0.0.1:5000'

View File

@ -2,4 +2,4 @@
from bluewind import app
if __name__ == '__main__':
app.run(debug=False, host='0.0.0.0')
app.run(debug=False)