Batch Updates
All checks were successful
Deploy powerbar.ti Frontend Portal / Deploy-Tinance2-Frontend-Portal-Production (push) Successful in 6s
All checks were successful
Deploy powerbar.ti Frontend Portal / Deploy-Tinance2-Frontend-Portal-Production (push) Successful in 6s
This commit is contained in:
parent
9fe9936d6e
commit
2746ac340b
3 changed files with 77 additions and 4 deletions
|
@ -5,7 +5,7 @@ from app.settings import powerbars
|
|||
from app.utils import get_baytech_status_outlet_telnet
|
||||
from flask_socketio import SocketIO, emit
|
||||
from gevent import monkey
|
||||
from app.jobs import scheduler
|
||||
from app.jobs import scheduler, generate_batch_jobs
|
||||
|
||||
socketio = SocketIO(async_mode="gevent", logger=True, engineio_logger=True, cors_allowed_origins="*")
|
||||
|
||||
|
@ -43,6 +43,7 @@ def create_app():
|
|||
app.register_blueprint(routes)
|
||||
powerbar_status()
|
||||
scheduler.init_app(app)
|
||||
generate_batch_jobs()
|
||||
socketio.init_app(app)
|
||||
return app
|
||||
|
||||
|
|
76
app/jobs.py
76
app/jobs.py
|
@ -5,7 +5,7 @@ import time
|
|||
|
||||
scheduler = APScheduler()
|
||||
|
||||
@scheduler.task('interval', id='do_periodic_serial_job', seconds=3, max_instances=1)
|
||||
#@scheduler.task('interval', id='do_periodic_serial_job', seconds=3, max_instances=1)
|
||||
def periodic_serial_job():
|
||||
print("Running Sync Job")
|
||||
for powerbar in powerbars:
|
||||
|
@ -66,4 +66,76 @@ def periodic_serial_job():
|
|||
run_telnet_command(powerbar, command)
|
||||
time.sleep(0.1)
|
||||
|
||||
print("Sync Job Done")
|
||||
print("Sync Job Done")
|
||||
|
||||
|
||||
|
||||
def generate_batch_jobs():
|
||||
for powerbar in powerbars:
|
||||
if powerbars[powerbar]['method'] == 'batch_telnet':
|
||||
if powerbars[powerbar]['type'] == 'baytech':
|
||||
scheduler.add_job(f"baytech-batch-update-job-{powerbar}", baytech_batch_update, args=[powerbar], trigger='interval', seconds=3, max_instances=1)
|
||||
|
||||
|
||||
|
||||
def baytech_batch_update(powerbar):
|
||||
print(f"Running Sync Job: {powerbar}")
|
||||
|
||||
on_command = "On "
|
||||
off_command = "Off "
|
||||
|
||||
print(f"Checking powerbar state {powerbar}")
|
||||
outlets = powerbars[powerbar]['outlets']
|
||||
|
||||
on_list = []
|
||||
off_list = []
|
||||
|
||||
counter_on = 0
|
||||
counter_off = 0
|
||||
max = 9
|
||||
for outlet in outlets:
|
||||
|
||||
outlet_id = outlet
|
||||
outlet_status = powerbars[powerbar]['outlets'][outlet].get('state', 'unknown')
|
||||
|
||||
if outlet_status == 'on':
|
||||
on_list.append(outlet)
|
||||
|
||||
if outlet_status == 'off':
|
||||
off_list.append(outlet)
|
||||
|
||||
print(f"on_list: {on_list}")
|
||||
print(f"off_list: {off_list}")
|
||||
|
||||
n = 5 # Size of each sublist
|
||||
|
||||
# Using list comprehension and slicing
|
||||
sublist_on = [on_list[i:i + n] for i in range(0, len(on_list), n)]
|
||||
sublist_off = [off_list[i:i + n] for i in range(0, len(off_list), n)]
|
||||
print(f"sublist_on: {sublist_on}")
|
||||
print(f"sublist_off: {sublist_off}")
|
||||
|
||||
commands = []
|
||||
|
||||
for list in sublist_on:
|
||||
on_command = "On "
|
||||
for outlet in list:
|
||||
on_command += f"{outlet},"
|
||||
commands.append(on_command.rstrip(','))
|
||||
|
||||
for list in sublist_off:
|
||||
off_command = "Off "
|
||||
for outlet in list:
|
||||
off_command += f"{outlet},"
|
||||
commands.append(off_command.rstrip(','))
|
||||
|
||||
print(f"commands: {commands}")
|
||||
|
||||
|
||||
for command in commands:
|
||||
print(f"Running command: {command}")
|
||||
run_telnet_command(powerbar, command)
|
||||
time.sleep(0.5)
|
||||
|
||||
print(f"Sync Job Done {powerbar}")
|
||||
return
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue