Controlando placas de IoT desde javascript


Node.js framework  fue  creado por Bocoup para controlar placas de desarrollo en una configuración de host-cliente   aunque   realmente su uso mayoritario sea como plataforma web   siendo    Johnny-Five la plataforma open  source de Robótica e IoT de JavaScript 

En realidad existen diferentes  plataformas donde se puede ejecutar el programa Johnny-Five :

  • En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2
  • En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
  • En una máquina host que se comunica por wifi al cliente: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
  • En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,

Johnny-Five como vemos hacer un énfasis especial en la robótica, pero tambien puede hacer muchas cosas diferentes con el software.De hecho ha existido durante hacer  más tiempo que la mayoría de los marcos de JavaScript para hardware . Ademas iene una API clara  y “fresca” ,ambas cosas ideales para los principiantes de hardware.

Lanzado porBocoup en 2012, Johnny-Five esta mantenido por una comunidad de desarrolladores de software apasionados e ingenieros de hardware. De hecho más de 75 desarrolladores han hecho contribuciones para construir un ecosistema robusto, extensible y muy versatil.

 

Hola Mundo! 

A los microcontroladores y las plataformas SoC nos gusta decir “Hola mundo” con un simple LED parpadeante, así  que veamos en primer lugar un ejemplo como lo hariamos  usando el Ide clásico  de Arduino

Como vemos en la imagen ,conectaremos un led entre el pin 13  y masa , respetando la polaridad (el ánodo al pin13 y el cátodo o pin corto a masa )

Para  hacer destellear el citado led,  estos son los pasos básicos  que tenemos que seguir en nuestro sketch  programandolo desde el IDE de Arduino:

  1. Configurar el pin 13 (con LED incorporado) como una SALIDA
  2. Establecer el pin 13 ALTO para encender el LED
  3. Esperamos 500 ms (medio segundo)
  4. Establecer el pin 13 BAJO para apagar el LED

Y este es el código completo para ejecutar desde el Ide de Arduino:

void setup() {
pinMode(13, OUTPUT);    
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);  
delay(500);
}

Y ahora vamos a ver el mismo ejemplo , pero ejecutandolo en Javascript por medio de node-js,

Desgraciadamente  si usamos un Arduino o alguno de sus variantes (Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,)   necesitaremos que el programa JavaScript se ejecute en una máquina host que ejecute Node.js. de modo que el programa transmitirá instrucciones básicas de E / S a la placa a través de una interfaz  serie USB , que actuara como un cliente ligero .

El método host-cliente implica la comunicación a través de una API común entre el host y el cliente. El marco Node.js usado con Arduino y placas similares , Johnny-Five, se comunica (de forma predeterminada) con las placas  utilizando un protocolo llamado Firmata, protocolo que permite que los hosts (computadoras) y los clientes (microcontroladores) intercambien mensajes de ida y vuelta en un formato basado en mensajes MIDI. El protocolo Firmata especifica cómo deben ser esos mensajes de comando y datos. La implementación de Firmata de Arduino proporciona el firmware real que puede poner en su tablero para hacer que “hable” Firmata. Toma la forma de un boceto de Arduino que sube al tablero.

Firmata es lo suficientemente popular como para que los bocetos de Firmata que necesita vengan empaquetados con el IDE de Arduino asi que bastara con subir este a Arduino una única vez  ya que  el código javascript  correra en el host usando node.js.

Puede seguir estos pasos para cargar el interfaz correcto de Firmata en su Arduino  para que se pueda utilizar como cliente en una configuración de host-cliente:

Resumidamente estos son los pasos previos para ejecutar el   mismo  ejemplo del led parpadeante  que hemos visto pero   en  javascript en una placa Arduino;

  • En primer lugar  conectar  su Arduino  mediante USB a  su ordenador
  • Lanzar el IDE de Arduino.
  • Asegurarse que esta configurada la version de su placa,  así como el puerto COM  virtual al que esta conectado
  • Acceda al menú Archivo> Ejemplos> Firmata
  • Seleccione StandardFirmataPlus de la lista y despliegue este sw sobre su Arduino

  • Ahora Instale Node.js   en su pc . Funciona  con ultima version 11.3.0  de  64 bit que incluye  npm 6.4 (no olvidar de chequear que se instalen  otros componentes )Este es el link de descarga https://nodejs.org/en/download/ 
  • En la instalación de Node.js, repetimo  no debemos olvidar de chequear que se instalen  otros componentes  pues  con ellos se   instalara automáticamente
    • Python 2.7.3 (http://www.python.org/getit/releases/2.7.3/)
    • Visual Studio Express 2010 de 32 bits (con  las dependencias de C ++)
    • El comando npm
    • Alternativamente si dispusiésemos de npm podríamos instalar ambos entornos  con  npm --add-python-to-path install --global --production windows-build-tools
  • Este pasos anterior ( instalacion de componentes ) es  innecesario  si chequeamos en la instalación  de node.js  pues se instalaran  esos componentes  automáticamente
  • Ahora instalar node-gyp  medianete  el comando  npm install -g node-gyp (esto instalará node-gyp globalmente)                          
  • Ya puede  crear su primer proyecto Johnny-Five, por lo que en primer lugar cree un directorio para él e instale el paquete framework npm, como se muestra en la siguiente lista:
    • < mkdir hello-world
    • < cd hello-world
    • < npm install johnny-five
  • Ejecute  el comando “npm install johnny-five” desde la carpeta del proyecto
  • Ya por fin podemos crear el fichero javascript  con su editor de texto  que contendrá el código en javascript  . 

Realmente estos son los pasos  que tenemos que seguir:

  1. Requerir el paquete johnny-five
  2. Inicializar un nuevo objeto Board que represente a su placa .
  3. Esperar a que el tablero dispare el evento listo
  4. Crear una instancia de un objeto LED en el pin 13 (el pin LED incorporado de Uno)
  5.  Hacer que el LED parpadee cada 500 ms

Este es el código en js :


const five = require(‘johnny-five’);
const board = new five.Board();
board.on(‘ready’, () => {
 const led = new five.Led(13);
   led.blink(500);
});


Guarde el archivo como hello-world.js  y  conecte su Arduino  a un puerto USB en su ordenador  si aún no está conectado.

En una terminal  de windows  vaya al directorio del proyecto y ejecute este comando:

<node hello-world.js


Verá una salida como la siguiente en su terminal ejecutando hello-world.js en una terminal

 

 

Si el LED incorporado parpadea ,!enhorabuena !  !acaba de controlar una placa Arduino con JavaScript!  ¿a que es realmente sencillo?.

Aunque en el caso de la familia Arduino tiene la innegable penalización de necesitar un host para operar , la ventajas de este  modelo son evidentes pues no tenemos que estar constantemente compilando  y  subiendo el sketch con el ide de Arduino ya que el programa corre en host . Ademas  podemos usar un simple editor de texto para cambiar el código en javascript fácilmente

Asimismo el lenguaje javascript ha ido evolucionando hasta un ritmo que no podemos imaginar   incluyendo muchas características que no son soportadas de forma directa desde Arduino

Por ultimo mencionar la autentica potabilidad del código , pues el código que hemos visto en el ejemplo podremos usarlos  en múltiples plataformas  tan diferentes como Raspberry pi, Intel Edison , etc usando siempre el mismo código fuente aun siendo soportado por placas muy diferentes ¿ a que es interesante?

 

 

Placas soportadas

Johnny-Five ha sido probado con una variedad de tableros compatibles con Arduino . 

Para los proyectos que no están basados ​​en Arduino, los complementos de IO específicos de la plataforma están disponibles. Los complementos IO permiten que el código Johnny-Five se comunique con cualquier hardware en cualquier idioma que la plataforma hable.

Como comentábamos   existen diferentes  formas de   ejecutar  el programa Johnny-Five  segun la placa:

  • En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2) ,   Es  facil adivinar qeu este es el mabiente ideal   pues dentro de la placa se oprtan tanto el host como el cliente  por lo qeu no ncesitamos conectarnos con otro dispositivo
  • En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
  • En una máquina host que se comunica por wifi al cliente.: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
  • En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,

