• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
da raspberrypi3 12 pilotarlo esp8266

ESP8266-12, pilotarlo da RaspberryPI3
#1
Salve a tutti
ho trovato diversi siti che indicano come usare l'esp come webserver.
Io vorrei portelo usare come semplice attuatore pilotato dal raspberry. Per intenderci, vorrei tramite wifi remotizzare le porte GPIO del raspberry.

Attualmente il rasp è collegato ad una scheda relè. Vorrei poter collegare invece l'esp, e comandarlo dal raspberry, senza però dover mettere sull'ESP un web server con i pulsanti di tutti i GPIO. Vorrei poter effettuare dal mio codice python sul raspberry, delle chiamate dirette allo stato dei gpio dell'ESP.

Come potrei realizzare ciò?

Grazie a tutti
Risposta
#2
Ciao non hai pensato di utilizzare MQTT?

Sulla raspberry installi mosquitto che fa da MQTT Broker, la scheda ESP8266 si iscrive al topic e lo usi per inviare i dati.
Io ho realizzato il tutto, uso una scheda ESP8266 che mi legge temperatura e umidità nelle stanze che vengono inviati alla Raspy e come ritorno ho tre led che accendo quando piove, quando la temperatura è sotto zero e così via.

Giuseppe
Risposta
#3
Ciao Giuseppe
grazie mille per la tua risposta.
Avevo letto qualcosa, ma non ho ben chiaro quanto c'è da sviluppare sull'ESP e sul raspberry.

Premetto che sul rasp ho installato apache e php. Dalla pagina PHP eseguo file python che mi attivano i GPIO.

Per poter sganciare il rasp dalla scheda relè e collegarci l'ESP, cosa dovrei fare?

Potresti provare a scrivermi del codice di esempio che deve andare sul rasp e quello sull'ESP?

Grazie ancora
Risposta
#4
Ciao,
facciamo che tu aiuti me ed io aiuto te Tongue .

Mi dici come fai da php a fargli eseguire comandi python?

Ora sono da un cliente e non riesco a darti le risposte in modo esaustivo, questa sera vedo di darti una spiegazione più dettagliata.

In ogni caso se fai una ricerca su internet MQTT ESP8266 trovi tutto.

Giuseppe
Risposta
#5
Ovvio che ti aiuto per quel che ho fatto.
Stasera ti posto un pò di codice, ed i permessi che devi dare per eseguire script python
Risposta
#6
E tutti e due aiutate me, che sto provando a scrivere le guide per ESP8266. Se volete partecipare con qualche spunto, contattatemi in privato.
Io credo che il Python, invece di comandare il GPIO, debba mandare un comando MQTT, che viene ricevuto e eseguito da ESP8266.
Risposta
#7
Vediamo se riesco a farti capire come funziona MQTT:

Il tutto si basa sul paradigma publish/subscribe, gli attori sono il message broker che si occupa di distribuire i messaggi ricevuti da chi pubblica il topic a quei dispositivi che hanno sottoscritto la richiesta di notifica per un determinato topic.

Per esempio se tu hai un dispositivo che invia una temperatura, esso si collegherà al message brocker e invierà un topic in questa forma /dispositivo01/temp/5.1

Il valore 5.1 è il payload del tuo topic, se io volessi ricevere questa informazione, non dovrei fare altro che sottoscrivere la richiesta di ricezione del topic, sottoscrizione che manderò al message brocker.

Non appena il topic o i topics a cui sono iscritto subiranno una variazione ne verrò immediatamente informato.

Il vantaggio è che il tutto è asincrono, chi invia può essere anche contemporaneamente anche sottoscrittore.

Io ero partito da queste guide su internet per creare il tutto:
MQTT
http://mifacciounaiot.blogspot.it/p/util...-mqtt.html
ESP8266 e MQTT

E' un protocollo leggero e semplice da implementare ci sono librerie per la maggior parte dei linguaggi di programmazione, io lo uso anche con i miei programmi sviluppati in .NET.

Se ti servono altre info sono qui.

Giuseppe
Risposta
#8
Ciao Giuseppe
grazie per la spiegazione. Compresa meglio la logica ora ;-)
L'implementazione e configurazione è molto ostica o abbastanza semplice?

Al momento ho implementato singole chiamate http sull'ESP, e appena ho modo provvedo ad effettuare le chiamate da python e relativa interpretazione della risposta.

A me interessa che le richieste siano sincrone per quel che devo fare.

Il raspberry chiede all'esp di attivare un relè, l'esp deve restituire prima lo stato del GPIO, in base al suo valore, il raspberry determinerà cosa fare, in base alla logica che ho implementato, andando a scrivere anche su un DB. E dopo che l'esp ha completato l'operazione, risponde al raspberry che ha finito. In sintesi, il raspberry chiede all'esp, e rimane in attesa di risposta prima di andare avanti

Riguardo invece la chiamata degli script python da PHP bisogna:

da shell: "$ sudo visudo" e ho aggiunto la riga "www-data ALL=PYTHON,NOPASSWD: ALL" così facendo ho dato all'utente www-data i privilegi di avviare python SENZA che gli venga richiesta la password di root

Nella pagina web invece:  <form action="" method="post">
   Evento1;<input type="submit" name="evento1" value="evento1">
   <input type="submit" name="evento1" value="evento1">

e nel PHP
if ($_POST[Evento1]) { 
   $a=shell_exec("sudo python /var/www/script/evento1.py");
   echo"<pre>".$a."</pre>";

così premendo il pulsante ti esegue lo script

(18/04/2017, 20:22)Zzed Ha scritto: E tutti e due aiutate me, che sto provando a scrivere le guide per ESP8266.[...]

Ciao Zzed
con piacere, anche se al momento sto percorrendo la strada delle chiamate http verso l'esp.
MQTT non l'ho ancora visto molto bene. Sicuramente sarà il passo successivo Smile

Ma per quel che posso, do con piacere il mio contributo in merito
Risposta
  


Vai al forum:


Navigazione:
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect