GitHub Project

SSHVoicom

Android app για έλεγχο συστημάτων μέσω φωνητικών εντολών και SSH

SSHVoicom Screenshot

📖 Τεκμηρίωση (README)

SSHVoicom v1.52

Android εφαρμογή για έλεγχο απομακρυσμένων συστημάτων μέσω φωνητικών εντολών και SSH.

📋 Περιγραφή

Το SSHVoicom είναι μια εφαρμογή Android που επιτρέπει τον απομακρυσμένο έλεγχο συστημάτων μέσω φωνητικών εντολών. Η εφαρμογή μετατρέπει φωνητικές εντολές (Ελληνικά) σε εντολές που εκτελούνται μέσω SSH στους επιλεγμένους servers και παρέχει φωνητική ανατροφοδότηση (TTS) για επιβεβαίωση ή αναφορά αποτελεσμάτων.

Η κύρια ιδέα του project είναι να προσφέρει έναν γρήγορο και φιλικό τρόπο ελέγχου μηχανημάτων από κινητές συσκευές Android, σε περιβάλλοντα όπου ο χρήστης χρειάζεται άμεση εκτέλεση εντολών χωρίς φυσική πρόσβαση στον υπολογιστή.

🖥️ Υποστηριζόμενα Συστήματα

  • Windows – μέσω OpenSSH ή άλλο SSH server, με δυνατότητα εκτέλεσης GUI εφαρμογών μέσω PsExec
  • Linux – οποιαδήποτε διανομή με SSH server (Ubuntu, Debian, CentOS, Arch, κλπ.)
  • macOS – μέσω του ενσωματωμένου SSH server
  • Raspberry Pi – ιδανικό για IoT και home automation
  • Άλλα Unix-like συστήματα – FreeBSD, OpenBSD, κλπ.

✨ Χαρακτηριστικά

  • 🎤 Φωνητική Αναγνώριση: Εκτέλεση εντολών με φωνητικές εντολές (Ελληνικά).
  • 🔊 Φωνητική Ανατροφοδότηση: Text-to-Speech (TTS) για επιβεβαίωση εντολών και αποτελεσμάτων.
  • 🔄 Αυτόματη Εκκίνηση Ακρόασης: Η αναγνώριση φωνής ξεκινά αυτόματα μετά την εκκίνηση της εφαρμογής.
  • 🖥️ Πολλαπλοί SSH Servers: Υποστήριξη πολλαπλών SSH συνδέσεων και εκτέλεση εντολών σε πολλούς servers ταυτόχρονα.
  • 💾 Διαχείριση Βάσης Δεδομένων: Import/Export ρυθμίσεων και εντολών σε JSON.
  • 📱 Material Design UI: Σύγχρονη διεπαφή με KivyMD.
  • 🔐 Ασφαλής Σύνδεση: Υποστήριξη password και key authentication για SSH.

🚀 Εγκατάσταση

Προαπαιτούμενα

Για την εφαρμογή Android:

  • Android συσκευή με API 21+ (Android 5.0 Lollipop ή νεότερο)
  • Δικαιώματα για μικρόφωνο και αποθηκευτικό χώρο

Για τα απομακρυσμένα συστήματα:

  • SSH Server (ενσωματωμένο σε Linux/macOS, OpenSSH για Windows)
  • Ενεργοποιημένες υπηρεσίες SSH
  • Έγκυρα credentials (username/password ή SSH key)

Εγκατάσταση APK

  1. Κατεβάστε το αρχείο APK από τα Releases
  2. Ενεργοποιήστε την εγκατάσταση από άγνωστες πηγές στη συσκευή σας
  3. Εγκαταστήστε το APK
  4. Δώστε τα απαραίτητα δικαιώματα (μικρόφωνο, αποθηκευτικός χώρος)

Build από τον κώδικα

# Κλωνοποίηση του repository
git clone https://github.com/spyalekos/SSHVoicom.git
cd SSHVoicom

# Εγκατάσταση dependencies (παράδειγμα)
pip install -r requirements.txt

# Build APK με buildozer
buildozer android debug

📖 Χρήση

