Raspberry-PI system smart control through android apps - raspberry-pi

How can smartly/remotely control a Raspberry-PI system through android apps. I have found an android app named "Raspberry Control" (source). I have followed all the steps as given in the above URL.
I have installed the android app in my phone (samsung galaxy note, recent release in 2014) followed tried to make a connection of android app with my RPI system (I have followed the steps mentioned in this Youtube video). But as shown in video, when the app started from phone, it needs a SSH connection (showed at 0.25 in the video). Unfortunately, I have faced an error like "check installation on RPi".
Thanks in advance for your precious time. Do I need to install any software on raspberry pi or am I missing any steps?

Secure Shell (SSH) is a network protocol that allows data to be
exchanged over a secure channel between two computers. Encryption
provides confidentiality and integrity of data. SSH uses public-key
cryptography to authenticate the remote computer and allow the remote
computer to authenticate the user, if necessary. SSH is typically used
to log into a remote machine and execute commands, but it also
supports tunneling, forwarding arbitrary TCP ports and X11
connections; file transfer can be accomplished using the associated
SFTP or SCP protocols. An SSH server, by default, listens on the
standard TCP port 22. An SSH client program is typically used for
establishing connections to an sshd daemon accepting remote
connections. Both are commonly present on most modern operating
systems, including Mac OS X, GNU/Linux, Solaris and OpenVMS.
Proprietary, freeware and open source versions of various levels of
complexity and completeness exist.
-Wiki
You found a complete guide/dossier in this link. The install instruction can change depending on the system.
You can control rpi trought ssh simply from windows, linux, android, iOs using a ssh telnet/client. Your app simply after press a button send to rpi the correct ssh comand.
If you have debian(or raspbian) this guide is for you:https://wiki.debian.org/en/SSH.
So, you must enable the ssh service on your rpi. Username and password are user/pass of your rpi account.

Related

How to send parameters to daemon from client to server?

I am trying to create a kiosk client that stores its configuration on the server. Client is based on Raspberry Pi OS Lite (it runs on RevPi). Server is an Debian system. What I had in mind is following process:
boot kiosk (first boot with customized Raspberry Pi OS Lite)
kiosk will ask for server IP (maunual input)
kiosk will create ssh key at this moment
kiosk will ask server at given IP for registration (passing its MAC and generated key?)
? Server will receive request from kiosk with MAC and generated key.
server will create config file for that MAC address (copy from template) and do some more adminitrative tasks.
kiosk will reboot
after boot kiosk will check if his local config file is same as version on the server
if not: kiosk will download it AND reboot.
if yes: it will precess it and run... for ever till end of electricity.
I am done with cleaning up kiosk, I have installed what I need, all is configured as I wanted.
Now I am looking for an elegant solution to my only problem, atm:
How to send kiosks MAC address to server without any login ceremony. I thought of using a daemon on server side that listens at port for and messages with MAC address and ssh-keys but it have no idea how to
I used info from how to pass arguments to Linux daemon/service and my daemon is based on http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html
Ok, after looking around I found spring-server. This is much more then I anticipated for! But all additional functionality offers more application possibilities! Thank You Bartobri.
With implementation of this answer I am good to go.

Google Smart Home integration with my IoT device (clarification needed)

