Transfer files from a Raspberry Pi to your android phone over WiFi with Python
Today I'll show a bit of python that could help you remotely manage your Android device. The goal here is to setup an SSH connection between a Raspberry Pi and an Android device in order to transfer files from your local environment (a NAS for example) to your device.
In my case, I've setup a script that will pick a random music on my phone and delete it, then replace it with a music randomly picked up from my music library. The purpose is to always have new music automatically on my phone without doing anything.
We will see here how to connect to the phone and get/delete/put files on the device using a Python script.
That is way more easy than you think it is ! Download and install QuickSSHd on your device. This simple app will setup an SSH server on your phone.
After the app is installed, be sure to enable/disable these settings:
Now once the app is started and the server is running, take note of the connection information (IP, port, username, password).
With your favourite SSH client, you can now try to access your device and browse through your files.
First of all be sure to have Python installed, alongside with the paramiko library. As simple as saying "FooBar" !
1. Fetch latest packages sudo apt-get update
2. Install Python sudo apt-get install python
3. Download pip installer wget https://bootstrap.pypa.io/get-pip.py
4. Execute pip installer sudo python get-pip.py
5. Install paramiko library sudo pip install paramiko
Create a new python file with whatever name you prefer, and put these lines into it:
import paramiko, os
host = "DEVICE_LOCAL_IP"
port = 22
username = "root"
password = "password"
# Connect to Android Device
print 'Start Connexion...'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port=port, username=username, password=password)
sftp = ssh.open_sftp()
print 'Connected.'
# Here you will add all scripts you need to run !
# ...
# ...
# ...
# ...
# End Script
sftp.close()
ssh.close()
Be sure to set your own connection information (host, port, username, password) and then try to execute the script python script.py
Now that you are succesfully connected from your Pi to your Android, let's see what we can do!
# List the distant files
print 'Listing all mp3 from distant device Music folder...'
distantFiles = list()
filePath = '/storage/emulated/0/Music'
filePattern = '"*.mp3"'
rawcommand = 'find {path} -name {pattern}'
command = rawcommand.format(path=filePath, pattern=filePattern)
stdin, stdout, stderr = ssh.exec_command(command)
filelist = stdout.read().splitlines()
for afile in filelist:
(head, filename) = os.path.split(afile)
distantFiles.append(filename)
print distantFiles
# Deleting Distant File
sftp.remove('/storage/emulated/0/Music/Avicii - Wake Me Up.mp3')
print 'The file has been deleted'
# Transfering a file to Distant Device
sftp.put('/home/pi/mount/NAS/Music/Avicii - Wake Me Up.mp3', '/storage/emulated/0/Music/Avicii - Wake Me Up.mp3') # You need to re-type the name of the file in the destination
print 'The file has been transfered to your device'
# Transfering a file to Distant Device
sftp.get('/storage/emulated/0/Music/Avicii - Wake Me Up.mp3', '/home/pi/mount/NAS/Music/Avicii - Wake Me Up.mp3') # You need to re-type the name of the file in the destination
print 'The file has been downloaded'
Now that you are familiar with paramiko and these simple method, you are able to build whatever you need ;)
I consider myself as an IT Business Artisan. Or Consultant CTO. I'm a self-taught Web Developper, coach and teacher. My main work is helping and guiding digital startups.
more about meBTC
18SY81ejLGFuJ9KMWQu5zPrDGuR5rDiauM
ETH
0x519e0eaa9bc83018bb306880548b79fc0794cd08
XMR
895bSneY4eoZjsr2hN2CAALkUrMExHEV5Pbg8TJb6ejnMLN7js1gLAXQySqbSbfzjWHQpQhQpvFtojbkdZQZmM9qCFz7BXU
2024 © My Dynamic Production SRL All rights Reserved.