Italian Utilizzo di Raspberry in rete

AlpVir

Well-Known Member
Licensed User
Longtime User
Ho un Raspberry, collegato in wifi al mio computer, con cui, tramite opportuni script, sono in grado di spedire email, interagire con l'hardware, scattare fotografie, rielaborare le immagini, ecc. ecc.; ho anche un webserver Apache installato. Attualmente avvio questi script manualmente con il mio computer collegato in wifi (al router) attraverso Putty, WinSCP o MobaXTerm. Il Raspberry ha un indirizzo fisso locale del tipo 192.168.x.x; lo stesso dicasi per il router.
Le stesse identiche operazioni le vorrei fare con una app Android, sia in wifi che attraverso internet. In pratica in questa app ci dovrebbero essere dei pulsanti premendo i quali, a casa collegati al router oppure in un albergo in Polinesia, vengono effettuate le medesime operazioni.
Per il momento non mi pongo problemi di sicurezza in quanto questa app servirebbe solo a me.
Come fare ? Ho le idee un po' confuse a questo riguardo. Qualcuno sa darmi delle indicazioni ?
Grazie per l'attenzione.
 

udg

Expert
Licensed User
Longtime User
Per accedere dall'esterno (Internet) hai bisogno di un servizio DDNS in modo che il tuo router di casa sia sempre raggiungibile anche quando il provider cambia il suo IP pubblico (ovviamente a meno che tu ne abbia uno fisso).
Fatto questo ed impostata la configurazione NAT (o comunque si chiami sul tuo router la funzione di reindirizzare determinte porte ad uno specifico device/porta), puoi scegliere cosa mettere in ascolto su quella porta. Diciamo che in parte dipende da quanto sei ferrato su Linux/php.
Il B4J ti permette di scrivere dei programmi senza UI e di agire da webserver (sulla porta che vuoi). Include jetty e questo lo rende un'alternativa ad Apache. In pratica puoi realizzare il lato server con Apache/php/mysql oppure con B4J/mysql .
 

udg

Expert
Licensed User
Longtime User
non esiste un b4x
Non è vero! B4X = Basic for Ghosts...lo usiamo noi fantasmi per "programmare" le apparizioni..UUUUHUUUUUUU
 

LucaMs

Expert
Licensed User
Longtime User
Piuttosto non so se ti ho indicato il server b4j giusto, perché quello, push server, potrebbe essere in una sola direzione, ovvero tra server e client e non viceversa, non so.
Eventualmente ci sono altri esempi bidirezionali, come la chat.
 

valentino s

Active Member
Licensed User
Longtime User
Per raggiungere l'ip da internet ci sono servizi tipi dyndns. Guardateli, io alla fine ho sempre rinunciato per pigrizia pero'...
 

stefanoxjx

Active Member
Licensed User
Longtime User
Ciao, se ho capito bene il tuo problema, la cosa più semplice che secondo me potresti fare è crearti una pagina web php e gestire tutto tramite web senza creare app apposite.
Non sono sicuro però di aver capito quali sono i tuoi dubbi :confused:
 

sirjo66

Well-Known Member
Licensed User
Longtime User
@AlpVir:

per poter accedere dall'esterno (come ti hanno già suggerito), hai prima bisogno di programmare il router in modo da indirizzare le chiamate dall'esterno (fatte su di una determinata porta) su di un indirizzo IP locale specifico (che sarà quello del tuo Raspberry).
Questa configurazione (normalmente) sui router è chiamata Forwarding oppure Virtual Servers.

Puoi così accedere dall'esterno senza problemi, conoscendo ovviamente il tuo IP pubblico, cioè l'indirizzo IP che hai in quel momento su Internet.

Se questo IP pubblico non è fisso, è chiaro che potrebbe funzionare il tutto per un po' di giorni e poi non funzionare più, dato che il tuo operatore ti ha assegnato in IP diverso.
In questo caso (come ti hanno già detto) puoi utilizzare un servizio (credo ne trovi anche di gratuiti) che ti permette di avere una specie di IP fisso, e quindi hai risolto il problema di accedere anche in caso di un tuo IP dinamico.