I am looking for some clarification to how Google Smart Home works.
I am looking to integrate my current end device which control lights with Google Smart Home.
My end device is running a very small microcontroller utilizing an RTOS (Linux is not available)
Here is how I see it (Please correct or comment)
To my understanding this requires me to host my own cloud service
which will talk to my current end device?
My cloud service will then talk to Google cloud service.
My cloud service defines the protocol to talk to multiple end devices
Google Smart Home define the protocol to talk to my cloud service
Questions
Is there any method of doing this without having my own cloud Service?
That is a pretty basic summary of things - yes.
The crucial point there is that issuing a command to the Google Home does not have it send out a message on your local network. Google issues any commands from their network - not from your device.
This might seem like a minor detail, but it doesn't need to be a "cloud service" that you control that Google talks to. It does need to be a publicly accessible HTTPS endpoint. This could be a cloud service (and it would be in most cases), a public non-cloud server, or even just a public URL that has a tunnel to your private network (such as with ngrok).
The last is really how you'd get around having your own cloud service - you can setup the control on a local machine, and have a tunnel using ngrok.
I think a specific example may be beneficial: here's how to connect Google Home to your devices using an intermediary service like IFTTT:
Create a recipe (applet) on IFTTT to connect Google Assistant to an ngrok tunnel using the Webhook service. This permits you to define a simple keyword phrase that the Google Home will recognize (like "Hey Google turn on my device"). The applet will then call a webhook - e.g. ngrok - with a custom command that you get to define (like "https://myngroktunnel.ngrok.io/Control.cgi?mydevice=on" ), where myngroktunnel is your ngrok tunnel address (see below #2) and Control.cgi is the CGI script that you have placed on your microcontroller (see below #3).
You would need to install and run ngrok on your microcontroller: this will connect the IFTTT applet to your microcontroller via the ngrok tunnel and give you a publicly-accessible URL that forwards requests to your microcontroller. You would typically forward your ngrok tunnel to a specific port on your microcontroller where you are running a web server (e.g. Apache) with CGI scripts to control your device. There are other secure tunnel services available on the web: ngrok is just one of them. So, you do not have to host your own webservice, but you do have to use a tunnel to a publicly-accessible service.
The web server that you have placed on your microcontroller has CGI scripts that control your device (for example, let's say you have a Control.cgi script that turns your device on or off, given a command string like mydevice=on, e.g. the hook in the IFTTT applet is "/Control.cgi?mycommand=on"
Of course, the RTOS on your microcontroller muse be capable of running ngrok and a web server - this is why many people have chosen to use a single-board computer like the Raspberry Pi or Orange Pi running a form of linux to host and control their devices. Since your device's RTOS is not linux, I would suggest getting a linux device which would then forward the request to your RTOS device over your LAN.

Turn off raspberry Pi with Kodi remotely

Let me explain my problem: I have a raspberry Pi with Kodi installed and I use it with a IPTV service. This service only allow me to use it in one device at a time and sometimes I want to use it on my phone.
I'd like to be able to turn off my raspberry remotely so I can watch it in my phone whenever I want. I tried to create a web server that would allow me to run a script that would turn off the device but I can't access it because the raspberry IP takes me to some kodi stuff.
So to sum up, I'd like to go to my raspberry IP with Kodi installed, press a button and turn off the device. The web stuff I can take care of.
Any thoughts?
The only safe way to do this is to have a VPN tunnel that lets you access your internal network. This is much safer than opening up a port to Kodi on your router. It would just attract every bot and hacker out there.
Once you have a working VPN tunnel between your home network and your smartphone, just use a Remote Control App to shut Kodi down cleanly.
You can use a Kodi remote app for your mobile device. E.g. Kore (official remote app for Android) does have a shutdown button.
I think the best and easy way is to install dataplicity in your Raspberry Pi and access via dataplicity web or the app (Android or iOS) to the Terminal and use the command: sudo shutdown -h now or sudo poweroff

Accessing Raspbian Filesystem on SD-Card via USB-Connection from Windows

Is it possible to access the filesystem directly via USB when i connect it to my Windows PC ?
I don't want to ssh on the system, i want to mount it inside the Windows operating system, so that i can directly write to it without establishing a ssh connection for example.
Any Ideas how to do this ? Or isn't this possible ?
When it comes to simply accessing the file system you can always use some piece of software that will allow you to access linuxish file systems, so you can just plug in the SD card to your Windows machine (A quick google search: http://www.howtogeek.com/112888/3-ways-to-access-your-linux-partitions-from-windows/).
However, if you want your Raspberry running during those actions, you could use some sort of usb to serial cable (like this one: http://www.adafruit.com/products/954), but you will still need to use Putty or some similar software for the serial connection. On the bright side, connecting your pi that way means it will no longer need an external power supply. Just on a side note, what are your concerns about the ssh connection?

how to access client desktop and to control mouse using tcp/ip protocol from server machine

I'm working on project to develop an software using the TCP/IP protocol. The basic function of the software is to access the client activity running on client machine from server machine, for example information about current running applications.
Also, I want to access desktop screen and mouse from client machine to server machine using TCP/IP protocol. What are the basic steps that I can follow to access the desktop and could handle client mouse from server machine using TCP/IP.
It sounds like you want to build a VNC or RDP -like program. There have been an explosion of these services/programs in the time since you asked the question, though I don't know how many might be open source. I would start by investigating an Open Source VNC client and then see about adding an encrypted tunnel to keep the connection secure.
UltraVNC and TightVNC are popular Open Source VNC clients.