Breves inicios
Esta es una versión vieja que programe en el 2016
inspirado en un post de security by default (post que sin el no estuviera aquí se los puedo jurar)
Donde crean un huerto domótico para el monitoreo de tomates, pimientos con gráficas en tiempo real, y la Ayuda de Javier Salcedo
(que detesta que lo etiqueten) que me ayudo a
entender el patrón observer/observable (bueno no soy muy astuto tampoco) para notificar a todas las UI ligadas a la session junto con websockets aka push.
Luego de un tiempo le di una mejora la UI con responsive web design , aquí el circuito cambio un poco,
dado que use un triac bt136
mas un octoacloplador moc3021
Algo importante a decir es que lo anterior tiene una limitación y es la siguiente: que el arduino debe estar conectado a la pc por usb si o si, cosa que se resuelve por medio de una shield con conexión a wifi (conexión inalambrica), o un ESP8266, el igualmente el codigo entre el arduino y vaadin cambiaría usando solicitudes http aka HTTPrequest, a un servidor asíncrono.
-
NRF24L01 + PA
-
ESP8266
Yo habia pensado en la NRF24L01 + PA
de verdad que le veo mucha mas ventaja con respecto al Esp8266 ESP-01S y es porque se
le puede colocar una antena externa, en la imagen se ve una omnidireccional de 5 dbi pareciera, pero no se especifica,
e igual es lo de menos, al ponerle una antena direccional grillada de 25dbi mmm, algo me dice que si se notaria diferencia XD,
seria así como esta? XD, mi vieja configuración que tenia en la madre Venezuela, aunque con lo que se ahora la
NRF24L01 se usa para otros motivos, junto a otra igual, programada receiver-transeiver
Antena grillada de 24dbi direccional
Son mas o menos a si en la vida real, bastante pequeñas ambas
Tocara esperar una semana mas quizás hasta que llegue el resto. XD una triste cara de drama
Continuara…
Volviendo aquí, el día 6/15/2019 un día común y corriente, típico.
nada mal no? son algo largas, bien, quitamos el atmega328p con cuidado mejor, una pinza antiestatica.
Este es el pinout que estoy usando
Una imagen de como tengo la conexión final
Configuraremos ahora, la velocidad a 9600 baudios, por defecto viene a 115200, nos conectamos a esa velocidad,
con NL/CR(nueva linea, y retorno de carro)
, solo le quitaremos la tensión de 3v, para introducir un comando, se ve la
salida de la consola algunos caracteres raros.
Introducimos este comando para dejarlo permanente.
AT+UART_DEF=9600,8,1,0,0
Con este comando vemos la version
AT+GMR
Tecleamos AT+CWMODE?
para ver en que modo estamos lo mas seguro el dos.
Con este comando lo configuramos como modo estación y ap.
AT+CWMODE=3
Vamos a escanear redes disponibles
AT+CWLAP
Nos conectamos con
AT+CWJAP="Choristar_5F52","AquiNoEntraNiElDiablo"
Al conectar debería de salir en la consola del IDE…
WIFI CONNECTED
WIFI GOT IP
OK
Configuramos para aceptar multiples conexiones con
AT+CIPMUX=1
Creamos un servidor por el puerto 8080
AT+CIPSERVER=1,8080
Ahora introducimos ~ipconfig/ifconfig~ para obtener la dirección ip del modulo
No me digan que se creyeron semejante cyberChorrada ? en realidad es:.
AT+CIFSR
Con este código java podemos hacer un HttpRequest con post, usando open jdk-11
, esta es la dirección ip
Probando HttpClient nativa de la jdk-11
private static final String IP_ESP8266 = "http://192.168.1.45:8080/";
public void hacerPostESP8266() {
final String pin = JOptionPane.showInputDialog(null,"Introduce On o off");
if(nonNull(pin)) {
try {
final HttpResponse<String> req = HttpClient.newBuilder()
.build()
.send(HttpRequest (1)
.newBuilder(URI.create(IP_ESP8266 + pin.replaceAll("[\\,\\s+\\.0-9]+","")))
.header("Content-Type", "text/plain; charset=UTF-8")
.POST(HttpRequest.BodyPublishers.ofString(""))
.build(), HttpResponse.BodyHandlers.ofString());
LOGGER.info("Estatus code: " + req.statusCode());
} catch (IOException e) {
LOGGER.severe(e.toString());
} catch (InterruptedException e) {
LOGGER.severe(e.toString());
}
} else {
JOptionPane.showMessageDialog(null,"Valor invalido");
}
}
1 | Este método es síncrono, pero como es una operación tan rápida pues no importaria mucho, existe el async. |
Por lo que veo el modulo a veces cuelga sin ninguna razón por lo tanto cuando eso pase, tocara setear los comando AT para servidor multiconexión, y activar la ip con puerto así, es bull shit pero es lo que hay mientras.
AT+CIPMUX=1
AT+CIPSERVER=1,8080
Tocara mejorar esto, porque el modulo ESP8266
se puede flashear con un firmware para programarlo con el IDE de arduino gracias a un ruso Ivan Grokhotkov que encendió la chispa, aquí está el repo ESP8266 repo
Update
Otra manera de ejecutar una request
Este ejemplo es con project reactor, podria dar una manera de como hacer una request asíncrona y de paso usando jbang igualemente con la HttpClient nativa.
-
Se tiene 2 Url para obtener la ip publica, seria lo mismo pero cambiandola a local y modificando un poco para hacer POST,
-
Entonces si una url falla por alguna razón, ejecutamos un fallback
En el siguiente enlace, flashee
mi ESP8266