Skip to content

Commit

Permalink
bug Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrewiski committed Apr 28, 2022
1 parent 3b12315 commit 3a592d7
Show file tree
Hide file tree
Showing 15 changed files with 289 additions and 151 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# DataFile
data/games
data/nosql
data/teams.nosql
data/games.nosql
data/audioFiles
Expand Down
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
"configurations": [

{
"env": {"configDirectory": "./config/private/debug" , "LOCALDEBUG":"true", "DEBUG": "radarMonitor,radarStalker2,batteryMonitor,ffmpegOverlay,youtubeEncoderClient"},
"env": {"CONFIGDIRECTORY": "./config/private/debug" , "LOCALDEBUG":"true", "DEBUG": "radarMonitor,radarStalker2,batteryMonitor,ffmpegOverlay,ffplay,radarDatabase,radarPacketParser,remoteMongoDBServer,radarEmulator,gpsMonitor"},
"command": "npm start",
"name": "LocalDebug Run npm start",
"request": "launch",
"type": "node-terminal"
},

{
"env": {"configDirectory": "./config/private/youtubeEncoder", "LOCALDEBUG":"true", "DEBUG": "youtubeEncoderClient,ffmpegOverlay"},
"env": {"CONFIGDIRECTORY": "./config/private/youtubeEncoder", "LOCALDEBUG":"true", "DEBUG": "youtubeEncoderClient,ffmpegOverlay"},
"command": "node youtubeEncoderClient.js",
"name": "Run node youtubeEncoderClient.js",
"request": "launch",
Expand Down
66 changes: 54 additions & 12 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,21 @@ if (process.env.CONFIGDIRECTORY) {
if (process.env.CONFIGFILENAME) {
configFileOptions.configFileName =process.env.CONFIGFILENAME;
}
if (process.env.DATADIRECTORY) {
defaultConfig.dataDirectory =process.env.DATADIRECTORY;
}

if (defaultConfig.deviceId === undefined || defaultConfig.deviceId === '') {
defaultConfig.deviceId = uuidv4();
}

console.log("configDirectory is " + configFileOptions.configDirectory);
console.log("configFileName is " + configFileOptions.configFileName);

var configHandler = new ConfigHandler(configFileOptions, defaultConfig);

var objOptions = configHandler.config;

console.log("Data Directory is " + objOptions.dataDirectory);

let logUtilHelper = new LogUtilHelper({
appLogLevels: objOptions.appLogLevels,
Expand All @@ -65,6 +73,27 @@ let logUtilHelper = new LogUtilHelper({

})

if (configHandler.config.deviceId === undefined || configHandler.config.deviceId === '') {
configHandler.config.deviceId = uuidv4();
try {
configHandler.configFileSave();
logUtilHelper.log(appLogName, "app", "debug", 'deviceId Setting Saved');
} catch (ex) {
logUtilHelper.log(appLogName, "app", "error", 'Error Saving Config DeviceId', ex);
console.log("Error Saving Config DeviceId " + ex.message);
}
}
console.log("DeviceId " + configHandler.config.deviceId);

logUtilHelper.log(appLogName, "app", "info", "DeviceId " + configHandler.config.deviceId);
logUtilHelper.log(appLogName, "app", "info", "configDirectory is " + configFileOptions.configDirectory);
logUtilHelper.log(appLogName, "app", "info", "configFileName is " + configFileOptions.configFileName);
logUtilHelper.log(appLogName, "app", "info", "Data Directory is " + objOptions.dataDirectory);


var audioFileDirectory = path.join(objOptions.dataDirectory, "audioFiles");
var walkupAudioDirectory = path.join(audioFileDirectory, "walkup");

var app = express();
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: false }));
Expand All @@ -76,7 +105,7 @@ var batteryMonitor = new BatteryMonitor(objOptions.batteryMonitor, logUtilHelper
var gpsMonitor = new GpsMonitor(objOptions.gpsMonitor, logUtilHelper);
var dataDisplay = new DataDisplay(objOptions.dataDisplay, logUtilHelper);
var ffmpegOverlay = new FfmpegOverlay(objOptions.ffmpegOverlay, logUtilHelper);
var radarDatabase = new RadarDatabase(objOptions.radarDatabase, logUtilHelper);
var radarDatabase = new RadarDatabase(objOptions.radarDatabase, logUtilHelper, objOptions.dataDirectory);

var commonData = {
game: null,
Expand Down Expand Up @@ -198,12 +227,10 @@ routes.get('/data/game', function (req, res) {
});

routes.get('/data/audioFiles/walkup', function (req, res) {

const directoryPath = path.join(__dirname, "data/audioFiles/walkup")
let walkupFiles = [];
fs.readdir(directoryPath, function (err, files) {
fs.readdir(walkupAudioDirectory, function (err, files) {
if (err) {
console.log("Error getting walkup directory information.");
logUtilHelper.log(appLogName, "browser", "error", "Error getting walkup directory information.", walkupAudioDirectory);
} else {
files.forEach(function (file) {
//console.log(file);
Expand All @@ -214,8 +241,23 @@ routes.get('/data/audioFiles/walkup', function (req, res) {
res.json(walkupFiles);
}
})


});

routes.get('/data/audioFiles', function (req, res) {
let audioFiles = [];
fs.readdir(audioFileDirectory, function (err, files) {
if (err) {
logUtilHelper.log(appLogName, "browser", "error", "Error getting audio directory information.", audioFileDirectory);
} else {
files.forEach(function (file) {
//console.log(file);
if (path.extname(file) !== ".txt") {
audioFiles.push({ fileName: file });
}
})
res.json(audioFiles);
}
})
});

routes.get('/data/game/:id', function (req, res) {
Expand Down Expand Up @@ -407,14 +449,14 @@ var playAudioFileComplete = function (audioFile) {
io.emit("audio", { cmd: "audioPlayComplete", data: { audioFile: audioFile } });
}

var audioFilePlay = function (audioFilePath, audioFile, options) {
var audioFilePlay = function (audioFolder, audioFile, options) {

if (audioFilePlayer !== null) {
audioFilePlayer.stop();
audioFilePlayer = null;
}
var audioFolderPath = path.join(__dirname, "data", audioFilePath);
audioFilePlayer = new FFplay(audioFolderPath, audioFile.fileName, options);

audioFilePlayer = new FFplay(audioFolder, audioFile.fileName, options, logUtilHelper);

audioFilePlayer.on("stopped", playAudioFileComplete);

Expand Down Expand Up @@ -483,7 +525,7 @@ io.on('connection', function(socket) {
audioFilePlay("", message.data.audioFile);
break;
case "audioFilePlayWalkup":
audioFilePlay("audioFiles/walkup", message.data.audioFile, ['-nodisp', '-autoexit', '-af', 'afade=t=in:st=0:d=5,afade=t=out:st=10:d=5'])
audioFilePlay(walkupAudioDirectory, message.data.audioFile, ['-nodisp', '-autoexit', '-af', 'afade=t=in:st=0:d=5,afade=t=out:st=10:d=5'])
break;
case "audioFileStop":
audioFileStop();
Expand Down
13 changes: 5 additions & 8 deletions config/defaultConfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"webserverPort": 12336,
"useNoSql": true,
"deviceId": "",
"dataDirectory": "./data/",
"mongoDbServerUrl": "",
"mongoDbDatabaseName": "",
"logDirectory": "logs",
Expand Down Expand Up @@ -49,10 +51,6 @@

}
},
"radarDatabaseConfig":{
"deviceId": "",
"dataFolder": "./data"
},
"ffmpegOverlay":{
"input": "",
"rtmpUrl": "",
Expand All @@ -66,10 +64,6 @@
"options": "fontfile=arial.ttf:fontsize=50:box=1:[email protected]:boxborderw=5:fontcolor=white:x=(w-text_w)/2:y=((h-text_h)/2)+((h-text_h)/2):textfile=overlay.txt:reload=1"
}
},
"youtubeEncoderClient":{
"webserverPort": 12336,
"host": ""
},
"appLogLevels":{
"radarMonitor": {
"app":"info",
Expand All @@ -93,6 +87,9 @@
},
"platformDetect" :{
"app":"info"
},
"ffplay" : {
"app":"info"
}
}
}
7 changes: 0 additions & 7 deletions data/games.nosql

This file was deleted.

14 changes: 0 additions & 14 deletions install/raspberryPiInstall.sh

This file was deleted.

34 changes: 34 additions & 0 deletions install/raspberrypi/raspberryPiInstall.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash
echo Add Node.JS 16 repo
curl -sSL https://deb.nodesource.com/setup_16.x | sudo bash -
echo Install Node.JS
sudo apt install -y nodejs

sudo mkdir /opt/de
sudo chown $(id -u):$(id -g) /opt/de
sudo useradd -m radar
sudo groupadd radar
sudo usermod -a -G radar $(id -u -n)
newgrp radar
mkdir /opt/de/radar
mkdir /opt/de/appdata
mkdir /opt/de/appdata/radar
sudo chown radar:radar /opt/de/appdata/radar
sudo chmod g+rw /opt/de/appdata/radar
sudo chown radar:radar /opt/de/radar
sudo chmod g+rw /opt/de/radar

mkdir /opt/de/appdata/radar/config
mkdir /opt/de/appdata/radar/data
cd /opt/de/radar
echo downloading latest version of code
curl -s https://api.github.com/repos/Andrewiski/RadarGun/releases/latest | sed -n 's/.*"tarball_url": "\(.*\)",.*/\1/p' | xargs -n1 wget -O - -q | tar -xz --strip-components=1
npm install
sudo cp /opt/de/radar/install/raspberrypi/service/radar.service /lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start radar
sudo systemtl enable radar
#echo install precompiled ffmpeg to fix fault segment error in built in version proboly not needed once raspberry 64bit lite is patched as I reported
#sudo apt-get -y install libaom-dev libass-dev libfreetype6-dev libgnutls28-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget yasm zlib1g-dev libunistring-dev libdrm-dev libopus-dev libvpx-dev libwebp-dev libx264-dev libx265-dev libxml2-dev libfdk-aac-dev libmp3lame-dev
#tar -xf /opt/de/radar/ffmpeg/raspberryPi/ffmpeg-pi-4.3.3.tar.gz
#sudo cp -R ~/install/* /usr/local
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
#!/bin/bash
#https://www.willusher.io/general/2020/11/15/hw-accel-encoding-rpi4

sudo apt-get update -qq && sudo apt-get -y install autoconf automake build-essential cmake git-core libaom-dev libass-dev libfreetype6-dev libgnutls28-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget yasm zlib1g-dev libunistring-dev libdrm-dev libopus-dev libvpx-dev libwebp-dev libx264-dev libx265-dev libxml2-dev libfdk-aac-dev libmp3lame-dev

echo This Will Fail on 1GB Memory version of Raspberry PI 4 Use "top" to check ram size

echo Downloading from Git hub https://github.com/FFmpeg/FFmpeg.git
cd ~
git clone --depth 1 --branch release/4.3 https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
sudo apt-get update -qq && sudo apt-get -y install autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libgnutls28-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget yasm zlib1g-dev libunistring-dev libdrm-dev libopus-dev libvpx-dev libwebp-dev libx264-dev libxml2-dev libfdk-aac-dev libmp3lame-dev

./configure --prefix=`pwd`/install \
./configure \
--enable-gpl \
--enable-nonfree \
--arch=aarch64 \
--disable-libaom \
--enable-libaom \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
Expand Down
15 changes: 15 additions & 0 deletions install/raspberrypi/service/radar.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[Unit]
Description=Radar Monitor
Documentation=https://github.com/Andrewiski/RadarGun
After=network.target

[Service]
Environment="CONFIGDIRECTORY=/opt/de/appdata/radar/config" "DATADIRECTORY=/opt/de/appdata/radar/data"
WorkingDirectory=/opt/de/radar
Type=exec
User=radar
ExecStart=/usr/bin/npm start
Restart=on-failure

[Install]
WantedBy=multi-user.target
9 changes: 5 additions & 4 deletions modules/ffplay.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ function FFplay(folder, file, opts, logUtilHelper) {
if (process.platform === 'win32') {
ffplayPath = path.join(__dirname, '..', 'ffmpeg', 'ffplay.exe');
} else {
ffplayPath = 'aplay';
ffplayPath = 'ffplay';
}
}

Expand All @@ -25,6 +25,7 @@ function FFplay(folder, file, opts, logUtilHelper) {
opts = opts || ['-nodisp', '-autoexit'];
opts.unshift(filePath);

logUtilHelper.log(appLogName, "app", "debug", "playing file", filePath);
// Spawn process
this.proc = spawn(ffplayPath, opts);

Expand All @@ -50,15 +51,15 @@ function FFplay(folder, file, opts, logUtilHelper) {


this.proc.stdout.on('data', (data) => {
debug(`stdout: ${data}`);
logUtilHelper.log(appLogName, "app", "debug", `stdout: ${data}`);
});

this.proc.stderr.on('data', (data) => {
debug(`stderr: ${data}`);
logUtilHelper.log(appLogName, "app", "debug", `stderr: ${data}`);
});

this.proc.on('close', (code) => {
debug(`child process exited with code ${code}`);
logUtilHelper.log(appLogName, "app", "debug", `child process exited with code ${code}`);
});


Expand Down
27 changes: 11 additions & 16 deletions modules/radarDatabase.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,9 @@ const fs = require("fs");
const NoSQL = require('nosql');
const { v4: uuidv4 } = require('uuid');
const path = require('path');
var RadarDatabase = function (options, logUtilHelper) {
var RadarDatabase = function (options, logUtilHelper, dataDirectory, deviceId) {
var self = this;
var defaultOptions = {
"deviceId": "",
"dataFolder": "./data",
"teamsFile": "teams.nosql",
"gamesFile": "games.nosql",
"playersFile": "player.nosql",
Expand All @@ -23,20 +21,17 @@ var RadarDatabase = function (options, logUtilHelper) {

var objOptions = extend({}, defaultOptions, options);

if (objOptions.deviceId === undefined || objOptions.deviceId === '') {
objOptions.deviceId = uuidv4();
try {
configFileSettings.deviceId = objOptions.deviceId;
nconf.save();
logUtilHelper.log(appLogName, "app", "debug", 'Settings Saved');
} catch (ex) {
logUtilHelper.log(appLogName, "app", "error", 'setting save Error:' + ex);
}
}


const nosqlDataDirectory = path.join(dataDirectory,"nosql");
if(fs.existsSync(nosqlDataDirectory) === false){
fs.mkdirSync(nosqlDataDirectory,{recursive:true})
};


var teamsFilePath = path.join(objOptions.dataFolder, objOptions.teamsFile);
var gamesFilePath = path.join(objOptions.dataFolder, objOptions.gamesFile);
var gamesFolderPath = path.join(objOptions.dataFolder, "games");
var teamsFilePath = path.join(nosqlDataDirectory, objOptions.teamsFile);
var gamesFilePath = path.join(nosqlDataDirectory, objOptions.gamesFile);
var gamesFolderPath = path.join(nosqlDataDirectory, "games");

var teamsDbExists = fs.existsSync(teamsFilePath);
var gamesDbExists = fs.existsSync(gamesFilePath);
Expand Down
3 changes: 2 additions & 1 deletion overlay.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
PV: 55.8 MPH EV: 55.1 MPH
Vicksburg: 13 P: #10 Jesse Smith PV: 00.0 MPH B: 0 S: 0
Allegan: 3 B: #13 Brady Dorscht EV: 00.0 MPH I: 6 bottom
Loading

0 comments on commit 3a592d7

Please sign in to comment.