wip
This commit is contained in:
0
logs/blank
Normal file
0
logs/blank
Normal file
@@ -2,7 +2,7 @@
|
||||
|
||||
# Check if nodejs is installed
|
||||
if ! which nodejs > /dev/null; then
|
||||
|
||||
#sudo mount -o remount,rw /
|
||||
|
||||
# Node.js is not installed, setting up the NodeSource Node.js 21.x repo
|
||||
echo "Node.js not found. Setting up NodeSource Node.js 21.x repository..."
|
||||
@@ -10,5 +10,5 @@ if ! which nodejs > /dev/null; then
|
||||
|
||||
# Install Node.js from the NodeSource repository
|
||||
echo "Installing Node.js..."
|
||||
sudo apt-get install -y nodejs npm
|
||||
sudo apt-get install -y nodejs
|
||||
fi
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
bash /data/openpilot/shell/configure_ssh.sh
|
||||
bash /data/openpilot/shell/set_logo.sh
|
||||
|
||||
screen -dmS "watcher" "bash /data/openpilot/shell/watcher_run_loop.sh"
|
||||
32
shell/watcher.example.py
Normal file
32
shell/watcher.example.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import socket
|
||||
import json
|
||||
|
||||
# Initialize the socket without connecting
|
||||
sock = None
|
||||
|
||||
def ensure_socket_connected():
|
||||
global sock
|
||||
if sock is None or sock.fileno() == -1: # Checks if socket is not initialized or closed
|
||||
try:
|
||||
# Attempt to initialize and connect the socket
|
||||
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
sock.connect("/tmp/oscar_watcher.sock")
|
||||
except socket.error:
|
||||
# If connection fails, set sock to None and do nothing
|
||||
sock = None
|
||||
|
||||
def log_watch(var_name, message):
|
||||
ensure_socket_connected() # Ensure the socket is connected before attempting to log
|
||||
if sock: # Proceed only if sock is not None (i.e., is connected)
|
||||
message_json = json.dumps(message)
|
||||
try:
|
||||
sock.sendall(message_json.encode('utf-8') + b'\n')
|
||||
except socket.error:
|
||||
# Handle potential error in sending (e.g., if connection was lost)
|
||||
global sock
|
||||
sock.close() # Close the current socket to clean up resources
|
||||
sock = None # Reset sock to ensure reconnection attempt on next call
|
||||
|
||||
#message = {"variable": "car_stats", "value": {"car_lights_on": [3, 5, 7], "car_state": "on"}}
|
||||
#log_watch(sock, message)
|
||||
|
||||
29
shell/watcher.html
Normal file
29
shell/watcher.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>WebSocket Test</title>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Replace 'ws://localhost/ws' with your WebSocket server address
|
||||
var ws = new WebSocket('ws://localhost/ws');
|
||||
|
||||
ws.onopen = function() {
|
||||
console.log('WebSocket connection established');
|
||||
};
|
||||
|
||||
ws.onmessage = function(event) {
|
||||
console.log('Message received: ' + event.data);
|
||||
};
|
||||
|
||||
ws.onclose = function() {
|
||||
console.log('WebSocket connection closed');
|
||||
};
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>WebSocket Test Page</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,6 +1,8 @@
|
||||
const net = require('net');
|
||||
const fs = require('fs');
|
||||
const socketPath = '/tmp/node-server.sock';
|
||||
const socketPath = '/tmp/oscar_watcher.sock';
|
||||
|
||||
//// UNIXSOCKET SERVER ////
|
||||
|
||||
let progvars = {};
|
||||
|
||||
@@ -15,7 +17,7 @@ try {
|
||||
}
|
||||
|
||||
const unix_socket_server = net.createServer((connection) => {
|
||||
console.log('Client connected.');
|
||||
console.log('UnixSocket Client connected.');
|
||||
|
||||
let buffer = '';
|
||||
|
||||
@@ -31,12 +33,12 @@ const unix_socket_server = net.createServer((connection) => {
|
||||
});
|
||||
|
||||
connection.on('end', () => {
|
||||
console.log('Client disconnected.');
|
||||
console.log('UnixSocket Client disconnected.');
|
||||
});
|
||||
});
|
||||
|
||||
unix_socket_server.listen(socketPath, () => {
|
||||
console.log(`Server listening on ${socketPath}`);
|
||||
console.log(`UnixSocket Server listening on ${socketPath}`);
|
||||
});
|
||||
|
||||
function processMessage(message) {
|
||||
@@ -49,7 +51,7 @@ function processMessage(message) {
|
||||
const timestamp = new Date().toISOString();
|
||||
const logEntry = `log_time="${timestamp}";\n${diff}\n`;
|
||||
|
||||
fs.writeFile('variable_changes.log', logEntry, { flag: 'a' }, (err) => {
|
||||
fs.writeFile('/data/openpilot/logs/watcher.log', logEntry, { flag: 'a' }, (err) => {
|
||||
if (err) {
|
||||
console.error('Error writing to log file:', err);
|
||||
}
|
||||
@@ -103,6 +105,8 @@ function calculateDiff(oldValue, newValue) {
|
||||
return changes.join('\n');
|
||||
}
|
||||
|
||||
//// WEBSOCKET SERVER ////
|
||||
|
||||
const WebSocket = require('ws');
|
||||
const http = require('http');
|
||||
const url = require('url');
|
||||
@@ -156,5 +160,37 @@ function send_ws_message(message) {
|
||||
// Start the HTTP server
|
||||
const PORT = 3001; // Ensure this port is different from the UNIX socket server if running on the same machine
|
||||
websocket_server.listen(PORT, () => {
|
||||
console.log(`WebSocket server is running on port ${PORT}`);
|
||||
console.log(`WebSocket listening on port ${PORT}`);
|
||||
});
|
||||
|
||||
//// HTTP SERVER ////
|
||||
|
||||
const http = require('http');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const hostname = '0.0.0.0';
|
||||
const port = 1024;
|
||||
|
||||
const server = http.createServer((req, res) => {
|
||||
if(req.url === '/') {
|
||||
// Serve the HTML file
|
||||
fs.readFile(path.join(__dirname, 'index.html'), (err, data) => {
|
||||
if(err) {
|
||||
res.writeHead(500);
|
||||
res.end('Error loading index.html');
|
||||
return;
|
||||
}
|
||||
res.writeHead(200, {'Content-Type': 'text/html'});
|
||||
res.end(data);
|
||||
});
|
||||
} else {
|
||||
// Handle 404
|
||||
res.writeHead(404);
|
||||
res.end('Not found');
|
||||
}
|
||||
});
|
||||
|
||||
server.listen(port, hostname, () => {
|
||||
console.log(`Server running at http://${hostname}:${port}/`);
|
||||
});
|
||||
11
shell/watcher_run_loop.sh
Normal file
11
shell/watcher_run_loop.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
cd /data/openpilot/shell
|
||||
|
||||
while true
|
||||
do
|
||||
|
||||
nodejs watcher.js
|
||||
|
||||
echo crashed, waiting 30 seconds
|
||||
sleep 30
|
||||
|
||||
done
|
||||
Reference in New Issue
Block a user