Autore Topic: [risolto] Arduino joomla, risposta a richiesta GET  (Letto 2420 volte)

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
[risolto] Arduino joomla, risposta a richiesta GET
« il: 08 Mag 2015, 22:02:59 »
Un cordiale saluto a tutti.

Sto facendo "esperimenti" in locale con xampp e Joomla 3 + scheda arduino collegata al router.

La scheda Arduino si comporta da "client" ed invia ciclicamente delle richieste al server web (file PHP) che gli risponde con un banale echo.

Non sto ad insertire il codice in C dello sketch arduino.

Comunque, nel primo caso , effettuo una richiesta da arduino indirizzata ad un file php chiamato remote.php , posizionanto in una qualunque posizione all' interno della radice del sito, al cui interno c'è una banale funzione che ritorna una echo:
Codice: [Seleziona]
function prova(){
    echo "ECHO FUNZIONE PROVA";
   
}

Su arduino, infatti ricevo i seguenti dati:
Codice: [Seleziona]
HTTP/1.1 200 OK
Date: Fri, 08 May 2015 19:16:37 GMT
Server: Apache/2.4.9 (Win32) OpenSSL/1.0.1g PHP/5.5.11
X-Powered-By: PHP/5.5.11
Content-Length: 19
Connection: close
Content-Type: text/html

ECHO FUNZIONE PROVA

Viceversa, se arduino invia la richiesta al componente joomla che sto cercando di sviluppare, per intenderci con url  "/joomla3/index.php?option=com_arduino&task=alive&arduino_name=ARDUINO_001"  riscontro problemi.

Il controller del componente intercetta e gestisce regolarmente la richiesta (implementando la funzione alive() che è il task dell' url proveniente da arduino):
 
Codice: [Seleziona]
public function alive(){//task alive ricevuto da arduino
         echo "ECHO FUNZIONE ALIVE";
}

Però, su arduino, ricevo i seguenti dati:

Codice: [Seleziona]
HTTP/1.1 200 OK
Date: Fri, 08 May 2015 19:19:27 GMT
Server: Apache/2.4.9 (Win32) OpenSSL/1.0.1g PHP/5.5.11
X-Powered-By: PHP/5.5.11
Set-Cookie: d164042ccf34a35f812a3c2dbaa75915=rjdqobgd4ukda8s8ekkdt1hv90; path=/; HttpOnly
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Expires: Mon, 1 Jan 2001 00:00:00 GMT
Last-Modified: Fri, 08 May 2015 19:19:27 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 7727
Connection: close
Content-Type: text/html; charset=utf-8

<

Come si può notare, non c'è / non si legge il testo della echo , il Content-Length è molto pi ampio e ci sono altre info  non presenti nel caso con normale file php.
Ovviamente, a me interesserebbe poter leggere su ARDUINO la echo di ritorno dal server.

Cosa mi sta sfuggendo ? Devo utilizzare altro al posto della echo sul controller ?

Ringrazio anticipatamente a chiunque possa fornirmi uno spunto.....
« Ultima modifica: 09 Mag 2015, 20:44:51 da alexdi »
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
la butto li, non è che arduino/teensy/etc... hanno registri talmente limitati che non riescono a memorizzare/processare file più lunghi di un verto valore di bit? Come se le intestazioni della pagina generata d joomla semplicemente facessero scorrere l'echo fuori dall'intervallo leggibile dalla scheda. Fila come ragionamento?

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Ciao giovi e grazie per la risposta.

Sicuramente la tua osservazione e più che legittima. Basta dirti che l' arduino 1 che sto utilizzando ha 2k di memoria dati (RAM) e 32k di memoria programma!

Il Content-Length , nel caso di gestione della richiesta da parte del controller è a 7727 byte , viceversa con file php 19 byte (che sono i caratteri/spazi della echo).

Ma perchè con il controller entrano tutti questi caratteri in più ?

Come si può evitare ?

C'e' qualcosa che mi sfugge per far in modo di evitare questa cosa.....

 
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline steganoga

  • Abituale
  • ****
  • Post: 1313
    • Mostra profilo
l'unica cosa che puoi fare con arduino e joomla sono delle richieste che avviino procedure remote su joomla.
Il senso di avere un web server su una scheda arduino non è di browserare il sito ma usare il sito per richieste ad una scheda arduino remota, magari con una sim e qualche sensore così da avere su una pagina un report dell'umidità del tuo giardino, della temperatura della tua casa etc..., oppure inviando ad arduino comandi specifici e usandolo come attuatore (.. avevo provato a muovere da remoto un braccio robot)

su arduino non hai un interprete php.
Se vuoi usare arduino come se fosse un server per joomla in remoto dovresti riuscire a sfruttare la SD per installare una versione ridotta di xamp o similari...
« Ultima modifica: 09 Mag 2015, 09:03:16 da steganoga »
...sono dove non ti aspetti di trovarmi, mi alimento della tua supponenza e disseto la mia curiosità nel silenzio.
Non sono un nemico, considerami un ospite.

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Esatto steganoga.

Infatti non voglio trasformare Arduino in un server. Inoltre, non sarebbe neanche così importante ricevere a rotroso una risposta da joomla che possa essere interpretata da Arduino.

L' unica cosa che mi prefiggevo di fare con la echo era solo di informare Arduino, per esempio, sul buon esito del salvataggio di un determinato valore su una tabella del db joomla.

Arduino, infatti, riceve comunque e sempre il ritorno da joomla (sto provando con EtherCard) tramite la funzione tcpReply impostando un timeout di attesa di 5 secondi.

L' unico problema e che il Content che invia Joomla e cioè,  come dice giovi , le intestazioni della pagina generata da joomla, e troppo grande, contrariamente alla prova da un file php fuori dal contesto joomla, dove il Content contiene solo ed esclusivamente il testo della echo.

Quindi, ho trovo il modo di intervenire sul Content generato da joomla o di spezzettare la risposta tcp troppo grande ricevuta su arduino tramite la libreria EtherCard.

Inoltre, con richieste di tipo Ajax provenienti da joomla, su Arduino riesco a leggerle tranquillamente e ad inviare risposte al server (per esempio: leggimi la temperatura del sensore x).

Grazie per il vostro interessamento.
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline steganoga

  • Abituale
  • ****
  • Post: 1313
    • Mostra profilo
il content joomla ritorna ciò che tu gli fai restituire... sicuramente sarà un raw, nessun template
Ajax è un modo, ma joomla può anche essere client o implementare procedure xmlrpc
...sono dove non ti aspetti di trovarmi, mi alimento della tua supponenza e disseto la mia curiosità nel silenzio.
Non sono un nemico, considerami un ospite.

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Giusto :) .

