Open-F1 เป็นไคลเอนต์ Timing Open Source F1 Live
openf1-console เป็นแอปพลิเคชั่น TUI ซึ่งใช้ OpenF1.Data เพื่อแสดงหน้าจอเวลาสดระหว่างเซสชันและบันทึกข้อมูลสำหรับการรีเพลย์เซสชันในอนาคต
ไลบรารี OpenF1.Data มีไว้เพื่ออำนวยความสะดวกในการเชื่อมต่อกับสตรีมข้อมูลเวลา F1 Live และจัดการการประมวลผลทั้งหมดของข้อมูลที่เข้ามา นอกจากนี้ยังช่วยให้สตรีม "จำลอง" ซึ่งสตรีมข้อมูลที่บันทึกไว้ก่อนหน้านี้สามารถเล่นได้เพื่อให้สามารถพัฒนา/ทดสอบได้ง่าย
คุณสมบัติไฮไลท์:

openf1-consoleโครงการนี้ได้รับแรงบันดาลใจอย่างมากจากโครงการ FASTF1 โดย Theoehrly พวกเขาทำงานจำนวนมากทำความเข้าใจกับสตรีม SignalR ที่มาจาก F1 Live Timing Service เยี่ยมชมโครงการของพวกเขาหากคุณต้องการทำการวิเคราะห์ข้อมูลใด ๆ ในเหตุการณ์ F1 ที่ผ่านมาหรือรวบรวมข้อมูลเวลาสดโดยใช้โมดูลของพวกเขา
openf1-console openf1-console มีให้บริการเป็นเครื่องมือ dotnet จาก NUGET ซึ่งหมายความว่าสามารถติดตั้งได้ทั่วทั้งระบบโดยใช้งานได้ง่าย:
# Install globally using the -g flag
dotnet tool install -g openf1-console
# Assuming the dotnet tools directory is on your path, simply execute openf1-console
openf1-console วิธีการนี้แนะนำเนื่องจากเป็นเรื่องง่ายที่จะอัปเดตแอปโดยใช้ dotnet tool update -g openf1-console
Executables แบบสแตนด์อโลนจะติดอยู่กับแต่ละรุ่น GitHub ดาวน์โหลดปฏิบัติการสำหรับระบบระบบปฏิบัติการ/สถาปัตยกรรมของคุณและเพียงเรียกใช้โดยตรง รายการสิ่งประดิษฐ์มีอยู่ในหน้ารีลีสสำหรับรุ่นล่าสุด
# Download the latest executable (in this case for osx-arm64)
curl https://github.com/JustAman62/open-f1/releases/latest/download/openf1-console-osx-arm64 -o ./openf1-console -L
# Execute openf1-console to start the TUI
./openf1-console # Checkout the git repository
git clone [email protected]:JustAman62/open-f1.git
# Run the console project with `dotnet run`
dotnet run --project OpenF1.Console/OpenF1.Console.csprojopenf1-console ตามที่อธิบายไว้ข้างต้นSession SStart Live Session L LiveTiming Tower ในช่วงเซสชันข้อมูลเวลาที่สตรีมจะถูกเขียนไปยัง ~/open-f1/data/<session-name> สิ่งนี้จะอนุญาตให้มีการเล่นซ้ำในอนาคตของข้อมูลที่บันทึกไว้นี้
ข้อมูลสำหรับเซสชันที่บันทึกไว้ล่วงหน้าควรเก็บไว้ในไดเรกทอรี ~/open-f1/data/<session-name> ข้อมูลตัวอย่างสามารถพบได้ในโฟลเดอร์ข้อมูลตัวอย่าง repos นี้ หากต้องการใช้ข้อมูลตัวอย่างนี้ให้คัดลอกหนึ่งในโฟลเดอร์ไปที่ ~/open-f1/data จากนั้นจะปรากฏในขั้นตอนที่ 4 ด้านล่าง
openf1-console ตามที่อธิบายไว้ข้างต้นSession SStart Simulation F FTiming Tower F1 ให้ไฟล์ข้อมูลเวลาคงที่สำหรับเซสชันที่เสร็จสมบูรณ์แล้ว ข้อมูลนี้สามารถดาวน์โหลดและแปลงเป็นรูปแบบเดียวกันกับ openf1-console ที่ใช้เพื่อบันทึกข้อมูลที่บันทึกสด
openf1-console import <year> listopenf1-console import <year> list --meeting-key <meeting-key>openf1-console import <year> --meeting-key <meeting-key> --session-key <session-key> ข้อมูลเซสชันทั้งหมดไม่ว่าจะเป็นสดหรือบันทึกไว้ล่วงหน้าจะถูกส่งไปยัง Channel ที่ทำหน้าที่เป็นคิวล่าช้า หลังจากความล่าช้าสั้น ๆ จุดข้อมูลจะถูกดึงออกมาจากคิวและประมวลผลนำไปสู่การอัปเดตบนหน้าจอเวลา จำนวนของความล่าช้านี้สามารถเปลี่ยนแปลงได้ด้วยการดำเนินการ Delay M / N ในขณะที่หน้าจอกำหนดเวลา ค้างไว้ ⇧กะ เพื่อเปลี่ยนความล่าช้า 30 วินาทีแทนที่จะเป็น 5 เมื่อใช้ openf1-console ในระหว่างการถ่ายทอดสดคุณอาจต้องการเพิ่มความล่าช้านี้เป็นประมาณ 50 วินาที (จำนวนจริงอาจแตกต่างกัน) เพื่อให้ตรงกับความล่าช้าในการออกอากาศและหลีกเลี่ยง ถูกทำลายเกี่ยวกับการกระทำที่กำลังจะมาถึง
เซสชันจำลองเริ่มต้นด้วยความล่าช้าที่คำนวณได้เท่ากับระยะเวลาระหว่างการเริ่มต้นของเซสชันจริงและตอนนี้ ซึ่งหมายความว่าคุณสามารถลดความล่าช้าได้ด้วยการดำเนินการ Delay N เพื่อส่งต่ออย่างรวดเร็วผ่านเซสชัน
มีเคอร์เซอร์ระดับโลกที่ควบคุมด้วยการกระทำของ Cursor ▼ / ▲ ตัวอย่างเช่นเคอร์เซอร์นี้ขึ้นอยู่กับหน้าจอตัวอย่างเช่นสามารถใช้ในหน้าจอหอเวลาเพื่อเลื่อนผ่านข้อความควบคุมการแข่งขันหรือเลือกไดรเวอร์บนหอคอยเพื่อดูช่วงเวลาเปรียบเทียบ
OpenF1 สามารถกำหนดค่าได้โดยใช้ไฟล์ config.json อย่างง่ายผ่านบรรทัดคำสั่งเมื่อเริ่มต้นหรือใช้ตัวแปรสภาพแวดล้อม การกำหนดค่า JSON จะถูกโหลดจาก ~/open-f1/config.json
| เส้นทาง JSON | บรรทัดคำสั่ง | ตัวแปรสภาพแวดล้อม | คำอธิบาย |
|---|---|---|---|
dataDirectory | --data-directory | OPENF1_DATADIRECTORY | ไดเรกทอรีที่ข้อมูลเวลา JSON ถูกอ่านหรือเขียนจาก |
verbose | -v|--verbose | OPENF1_VERBOSE | ไม่ว่าจะเปิดใช้งานการบันทึก verbose หรือไม่ ค่าเริ่มต้น: false ค่า: true หรือ false |
apiEnabled | --with-api | OPENF1_APIENABLED | ไม่ว่าแอพควรเปิดเผย API ที่ http: // localhost: 61937 ค่าเริ่มต้น: false ค่า: true หรือ false |
OpenF1.Data เขียนบันทึกโดยใช้การใช้งานมาตรฐาน ILogger บันทึกไคลเอนต์ SignalR จะถูกส่งผ่านไปยังมาตรฐาน ILoggerProvider
เมื่อใช้บันทึก openf1-console มีอยู่ในสองแห่ง:
Logs บันทึกสามารถเลื่อนได้บนหน้าจอนี้และระดับต่ำสุดของบันทึกที่แสดงสามารถเปลี่ยนแปลงได้ด้วยการดำเนินการ Minimum Log Level M~/open-f1/logs ระดับบันทึกเริ่มต้นถูกตั้งค่าเป็น Information การบันทึก verbose เพิ่มเติมสามารถเปิดใช้งานได้ด้วยตัวเลือกการกำหนดค่า verbose
F1 Live Timing ถูกสตรีมโดยใช้ SignalR 2 OpenF1.Data เชื่อมต่อกับจุดสิ้นสุดนี้สมัครสมาชิกฟีดข้อมูลและรับฟังข้อความ มันสมัครสมาชิก "หัวข้อ" ต่อไปนี้:
HeartbeatExtrapolatedClockTopThreeTimingStatsTimingAppDataWeatherDataTrackStatusDriverListRaceControlMessagesSessionInfoSessionDataLapCountTimingDataCarData.zPosition.zChampionshipPredictionTeamRadio เหตุการณ์ทั้งหมดที่ได้รับจากไคลเอนต์ Live Timing จะถูกเขียนลงใน Data Directory ที่กำหนดค่าให้ดูดูการกำหนดค่าสำหรับรายละเอียด ไฟล์จะถูกเขียนไปยังไดเรกทอรีย่อยที่มีชื่อโดยใช้ชื่อเซสชันปัจจุบันเช่น ~/open-f1/data/Jeddah_Race/ ในไดเรกทอรีนี้จะมีการเขียนสองไฟล์:
subscribe.txt มีข้อมูลที่ได้รับเมื่อเวลาสมัครสมาชิก (เช่นเมื่อไคลเอนต์ Live Timing เชื่อมต่อกับสตรีม)live.txt มีการต่อท้ายล็อกของทุกข้อความที่ได้รับในสตรีม ไฟล์ทั้งสองนี้จำเป็นสำหรับการจำลอง/รีเพลย์ในอนาคต IJsonTimingClient รองรับการโหลดไฟล์เหล่านี้และประมวลผลข้อมูลในลักษณะเดียวกัน จุดข้อมูลจะถูกเล่นซ้ำแบบเรียลไทม์โดยใช้ความล่าช้าที่คำนวณได้
ตรวจสอบเวลาและช่องว่างของเซกเตอร์ดูข้อความควบคุมการแข่งขันล่าสุดการเปลี่ยนแปลงตำแหน่งการจับภาพสังเกตกลยุทธ์หลุมและอื่น ๆ ด้วยมุมมองหอเวลามาตรฐาน