Πρώτη Εκκίνηση

  1. Ρύθμιση SSH Σύνδεσης:
  2. Πατήστε το κουμπί ρυθμίσεων (⚙️)
  3. Προσθέστε μια νέα SSH σύνδεση με: Alias, IP/hostname, Port (22), Username, Password ή SSH key

  4. Δημιουργία Εντολών:

  5. Από το κεντρικό μενού, επιλέξτε τη λίστα εντολών
  6. Προσθέστε νέες εντολές με: Φωνητική εντολή, Εκτελέσιμη εντολή, Επιλογή SSH server(s)

Εκτέλεση Φωνητικών Εντολών

  1. Η αναγνώριση φωνής ξεκινά αυτόματα κατά την εκκίνηση της εφαρμογής
  2. Πείτε την φωνητική εντολή (ή πατήστε το κουμπί μικροφώνου 🎤)
  3. Η εφαρμογή θα αναγνωρίσει την εντολή και θα την εκτελέσει στους επιλεγμένους servers, και θα σας ενημερώσει φωνητικά για το αποτέλεσμα

Παραδείγματα Εντολών

Windows

Φωνητική Εντολή Εκτελέσιμη Εντολή Περιγραφή
“άνοιξε σημειωματάριο” notepad.exe Άνοιγμα Notepad
“άνοιξε αριθμομηχανή” calc.exe Άνοιγμα Αριθμομηχανής
“εκτέλεση script” C:\\Scripts\\backup.bat Εκτέλεση batch script

Linux/macOS

Φωνητική Εντολή Εκτελέσιμη Εντολή Περιγραφή
“κείμενο” gedit ή nano Άνοιγμα text editor
“ενημέρωση” sudo apt update Ενημέρωση πακέτων
“επανεκκίνηση” sudo reboot Επανεκκίνηση συστήματος
“φώτα σαλόνι” /home/pi/lights.sh Home automation script

⚙️ Ρυθμίσεις

Διαχείριση SSH Συνδέσεων

  • Προσθήκη: Κουμπί “+” για νέα σύνδεση
  • Επεξεργασία: Πατήστε πάνω σε μια σύνδεση για αλλαγές
  • Διαγραφή: Swipe ή κουμπί διαγραφής
  • Δοκιμή: Δοκιμάστε τη σύνδεση πριν την αποθήκευση

Πρότυπο Εντολής (Command Template)

Κάθε SSH σύνδεση έχει ένα πρότυπο εντολής που καθορίζει πώς θα εκτελεστούν οι εντολές. Χρησιμοποιήστε τα εξής placeholders:

Placeholder Περιγραφή
{cmd} Η εντολή που θα εκτελεστεί
{user} Το username της SSH σύνδεσης
{pass} Το password της SSH σύνδεσης

Παραδείγματα Command Templates:

Λειτουργικό Template Περιγραφή
Linux (απευθείας) {cmd} Απλή εκτέλεση
Linux (background) nohup {cmd} & Εκτέλεση στο background
Linux (GUI apps) DISPLAY=:0 nohup {cmd} > /dev/null 2>&1 & Γραφικές εφαρμογές μέσω SSH
Linux (screen) screen -dmS session {cmd} Εκτέλεση σε screen session
Windows (PsExec) psexec -i 1 -d -u {user} -p {pass} {cmd} GUI εφαρμογές με credentials
Windows (χωρίς creds) psexec -i 1 -d {cmd} GUI εφαρμογές χωρίς credentials
macOS caffeinate -i {cmd} Αποτροπή sleep κατά την εκτέλεση
Προσαρμοσμένο myapp user={user} pass={pass} run={cmd} Οποιοδήποτε format θέλετε

Σημείωση: Αν αφήσετε κενό το πρότυπο ή βάλετε απλά {cmd}, η εντολή θα εκτελεστεί απευθείας.

Διαχείριση Εντολών

  • Προσθήκη: Δημιουργία νέων φωνητικών εντολών
  • Επεξεργασία: Τροποποίηση υπαρχουσών εντολών
  • Διαγραφή: Αφαίρεση εντολών
  • Πολλαπλοί Servers: Επιλογή σε ποιους servers θα εκτελεστεί η εντολή

Import/Export Δεδομένων

Export:

  1. Μενού → Ρυθμίσεις → Export
  2. Επιλέξτε τοποθεσία αποθήκευσης
  3. Αποθήκευση JSON αρχείου με όλες τις ρυθμίσεις

Import:

  1. Μενού → Ρυθμίσεις → Import
  2. Επιλέξτε αρχείο JSON
  3. Επιλέξτε λειτουργία: Αντικατάσταση ή Συγχώνευση

🛠️ Τεχνικές Λεπτομέρειες

Τεχνολογίες

  • Framework: Kivy + KivyMD
  • Γλώσσα: Python 3
  • SSH: Paramiko
  • Database: SQLite3
  • Android APIs: SpeechRecognizer, TextToSpeech, ContentResolver

Δομή Βάσης Δεδομένων

Πίνακας commands:
id: Μοναδικό αναγνωριστικό
name: Φωνητική εντολή
executable: Εκτελέσιμη εντολή

Πίνακας ssh_connections:
id: Μοναδικό αναγνωριστικό
alias: Όνομα σύνδεσης
host: IP/hostname
port: SSH port
username: Όνομα χρήστη
password: Κωδικός πρόσβασης
command_template: Πρότυπο εντολής με placeholders {cmd}, {user}, {pass}

Πίνακας command_ssh_mappings:
command_id: Αναφορά σε εντολή
ssh_alias: Αναφορά σε SSH σύνδεση

Δικαιώματα Android

RECORD_AUDIO              - Για φωνητική αναγνώριση
INTERNET                  - Για SSH συνδέσεις
READ_EXTERNAL_STORAGE     - Για import αρχείων
WRITE_EXTERNAL_STORAGE    - Για export αρχείων
MANAGE_EXTERNAL_STORAGE   - Για πλήρη πρόσβαση (Android 11+)

Σημείωση για Android 11+: Λόγω αλλαγών στο scoped storage, η εφαρμογή θα σας ζητήσει να δώσετε “All files access” από τις ρυθμίσεις για να μπορείτε να κάνετε export/import.

🔧 Ανάπτυξη & Build

Δομή Project

androidis/
├── main.py
├── database.py
├── settings_screen.py
├── about_screen.py
├── buildozer.spec
├── commands.db
└── bin/

Build Commands

# Debug build
buildozer android debug

# Clean build
buildozer android clean
buildozer android debug

# Deploy to device
buildozer android debug deploy run

# View logs
buildozer android logcat

Απαιτήσεις (requirements)

python3
kivy
kivymd
pillow
pyjnius
android
paramiko
cryptography
cffi

🐛 Αντιμετώπιση Προβλημάτων

Η εφαρμογή δεν αναγνωρίζει φωνή

  • Βεβαιωθείτε ότι έχετε δώσει δικαιώματα μικροφώνου
  • Έλεγχος ότι η γλώσσα συσκευής/φωνητικής αναγνώρισης είναι Ελληνικά
  • Δοκιμάστε να μιλήσετε καθαρά και δυνατά

SSH σύνδεση αποτυγχάνει

  • Έλεγχος IP/hostname και port
  • Βεβαιωθείτε ότι ο SSH server είναι ενεργός
  • Έλεγχος username/password ή keys
  • Έλεγχος firewall ρυθμίσεων

Windows GUI εφαρμογές δεν ανοίγουν

  • Βεβαιωθείτε ότι το PsExec είναι εγκατεστημένο στον Windows server
  • Ελέγξτε τις ρυθμίσεις εκτέλεσης (session ID, credentials)

Linux GUI εφαρμογές δεν εμφανίζονται

  • Χρησιμοποιήστε template: DISPLAY=:0 nohup {cmd} > /dev/null 2>&1 &
  • Βεβαιωθείτε ότι το X11 τρέχει (δεν λειτουργεί με Wayland)

📝 Άδεια

Αυτό το project είναι ανοιχτού κώδικα. Χρησιμοποιήστε το σύμφωνα με τις ανάγκες σας.

👤 Συγγραφέας

SpyAlekos

🔄 Εκδόσεις

v1.52 (27 Ιανουαρίου 2026)

  • 🛡️ JNI Crash Fixes: Διόρθωση σποραδικών crashes με defensive programming
  • 🔒 Null Checks: Προστασία σε όλα τα Java callbacks (RecognitionListener, TTSListener, Runnables)
  • 🚀 Garbage Collection: Strong references σε Intent/Listener objects για αποφυγή premature cleanup
  • 📝 Code Quality: Αφαίρεση duplicate exception handlers

v1.50

  • 🎨 UI Polish: Εξίσωση μεγέθους κουμπιών μικροφώνου και αυτόματης ακρόασης
  • 📚 Documentation: Προσθήκη οδηγιών για Linux GUI apps (DISPLAY=:0)
  • ↩️ Stability: Αφαίρεση timeout από SSH exec (v1.47), διόρθωση server list visibility (v1.48)

