Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2017
    residenza
    Agrate Conturbia - Italy
    Messaggi
    5

    Chiamata tramite POST o GET per attivazione relay da pagina web

    Buongiorno
    Utilizzo da diverso tempo dei web relay su di una scheda Arduino che attivo tramite script da linux con comando "wget http://indirizzo_ip_scheda/?r4=Pls" e tutto funziona tranquillamente.
    Ora sto cercando di creare una pagina html su di un web server che raggruppi l'immagine di una telecamera ed i pulsanti per attivare i web relay.
    Il codice che ho inserito nella pagina, per quanto riguarda i pulsanti, ha questo formato:
    codice HTML:
    <form action="http://192.168.251.136/?r4=Pls" method="get">
                <input name "Button1" type="submit" value="APRE" />
            </form>
    Il problema è che il metodo utilizzato è sbagliato. Il relay non scatta ed oltretutto la pagina, giustamente, viene sostituita con la pagina di errore generata dalla scheda web relay.
    Nonostante diverse ricerche in rete, non ho però trovato un metodo per passare il comando al web relay, scartarne la risposta e rimanere sulla mia bella paginetta con l'immagine della telecamera ed i pulsanti.

    I test li ho effettuati appoggiando la pagina html su xampp installato in locale.

    Spero di aver inserito il post nella sezione corretta e sopratutto che qualcuno possa indirizzarmi sulla giusta via.

    Vittorio
    Ultima modifica di viemme; 31-03-2017 a 17:44

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    sposto in makers

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2017
    residenza
    Agrate Conturbia - Italy
    Messaggi
    5
    Grazie Vincent.Zeno
    Pensavo che la sezione html fosse più adatta visto che si tratta di una pagina html non su arduino, che richiama qualcos'altro, ma sicuramente va meglio così.

  4. #4
    codice:
    name "Button1"
    manca l' uguale =

    La pagina web potresti farla che contiene un iframe dimodoché la pagina di errore, nel caso avvenga, si vada ad aprire e visualizzare nell' iframe senza abbandonare la pagina madre.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2017
    residenza
    Agrate Conturbia - Italy
    Messaggi
    5
    Ti ringrazio Enzo per la risposta ed avermi indirizzato nella giusta direzione per capire il problema. Ho ri-studiato il comportamento di "form" e capito che inviavo dei dati non corretti alla pagina.
    Ora ho modificato completamente la logica inserendo un button che richiama uno script il quale gestisce apertura e chiusura della pagina relativa al relay.
    Grazie

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    Quote Originariamente inviata da viemme Visualizza il messaggio
    ho modificato completamente la logica inserendo un button che richiama uno script il quale gestisce apertura e chiusura della pagina relativa al relay.
    puoi postare l'esempio pratico così che possa essere utile anche ad altri?

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2017
    residenza
    Agrate Conturbia - Italy
    Messaggi
    5
    Certo che posto l'esempio Eccolo!
    Sulla pagina ho messo un pulsante che richiama lo script Pulse_1.
    Lo script apre la pagina richiamata dall'arduino in un popup di piccole dimensioni (30 x 30) e lo chiude dopo 100 millisecondi (un decimo di secondo)

    codice HTML:
            <p>
                <button onclick="Pulse_1()">APRE</button>
            </p>
            
            <script>
        
            function Pulse_1() 
                {
                    var win = window.open( "http://192.1.1.52/system/status.xml?rpl=1", "myWindow","status = 1, height = 30, width = 30, resizable = 0" );
                    setTimeout( function() 
                        {
                            win.close();
                        }, 100);
                }

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    in una logica di igiene... è possibile eseguire il file in questione senza far apparire un popup?

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2017
    residenza
    Agrate Conturbia - Italy
    Messaggi
    5
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    in una logica di igiene... è possibile eseguire il file in questione senza far apparire un popup?
    Mi piacerebbe ma non ne ho trovato il modo
    Chissà mai che non arrivi qualche suggerimento per farlo

  10. #10
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    Quote Originariamente inviata da viemme Visualizza il messaggio
    Mi piacerebbe ma non ne ho trovato il modo
    Chissà mai che non arrivi qualche suggerimento per farlo
    Se vuoi posso provarci...

    fai eseguire la chiamata ad arduino dal server, non dal client. Inoltre in questo modo eviti che molti client facciano richieste simultanee, ma centralizzi tutte le richieste dando tu le priorità ed eliminando i "doppioni" e le chiamate errate, una volta ottenuto il risultato lo "giri" al client.
    In pratica:
    Fai fare una chiamata in background al client verso il server (predisponi webapi sul server) il server controlla lo stato e determina se fare o meno la chiamata ad arduino (inutile accendere una luce già accesa, questo può avvenire se due client si connettono e tentano di fare la stessa azione), una volta fatta la richiesta ed ottenuto una risposta da arduino, il server restituisce al client l'esito della chiamata. Tutto tramite ajax.
    Oppure, se il controllo richiede un aggiornamento frequente (ad esempio devi rilevare continuamente lo stato di un sensore), puoi anche fare in modo che il server chiami in maniera cadenzata arduino memorizzando lo stato (o trasmettendolo direttamente al client vedi sistemi tipo signalr per windows) e quando il client richiede lo stato al server questo li da l'ultimo rilevato. In questo caso sarebbe ancora meglio se a comunicare il suo stato fosse arduino stesso, facendo chiamate da arduino verso il server inviando il suo stato, in questo modo ad ogni chiamata di arduino il server memorizza lo stato attuale e risponde con lo stato "desiderato". In pratica fai in modo che il client che vuole leggere lo stato, possa vedere l'ultimo memorizzato, e se vuole cambiarlo invia una richiesta al server che memorizza lo stato desiderato, e questo verrà inviato come risposta alla successiva chiamata che farà arduino.
    Inoltre facendo comunicare SOLO il server con arduino, risolvi eventuali problemi di prestazioni ridotte di arduino, che nonostante faccia il suo dovere potrebbe risentire di molti client differenti connessi in simultanea. Oltre al fatto che sarebbe più facile da controllare sotto il punto di vista della sicurezza. Usando poi la tecnica della chiamata da arduino a server risolvi invece anche il problema di configurazione del router e di un eventuale ip dinamico.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.