Veamos  ahora cada  caso en concreto;

Arduino Uno 

Ambiente 

  • Firmware / Runtime: : StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

SparkFun RedBoard 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

ping

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

 

Arduino leonardo 

Ambiente 

  • Firmware / Runtime:  StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Arduino Mega 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

Arduino Fio 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Arduino Micro 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Mini 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Nano 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Pro Mini 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
ping

BotBoarduino 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

chipkit uno32 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire
Paso a paso
Serial / UART
Dac no
ping

Spider Robot Controller 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere  tetehering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

DFRobot Romeo 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Teensy 3 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART no
Dac no
ping

BeagleBone Black 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

CHIP 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo no
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Ping no

Blend Micro v1.0 

Ambiente 

  • Complemento IO: BlendMicro-IO ( instrucciones adicionales )
  • Firmware / Runtime: BLEFirmata
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de Bluetooth a la placa, que actúa como un cliente ligero .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Ping no

 Electric Imp  April 

Ambiente 

Plataforma específica 

  • Requiere una conexión WiFi conectada a Internet y está sujeto a la limitación de la tasa de solicitud por parte del servidor de Electric Imp API.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C no
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Intel Galileo Gen 1 

Ambiente 

Plataforma específica 

  • Las compilaciones que no son IoTKit ya no son compatibles.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Intel Galileo Gen 2 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

Intel Edison Arduino 

Ambiente 

Plataforma específica 

  • El hardware es capaz de soportar solo 4 salidas PWM. Como resultado, los enlaces nativos no admiten PWM en los pines 10 y 11.
  • Aunque Galileo-io / Edison-io / Joule-io todavía no admite comunicaciones en serie, puede enlazar a / dev / ttyFMD1 en la placa Edison Arduino usando el módulo serialport .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

Intel Edison Mini 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

SparkFun Edison GPIO Block 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

SparkFun Arduino Block

Ambiente 

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART no
Dac no
ping no

Intel Joule 570x (Carrier Board) 

Ambiente 

Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

LightBlue Bean

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Linino uno 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

pcDuino3 Dev Board 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo no
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Pinoccio Scout 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C no
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Raspberry Pi 3 Modelo B 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Raspberry Pi 2 Modelo B 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Silbido no

Raspberry Pi Zero 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Raspberry Pi Model A Plus 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Frambuesa Pi Modelo B Plus 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Silbido no

Raspberry Pi Modelo B Rev 1 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Ping no

Raspberry Pi Modelo B Rev 2 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no


Particle Core (Spark Core)

Ambiente 

Plataforma específica 

  • Los temporizadores se comparten en grupos: Temporizador 2: A0 , A1 , Temporizador 3: A4 , A5 , A6 , A7 , Temporizador 4: D0 , D1
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping


Particle Photon

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
ping no
Silbido

Sparkfun Photon RedBoard 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping

Tessel 2 

Ambiente 

Plataforma específica 

  • El soporte de servo se proporciona a través de componentes I2C (por ejemplo, PCA9685 )
  • DAC está limitado a Puerto B, Pin 7
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac
ping no

Mas información en  http://johnny-five.io/platform-support/

Anuncios

Nueva protección antimalware de Windows


Windows Defender   en su características contra amenazas  avanzadas , como novedad , ofrece una característica muy interesante de protección antimalware : Bloqueo a primera vista ,característica  que ofrece una nueva  manera de detectar y bloquear nuevo malware en segundos.

Desgraciadamente no hay ninguna configuración individual específica en System Center Configuration Manager para habilitar o deshabilitar el bloqueo a primera vista. Se habilita de manera predeterminada cuando la configuración de requisitos previos está definida correctamente  (donde es  de destacar que el antivirus windows defender este activo y que la licencia del  sistema operativo este vigente).

En la mayoría de los casos, esta configuración de requisitos previos se habilita de manera predeterminada así que esta característica se ejecutara sin necesidad de intervención alguna ( de hecho se puede usar la configuración de Directiva de grupo para confirmar que la característica está habilitada ), pero si no esta seguro, es muy sencillo confirmar que el bloqueo a primera vista está habilitado con la aplicación de seguridad de Windows  como vamos a ver a continuación.

Bloqueo a primera vista está habilitada automáticamente siempre y cuando la protección basada en la nube y el envío automático de muestras estén activados.Obviamente también suponemos que Windows Defender esta activo para lo cual debe tener el equipo con licencia del sistema operativo  activa y disponer de conectividad: 