v1.48

  • 👁️ Server List Fix: Διόρθωση εμφάνισης λίστας SSH Servers στην επεξεργασία εντολών

v1.47

  • ↩️ Timeout Revert: Αφαίρεση του timeout από SSH execution

v1.46

  • Timeout Handling: Βελτιωμένος χειρισμός timeout σφαλμάτων

v1.45

  • 🐛 Android Fix: Βελτιωμένη αναφορά σφαλμάτων
  • 🔧 Command Logic: Αφαίρεση αυτόματης προσθήκης εισαγωγικών

v1.0 (SSHVoicom)

  • 🔄 Μετονομασία: Αλλαγή ονόματος από VoiceSSH σε SSHVoicom
  • 🚀 Initial Release: Πρώτη έκδοση με το νέο όνομα

v1.11

  • 🎛️ Νέο Command Template: Αντικατάσταση των δύο πεδίων (psexec_command, psexec_params) με ένα πλήρως παραμετροποιήσιμο πεδίο
  • 📝 Placeholders: {cmd} για την εντολή, {user} και {pass} για credentials με δικά σας ορίσματα
  • ⌨️ Διόρθωση πληκτρολογίου: Το εικονικό πληκτρολόγιο δεν καλύπτει πλέον τα πεδία στο κάτω μέρος της οθόνης
  • 📚 Παραδείγματα: Ενσωματωμένα παραδείγματα για Linux, Windows, macOS

v1.10

  • 📝 Αλλαγή ετικέτας “Ρυθμίσεις PsExec” σε “Ρυθμίσεις εκτέλεσης”
  • 🔧 Credentials ως παράμετροι με placeholders
  • 📖 Ενημερωμένο README για Linux, macOS, Raspberry Pi

v1.09

  • 🎤 Αυτόματη εκκίνηση ακρόασης φωνητικών εντολών κατά την εκκίνηση
  • 🔧 Διόρθωση UI overlap στις οθόνες επεξεργασίας

v1.08

  • Υποστήριξη πολλαπλών SSH servers ανά εντολή
  • Βελτιωμένη φωνητική ανατροφοδότηση
  • Διόρθωση import αρχείων από Android file manager
  • Βελτιωμένος χειρισμός back button

v1.07

  • Διόρθωση ContentResolver για import
  • Βελτιωμένη διαχείριση back button
  • Προσθήκη confirmation dialog για έξοδο

v1.00

  • Αρχική έκδοση με φωνητικές εντολές
  • Βασική υποστήριξη SSH
  • Import/Export λειτουργικότητα

📂 Δομή Κώδικα & Αρχείων

📄 .gitignore
📄 README.md
📄 about_screen.py
📄 buildozer.spec
📄 commands.db
📄 create_release.sh
📄 database.py
📄 main.py
📄 settings_screen.py

🚀 Εκδόσεις & Releases

🏷️ v1.53
Published: 28 Jan 2026, 17:15

SSHVoicom v1.53 – Διόρθωση Εικονικού Πληκτρολογίου

⌨️ Κύριες Αλλαγές

Διόρθωση Εικονικού Πληκτρολογίου

Όταν το εικονικό πληκτρολόγιο εμφανιζόταν, καλύπτε τα πεδία εισαγωγής στη φόρμα επεξεργασίας συνδέσεων.

Βελτιώσεις UI

  • 📱 Better softinput mode: Αλλαγή από 'pan' σε 'below_target'
  • Τα πεδία εισαγωγής παραμένουν πάντα ορατά
  • Αυτόματο scroll στο focused field
  • Καλύτερη υποστήριξη για ScrollViews

  • ✨ Smooth Animations: Προσθήκη keyboard animation args

  • Ομαλότερες μεταβάσεις κατά την εμφάνιση/απόκρυψη
  • Βελτιωμένη user experience

📝 Προηγούμενες Εκδόσεις

v1.52 – JNI Crash Fixes

  • 🛡️ Διόρθωση σποραδικών crashes με defensive programming
  • 🔒 Null checks σε όλα τα Java callbacks