Per maggiori informazioni chiedi pure

Sergio
 

stefanoxjx

Active Member
Licensed User
Longtime User
Forse ho interpretato male io la domanda che ha fatto, ma voi continuate a parlargli del port forwarding, mentre secondo me lui chiedeva come poteva lanciare i comandi al server direttamente da un app cosa che ora fa tramite ssh.
Non credo che uno che ha configurato una raspberry in linux ed ha installato un server apache abbia problemi a capire come configurarsi un router per accederci all'esterno.
Sia ben chiaro, questa è solo la mia idea, sicuramente sbagliata ma vorrei sentire l'opinione di AlpVir.

S
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Forse ho interpretato male io la domanda che ha fatto, ma voi continuate a parlargli del port forwarding, mentre secondo me lui chiedeva come poteva lanciare i comandi al server direttamente da un app cosa che ora fa tramite ssh.
E' più o meno così.
L'app che sto sviluppando (vedi immagine allegata) si collega (sfruttando il router, il wifi e il server SSH) ad un Rasperry a cui è collegata una macchina fotografica, un dongle wifi e uno step motor. Sono già in grado di movimentare come desiderato lo step motor, scattare una singola foto (che visualizzo all'interno dell'app) ed anche scattare una serie di foto (le quali, opportunamente unite da hugin a realizzare un panorama) vanno a finire su un mio server web tramite FTP. La realizzazione del panorama è lo scopo principale di tutto questo ambaradan.
Questo panorama può anche essere visualizzato su internet ad un indirizzo del tipo NomePersonale.dlinkdns.net, ma questo è secondario.
L'app è quasi terminata ma vorrei che le stesse medesime operazioni potessero essere effettuate dalla Papuasia o, visto che a me piace la montagna, da un bricco qualsiasi delle mie montagne. Non ho ancora affrontato seriamente questo problema, scopo di questo post come ha correttamente compreso stefanoxjx.
 

Attachments

  • Screnshot1.png
    Screnshot1.png
    69.7 KB · Views: 269

udg

Expert
Licensed User
Longtime User
Se si tratta semplicemente di eseguire script già presenti sul Raspy, da b4j puoi utilizzare la libreria jshell.
quindi è sufficiente un programma non-ui in b4j che riceva comandi dalla app scritta in b4a e a sua volta esegua gli script esistenti.
per la parte comunicazione b4a-b4j credo ci siano sul forum diversi esempi.

scusa se non vado nello specifico ma sono ancora in giro e dispongo solo di un tablet

udg
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Ah ok, leggendo il suo primo post non si era capito bene quale era il suo problema, e poi il titolo diceva "Utilizzo di Raspberry in rete", e forse è stato questo che mi ha fatto fraintendere la domanda, forse sarebbe stato meglio scrivere "come lanciare degli script con B4A"

Sergio
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Ho studiato meglio il problema ed ho visto che esiste quasi sicuramente una semplice soluzione, senza installare alcunchè sul Raspberry che, poverino - è già affaticato di suo per gestire il tutto.
Come ho detto c'è un server http (Apache) che è visibile, da internet, all'url http:/xxxxxxxxxxxx.ddns.net o http:/xxxxxxxxxxxx.noip.com o altro del genere. Sfruttiamolo !
Si tratta di scrivere una pagina php che riproduce pari pari l'immagine che ho allegato in un post precedente; ad ogni pulsante legherò un link opportuno, tale che esegua uno script pyton (o sh, a seconda dei casi). Gli script ci sono già.
La ricerca su San Google da parte mia si dovrà quindi indirizzare più che all'ambiente B4A a uno più generico con parole chiave tipo "come lanciare uno script da una pagina web", non da B4A. Ho già visto che sono molti i suggerimenti ed ho già inserito nella mia app un bel WebViewExtra che rispetto al WebView normale presenta la particolarità, per ora non utilizzata, di poter utilizzare dell'eventuale codice Javascript, se necessario.
Non sarà una passeggiata ma confido di riuscirci.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Top