remote-shack/Notizen.txt

126 lines
5.5 KiB
Text

Funktionsprinzip:
[ RASPBERRY PI (Server) ] [ CLIENTS (Fyne.io via Tailscale) ]
+-------------------+ +-----------------------+ +---------------------------------+
| Yaesu, Icom, etc. | <---> | rig-service (Go) | <========> | [ Client 1: Rig-Control Window ]
| SPID, Yaesu Rotor | <---> | rotor-service (Go) | gRPC / | (Operator: Full control + TX) |
| Relais-Boards | <---> | gpio-service (Go) | Protobuf +---------------------------------+
+-------------------+ +-----------------------+ +---------------------------------+
| Soundkarte / TRX | <---> | audio-service (Opus) | <========> | [ Client 2: Rotor Window ] |
+-------------------+ +-----------------------+ | (Listener: View only + RX) |
+---------------------------------+
mkdir -p remote-shack/{api,cmd/{server,client-rig,client-rotor,client-relais,test-rig},internal/{config,driver,audio}}
remote-shack/
├── api/ # Protobuf-Definitionen für gRPC (.proto)
├── cmd/
│ ├── server/ # Das Hauptprogramm für den Raspberry Pi
│ └── client-rig/ # Fyne-Fenster für Funkgerät
│ └── client-rotor/ # Fyne-Fenster für Rotor
│ └── client-relais/ # Fyne-Fenster für Relais
├── internal/
│ ├── config/ # Konfigurations-Parser (TOML/YAML)
│ ├── driver/ # Native Go-Treiber (CI-V, Kenwood, SPID)
│ └── audio/ # Opus/UDP Audio-Streaming-Logik
└── go.mod
# Zum Zeichnen der GUI wird fyne verwendet
go get fyne.io/fyne/v2
go mod tidy
# Für Cross-Compiling den Grafiktreiber für Windows installieren
sudo apt-get install mingw-w64
# Pakete für Kompilieren der Linux-GUI
sudo apt-get update && sudo apt-get install -y \
libx11-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
libgl1-mesa-dev
# Header für Alsa
sudo apt-get update && sudo apt-get install -y libasound2-dev
# Alle Bibliotheken automatisch installieren:
sudo apt-get update && sudo apt-get install -y libasound2-dev libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libgl1-mesa-dev pkg-config
sudo apt-get update && sudo apt-get install -y libxxf86vm-dev
"github.com/ebitengine/oto/v3"
"github.com/BurntSushi/toml"
# Neues Projekt:
go mod init remote-shack
#gRPC-Tool installieren
sudo apt install protobuf-compiler
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
#Go-Bin-Verzeichnis muss im PATH liegen
export PATH=$PATH:$(go env GOPATH)/bin
#Go-Code aus der Proto-Datei erzeugen
#protoc --go_out=. --go_opt=Mapi/shack.proto=remote-shack/api --go-grpc_out=. --go-grpc_opt=Mapi/shack.proto=remote-shack/api api/shack.proto
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative api/shack.proto
# 1. Pfad zur Systemkonfiguration hinzufügen
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
# 2. Konfiguration im aktuellen Terminal sofort aktivieren
source ~/.bashrc
# Zum Zeichnen der GUI wird fyne verwendet
go get fyne.io/fyne/v2
go mod tidy
weitermachen:
==============================================================================
PROJEKT-MERKER: REMOTE-SHACK START AM MORGEN
==============================================================================
AKTUELLER STATUS:
-----------------
* SDR-Rig-Client: Vollständig auf ein modernes SDR-Design umgestellt.
Die Frequenzanzeige ist massiv vergrößert (canvas.Text, Größe 36, Monospace)
und durch unverschiebbare Tausender-Punkte (014.250.000) in MHz-, kHz-
und Hz-Blöcke strukturiert. Die Bandtasten werden dynamisch geladen.
* Sat-Rotor-Client: Geometrisch entkoppelt im 300x300-Format. Elevation
wurde für Erdverbindungen/Troposcatter auf -20° bis 90° erweitert. Der
Kreismittelpunkt wurde auf Y=200 angehoben, um Platz nach unten zu
schaffen. Ein neuer -15°-Bogen-Button ist integriert. Die originale
tokenbasierte gRPC-Schreib-Validierung via TargetPosition ist lückenlos aktiv.
* Kompilierung: Das build.sh-Skript ist repariert und berücksichtigt
CGO_ENABLED=1. Alle Komponenten bauen fehlerfrei direkt in die
Zielordner (./app/server/ und ./app/clients/).
* Architektur-Entscheidung: Wechsel auf ein flexibles Connector-Modell
(Abstraktionsschicht analog zu Hamlib). Der gRPC-Server spricht nur noch
mit generischen Interfaces. Die Hardware (ProSistel, SPID etc.) wird rein
über die TOML-Konfigurationsdateien eingekoppelt, ohne den Core-Code zu verändern.
NÄCHSTE SCHRITTE:
-----------------
1. Implementierung des konkreten ProSistel-Seriell-Protokolls im neuen
Connector unter internal/driver/.
2. Vorbereitung des SPID-Rotor-Connectors für das Gerät des Bekannten.
3. Einbindung des ADS1115-I2C-Treibers im Server für die reine Shack-
Betriebsspannungs-Telemetrie (Entkoppelt von der Rotor-Grad-Messung).
BEREITZUSTELLENDE DATEIEN FÜR DEN START:
----------------------------------------
Bitte lade zu Beginn des neuen Chats diese Dateien hoch, um die Code-Basis
direkt abzugleichen:
1. internal/driver/interfaces.go (Das aktuelle Interface-Gerüst)
2. server-config.toml & client-config.toml (Für die neuen Hardware-Felder)
3. Technische Infos zum ProSistel-Protokoll (Befehlssatz für Az/El über Seriell)
==============================================================================