ใช้เคอร์เซอร์ที่ควบคุมโดย ▼ / ▲ การกระทำของ Cursor ในหน้าจอ O Timing Tower เพื่อเลือกไดรเวอร์เฉพาะ (ในกรณีนี้ Norris) เพื่อดูช่วงเวลาที่สัมพันธ์กันระหว่างไดรเวอร์นั้นและอื่น ๆ ทั้งหมด สิ่งนี้มีประโยชน์สำหรับการพิจารณาว่าคนขับจะตกลงไปที่ไหนหลังจากหยุดหลุมหรือดูที่หน้าต่างหลุมระหว่างการตัด
นอกจากนี้ช่องว่างระหว่างไดรเวอร์ที่เลือกและผู้ที่อยู่รอบ ๆ พวกเขาในรอบสี่รอบสุดท้ายจะแสดงที่ด้านล่างของหน้าจอ สิ่งนี้จะช่วยให้คุณเห็นช่องว่างที่พัฒนาขึ้นได้อย่างง่ายดายเมื่อเวลาผ่านไปและประเมินว่าคนขับอาจจะทันหรือดึงออกไปได้เร็วแค่ไหน

ตรวจสอบเวลาที่มีชีวิต/ดีที่สุด, ช่องว่าง, ยางและการลบตักได้อย่างง่ายดายด้วยหอเวลาเฉพาะสำหรับเซสชันที่ไม่ใช่การแข่งขัน