Io pensavo: mando solo un echo dal controller, non dovrei restituire nient' altro. Poi ho fatto una prova banalissima che avrei dovuto fare e capire subito: inserendo il link che invia arduino direttamente sul browser vedo la echo ma vedo anche tutta la pagina home di joomla (ovviamente, dico adesso! ??? ).

Ecco da dove vengono tutti quei byte che vedo nel Content-Length su Arduino.

Per ovviare, ho creato un file php chiamato blanktmp.php e l' ho inserito nella radice del template in uso. All' interno del file il codice è:

Codice: [Seleziona]
<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
defined('_JEXEC') or die;
?>

<jdoc:include type="component" />   

Questo è il sistema che si usa anche , per esempio, quando vogliamo che la view di un componente non carichi tutta la parte di script e css di default di joomla, template compreso,  demandando tutta la costruzione della view al componente medesimo.

Fatto ciò, nella richiesta arduino al server web, ho inserito la seguente stringa:

Codice: [Seleziona]
/joomla3/index.php?option=com_arduino&task=alive&tmpl=blanktmp&arduino_name=ARDUINO_001Da notare tmpl=blanktmp.

Nel controller , prima della echo, un bel header_remove()
Codice: [Seleziona]
public function alive(){//task alive ricevuto da arduino
     header_remove();

    echo "ECHO FUNZIONE ALIVEEEEEEEEEEEEEEEEEEEE";
    }

et voilà , ecco comparire la bella echo su Arduino ;)

Codice: [Seleziona]
HTTP/1.1 200 OK
Date: Sat, 09 May 2015 14:05:58 GMT
Server: Apache/2.4.9 (Win32) OpenSSL/1.0.1g PHP/5.5.11
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Expires: Mon, 1 Jan 2001 00:00:00 GMT
Last-Modified: Sat, 09 May 2015 14:05:58 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 45
Connection: close
Content-Type: text/html; charset=utf-8

ECHO FUNZIONE ALIVEEEEEEEEEEEEEEEEEEEE   

Ringrazio steganoga e giovi per avermi aiutato ad approfondire questo piccolo problema.
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19761
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
solo per sapere, il tag [ris] è un omaggio alla serie televisiva RIS o intendevi scrivere risolto? meglio usare la parola completa che ha un suo specifico perchè ;)
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline steganoga

  • Abituale
  • ****
  • Post: 1313
    • Mostra profilo
RIS.... perchè manca ...OLTO che ti fornisco subito

http://stackoverflow.com/questions/18079411/joomla-3-return-raw-data-from-controller-task

è solo un imbeccata... cerca con la chiave joomla+raw+data e guarda che siano spiegazioni per joomla 3 perchè il "format raw" non si usa più e molti tutorial sono su qs
...sono dove non ti aspetti di trovarmi, mi alimento della tua supponenza e disseto la mia curiosità nel silenzio.
Non sono un nemico, considerami un ospite.

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
solo per sapere, il tag [ris] è un omaggio alla serie televisiva RIS o intendevi scrivere risolto? meglio usare la parola completa che ha un suo specifico perchè ;)

 ;D ;D ;D ;D accorcio il titolo se no non ci sta, sono troppi caratteri...
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19761
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
un
[risolto] Arduino joomla, risposta a richiesta GET

potrebbe essere la soluzione e sarebbe anche un titolo molto "funzionale" :)
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

 

Host

Torna su