En efecto, se puede confirmar que el bloqueo a primera vista está habilitado en la configuración de Windows , Para confirmar que el bloqueo a primera vista está habilitado en clientes individuales basados en windows 10, puede seguir estos pasos:

  1. Abra la aplicación de seguridad de Windows, y haga clic en el icono de escudo en la barra de tareas.

  2. Haga clic en el icono de protección contra Virus y contra amenazas (o en el icono de escudo en la barra de menús de la izquierda)

  3. A continuación, haga clic en configuración de protección contra Virus y amenazas:                                       

  4. Confirme que la Protección basada en la nube y el Envío de muestras automático se han establecido en Activado.(en la imagen del ejemplo se ve en un pequeño circulito en verde con la “v” de verificado

 

Por cierto ,en Windows 10, versión 1803, bloqueo a primera vista puede bloquear ahora no portátiles archivos ejecutables (por ejemplo, JS, VBS o macros), así como los archivos ejecutables.

 

Funcionamiento

Cuando el Antivirus de Windows Defender encuentra un archivo sospechoso pero no detectado, consulta en la nube de Azure el servicio  de protección de la nube. El back-end de nube aplica heurísticas, aprendizaje automático y análisis automatizado del archivo para determinar si los archivos son malintencionados o limpios.

Bloqueo a primera vista solo usa el back-end de protección en la nube para los archivos ejecutables y portátiles que no son los archivos ejecutables que se descargan de Internet o que se originan desde la zona de Internet. Se comprueba un valor de hash del archivo .exe a través del back-end de la nube, para determinar si se trata de un archivo no detectado anteriormente.

Si el back-end de nube no puede determinarlo, Antivirus de Windows Defender bloqueará el archivo y se cargará una copia en la nube. La nube realizara un análisis adicional para llegar a una determinación antes de que permita la ejecución del archivo o lo bloqueará en todos los encuentros futuras, dependiendo de si se determina que el archivo es malintencionado o seguro.

En muchos casos, este proceso puede reducir el tiempo de respuesta de  nuevo malware de horas a segundos.

 

Validar las conexiones entre la red y la nube

Existe una  serie de url’s asocidos a este  servicio de Windows Deefender a los que debe asegurarse el acceso desde el equipo  ( es decir es una especie de lista blanca las direcciones URL) ,

En la tabla siguiente se  pueden ver  los serviciosa, las descripciones   y por supuesto sus direcciones URL asociadas a los que la red tiene que poder conectarse. 

Servicio Descripción Dirección URL
Servicio de protección entregada en la nube del Antivirus de Windows Defender, también conocido como Microsoft Active Protection Service (MAPS) Usado por el Antivirus de Windows Defender para proporcionar protección entregada en la nube *. wdcp.microsoft.com
*. wdcpalt.microsoft.com
*. wd.microsoft.com
Servicio Microsoft Update (MU) Inteligencia de seguridad y las actualizaciones de productos *.update.microsoft.com
Inteligencia de seguridad de las actualizaciones de ubicación de descarga alternativa (ADL) Ubicación alternativa para las actualizaciones de inteligencia de seguridad de Antivirus de Windows Defender si la inteligencia de seguridad instalada desactualizadas (7 días o más) encuentra detrás de *.download.microsoft.com
Almacenamiento de envío de malware Cargar la ubicación de los archivos enviados a Microsoft a través del envío del formulario o el envío de muestra automático *.blob.core.windows.net
Lista de revocación de certificados (CRL) Usado por Windows al crear la conexión SSL a MAPS para actualizar la CRL http://www.microsoft.com/pkiops/crl/
http://www.microsoft.com/pkiops/certs
http://crl.microsoft.com/pki/crl/products
http://www.microsoft.com/pki/certs
Almacén de símbolos Usado por el Antivirus de Windows Defender para restaurar ciertos archivos críticos durante los flujos de corrección https://msdl.microsoft.com/download/symbols
Cliente de telemetría universal Usado por Windows para enviar datos de diagnóstico de cliente; Antivirus de Windows Defender lo usa para fines de supervisión de calidad de productos Esta actualización usa SSL (puerto TCP 443) para descargar manifiestos y cargar datos de diagnóstico en Microsoft, usando los siguientes puntos de conexión DNS:
  • vortex-win.data.microsoft.com
  • settings-win.data.microsoft.com

Por desgracia no podría usar un archivo de configuración automática de proxy (.pac) para probar las conexiones de red a estas direcciones URL por lo que tendrá que comprobar sus servidores proxy y cualquier filtrado de herramientas manualmente para garantizar la conectividad de red.

Para comprobar  si en ese equipo se llegan a estas url’s ,  Microsft proporciona la utilidad  mpcmdrun.exe que se identifica a sí mismo como el Microsoft Malware Protection Command Line Utility siendo  parte del Windows Defender de Microsoft.  Esta utilidad al conectarse a internet, puede parecer sospechoso, pero usualmente es un programa del propio Microsoft  que solo funcionará en Windows 10, versión 1703 o posterior.

Use el argumento siguiente con la utilidad de línea de comandos (mpcmdrun.exe) de Antivirus de Windows Defender para comprobar que la red puede comunicarse con el servicio de nube de Antivirus de Windows Defender:

MpCmdRun -ValidateMapsConnection

Para ejecutar esta utilidad , deberá abrir un interfaz de comandos   ( ejecutar comando cmd)   y  ejecutándolo como administrador del símbolo del sistema(hagz clic con el botón secundario en el elemento del menú Inicio, en Ejecutar como administrador y en  en el mensaje sobre permisos.  Por cierto , para ejecutarlo debería situarse en  %ProgramFiles%\Windows Defender\  ( es decir normalmente en  C:\Program Files\Windows Defender\:

 

Si por alguna razón falla, tendrá  que asegurarse de que no existen reglas de filtrado de red o firewall que puedan denegar el acceso a estas direcciones URL, Incluso puede que tenga que crear una regla de permiso específicamente para ellas

Comprobado  que su equipo tiene conectividad con los servidores de Windows Defender,  podemos probar la efectividad del proceso  descargándonos un archivo de prueba: de este modo el Antivirus de Windows Defender detectará y bloqueará si está conectado correctamente a la nube.

Obviamente este archivo no es un fragmento real de malware. Es un archivo falso que está diseñado para probar si está conectado correctamente a la nube y si funcionan adecuadamente los servicios de Windows Defender antimalware

El ejemplo se puede descargar  visitando el siguiente vínculo:

http://aka.ms/ioavtest

Si estás conectado correctamente, verá una advertencia de notificación de Antivirus de Windows Defender:

 

Si usa Microsoft Edge o Internet Explorer  también verá un mensaje de notificación muy similar al anterior

Si le interesa ver el detalle ,también verá una detección de amenazas en cuarentena en la sección de historial de exámenes en la aplicación de seguridad de Windows:

  1. Abra la aplicación de seguridad de Windows haciendo clic en el icono de escudo en la barra de tareas o buscando Defender en el menú Inicio.
  2. Haga clic en el icono Protección contra virus y amenazas (o en el icono de escudo de la barra de menús de la izquierda) y, después, en la etiqueta Scan history:
  3. En la sección Quarantined threats, haga clic en la etiqueta Ver historial completo para ver el malware falso detectado:

 

Asimismo , el registro de eventos de Windows también mostrará el id. de evento 2050 del cliente de Windows Defender.

Para  terminar, windows defender, se encargara de eliminar el propio fichero descargado de prueba pues este contenía el malware que ha sido detectado  , analizado  y puesto en cuarentena  por este nuevo servicio de Windows Defender:

 

Por cierto las versiones de Windows 10 anteriores a la versión 1703 tienen una interfaz de usuario diferente pero en esencia las opciones de estos menús de windows defender son muy similares

 

Mas información en https://docs.microsoft.com/es-es/windows/security/threat-protection/windows-defender-antivirus

 

Como ver la previsión del tiempo desde Raspberry Pi ( parte 2)


En un post anterior de como ver la previsión del tiempo desde una Raspberry Pir veiamos como  podemos ver la previson del tiempo en nuestra  Rasperry Pi ,  usando mediante el comando curl y  la utilidad  de  Wttr.in  , un servicio de previsión del tiempo orientada a la consola que admite varios métodos de representación de información tal como secuencias ANSI de  terminal,  estando orientado tanto para clientes de consola HTTP (Rizo, httpie o wget), como  para navegadores web en HTTP  , o incluso para visualizadores gráficos en formato PNG .

Previamente antes de lanzar el comando ,para que se visualice correctamente la salida de texto de este servicio ,  abriremos la consola de terminal   ajustaremos la ventana   del valor  por defecto (80 x25 ) a  130 x24 ,  por lo que nos iremos a Editar –>Preferencias –>Mostrar y seleccionaremos como  ventana por defecto los valores  al menos de  130 x 24    y cerraremos la ventana  del Terminal

Nuevamente abriremos otra consola de shell  en la Raspberry Pi  y escribiremos : 

curl wttr.in

Como resultado desde la misma consola veremos  un informe en  tiempo real para su ubicación   sin haber tenido  que especificar nada  más ,  ya  que  es   sensible tanto para la fecha actual como para la localización:

 

Sin duda este  servicio es muy interesante , pero  ademas permite una personalizacion muy alta como vamos a ver a continuación 

Unidades de tiempo

Por defecto las unidades USCS se utilizan para las consultas de los Estados Unidos y el sistema métrico para el resto del mundo. Puede reemplazar este comportamiento agregando o a una URL como esta:?u?m


$ curl wttr.in/Almeria?m

 

Formatos de salida

wttr.in actualmente soporta tres formatos de salida:

  • ANSI para el terminal;
  • ANSI para el modo de terminal, una línea;
  • HTML para el navegador;
  • PNG para los espectadores de la gráficos.

Los formatos ANSI y HTML son seleccionados basándose en la cadena User-Agent. El formato PNG se puede forzar mediante la adición al final de la consulta:.png

$ wget wttr.in/Almeria.png

Puede utilizar todas las opciones con el formato PNG como una URL, pero hay que separarlos con en vez de y:_?&

$ wget wttr.in/Paris_0tqp_lang=fr.png

Opciones para el formato PNG:

  • t (transparencia);transparency=150
  • transparencia = 0..255 para un nivel de transparencia personalizada.

La transparencia es una característica útil cuando PNGs de tiempo se utilizan para agregar datos a los cuadros:

$ convert source.jpg <( curl wttr.in/Oymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg

En este ejemplo:

  • source.jpg -archivo de código fuente;
  • target.jpg -archivo de destino;
  • Oymyakon -nombre de la localización;
  • tqp0 -Opciones (recomendados).

Una línea de salida

Para el formato de salida de una línea, especifique los parámetros adicionales:format

$ curl wttr.in/Almeria?format=3
Almeria: 🌦 +11⁰C

Formatos preconfigurados disponibles: 1, 2, 3, 4 y el formato personalizado usando la notación porcentual (véase abajo).

Puede especificar varias ubicaciones separadas (para repetir consultas)::

$ curl wttr.in/Almeria:Granada:Jaen?format=3
Almeria: 🌦 +11⁰C

O para procesar todas las consultas de este a la vez:

$ curl 'wttr.in/{Almeria,Granada,Jaen}?format=3'
Almeria: 🌦 +14⁰C
Granada: 🌦 +14⁰C
Jaen: 🌦 +14⁰C

Para especificar su propio formato personalizado, utilice el especial-notación:%

    c    Weather condition,
    t    Temperature,
    w    Wind,
    l    Location,
    m    Moonphase 🌑🌒🌓🌔🌕🌖🌗🌘,
    M    Moonday,

Por lo tanto, estas dos llamadas son las mismas:

    $ curl wttr.in/Almeria?format=3
    Almeria: ⛅️ +14⁰C
    $ curl wttr.in/Almeria?format="%l:+%c+%t"
    Almeria: ⛅️ +14⁰C

Tenga en cuenta, que cuando se utiliza en, tiene que escapar con %, es decir, escribir allí en vez de.tmux.conf%%%%%

En programas, que están consultando el servicio automáticamente (por ejemplo tmux), es mejor utilizar un intervalo de actualización razonables. En tmux, puede configurarlo con.status-interval

Si varias ubicaciones separadas, se especifican en la consulta, especifique el período de actualización como un parámetro de consulta adicional::period=

set -g status-interval 60
WEATHER='#(curl -s wttr.in/London:Stockholm:Moscow\?format\="%%l:+%%c%%20%%t%%60%%w&period=60")'
set -g status-right "$WEATHER ..."

Fases de la luna

wttr.in puede utilizarse también para comprobar la fase de la luna. Este ejemplo muestra cómo ver la fase lunar actual:

$ curl wttr.in/Moon

Obtener la fase lunar para una fecha determinada mediante la adición de:@YYYY-MM-DD

$ curl wttr.in/[email protected]

La información de la fase de luna utiliza pyphoon como su back-end.

Internacionalización y localización

wttr.in es compatible con nombres de ubicaciones multilingüe que pueden especificarse en cualquier idioma del mundo (puede ser sorprendente, pero muchos lugares en el mundo no tienen un nombre en inglés).

La cadena de consulta debe especificarse en Unicode (hexadecimal codificado o no). Espacios en la cadena de consulta deben ser reemplazados por:+

$ curl wttr.in/станция+Восток
Weather report: станция Восток

               Overcast
      .--.     -65 – -47 °C
   .-(    ).   ↑ 23 km/h
  (___.__)__)  15 km
               0.0 mm

El lenguaje utilizado para la salida (excepto el nombre de la ubicación) no depende del idioma de entrada y es inglés (por defecto) o el idioma preferido del navegador (si la consulta fue emitida desde un navegador) que se especifica en la consulta cabeceras ().Accept-Language

El lenguaje se puede establecer explícitamente al usar a clientes de consola mediante las opciones de línea de comandos como este:

curl -H "Accept-Language: fr" wttr.in
http GET wttr.in Accept-Language:ru

El idioma puede ser forzado mediante la opción:lang

$ curl wttr.in/Almeria?lang=es

La tercera opción es elegir el idioma utilizando el nombre DNS utilizado en la consulta:

$ curl de.wttr.in/Almeria

wttr.in está actualmente traducido a 54 idiomas, y el número de idiomas está en constante crecimiento.

Ver /:translation para aprender más sobre el proceso de traducción, para ver la lista de idiomas soportados y colaboradores, o saber cómo puede ayudar a traducir wttr.in en tu idioma.

 

Instalación en local

Tambien  puede instalar este servicio de previsión de tiempo en su en nuestra  Rasperry Pi , 

Para instalar la aplicación estos son los pasos a seguir:

  1. Instalar dependencias externas
  2. Instalar dependencias de Python utilizadas por el servicio
  3. Obtener una clave de API de WorldWeatherOnline
  4. Configurar wego
  5. Configurar wttr.in
  6. Configurar el servicio de HTTP-frontend

Instalar dependencias externas

wttr.in tiene las siguientes dependencias externas:

  • golang, dependencia de wego
  • wego, cliente tiempo para terminal

Después de instalar golang, instalar:wego

$ go get -u github.com/schachmat/wego
$ go install github.com/schachmat/wego

Instalar dependencias de Python

Requisitos de Python:

  • Flask
  • geoip2
  • geopy
  • requests
  • gevent

Si desea obtener informes meteorológicos como archivos PNG, también debe instalar:

  • PIL
  • Pyte (> = 0,6)
  • fuentes necesarias

Puede instalar la mayoría de ellos utilizando.pip

Si se utiliza:virtualenv

$ virtualenv ve
$ ve/bin/pip install -r requirements.txt
$ ve/bin/pip bin/srv.py

Además, es necesario instalar la base de datos de geoip2. Puede utilizar una base de datos libre GeoLite2 que puede ser descargado (http://dev.maxmind.com/geoip/geoip2/geolite2/).

Obtener una clave de WorldWeatherOnline

Para obtener una clave de API de WorldWeatherOnline, se debe registrar aquí:

https://developer.worldweatheronline.com/auth/register

Configurar wego

Después de tener una clave de WorldWeatherOnline, usted puede configurar:wego

$ cat ~/.wegorc 
{
    "APIKey": "00XXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "City": "London",
    "Numdays": 3,
    "Imperial": false,
    "Lang": "en"
}

El parámetro se omite.City~/.wegorc

Configurar wttr.in

Configurar las siguientes variables de entorno que definen la ruta de acceso a la instalación local, a la base de datos de GeoLite y a la instalación. Por ejemplo:wttr.inwego

export WTTR_MYDIR="/home/igor/wttr.in"
export WTTR_GEOLITE="/home/igor/wttr.in/GeoLite2-City.mmdb"
export WTTR_WEGO="/home/igor/go/bin/wego"
export WTTR_LISTEN_HOST="0.0.0.0"
export WTTR_LISTEN_PORT="8002"

Configurar el servicio de HTTP-frontend

Se recomienda que también configurar el servidor web que se utilizará para acceder al servicio:

server {
    listen [::]:80;
    server_name  wttr.in *.wttr.in;
    access_log  /var/log/nginx/wttr.in-access.log  main;
    error_log  /var/log/nginx/wttr.in-error.log;

    location / {
        proxy_pass         http://127.0.0.1:8002;

        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $remote_addr;

        client_max_body_size       10m;
        client_body_buffer_size    128k;

        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;

        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;

        expires                    off;
    }
}

 

Mas información en  https://github.com/chubin/wttr.in

Como ver los canales de la TDT en su movil


Recientemente   han salido al mercado pequeños sintonizadores de TDT  que podemos conectar mediante el conector OTG a nuestro dispositivo Android , y gracias a un  sw de recepción de TDT podremos ver en nuestro equipo Android los canales de DVB-T que nos corresponda a nuestra región

Aunque la idea pueda parecer fantástica , lo cierto es no todos los fabricantes especifican que se requerirá de una buena antena  así como de  una buena recepción de señal de RF  para poder visionar sin problemas  la mayoría de los canales disponibles  lo cual no siempre es fácil de tener 

Por ultimo hay dos inconvenientes importantes, en primer lugar el   precio del dispositivo ( un receptor  de  calidad suele rondar  los 50€) y en segundo lugar  debido a que la conexión se hacer a través del propio OTG , el terminal  Android  consumirá un extra de batería  acortando con ello  la autonomía 

Vemos como los sintonizadores de TDT para Android no son ninguna panacea   si bien no consumirán datos  aunque con un alto coste del aparato , de  modo que nos preguntamos si es posible disfrutar de estos canales en nuestro terminal android sin ningún hardware adicional

Conceptronic CTVDIGANG - Receptor  con Android, color negro

Pues querido lector ,  en efecto se  pueden visionar  los canales de DVT-T de su región  gracias al fantástico reproductor multimedia multiproposito  Kodi   y unas simples actuaciones   , asi  que veamos paso a paso como hacerlo

 

Instalación del sw

 

Lo primero es instalar Kodi en su smartphone o tableta Android para que así te sirva como reproductor multimedia de emisiones online. En sí Kodi no es más que eso, un reproductor. Abierto, open source y administrado por la XBMC Foundation para que sea lo más universal posible.

Kodi es tan abierto y libre de piratería que se puede descargar libremente desde la Google Play Store, para ello  baste con que lo busque en Google  Play o  bien  pulse sobre el siguiente enlace.

https://play.google.com/store/apps/details?id=org.xbmc.kodi

 

La versión oficial Kodi no contiene ningún contenido de ningun tipo  lo que significa que se debe proporcionar su propio contenido desde una ubicación de almacenamiento local o remoto, DVD, Blu-Ray o cualquier otro soporte de medios de comunicación por parte del propietario. Además Kodi le permite instalar plugins de terceros que pueden proporcionar acceso a contenido que está disponible gratuitamente en la página web oficial del proveedor de contenido. Cualquier otro medio de observación de  contenidos ilegales  que de otro modo se pagaría  no recibe la aprobación  por el equipo de Kodi.

Una vez hayamos instalado Kodi en nuestro terminal  veremos uan panatlla similar a la siguinte:

 

Captura de pantalla



Ahora lo que haremos es importar una lista IPTV o de emisiones a través de Internet. Dicha lista es de canales públicos, por  lo que en ningún momento se tendrá acceso a canales a los que se puede acceder previo pago

Para añadir los canales de televisión en abierto  a su Kodi solo necesitas realizar los siguientes pasos:

Acceda  desde un pc  a  desde  un navegador al siguinte en lace    https://github.com/LaQuay/TDTChannels ( también buscando en Github tdtchannels)   . A continuación  descargue la lista de canales M3u8 completa  pulsando en el link Descargar el .m3u8 completo.
El fichero no es demasiado grande /48,5kb)  y se llama  channels.m3u8  y debera copiarlo en la sd de nuestro terminal Android ( móvil o tableta)



Ahora en el terminal abra Kodi y despliegue el menú “Add-ons” del lateral.Pulse en “My add-ons” para bucear en los añadidos que vienen de serie con Kodi

 Busque “PVR clients” y localize “PVR IPTV Simple Client” y pulse en él.

Ahora pulse el boton “Configure” .( aparecen una serie de botones deslizantes)




En la pestaña “General” vaya  a “Location” y en el combo seleccione  Local Path /include local  netwoek   ya que por defecto es remote Path (internet address)

Pulsar ahora abajo de la pestaña de location en M3U Play List Path y  navegue por el  sistema de  ficheros  , busque el archivo M3u8 que descargo desde su pc  a la sd  y selecciónelo

Finalmente pulse ok a la derecha de  la ventana del todo




Ahora de vuelta  a la ventana de configuración  asegúrese  de marcar como “Enable” el cliente IPTV que estaba configurando pues por defecto incluso habiendo seleccionado el fichero m3u es disable. En cuanto lo pulse vera que automáticamente se cargan los canales de la lista m3u.





Finalmente ,   ya solo tiene que volver al menú principal de Kodi y entrar en “TV”: en seguida  debería  ver que están  accesibles todos los canales de la TDT , lo cuales  con una pulsación podemos disfrutar viendo su contenido en tiempo real desde nuestro terminal movil.




La visualización de los canales está supeditada a las conexiones de red y también a que los canales permanezcan activos pues es habitual que algunos se caigan de la emisión, por lo que debe  actualizar esta lista M3u8 conforme se actualice en el GitHub.

Por cierto dado que Kodi  esta disponible para un amplia cantidad de plataformas  también usando de los sencillos pasos que hemos comentado  , también podremos disfrutar de estos desde otros dispositivos como por ejemplo nuestro pc 



 

Cómo conseguir gratuitamente Fusion 360


Es cierto que existen programas de  diseño de  piezas en 3d  gratuitos de mucha calidad como el sw Blender ( antes de pago  y ahora gratuito ) o del famoso OpenScad, programa del que hemos hablado en este  blog en varias ocasiones, pero hoy vamos a hablar Fusion 360 , una herramienta del famoso fabricante AutoDesk  destinado a ser a ser  software 3D CAD / CAM con capacidades profesionales, pero  de modo más amigable con el usuario que otros programas profesionales de modelado en 3D de cuerpo sólido incluso del  propio AutoDesk

Este sw  es muy completo , pues en contraposición de otros  programas abarca todo el proceso de planificación, pruebas y ejecución de un diseño 3D , siendo por elllo  uno de los mejores programas de diseño 3D para especialistas en diseño 3D e ingeniería . Además, es capaz de simular la construcción de los componentes diseñados, así como las tensiones a las que se enfrentarán una vez que se ponen a su uso.

Por  supuesto  cuenta  con potentes herramientas paramétricas y herramientas analíticas de malla que se adaptan a la mayoría de los retos en el diseño industrial.

Fusion 360 tiene un excelente soporte para la impresión 3D, aunque si bien es cierto que  se pueden  tratar con el famoso programa Cura  . Los modelos  que tratemos también se pueden importar directamente en Autodesk Printing Studio, que guía cómodamente al usuario hacia  un archivo imprimible en 3D. Incluso puede encontrar las herramientas necesarias para reparar la malla, si es necesario, y una vista previa del proceso de impresión.

En el siguiente vídeo podemos ver un ejemplo de la potencia de este programa

Por cierto , el ejemplo  que podemos ver en el vídeo , se puede descargar desde  https://gallery.autodesk.com/fusion360

Este programa es de pago par su uso profesional , pero afortunadamente  existe una licencia gratuita tanto para su uso no profesional  para los aficionados  como para su uso en educación. Veamos los pasos a seguir para  obtener un acopia legal gratuita de este estupendo programas lider en modelado de piezas en 3d:

Instalación Fusion 360

En primer ligar   tendrá que registrase en la web de Autodesk  ,  si es que  aun no tiene cuenta en AutoDesk

Ahora nos iremos  al   apartado de descarga de  la versión gratuita de 30 días   desde el sitio web de Autodesk o el sitio web de Autodesk Education.

Nos pedirá aun logados en la web algunos datos básicos  como el nombre , e-mail  y un teléfono  y en seguida  podemos empezar a descargar el sw

Una vez descargado ejecutaremos el instalador  . Para activar la licencia de nueva empresa o la licencia educativa, debe

  • Las licencias de nueva empresa o aficionado gratuitas permiten acceder a Fusion 360 con una suscripción anual tras finalizar el período de prueba. Puede usar este tipo de licencia si la suya es una pequeña empresa con ingresos inferiores a 100.000 $ al año (o una cantidad equivalente). También puede usarla si es un aficionado que usa Fusion 360 para fines no comerciales.
  • Las licencias educativas pueden tener dos versiones. La licencia educativa que se muestra en la primera sección siguiente es una licencia individual. Para las instituciones educativas, puede que sea mejor utilizar la instalación para clases en grupo. Si es docente o administrador y desea instalar Fusion 360 en su centro educativo, visite la segunda sección para obtener instrucciones sobre la instalación para clases.

Cuando inicia Fusion 360, se muestra un reloj de cuenta atrás de una versión de prueba. Desea saber cómo seleccionar la opción de licencia de nueva empresa o aficionado gratuita o de licencia educativa gratuita.

Botón para suscribirse en Fusion 360

Para activar la licencia de aficionado,  nueva empresa o la licencia educativa (individual):

  1. Seleccione el contador de versiones de prueba en la barra de herramientas superior de Fusion 360.
  2. En el siguiente cuadro de diálogo, indique para qué desea utilizar Fusion 360. La opción “Continuar” estará disponible tras seleccionar un uso principal.Imagen añadida por el usuario
  3. Después de hacer clic en “Continuar”, aparecerá el cuadro de diálogo siguiente. Haga clic en “Comprar ahora” para comprar Fusion 360. Esta acción le dirigirá al sitio web de Fusion 360.Para registrarse y obtener una licencia gratuita, haga clic en la opción para descubrir si cumple los requisitos.Imagen añadida por el usuario
  4. Después de hacer clic en la opción para descubrir si cumple los requisitos, verá la pantalla siguiente. Seleccione el tipo de licencia que desea solicitar.

Imagen añadida por el usuario

Después de seleccionar el tipo de licencia, Fusion 360 le solicitará la información adecuada. Si seleccionó una licencia individual o de aficionado, aparecerá el cuadro de diálogo siguiente:

Imagen añadida por el usuario

Tras rellenar la información necesaria, podrá hacer clic en el botón Continuar. De este modo, se completará el proceso de registro para obtener una licencia personal o de aficionado.

Si seleccionó la licencia de nueva empresa en el paso 4, aparecerá el cuadro de diálogo siguiente:

Imagen añadida por el usuario

Tras rellenar la información necesaria, el botón “Continuar” se mostrará en azul, lo cual le permitirá completar el proceso de registro para obtener una licencia de nueva empresa.

Después de completar los procedimientos para estudiantes o nuevas empresas, aparecerá el cuadro de diálogo siguiente. De este modo, podrá ver la licencia que ha registrado y, si hace clic en la opción para comenzar a utilizar Fusion 360, se abrirá el programa de nuevo.

Imagen añadida por el usuario

!Enhorabuena  ya puede disfrutar de este programa sin ninguna limitación temporal

Si no le convence este programa , hay  otros  programas gratuitos de modelado. Algunos programas de modelado en 3d  mas famosos :

Y  en esta lista , veremos  varios enlaces de bibliotecas de objetos en formato stl:

Shell script: programas externos, E/S y dirección de shell


Bash , c-shell  o simplemente shell scripting es  un lenguaje de script  creado a fines de la década de 1980 por un programador llamado Brian Fox, que trabajaba para la Free Software Foundation . Fue pensado como una alternativa de software libre para el shell Bourne (de hecho, su nombre es un acrónimo de Bourne Again SHell ), e incorpora todas las características de ese shell, así como nuevas características como la aritmética de enteros y el control de trabajo

Bash es un “shell de Unix”, es decir  una interfaz de línea de comandos para interactuar con el sistema operativo por lo que está ampliamente disponible, siendo el shell predeterminado en muchas distribuciones de GNU / Linux y en Mac OSX, con puertos existentes para muchos otros sistemas.

En post anteriores hemos hablado en una primera aproximación  al lenguaje c-sheall  con el primer ejemplo famoso de  Hello world y avanzando comandos ,tuberías ,variables ,parámetros y salidas posibles y en un segundo post  sobre el  uso de las Tuberías , sustitución de comandos,operadores ,asignación de variables ,Bucles , literales , variables   y aritmética no entera

Asimismo   en un  post  anterior continuamos  avanzando en el conocimiento de este lenguaje con el uso de las funciones, subshells  y las  variables de entorno

En esta ocasión vamos a ver el uso de funciones de shell, funciones de e/s y la redirección shell

close up code coding computer

 

 

 

Funciones de shell 

Programas externos

Bash, como un shell, es en realidad un lenguaje de “pegamento”. Ayuda a los programas a cooperar entre sí, y se beneficia de ello. Siempre busque en Internet lo que desea: hay muchas utilidades de línea de comandos disponibles.

Usando whiptail 

Whiptail es un programa que permite que los scripts de shell muestren cuadros de diálogo al usuario con fines informativos, o para obtener información del usuario de manera amigable. Whiptail se incluye de forma predeterminada en Debian y en varias otras distribuciones de GNU / Linux.

Desde el diccionario GNU / Linux : whiptail es un reemplazo de “diálogo” que usa newt en lugar de ncurses.
Desde su README: whiptail está diseñado para ser compatible con el cuadro de diálogo (1), pero tiene menos funciones: algunos cuadros de diálogo no están implementados, tales como caja de cola, caja de tiempo, caja de calendario, etc.

Usando man, info y ayuda 

Estos tres programas son donde puede encontrar ayuda o referencia de. man muestra las páginas de manual de roff , la información muestra las documentaciones de texinfo, mientras que la ayuda muestra las ayudas integradas.

Al añadir --long-ayuda , --help o --usage a un programa de línea de comandos puede también le da la información de uso. Posibles sinónimos incluyen -H y -h .

Solo prueba estos:

man --help
man man

info --help
man info
info info

help help

Presionar h en las interfaces de man and info también puede darle alguna dirección.

Entrada / Salida

La lectura incorporada 

De la ayuda leída :

read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

Lea una línea de la entrada estándar y divídala en campos. La lectura es excelente tanto para las entradas del usuario como para la lectura de entradas / tuberías estándar.

Un ejemplo de entrada de usuario:

 # 'readline' pronuncie el nombre de la variable predeterminada 
read -e -p "Haga esto:" -i "destruye el  comando " commmand

echo  "$command "

O incluso más simple:

pause ()  {  read -n 1 -p "Presione cualquier tecla para continuar ..."  ;  }

Ejemplo de nivel de Hola-mundo de la operación stdout:

 echo  'Hola mundo!'  | {  read hola
 echo  $hola  }

Solo se creativo. Por ejemplo, en muchos sentidos, leer puede reemplazar el látigo. Aquí hay un ejemplo, extraído del script de shell de Arthur200000 :

# USAGE 
# yes_or_no "title" "text" width ["yes text"] ["no text"] 
# INPUTS 
# $ LINE = (y / n) - Si debemos usar el estilo de entrada basado en líneas (lectura) 
# $ _DEFAULT = (opcional) - El valor predeterminado para leer yes_or_no ()  { 
yes_or_no() {
  if [ "$LINE" == "y" ]; then
    echo -e "\e[1m$1\e[0m"
    echo '$2' | fold -w $4 -s
    while read -e -n 1 -i "$_DEFAULT" -p "Y for ${5:-Yes}, N for ${6:-No}[Y/N]" _yesno; do
      case $_yesno in
        [yY]|1)
          return 0
          ;;
        [nN]|0)
          return 1
          ;;
        *)
          echo -e "\e[1;31mINVALID INPUT\x21\e[0m"
       esac
  else whiptail --title "${1:-Huh?}" --yesno "${2:-Are you sure?}" ${3:-10} ${4:-80}\
         --yes-button "${5:-Yes}" --no-button "$6{:-No}"; return $?
  fi
}
# USAGE  # user_input var_name ["title"] ["prompt"] [altura] [ancho] 
 # ENTRADAS  # $ LINE = (y / n) - Si debemos usar el estilo de entrada basado en líneas (lectura) 
 # $ _DEFAULT = ( opcional) - El valor predeterminado para leer; por defecto a nada. user_input () 