หน้า Race Control แสดงข้อความควบคุมการแข่งขันทั้งหมดสำหรับเซสชันพร้อมกับข้อมูลเซสชันอื่น ๆ เช่นสภาพอากาศ

ใน Timing by Lap คุณสามารถใช้เคอร์เซอร์ที่ควบคุมโดยการกระทำของ Cursor ▼ / ▲ เพื่อดูสแนปชอตประวัติศาสตร์ของหอเวลาในตอนท้ายของทุกรอบ มุมมองนี้จะแสดงการเปลี่ยนแปลงตำแหน่งในระหว่างรอบนั้นและการเปลี่ยนแปลงสัมพัทธ์ในช่องว่างและช่วงเวลา การเลื่อนผ่านรอบช่วยให้คุณสามารถสร้างภาพว่าการแข่งขันมีการตีแผ่อย่างไร

ฟังคลิปวิทยุของทีมจากทุกเวลาในเซสชั่นและใช้โมเดล ML ท้องถิ่น (Whisper) เพื่อถอดเสียงตามความต้องการ

Open-F1 นั้นไม่เป็นทางการและไม่เกี่ยวข้องกับ บริษัท สูตร 1 แต่อย่างใด F1, Formula One, Formula 1, FIA Formula One World Championship, Grand Prix และ Marks ที่เกี่ยวข้องเป็นเครื่องหมายทางการค้าของ Formula One Licensing BV