From 8dfaef56f7d92959841c06b2f36b0c05124e6678 Mon Sep 17 00:00:00 2001 From: Anastasia Mayer Date: Sat, 26 Nov 2022 15:42:13 -0600 Subject: [PATCH 1/4] Update the README to remove the 5D links --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f463d01..d63bf08 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ This software handles data collection and processing for The Weather Channel's I # Usage instructions [Download a release](https://github.com/the5dcrew/i2MessageEncoder-Rewrite/releases) for the most stable version, or clone the repository. -``git clone https://github.com/the5dcrew/i2MessageEncoder-Rewrite`` +``git clone https://github.com/opentelecom/i2MessageEncoder-Rewrite`` *(If downloading this as a zip, extract to the directory of your choosing.)* From 17d5c83cafff3a3f32366f3ec61ff5276886869f Mon Sep 17 00:00:00 2001 From: Anastasia Mayer Date: Sat, 26 Nov 2022 15:43:00 -0600 Subject: [PATCH 2/4] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d63bf08..6c5b418 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ This software handles data collection and processing for The Weather Channel's I - [ ] WMRecord - Marine Forecast # Usage instructions -[Download a release](https://github.com/the5dcrew/i2MessageEncoder-Rewrite/releases) for the most stable version, or clone the repository. +[Download a release](https://github.com/Open-Telecom/i2MessageEncoder-Rewrite/releases) for the most stable version, or clone the repository. -``git clone https://github.com/opentelecom/i2MessageEncoder-Rewrite`` +``git clone https://github.com/Open-Telecom/i2MessageEncoder-Rewrite`` *(If downloading this as a zip, extract to the directory of your choosing.)* From 5bd83facae721ad4fe1ec47d4fa7fc1b068a7101 Mon Sep 17 00:00:00 2001 From: Anastasia Mayer Date: Sat, 26 Nov 2022 16:06:41 -0600 Subject: [PATCH 3/4] Some interface and time generation updates. Will clean up later when I am on a proper IDE. --- lo8s.py | 137 +++++++++++++++++++------------------------------------- 1 file changed, 46 insertions(+), 91 deletions(-) diff --git a/lo8s.py b/lo8s.py index 0a13e0c..142dd9c 100644 --- a/lo8s.py +++ b/lo8s.py @@ -1,42 +1,21 @@ import py2Lib.bit as bit -import time -from datetime import datetime,timedelta -import random -import secrets - -theNow = datetime.now() - -currentHour = theNow.strftime('%H') +from time import sleep +from datetime import datetime, timedelta +from random import choice def runLo8s(flavor, duration, LDL, logo = None, LDLColor = None, EmergencyLFCancel = None): - Id = ''.join(random.choice('ABCDEF0123456789') for i in range(16)) - nowUTC = datetime.utcnow() - now = datetime.now() - - currentHour = nowUTC.strftime('%H') - - friendlyRunTime = now + timedelta(seconds=30) - + friendlyRunTime = now + timedelta(seconds=30).strftime('%m/%d/%Y %I:%M:%S %p') runTime = nowUTC + timedelta(seconds=30) - - runTimeLDL = nowUTC + timedelta(seconds=30) - - ldlCancelTime = runTimeLDL.strftime('%m/%d/%Y %H:%M:%S'+':02') - - lo8sRunTime = runTime.strftime('%m/%d/%Y %H:%M:%S'+':00') - - friendlyLo8sRunTime = friendlyRunTime.strftime('%m/%d/%Y %I:%M:%S %p') - + ldlCancelTime = runTime.strftime('%m/%d/%Y %H:%M:%S:02') + lo8sRunTime = runTime.strftime('%m/%d/%Y %H:%M:%S:00') if flavor == 'Z': nextLDLRunTime = runTime + timedelta(seconds=91) else: nextLDLRunTime = runTime + timedelta(seconds=65) - - nextLDLRun = nextLDLRunTime.strftime('%m/%d/%Y %H:%M:%S'+':02') - + nextLDLRun = nextLDLRunTime.strftime('%m/%d/%Y %H:%M:%S:02') if duration == '60': duration = '1800' elif duration == '65': @@ -46,66 +25,45 @@ def runLo8s(flavor, duration, LDL, logo = None, LDLColor = None, EmergencyLFCanc elif duration == '120': duration = '3600' else: - print('Invalid Duration specified. Please specifiy length of the local forecast in seconds. 60 for 1 minute, 65 for 1 minute 5 seconds, 90 for 1 minute 30 seconds, 120 for 2 minutes.\n\nScript will now terminate...') + print('Invalid Duration specified. Please specifiy length of the local forecast in seconds.\n60 for 1 minute, 65 for 1 minute 5 seconds, 90 for 1 minute 30 seconds, 120 for 2 minutes.\n\nScript will now terminate...') exit() - nextLDLRun = nextLDLRunTime.strftime('%m/%d/%Y %H:%M:%S'+':02') - if EmergencyLFCancel == 1: - print('Emergency Local On The 8s Kill Switch is Activated. No Local On The 8s Will Air. Maybe b3atdropp3r Hacked An i2 Again???\n' + friendlyLo8sRunTime) - time.sleep(27) + print(f'Emergency Local On The 8s Kill Switch is Activated. No Local On The 8s Will Air. Maybe b3atdropp3r Hacked An i2 Again???\n{friendlyLo8sRunTime}') + sleep(27) elif logo != '': - print('Sending Load Command To All Stars. The Local On The 8s is expected to start at ' + friendlyLo8sRunTime + ' ...') - bit.sendCommand([''], 1) - time.sleep(27) + print(f'Sending Load Command To All Stars. The Local On The 8s is expected to start at {friendlyLo8sRunTime} ...') + bit.sendCommand([f''], 1) + sleep(27) else: - print('Sending Load Command To All Stars. The Local On The 8s is expected to start at ' + friendlyLo8sRunTime + ' ...') - bit.sendCommand([''], 1) - time.sleep(27) - #Cancel LDL + print(f'Sending Load Command To All Stars. The Local On The 8s is expected to start at {friendlyLo8sRunTime} ...') + bit.sendCommand([f''], 1) + sleep(27) print('\nCanceling LDL...') - bit.sendCommand([''], 1) - #time.sleep(1) + bit.sendCommand([f''], 1) if EmergencyLFCancel == 1: print('Not Airing Local On The 8s Due To Kill Switch Activated. Will Reload LDL After National DBS Forecast Finishes...') - time.sleep(53) + sleep(53) else: - #Run Local On The 8s print('\nSending The Run Command. Stand By For Your Local Forecast...') - bit.sendCommand([''], 1) - time.sleep(53) + bit.sendCommand([f''], 1) + sleep(53) if EmergencyLFCancel == 1: - #color = None - #if LDLColor == 0: - #color = 'E' - #elif LDLColor == 1: - #color = 'F' - #else: - #color = 'E' print("\nGetting The LDL Ready So It'll Cue After The National DBS Local Forecast") - bit.sendCommand([''], 1) + bit.sendCommand([f''], 1) time.sleep(10) print("\nSending The Run Command For The LDL...") - bit.sendCommand([''], 1) + bit.sendCommand([f''], 1) elif LDL == 1: - #color = None - #if LDLColor == 0: - #color = 'E' - #elif LDLColor == 1: - #color = 'F' - #else: - #color = 'E' - #Load LDL print("\nGetting The LDL Ready So It'll Cue After This Local Forecast...") - bit.sendCommand([''], 1) + bit.sendCommand([f''], 1) time.sleep(10) - #Run LDL - print('''\nSending The Run Command For The LDL. As Dave Schwartz Would Say... "That's a Wrap!"''') - bit.sendCommand([''], 1) + print('\nSending The Run Command For The LDL. As Dave Schwartz Would Say... "That\'s a Wrap!"') + bit.sendCommand([f''], 1) else: time.sleep(10) - print('''That's It Folks. As Dave Schwartz Would Say... "That's a Wrap!"''') + print('That\'s It Folks. As Dave Schwartz Would Say... "That\'s a Wrap!"') #----- SET BACKGROUNDS HERE ----------------------# BGCatastrophic = ['3094', '3095', '3103', '3115'] @@ -114,8 +72,6 @@ BGAlert = ['3094', '3095', '3103', '3115'] #BGNight = ['3091', '3092', '3102', '3114', '3191'] BGNorm = ['3091', '3092', '3102', '3114'] -#------------------------------------------------------------------------ - #------ BG RULES SECTION ------------------------# if BGCatastrophic: @@ -137,29 +93,28 @@ else: brandedNormal = '' #---------------------------------------------- -i = 0 -while i == 0: - mode = input('\nPlease specify mode. 1 for "Normal", 2 for "Alert", 3 for "Storm Mode", 4 for "Catastrophic", 5 for "Tag" or 0 for "Unbranded"\n') - if mode == '5': - ad = input('Please specify Tag Number.\n') - flavor = input("Flavor Overide? Default is 'V'.\nEnter flavor letter or enter to bypass...") +while True: + mode = input('Please specify mode.\n0 - "Unbranded"\n1 - "Normal"\n2 - "Alert"\n3 - "Storm Mode"\n4 - "Catastrophic"\n5 - "Tag"\n9 - Exit LOT8\n==>') + if mode == '0': + runLo8s('V', '65', 1, '', 'E') + elif mode == '1': + runLo8s('V', '65', 1, brandedNormal, 'E') + elif mode == '2': + runLo8s('V', '65', 1, brandedAlert, 'E') + elif mode == '3': + runLo8s('V1', '65', 1, brandedStorm, 'STORM') + elif mode == '4': + runLo8s('V2', '65', 1, brandedCatastrophic, 'F') + elif mode == '5': + ad = input('Please specify Tag Number.\n==>') + flavor = input("Flavor Overide? Default is 'V'.\nEnter flavor letter, or press enter to bypass.\n==>") if flavor == '': runLo8s('V', '65', 1, ad, 'E') else: runLo8s(flavor, '65', 1, ad, 'E') - elif mode == '4': - runLo8s('V2', '65', 1, brandedCatastrophic, 'F') - elif mode == '3': - runLo8s('V1', '65', 1, brandedStorm, 'STORM') - elif mode == '2': - runLo8s('V', '65', 1, brandedAlert, 'E') - elif mode == '1': - runLo8s('V', '65', 1, brandedNormal, 'E') - elif mode == '0': - runLo8s('V', '65', 1, '', 'E') + elif mode == '9': + print("\n\nGoodbye.\n\n") + exit() else: - print("An invalid mode was specified. This is not allowed! Will now shutdown...\n") - time.sleep(5) - i = 1 - -#runLo8s('V', '65', 1, brandedNormal, 'E') \ No newline at end of file + print("Not a valid selection.\n\n") + time.sleep(1) From 4e8c0d87915f45516f61e91e352ed019726b42ac Mon Sep 17 00:00:00 2001 From: Anastasia Mayer Date: Sat, 26 Nov 2022 16:14:47 -0600 Subject: [PATCH 4/4] Improve Satrad and Mosaic update code. One less system call. Doesn't change much but is something. --- RecordTasks.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/RecordTasks.py b/RecordTasks.py index d3493af..8f5b924 100644 --- a/RecordTasks.py +++ b/RecordTasks.py @@ -4,28 +4,22 @@ from radar import TWCRadarCollector from datetime import datetime -""" This houses the tasks needed to update the data records concurrently - I have no idea if this is a messy way to do things, but it will be worked upon if it is. -""" - async def updateMosaicTask(): - mosaicUpdateIntervals = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55] + mosaicUpdateIntervals = [i+1 for i in range(0, 60, 5)] while True: - # Server takes ~15 - 35 seconds to fully generate a frame, so use 40 seconds to ensure it's fully generated. - if datetime.now().minute in mosaicUpdateIntervals and datetime.now().second == 40: + # Mosaic intervals are 5+1 minutes, so instead of waiting 40 seconds and running "Datetime.now()" twice, We run it once and wait for 60. + if datetime.now().minute in mosaicUpdateIntervals: await TWCRadarCollector.collect("radarmosaic") - await asyncio.sleep(1) async def updateSatradTask(): - satradUpdateIntervals = [0, 10, 20, 30, 40, 50] + satradUpdateIntervals = [i+1 for i in range(0, 60, 10)] while True: - # Server takes ~15 - 35 seconds to fully generate a frame, so use 40 seconds to ensure it's fully generated. - if datetime.now().minute in satradUpdateIntervals and datetime.now().second == 40: + #Satrad intervals are 10+1 minutes, so instead of waiting 40 seconds and running "Datetime.now()" twice, We run it once and wait for 60. + if datetime.now().minute in satradUpdateIntervals: await TWCRadarCollector.collect("satrad") - await asyncio.sleep(1) @@ -94,4 +88,4 @@ async def tTask(): async def wnTask(): while True: await WateringNeeds.makeRecord() - await asyncio.sleep(60 * 60) \ No newline at end of file + await asyncio.sleep(60 * 60)