user_input(){
  if [ "$LINE" == "y" ]; then
    echo -e "\e[1m${2:-Please Enter:}\e[0m" | fold -w ${4:-80} -s
    read -e -i "${_DEFAULT}" -p "${3:->}" $1
  else
    eval "$1"=$(whiptail --title "$2" --inputbox "$3" 3>&1 1>&2 2>&3)
  fi
}
 

Redirección de shell 

En shells, la redirección se usa para la E / S de archivos. El uso más común de es redirigir secuencias estándar (stdin, stdout y stderr) para aceptar la entrada de otro programa a través de tuberías, para guardar la salida del programa como un archivo, y para suprimir la salida del programa redireccionando una secuencia a / dev / null .

Índice de símbolos 

Símbolo Explicación
!
  • Lógicamente niega el estado de salida de una tubería. Por ejemplo, si grep YES votes.txt devuelve 0 , entonces ! grep YES votes.txt devuelve 1 , pero de lo contrario es equivalente.
  • También soportado por el [...] builtin, y dentro de expresiones condicionales. Por ejemplo, si [[-e file.txt]] es verdadero, entonces [[! -e archivo.txt]] es falso.
  • También se admite en expresiones aritméticas. Por ejemplo, si $ i es distinto de cero, entonces $ ((! I)) es 0 .
  • Vea también #! abajo.
