starlink-node
Version:
Node.js package for communication and control of Starlink terminals locally
125 lines (86 loc) • 3.04 kB
Markdown
A Node.js library for communicating with and controlling Starlink terminals locally via gRPC.
- 🛰️ Get terminal status and statistics
- 📊 Monitor connection quality and performance metrics
- 🔄 Control terminal operations (reboot, stow/unstow)
- 📈 Real-time telemetry data
- 🌍 Location and obstruction information
- ⚡ High-performance gRPC communication
## Installation
```bash
npm install starlink-node
```
## Quick Start
```typescript
import { StarlinkClient } from 'starlink-node';
const client = new StarlinkClient('192.168.100.1'); // Default Starlink terminal IP
async function main() {
try {
// Get terminal status
const status = await client.getStatus();
console.log('Terminal Status:', status);
// Get statistics
const stats = await client.getStats();
console.log('Connection Stats:', stats);
// Get location info
const location = await client.getLocation();
console.log('Terminal Location:', location);
} catch (error) {
console.error('Error:', error);
} finally {
await client.disconnect();
}
}
main();
```
- `new StarlinkClient(host?: string, port?: number)`
- `host` - Starlink terminal IP address (default: '192.168.100.1')
- `port` - gRPC port (default: 9200)
#### Methods
##### `getStatus(): Promise<TerminalStatus>`
Get the current terminal status including uptime, hardware version, and operational state.
##### `getStats(): Promise<ConnectionStats>`
Get connection statistics including ping, download/upload speeds, and packet loss.
##### `getLocation(): Promise<LocationInfo>`
Get terminal location and obstruction information.
##### `getHistory(): Promise<HistoryData>`
Get historical performance data.
##### `reboot(): Promise<void>`
Reboot the terminal.
##### `stow(): Promise<void>`
Stow the terminal (point straight up).
##### `unstow(): Promise<void>`
Unstow the terminal (resume normal operation).
##### `disconnect(): Promise<void>`
Close the gRPC connection.
## Network Requirements
- Your device must be connected to the Starlink network
- The Starlink terminal must be accessible at `192.168.100.1` (default)
- gRPC port 9200 must be accessible
## Error Handling
The library throws descriptive errors for common issues:
```typescript
try {
const status = await client.getStatus();
} catch (error) {
if (error.code === 'UNAVAILABLE') {
console.error('Cannot connect to Starlink terminal');
} else if (error.code === 'DEADLINE_EXCEEDED') {
console.error('Request timed out');
} else {
console.error('Unexpected error:', error.message);
}
}
```
See the `examples/` directory for more detailed usage examples.
Contributions are welcome! Please read our contributing guidelines and submit pull requests.
MIT License - see LICENSE file for details.
This is an unofficial library. Use at your own risk. Not affiliated with SpaceX or Starlink.