In questo post viene mostrato come usare MJpg-stream per creare uno stream video mediante Webcam e Raspberry. Le stesse informazioni si possono usare anche per un normale portatile con montato Debian
Sul web si trovano molti post che mostrano questa procedura ma spesso non funzionano piu' per vari motivi.
La prima cosa (piu' importante) e' prelevare l'ultima versione di mjpg-stream mediante Subversion da Sourceforge
svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code
in seguito si digita
apt-get install libv4l-dev libjpeg8-dev imagemagick
per soddisfare le dipendenze della compilazione
Andando nella sottodirectory mjpg-streamer-code si vedra' che esiste una sottodirectory mjpg-streamer ed un mjpg-streamer-experimental ..io ho preferito quella non sperimentale
si inizia la compilazione con
make USE_LIBV4L2=true clean all
se ci sono problemi nell'includere V4L si lanci il seguente comando e si ripeta il make
cd /usr/include/linux
sudo ln -s ../libv4l1-videodev.h videodev.h
siamo alla fine. Si digiti
export LD_LIBRARY_PATH=.
a questo punto il file README indica di lanciare il programma con la seguente riga
./mjpg_streamer -o "output_http.so -w ./www"
ma io ho trovato piu' semplice lanciare il comando
./start.sh
lo streaming si dovrebbe avviare senza problemi (ovviamente se la webcam e' collegata) e per osservare il flusso dati ci si puo' collegare via web browser all'indirizzo
http://mioip:8080/?action=stream
Ho provato anche VLC per fare streaming via web ma Raspberry ha delle risorse troppo limitate per poter gestire un cosi' pesante carico di lavoro
lunedì 2 settembre 2013
venerdì 30 agosto 2013
Compilare librerie Python
Tentando di installare un libreria python mediante il classico comando sulla mia Debian Box
python setup.py install
mi vengono generati una serie di errori. La causa e' che di default non viene installato il pacchetto python-dev indispensabile per la compilazione da sorgenti. tutto si risolve con
apt-get install python-dev
Raspberry in emulazione Qemu
Puntando il browser su questo indirizzo http://sourceforge.net/projects/rpiqemuwindows/ e' possibile ottenere un pacchetto gia' confezionato per emulare Raspberry e sistemi operativi collegati in QEmu
si possono provare altre distribuzioni senza dover formattare SD Card.
La velocita' non e' assolutamente niente di particolare. Curiosamente la distro PiBang non riesce a partire a causa di un errore nella D-Bus connection
Creazione di post automatici su Facebook (4)
Questo riepilogo non è disponibile.
Fai clic qui per visualizzare il post.
Creazione di post automatici su Facebook (3)
Arduino con shield Ethernet e sullo sfondo il post automatico su Facebook |
Visti i precedenti post (1 e 2) adesso si deve configurare l'Arduino come Client Http per chiamare lo script Php che genera post automaticamente mediante l'access_token
La cosa e' piuttosto semplice e viene compiuta dallo sketch sottostante che crea una chiamata HTTP passando i parametri via GET. Il codice si commenta da solo
----------------------------------------
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = { 150, 217, 73, XX };
EthernetClient client;
void setup()
{
Ethernet.begin(mac);
Serial.begin(9600);
client.connect(server, 80);
delay(1000);
Serial.println("connecting...");
if (client.connected()) {
Serial.println("connected");
client.println("GET /luca/xxxxxx/example3.php?msg=Arduino_automatico HTTP/1.0");
client.println();
} else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
------------------------------------------------------
sul lato server il log di apache mostra la connessione dell'Arduino con il web server
----------------------------
m.xxxxx.unifi.it:80 79.4.7.201 - - [29/Aug/2013:23:01:31 +0200] "GET /luca/xxxxx/example3.php?msg=Arduino_automatico HTTP/1.0" 200 418 "-" "-"sul lato server il log di apache mostra la connessione dell'Arduino con il web server
----------------------------
giovedì 29 agosto 2013
Problema di DNS su Ubuntu Server
E' accaduta una cosa curiosa sul server sul quale effettuo alcune prove tra cui quella di Facebook.
A seguito di una interruzione del corrente il server si e' spento brutalmente ed alla riaccensione erano scomparse le impostazioni del DNS (il file /etc/resolv.conf era vuoto con l'indicazione di non editare a mano)
E' stato necessario ripopolare il file /etc/resolv.conf con la sintassi
A seguito di una interruzione del corrente il server si e' spento brutalmente ed alla riaccensione erano scomparse le impostazioni del DNS (il file /etc/resolv.conf era vuoto con l'indicazione di non editare a mano)
E' stato necessario ripopolare il file /etc/resolv.conf con la sintassi
nameserver xxx.xxx.xxx.xxx
probabilmente le impostazioni del DSN vengono gestite in automatico da qualche programma (vedi questo link) ma su una macchina server mi sembra una scelta quantomeno discutibile
Creazione di post automatici su Facebook (2)
Proseguendo il discorso iniziato con il post precedente adesso si cerca di pubblicare un post senza l'interazione utente utilizzando l'access token
La stringa dell'access token e' quella lunga stringa alfanumerica che viene prodotta come risultato dallo script del post precedente
Per la politica di Facebook attualmente questo metodo funziona solo per 60 giorni perche' gli access token hanno una durata temporale; dopo tale scadenza l'utente deve riloggarsi manualmente ed ottenere un nuovo access token
Questo script di fatto e' una versione semplificata del precedente in cui tutta la fase di autenticazione e' contenuta nell'access token
E' stato leggermente modificato il campo messaggio in modo da renderlo dinamico.
In questo modo se si aggiunge la variale msg alla URL si modifica il testo del messaggio
tipo
http://www.mioserver//script.php?msg=Luca
--------------------------------------------------------------------
<?
require_once '../src/facebook.php';
$appid = '6731359560xxxxxx';
$appsecret = 'dde6cfb07dbb769c7efe949cxxxxxxx';
$msg = $_GET["msg"];
$title = 'Messaggio Automatico Arduino';
$uri = 'http://debiaonoldcomputers.blogspot.com/';
$desc = 'Luca Innocenti.';
$pic = 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgluMOnPyTph3iUuLEcHHX8yoUSfMUnM5JlJH4xtJUoNTbZydICSkco_aB1Nc_gZ521xnI_JRptSkThfY7w1-dVLT7_9y5lzyWslzLYnhTQaExMPdr9Z8-Ed73ymkPwQwpnXmKuhfGdJPJ4/s400/Basic-+Facebook+Developers.jpg';
$action_name = 'Action Link in the Footer of the Post';
$action_link = 'http://debiaonoldcomputers.blogspot.com/';
$facebook = new Facebook(array(
'appId' => $appid,
'secret' => $appsecret,
'cookie' => false,
));
$user = $facebook->getUser();
$accessToken = "CAAJkNq2LttoBAJywtmNSbVHqFPubOjYmQ2yyUG4kpibD75BHid9J7xsvif8osSOc4ewgK4aYerrLZBsZCQM5wykRTYVLDkCJXlXYl3gi8WFRQ8U4p4y4ZAXYsdamz6RVdRJZAe4vZA80mWBayuG0qc4IAj2TMDmQXKiv1OrKp8CwKjD6Rz2ZCAqpxxxxxxxx";
$attachment = array(
'access_token' => $accessToken,
'message' => $msg,
'name' => $title,
'link' => $uri,
'description' => $desc,
'picture'=>$pic,
'actions' => json_encode(array('name' => $action_name,'link' => $action_link))
);
$status = $facebook->api("/me/feed", "post", $attachment);
print "Ok";
?>
La stringa dell'access token e' quella lunga stringa alfanumerica che viene prodotta come risultato dallo script del post precedente
Per la politica di Facebook attualmente questo metodo funziona solo per 60 giorni perche' gli access token hanno una durata temporale; dopo tale scadenza l'utente deve riloggarsi manualmente ed ottenere un nuovo access token
Questo script di fatto e' una versione semplificata del precedente in cui tutta la fase di autenticazione e' contenuta nell'access token
E' stato leggermente modificato il campo messaggio in modo da renderlo dinamico.
In questo modo se si aggiunge la variale msg alla URL si modifica il testo del messaggio
tipo
http://www.mioserver//script.php?msg=Luca
--------------------------------------------------------------------
<?
require_once '../src/facebook.php';
$appid = '6731359560xxxxxx';
$appsecret = 'dde6cfb07dbb769c7efe949cxxxxxxx';
$msg = $_GET["msg"];
$title = 'Messaggio Automatico Arduino';
$uri = 'http://debiaonoldcomputers.blogspot.com/';
$desc = 'Luca Innocenti.';
$pic = 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgluMOnPyTph3iUuLEcHHX8yoUSfMUnM5JlJH4xtJUoNTbZydICSkco_aB1Nc_gZ521xnI_JRptSkThfY7w1-dVLT7_9y5lzyWslzLYnhTQaExMPdr9Z8-Ed73ymkPwQwpnXmKuhfGdJPJ4/s400/Basic-+Facebook+Developers.jpg';
$action_name = 'Action Link in the Footer of the Post';
$action_link = 'http://debiaonoldcomputers.blogspot.com/';
$facebook = new Facebook(array(
'appId' => $appid,
'secret' => $appsecret,
'cookie' => false,
));
$user = $facebook->getUser();
$accessToken = "CAAJkNq2LttoBAJywtmNSbVHqFPubOjYmQ2yyUG4kpibD75BHid9J7xsvif8osSOc4ewgK4aYerrLZBsZCQM5wykRTYVLDkCJXlXYl3gi8WFRQ8U4p4y4ZAXYsdamz6RVdRJZAe4vZA80mWBayuG0qc4IAj2TMDmQXKiv1OrKp8CwKjD6Rz2ZCAqpxxxxxxxx";
$attachment = array(
'access_token' => $accessToken,
'message' => $msg,
'name' => $title,
'link' => $uri,
'description' => $desc,
'picture'=>$pic,
'actions' => json_encode(array('name' => $action_name,'link' => $action_link))
);
$status = $facebook->api("/me/feed", "post", $attachment);
print "Ok";
?>
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...