"..."
  • Cita un argumento (o parte de un argumento) para que no esté dividido por espacios en blanco en múltiples argumentos, pero sin impedir la expansión de parámetros y la sustitución de comandos internamente.
  • Véase también $ "..." a continuación.
#
  • Introduce un comentario (que continúa hasta el final de la línea). Por ejemplo, el comando foo bar baz # bip es equivalente al comando foo bar baz , porque el comentario # bip se elimina.
  • Dentro de una expresión aritmética, un literal entero de la forma b # n se interpreta en la base b . Por ejemplo, 2 # 110110 es binario 110110, es decir, cincuenta y cuatro.
  • Vea también #! abajo.
  • Véase también $ # abajo.
#!
  • (Por lo general, ” shebang ” cuando se lee en voz alta). Se usa al comienzo de un script ejecutable para especificar el intérprete que se debe usar para ejecutarlo. Por ejemplo, si la primera línea de script.pl es #! / Usr / bin / perl , y script.pl tiene permisos ejecutables, entonces ./script.pl es aproximadamente equivalente a / usr / bin / perl ./script.pl .
  • La primera línea de un script Bash generalmente es #! / Bin / bash o #! / Bin / sh . (El primero generalmente se considera preferible.)
PS
  • Introduce varios tipos de expansiones, especialmente la expansión de parámetros (como en var o $ { var } ), la sustitución de comandos (como en $ ( comando ) ) y la expansión aritmética (como en $ (( expresión )) ).
PS
  • Una variante de "..." (ver más arriba) que admite la traducción específica del entorno local. (A menos que esté escribiendo scripts para su uso en varios idiomas, por ejemplo, inglés y francés, no debe preocuparse por esto).
PS
  • El número de parámetros posicionales (argumentos de un script o función). Por ejemplo, si se invoca un script como script.sh abc , entonces $ # será 3 . Los elementos incorporados que modifican los parámetros posicionales, como shift y set , también afectan a $ # .
% El operador de módulo. Devuelve el resto resultante de la división entera. Ej. 5% 2 = 1
Y Ampersand Comúnmente se utiliza para iniciar un comando en el fondo. Ej. Firefox &
' Una frase. Se utiliza para citar texto literalmente.
( Paréntesis abiertos. Se utiliza para denotar el comienzo de una subshell, entre otras cosas.
) Paréntesis de cierre. Se utiliza para denotar el “EOF” de una subshell.
* Asterisco. Denota multiplicación. Ej. 5 * 2 = 10
+ Más.Denota la suma. Ej. 5 + 2 = 7
, Coma. Utilizado para la separación. Ej. Archivo ls {1,2,3}
- Guión. Denota la resta. Ej. 5-2 = 3
. Parada completa.
/ Barra inclinada. Indica división entera (por ejemplo, 5/2 = 2) o parte de una ruta (por ejemplo, / home / usuario)
: Colon.
; Punto y coma. Separa las líneas si no existe una nueva línea / EOL. Ej. Echo hola; mundo eco
< Soporte de ángulo abierto. Utilizado para la redirección de entrada
= Signo de igualdad Se utiliza para asignar variables y comprobar la igualdad.
> Ángulo de cierre del soporte. Se utiliza para la redirección de salida.
? Signo de interrogación.
@ A la señal. Normalmente se utiliza como una variable que contiene todos los argumentos pasados ​​al entorno como $ @
El Abra el corchete. Utilizado como una alternativa visualmente más atractiva para probar. Por ejemplo, si [condición]; entonces etc
\ Barra invertida Más comúnmente utilizado para escapar. Por ejemplo, archivo rm \ con \ a \ manojo \ de \ espacios.txt
] Cierre corchete. Cierra los recintos de prueba.
^ Signo de intercalación.
_ Guion bajo.
`…`
  • Activa la sustitución de mando; equivalente a $ (…) , pero es algo más propenso a errores.
{ Abra el apoyo rizado. Utilizado para expansión de variable específica. Por ejemplo, (donde var = “hola”) echo “$ {var} world” imprimirá “hola mundo”, echo “$ varworld” generará un error, esperando una variable llamada varworld.
| Tubo. Se utiliza para redireccionar la entrada a la salida. Específicamente, toma la salida del comando en el lado izquierdo, ejecuta el programa en el lado derecho y luego pasa el contenido de la salida del primer comando al segundo, como si se estuviera escribiendo desde un teclado. ‘ls -l | grep Desk ‘es equivalente a ejecutar “grep Desk”, y luego escribir manualmente lo que ls -l tendría salida. Cada vez que se presiona la tecla de retorno, se activará grep hasta que se presione ^ D para pasar el EOF.
} Cierre corsé.
~ Tilde. Normalmente se utiliza para referirse al directorio de inicio. Registrado como “mrwhite”, cd ~ (o simplemente cd) iría a / home / mrwhite. Al iniciar sesión como otro usuario, se podría lograr el mismo efecto con ‘cd ~ mrwhite’.

Enlaces externos en ingles

Reciclar un módem usb 3G y de paso mejorar la cobertura Wifi


En efecto  estos simples dispositivos de almacenamiento de datos que permiten conectarse   desde su  ordenador  a Internet mediante un puerto USB  mediante tecnología 3G o 4G a través de una de las redes del operador de telefonía móvil con el que tenga suscrito el contrato  también llamados “ llaves 3G” o “pinchos 3G ”   son dispositivos claramente en desuso  .

Estos  módem USB no solo son compatibles tanto con ordenadores  convencionales como con ordenadores  portátiles sino también con cualquier tipo de sistema operativo y además incluso  se pueden utilizar con tabletas, siempre y cuando estas dispongan de un puerto USB, por lo que en efecto son dispositivos bastante compatibles con una enorme cantidad de equipos  y diferentes sistemas operativos .

Estos dispositivos  ciertamente nos reafirmamos han dejado de sernos útiles desplazados por las facilidades de creación de zona wifi  de  todos los smartphone tanto Android como Ios, lo cual ha hecho que estos dispositivos queden definitivamente relegados  a ser olvidados en un triste cajón.

 

 

A pesar de sus puntos negativos, estos  módems USB aun pueden ser una gran solución si necesita conectarse de forma temporal a Internet. Entre sus grandes ventajas están:

  • Algunos operadores ofrecen tarifas para tener Internet móvil con un módem USB sin necesidad de contratar un plan de voz ni pagar una cuota de alta.  Este tipo de tarifas de Internet prepago era una gran solución  durante viajes  o en una segunda residencia.
  • La instalación rápida y sencilla. Nada de recibir al técnico ni añadir más cables a su salón. Los módem USB son auto-instalables.
  • Los módem USB multi-banda solucionan en gran parte el problema de la cobertura  ya que son capaces saltar de una red a otra buscando la mejor cobertura.

