SSHVoicom
Android app για έλεγχο συστημάτων μέσω φωνητικών εντολών και SSH
📖 Τεκμηρίωση (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
- Κατεβάστε το αρχείο APK από τα Releases
- Ενεργοποιήστε την εγκατάσταση από άγνωστες πηγές στη συσκευή σας
- Εγκαταστήστε το APK
- Δώστε τα απαραίτητα δικαιώματα (μικρόφωνο, αποθηκευτικός χώρος)
Build από τον κώδικα
# Κλωνοποίηση του repository
git clone https://github.com/spyalekos/SSHVoicom.git
cd SSHVoicom
# Εγκατάσταση dependencies (παράδειγμα)
pip install -r requirements.txt
# Build APK με buildozer
buildozer android debug
📖 Χρήση
Πρώτη Εκκίνηση
- Ρύθμιση SSH Σύνδεσης:
- Πατήστε το κουμπί ρυθμίσεων (⚙️)
-
Προσθέστε μια νέα SSH σύνδεση με: Alias, IP/hostname, Port (22), Username, Password ή SSH key
-
Δημιουργία Εντολών:
- Από το κεντρικό μενού, επιλέξτε τη λίστα εντολών
- Προσθέστε νέες εντολές με: Φωνητική εντολή, Εκτελέσιμη εντολή, Επιλογή SSH server(s)
Εκτέλεση Φωνητικών Εντολών
- Η αναγνώριση φωνής ξεκινά αυτόματα κατά την εκκίνηση της εφαρμογής
- Πείτε την φωνητική εντολή (ή πατήστε το κουμπί μικροφώνου 🎤)
- Η εφαρμογή θα αναγνωρίσει την εντολή και θα την εκτελέσει στους επιλεγμένους 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:
- Μενού → Ρυθμίσεις → Export
- Επιλέξτε τοποθεσία αποθήκευσης
- Αποθήκευση JSON αρχείου με όλες τις ρυθμίσεις
Import:
- Μενού → Ρυθμίσεις → Import
- Επιλέξτε αρχείο JSON
- Επιλέξτε λειτουργία: Αντικατάσταση ή Συγχώνευση
🛠️ Τεχνικές Λεπτομέρειες
Τεχνολογίες
- 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
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
📥 Εγκατάσταση
- Κατεβάστε το
sshvoicom-1.53-debug.apk - Ενεργοποιήστε “Unknown Sources” στη συσκευή σας
- Εγκαταστήστε το APK
- Δώστε τα απαραίτητα δικαιώματα
🐛 Αναφορά Προβλημάτων
Αν αντιμετωπίσετε προβλήματα, παρακαλώ:
– Ανοίξτε ένα Issue
– Περιγράψτε τα βήματα αναπαραγωγής
📚 Τεκμηρίωση
Για οδηγίες χρήσης, δείτε το README
Full Changelog: https://github.com/spyalekos/SSHVoicom/blob/main/README.md#-εκδόσεις
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 σε:
IntentobjectsRecognitionListenerinstances-
SpeechRunnableinstances -
📝 Code Quality:
- Αφαίρεση duplicate exception handlers
- Defensive programming σε όλα τα JNI layers
- Βελτιωμένο error logging
📥 Εγκατάσταση
- Κατεβάστε το
sshvoicom-1.52-debug.apk - Ενεργοποιήστε “Unknown Sources” στη συσκευή σας
- Εγκαταστήστε το APK
- Δώστε τα απαραίτητα δικαιώματα
🐛 Αναφορά Προβλημάτων
Αν αντιμετωπίσετε προβλήματα, παρακαλώ:
– Ανοίξτε ένα Issue
– Συμπεριλάβετε το stack trace (αν υπάρχει)
– Περιγράψτε τα βήματα αναπαραγωγής
📚 Τεκμηρίωση
Για οδηγίες χρήσης, δείτε το README
Full Changelog: https://github.com/spyalekos/SSHVoicom/blob/main/README.md#-εκδόσεις
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, andTTSSpeakRunnablefrom 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
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+)