📥 Εγκατάσταση

  1. Κατεβάστε το sshvoicom-1.53-debug.apk
  2. Ενεργοποιήστε “Unknown Sources” στη συσκευή σας
  3. Εγκαταστήστε το APK
  4. Δώστε τα απαραίτητα δικαιώματα

🐛 Αναφορά Προβλημάτων

Αν αντιμετωπίσετε προβλήματα, παρακαλώ:
– Ανοίξτε ένα Issue
– Περιγράψτε τα βήματα αναπαραγωγής

📚 Τεκμηρίωση

Για οδηγίες χρήσης, δείτε το README


Full Changelog: https://github.com/spyalekos/SSHVoicom/blob/main/README.md#-εκδόσεις

🏷️ v1.52
Published: 27 Jan 2026, 10:19

SSHVoicom v1.52 – Διόρθωση Σποραδικών Crashes

🛡️ Κύριες Αλλαγές

JNI Crash Fixes

Διόρθωση σποραδικών crashes που εμφανίζονταν με stack trace:

#00 pc 0000000000000001 <unknown>
#01 pc 0000000000053a38 .../jnius.so

Βελτιώσεις Σταθερότητας

  • 🔒 Null Checks: Προστασία σε όλα τα Java callbacks
  • RecognitionListener (όλες οι μεθόδοι)
  • TTSListener
  • CleanupRunnable, StopRunnable, SpeechRunnable

  • 🚀 Garbage Collection Protection: Strong references σε:

  • Intent objects
  • RecognitionListener instances
  • SpeechRunnable instances

  • 📝 Code Quality:

  • Αφαίρεση duplicate exception handlers
  • Defensive programming σε όλα τα JNI layers
  • Βελτιωμένο error logging

📥 Εγκατάσταση

  1. Κατεβάστε το sshvoicom-1.52-debug.apk
  2. Ενεργοποιήστε “Unknown Sources” στη συσκευή σας
  3. Εγκαταστήστε το APK
  4. Δώστε τα απαραίτητα δικαιώματα

🐛 Αναφορά Προβλημάτων

Αν αντιμετωπίσετε προβλήματα, παρακαλώ:
– Ανοίξτε ένα Issue
– Συμπεριλάβετε το stack trace (αν υπάρχει)
– Περιγράψτε τα βήματα αναπαραγωγής

📚 Τεκμηρίωση

Για οδηγίες χρήσης, δείτε το README


Full Changelog: https://github.com/spyalekos/SSHVoicom/blob/main/README.md#-εκδόσεις

🏷️ v1.51
Published: 26 Jan 2026, 22:20

Changes in v1.51

🐛 Bug Fixes

  • JNI Crash Fix: Refactored all JNI callback classes to module level with comprehensive exception handling to prevent native crashes on Android
  • All Python-Java bridge callbacks now wrapped in try-except blocks to catch and log exceptions instead of crashing

Technical Details

  • Moved RecognitionListener, TTSListener, SpeechRunnable, CleanupRunnable, TTSInitRunnable, and TTSSpeakRunnable from dynamic method-level definitions to module-level classes
  • Added traceback.print_exc() to all JNI callback methods for better debugging in logcat
  • This should resolve the systematic/random crashes reported in version 1.50

Restore Point: If this version has issues, you can revert to v1.50 which is the stable release before this fix.

Για να επιστρέψετε στην έκδοση 1.50:

git revert HEAD
🏷️ v1.50
Published: 25 Jan 2026, 20:27

🎨 v1.50 – Polish & Stability

Χαρακτηριστικά:
– 🎤 Φωνητικός έλεγχος απομακρυσμένων συστημάτων μέσω SSH
– 🔊 Text-to-Speech ανατροφοδότηση
– 🖥️ Υποστήριξη Windows, Linux, macOS, Raspberry Pi
– 📱 Material Design UI με KivyMD

Νέο στην έκδοση 1.50:
– 🎨 UI Polish: Εξίσωση μεγέθους κουμπιών
– 📚 Documentation: Οδηγίες για Linux GUI apps (DISPLAY=:0)
– 👁️ Server List: Διόρθωση εμφάνισης λίστας SSH servers
– ↩️ Stability: Αφαίρεση timeout από SSH execution

📦 Αρχεία

  • sshvoicom-1.50-arm64-v8a_armeabi-v7a-debug.apk
  • Υποστηρίζει: ARM64-v8a & ARMeabi-v7a
  • Min Android API: 21 (Android 5.0+)