Debemos puntualizar que los módem USB se siguen utilizando en determinados ámbitos por su facilidad de transporte, pero sin duda , aparte de la facilidad de la zona wifi que cualquier smartphone  puede crear , en  el caso de necesitar algo mas especifico  hay opciones  como por ejemplo los router 4G, que no dejan de ser  dispositivos  similares, pero con evidentes mejoras pues no solo dotan de conexión a Internet a un solo dispositivo compatible con la conexión USB, sino que generan una red WiFi a la que pueden conectarse cuantos dispositivos sean necesarios.

 

Instalación de un módem 3G

Bien  si tenemos algún que otro módem 3g guardado en el cajón porque  ya no es util en su función principal ¿ para que nos puede servir?  pues  sencillamente como  adaptador wifi  pues la mayoría de estos pinchos también soportan este tecnología

Tomemos como  ejemplo un pincho Huawei E173 de la operadora Movistar dado que  el proceso sera muy similar con otros modelos

Si lo pinchamos en un puerto USB libre enseguida, debería aparecemos una unidad adicional con 0 bytes disponibles donde solo tenemos acceso a  lectura dado que se encuentran los drivers del módem usb.

 

Si hacemos doble click  sobre la unidad , enseguida se ejecutará el autorun que hará que comience la instalación del sw, la cual seleccionaremos que sea personalizada dado que solo queremos usar el módem como adaptador wifi 

 

Ahora solo seleccionaremos zona wifi ( ocupa unos 42,5Mb)   ,le daremos a siguiente para que lo instale en el directorio por defecto 

 

según las necesidades que tengamos si lo  deseamos podemos bien que se inicie automáticamente o  simplemente que se ejecute a demanda

Ahora ya simplemente se ejecutaría el escritorio donde lo importante  a la derecha del logo de movistar aparezca el nombre del módem ( en este caso HUAWEI) pues es señal de que se han instalado correctamente los drivers del módem y este esta funcionando correctamente

Para conectarnos por wifi, solo pulsaremos en Redes disponibles y acto seguido introduciremos  la clave de la red wifi  y desde ese momento ya podemos navegar mediante la red wifi  seleccionada  a través del viejo  pincho 3G  que teníamos  relegado  en un cajón  

 

 

Con total seguridad observara  que la calidad de la conexión es mucho mejor que  muchos adaptadores genéricos  e incluso propietarios incluidos en equipos de fabrica ( que quizás se hayan averiado  o no sean capaces de lograr conexiones estables) . Ademas sobre todo disfrutara  de una mayor   cobertura y mejor alcance  , todo ello reciclando equipamiento electrónico  que  ya nos era útil dándole ahora una segunda oportunidad ! reciclemos todos en pro de un mundo mejor!!