Anuncios

Error en whatsapp en la descarga de videos


Hay personas que de repente  cuando reciben fotos o videos por whatsapp, al intentar verlos o reproducirlos aparece un molesto  mensaje

 Error de descarga:. No se ha podido completar la descarga. Vuelva a intentarlo más tarde.

Y por cierto, por mucho que lo intentemos o esperemos no cambia la situación..

En  casos aislados,  cuando se intenta  adjuntar algo anexo  incluso avisa “ok” pero obviamente no envía nada . No obstante el problema es mayor   aun cuando nos envían un archivo, pues pulsamos en descargar y vuelve a saltar el  mensaje “Error en la Descarga: No se ha podido completar la descarga, inténtelo mas tarde. “ ¿como podemos solucionar este grave problema?

Falta la carpeta media o se crea un fichero llamado media

Un primer posible origen del problema del fallo de la descarga puede el siguiente: la carpeta “Media” de whatsapp  por alguna razón se renombra o desapaprece ,razón por la cual  la aplicacion  no sabe qué hacer con los archivos (video, audio, imágenes) y da este extraño error

 

 

sinformaterar.png

En  caso de que sospechemos que esa podría ser la causa podemos  hacer lo siguiente.

1- Conectar el terminal al pc de modo que podemos  editar la tarjeta de memoria
2- Ir a la tarjeta de memoria. Alli habrá muchas carpetas  ,pero las que nos interesa es la carpeta  whatsapp que a su vez debe contener  cuatros carpetas :

  • .trash
  • Backups
  • Database
  • Media

whats1.png

Si falta la carpeta Media o tenemos un archivo llamado media sin extensión es un síntoma inequívoco de mal funcionamiento .

3- Elimine el archivo media  de manera que nos queden al menos las tres primeras carpetas solamente.
4- Cree una nueva carpeta llamada  Media
5- Entre en la carpeta Media (que acaban de crear) para ver que esté vacía. Por defecto luego la propia aplicación creará otras 8 subcarpetas  como en la imagen siguiente:

 

media
6- Ahora hay dos opciones:
a) Reiniciar  el terminal . (desconéctelo de manera segura )

b) Volver a conectarlo al pc,para poder editar la tarjeta de memoria .Entre en  la carpeta WhatsAppMedia y fíjense si ya se crearon las nuevas carpetas, si esto no sucedió entonces cree  manualmente al  menos  las cuatro carpetas :

  •  Wallpaper
  •  WhatsApp Audio
  •  WhatsApp images
  •  WhatsApp Video

Una vez hecho ,por favor reinicie su terminal y compruebe que ya se puede  descargar ok

Tarjeta SD fragmentada o con errores

Un segundo  posible origen del problema puede prevenir por un fallo en la tarjeta microsd  por excesiva fragmentación ,razón  por la cual  la aplicación  no sabe qué hacer generalmente con ficheros grandes como archivos de  video  o audio ( no con las  imágenes) y da este extraño error

Para intentar solucionarlo copiaremos el contenido de la carpeta whatasapp a nuestro ordenador   y obviamente todo lo que nos interese  e intentaremos hacerle un formateo a la sd

Un claro síntoma de que la tarjeta esta mal es que no permite formatearlo con las hermanamientos estándar del sistema operativo.

.
sinformaterar.png

 

Una herramienta  que nos permite formatear incluso con estos problema es hdd low level format tool  ,pero tenemos que tener extrema atencion en la unidad que deseamos formatear:

 

hdd.PNG

 

Un vez seleccionada la unidad , pulsar en la pestaña  “low level format” y el botón “format thos device”

hdd2

Tras un rato ( unos 8minutos para uan kingston de 8gb)  deberia finalizar el proceso

hddfin.PNG

Un vez hayamos formateado la sd, podemos volver a copiar el contenido de la carpeta whtasapp  y desinstalar y volver a instalar la aplicación whatsapp para que al iniciarse pregunte si desea  recuperar  el contenido de la sd  ..

Debería ahora volver a  funcionar las descargas …( o si no es así cambie la sd por otra nueva e intente volver a probar)

 

 

Anuncios

Programar en Android no es tan complicado (parte 2)


En un post  anterior veíamos que  el panorama del entorno necesario para programar un aplicación   que se ejecute sobre cualquier dispositivo Android  ha cambiado sustancialmente  reduciéndose  simplemente a una potente herramienta   gratuita  , que ademas proporciona Google: Android Studio.

En este  post seguiremos  profundizando en el desarrollo de aplicaciones con Android Studio deteniéndonos en uno de los aspectos mas llamativos de cualquier aplicación : la  interfaz gráfica de usuario

Android proporciona un vocabulario de XML que corresponde a las subclases de View y ViewGroup, de modo que puede definir su IU en XML usando una jerarquía de elementos de IU y  los diseños son subclases de ViewGroup

Generalmente, los objetos View son widgets de IU como botones o campos de texto y los objetos ViewGroup son contenedores de vistas invisibles que definen la disposición de las vistas secundarias, como en una cuadrícula o en una lista vertical.

 

 

 

 

Diseño interfaz

Aunque existen infinitas  posibilidades de diseño del interfaz ,para empezar,  usaremos un diseño sencillo lineal que coloca todos los elementos gráficos uno a continuación del otro:

  • En la ventana Project de Android Studio, abra el fichero activity_main.xml( app > res > layout > activity_main.xml).Este archivo XML define el diseño de tu actividad y contiene la vista de texto predeterminada “Hello World”.
  • Cuando abra un archivo de diseño, lo primero que ve es el editor de diseño, pero muchos programadores prefieren trabajar directamente con el XML; por lo tanto, haga clic en la pestaña Text en la parte de abajo de la ventana para pasar al editor de texto.
  • Borre todo el contenido del fichero  e introduzca  el siguiente XML:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
    </LinearLayout>

LinearLayout es un grupo de vistas (una subclase de ViewGroup) que dispone las vistas secundarias en sentido vertical u horizontal, según lo especificado por el atributo android:orientation. Cada elemento secundario de un LinearLayout aparece en la pantalla en el orden en que aparece en XML.

Se necesitan otros dos atributos, android:layout_width y android:layout_height, para especificar el tamaño de todas las vistas.

Debido a que LinearLayout es la vista de raíz en el diseño, debería ocupar el área de la pantalla completa que está disponible para la app al establecer el ancho y el alto en "match_parent". Este valor declara que la vista debería expandir su ancho o alto para coincidir con el ancho o alto de la vista primaria.

Agregar un campo de texto

En el archivo activity_main.xml, dentro del elemento <LinearLayout>, agregue el siguiente elemento <EditText>:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">


   <EditText android:id="@+id/edit_message" 
    android:layout_weight="1"
    android:layout_width="0dp" 
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />


</LinearLayout>

A continuación, se ofrece una descripción de los atributos del <EditText> que ha agregado:

  • android:id:Esto proporciona un identificador único para la vista, que puede usar para hacer referencia al objeto desde elcódigo de la app, como leer y manipular el objeto .El signo de arroba (@) se requiere cuando se hace referencia a cualquier objeto de recursos de XML y va seguido por el tipo de recursos (id en este caso), una barra diagonal y el nombre del recurso ().El signo más (+) antes del tipo de recurso se necesita solo cuando se está definiendo un ID de recurso por primera vez. Cuando compila la app, las herramientas del SDK usan el nombre del ID para crear un nuevo ID de recurso en el archivo R.java de tu proyecto que hace referencia al elemento EditText. Con el ID de recurso declarado una vez de esta forma, otras referencias al identificador no necesitan el signo más. Es necesario el uso del signo más solo cuando se especifica un nuevo ID de recurso y no se necesita para los recursos concretos, como strings o diseños. Consulta el cuadro lateral para más información sobre los objetos del recurso.
  • android:layout_width y android:layout_height:En lugar de usar tamaños específicos para el ancho y el alto, el valor "wrap_content" especifica que la vista solo debe ser lo suficientemente grande para ajustarse al contenido de la vista. Si en cambio usa "match_parent", el elemento EditText ocupará la pantalla porque coincidirá con el tamaño del elemento primario LinearLayout. Para más información, consulta la guía de Diseños.Fijar el ancho en cero (0 dp) hace que la casilla de entrada ocupe el ancho de pantalla y mejora el rendimiento del diseño, ya que el uso de "wrap_content" como ancho exige que el sistema calcule un ancho, lo cual a la larga es irrelevante porque el valor de peso requiere otro cálculo de ancho para completar el espacio restante.
  • android:hint :Esta es una string predeterminada para mostrar cuando el campo de texto esté vacío. En lugar de usar una string codificada como valor, el valor "@string/edit_message" hace referencia a un recurso de string definido en un archivo separado. Debido a que esto hace referencia a un recurso concreto (no simplemente un identificador), no necesita el signo más. Sin embargo, debido a que aún no se ha  identificado el recurso de string, aparecera  un error del compilador. Este recurso de string tiene el mismo nombre que el ID del elemento: edit_message. Sin embargo, las referencias a los recursos siempre tienen ámbitos por tipo de recurso (como id o string); por lo tanto, usar el mismo nombre no genera conflictos.

 

Agregar recursos

De manera predeterminada, en un proyecto de Android se incluye un archivo de recursos en string en  un  fichero  llamado    strings.xml ( res > values > strings.xml) .

Parar, agregar  strings nuevas al fichero strings.xml siga los siguientes pasos.

  1. Desde la ventana Project, abra res > values > strings.xml.
  2. Agregue dos strings de modo que el archivo se vea de esta forma:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="app_name">My First App</string>
        <string name="edit_message">Introduzca un mensaje</string>
        <string name="button_send">Enviar</string>
    </resources>

Para el texto en la interfaz de usuario, siempre especifique cada string como un recurso. Los recursos de strings de texto  permiten administrar todos los textos de IU en una sola ubicación, lo que hace que sea mucho  más fácil encontrar y actualizar el texto.

Externalizar las strings también  permite localizar su aplicacion ara diferentes idiomas al proporcionar definiciones alternativas para cada recurso de string.

 

Agregar un botón

Vuelva al archivo activity_main.xml y agregue un botón después del widget <EditText>.

El archivo debería tener el siguiente aspecto:

      
  <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/button_send" />

Como vemos este botón no necesita el atributo android:id porque no se hará referencia a él desde el código de la actividad.

Actualmente, la configuración del diseño hace que los widgets EditText y Button tengan el tamaño necesario para ajustarse a su contenido, como se muestra a continuación

Esto funciona bien para el botón, pero no tan bien para el campo de texto porque el usuario podría escribir algo más largo. Sería bueno rellenar el ancho de la pantalla excedente con el campo de texto. Puedes hacerlo dentro de un LinearLayout con la propiedad de peso, que puedes especificar usando el atributo android:layout_weight.

El valor weight es un número que especifica la cantidad del espacio restante que cada vista debería consumir, relativo a la cantidad consumida por vistas del mismo nivel. Esto funciona como la cantidad de ingredientes en una receta de una bebida: “2 partes de refresco, 1 parte de sirope” significa que dos tercios de la bebida son de refresco. Por ejemplo, si le das a una vista un valor de weight de 2 y a otra un valor de weight de 1, la suma es 3, de manera que la primera vista completa 2/3 del espacio restante y la segunda vista completa el resto. Si agregas una tercera vista y le das un valor de weight de 1, la primera vista (con un peso de 2) ahora obtiene 1/2 del espacio restante, mientras que las dos restantes obtienen 1/4.

El valor de weight predeterminado para todas las vistas es 0, de manera que si especificas cualquier valor de weight superior a 0 para solo una vista, dicha vista completa el espacio restante después de que se asigne el espacio requerido a todas las vistas.

El resultado de modificar el  fichero   activity_main.xml, deberia ofrecer el siguiente aspecto:

 

Lo siguiente es qué apariencia debería tener el archivo de diseño activity_main.xml completo:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:orientation="horizontal"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
    <EditText android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
</LinearLayout>


Dar funcionalidad al  botón

Una vez hemos definido el botón  tenemos asignarle una funcionalidad, para lo cual podemos seguir los siguientes pasos:

  1. En el archivo res > layout > activity_main.xml, agrega el atributo android:onClick al elemento <Button>, como se muestra a continuación:
    <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/button_send"
          android:onClick="sendMessage" />
        

    Este atributo indica al sistema que llame al método sendMessage() de tu actividad cuando un usuario haga clic en el botón.

  2. En el archivo java > com.example.myfirstapp > MainActivity.java, agregar el código auxiliar del método sendMessage() como se muestra a continuación:
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        /** Called when the user clicks the Send button */
        public void sendMessage(View view) {
            // Do something in response to button
        }
    }

    Para que el sistema haga coincidir este método con el nombre del método proporcionado a android:onClick, la firma debe ser exactamente como se muestra. Específicamente, el método debe:

    • Ser público
    • Tener un valor de retorno vacío
    • Tener un objeto View como el único parámetro (esto será el View al que se le hizo clic)

Luego, completarás este método para leer el contenido del campo de texto y entregar dicho texto a otra actividad.

Crear una intent

Un Intent es un objeto que proporciona enlace de tiempo de ejecución entre componentes separados (como dos actividades) representando la “intención de hacer algo” de una app.

En el fichero MainActivity.java, agregue el código que aparece a continuación para sendMessage():

public class MainActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user clicks the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

Android Studio mostrará errores Cannot resolve symbol porque este código hace referencia a clases que no están importadas. Puede resolver algunos de estos errores con la funcionalidad de “importación de clase” de Android Studio presionando Alt + Intro (u Opción + Regresar en Mac).

Sus importados deben terminar de la siguiente forma:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

En sendMessage() tienen lugar muchísimos procesos. Por ello, explicaremos lo que sucede.

El constructor de Intent toma dos parámetros:

  • Un Context como su primer parámetro (se usa this porque la clase Activity es una subclase de Context)
  • La Class del componente de la app a la cual el sistema debe entregar la Intent (en este caso, la actividad que debería iniciarse).

    Nota: La referencia a DisplayMessageActivity emitirá un error en Android Studio porque la clase aún no existe. Ignora el error por ahora; pronto crearás la clase.

El método putExtra() agrega el valor de EditText a la intent. Una Intent puede llevar tipos de datos como pares clave-valor denominados extra. La clave es una EXTRA_MESSAGE constante pública porque la actividad siguiente usa la clave para devolver el valor de texto. Es bueno definir claves para los campos extra de intents usando el nombre del paquete de tu app como prefijo. Esto garantiza que las claves sean únicas, en caso de que tu app interactúe con otras apps.

El método startActivity() inicia una instancia del DisplayMessageActivity especificado por la Intent. Ahora debes crear la clase.

Crear la segunda actividad

  1. En la ventana Project, haz clic con el botón secundario en la carpeta app y selecciona New > Activity > Empty Activity.
  2. En la ventana Configure Activity, ingresa “DisplayMessageActivity” en Activity Name y haz clic en Finish

Android Studio automáticamente realiza tres acciones:

  • Crea el DisplayMessageActivity.java de la clase con una implementación del método onCreate() obligatorio.
  • Crea el archivo de diseño activity_display_message.xml correspondiente.
  • Agrega el elemento <activity> obligatorio en AndroidManifest.xml.

Si ejecutas la app y haces clic en el botón Send en la primera actividad, la segunda actividad se iniciará, pero estará vacía. Esto sucede porque la segunda actividad usa el diseño predeterminado vacío proporcionado por la plantilla.

Mostrar el mensaje

A continuación puede, modificar la segunda actividad para que muestre el mensaje que pasó la primera.

  1. En DisplayMessageActivity.java, agregue el siguiente código al método onCreate():
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_display_message);
    
       Intent intent = getIntent();
       String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
       TextView textView = new TextView(this);
       textView.setTextSize(40);
       textView.setText(message);
    
       ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
       layout.addView(textView);
    }
  2. Presione Alt + Intro (u Opción + Regresar en Mac) para importar las clases faltantes. Los importados deben tener la siguiente terminación:
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.ViewGroup;
    import android.widget.TextView;

Tienen lugar muchísimos procesos. Veamos la explicación:

  1. La llamada getIntent() captura la intent que inició la actividad. Toda Activity se invoca a través de una Intent, independientemente de cómo el usuario navegue hasta el punto en cuestión. La llamada getStringExtra() muestra los datos de la primera actividad.
  2. De manera programática, se crea un elemento TextView y se establece el tamaño y mensaje de este.
  3. Se agrega el elemento TextView al diseño identificado por R.id.activity_display_message. Se transmite el diseño a ViewGroup porque es la superclase de todos los diseños y contiene el método addView().

Nota: Es posible que el diseño XML generado por versiones anteriores de Android Studio no incluya el atributo android:id. La llamada findViewById() fallará si el diseño no tiene el atributo android:id. En este caso, abra el fichero  activity_display_message.xml y agregue el atributoandroid:id="@+id/activity_display_message" al elemento de diseño.

Ejecucion de  la app

Para ver el aspecto que ahora tendrá su  app en tu dispositivo, haga clic en Run en la barra de herramientas .

Cuando se abra, escriba un mensaje en el campo de texto y haga clic en Send. La segunda actividad reemplaza a la primera en la pantalla, con lo cual se mostrara el mensaje que ingresoe en la primera actividad.

Eso es todo. ¡Ha creado una  nueva app de Android!

 

Mas información en  developer.android.com

Error:(23, 17) Failed to resolve: junit:junit:4.12 en Android Studio


Este problema como vamos a ver, no se resuelve desinstalando  y volviendo a instalar Android Studio

El error   completo  ocurre cuando intentamos probar cualquier proyecto  ( incluso vacío ) ,   apareciendo el mensaje  Error:216 Failed to resolve: junit:junit:4.12

 

error

 

A continuación citamos los pasos para solucionar el problema:

  • Cerrar Android Studio
  • Descargar  el paquete junixfixerfile.zip   que contendrá  la librería junit-4.12.jar ,por ejemplo a partir de este enlace contrastado http://www.mediafire.com/file/413j0qfiixb4tda/junitfixerfile.zip
  • Descomprimir  el fichero con el winrar , seleccionando  la ruta    de las librerías de la aplicación  ,por  ejemplo  en la ruta  C:\Users\xxxxxxxxx\AndroidStudioProjects\MyApplication\app\libs (donde  xxxxx es su usuario logado en windows)

androidstudio1

 

 

 

 

 

 

 

 

 

 

 

 

 

  • Ahora ya puede abrir Android Estudio, volver a cargar su proyecto e intentar ejecutar su proyecto pues no debería dar ningún error

 

En caso de que seguidos los pasos anteriores persista el error , debería eliminar la  inferencia a la librería  Junit antigua  y colocar en su lugar la nueva librería.

Esto se hace pulsando  en File–>Proyect Structure.

Aquí , nos iremos a nuestra app( Modules–>App) y seleccionaremos Dependencies

 

Deependencias

Aquí deberíamos posicionarnos sobre la libreria junit  y darle el botón – (Remove)

Acto seguido daremos a añadir con el botón + ( a la derecha), seleccionaremos Libraries Deependencies –>Files dependencies   y nos  iremos a la ruta donde la nueva almacenamos  la nueva librería ( C:\Users\xxxxxxxxx\AndroidStudioProjects\MyApplication\app\libs)

Finalmente le damos a “Compile”  y  ya debería poderse ejecutar sin problemas sin volver a dar el error

Gradle sync failed: CreateProcess failed, error=216 con Android Studio


Para todos aquellos que se inician en el desarrollo de aplicaciones  para Android, es importante tener claro que entorno de desarrollo es el mejor y más completo para empezar con la primera aplicación, pues ese primer proyecto quizás  un buen día, pueda convertirse en una app de uso masivo y por lo tanto, reportar beneficios económicos.

Al principio  había desarrolladores  que usaban NetBeans , pero poco  después todas  la comunidad se paso programar  con  Eclipse   hasta  que salió a la luz Android Studio, que o todo apunta a que será el entorno que use todo el mundo pues en poco tiempo será lo único que el equipo de Android recomiende.

Está basado en IntelliJ IDEA, uno de los IDE para java de primer nivel (entre los mejores, con Eclipse, netbeans)

Ademas  soporta un  nueva forma de construir los apk. Más serio, mas versátil, mas potente, mas actual, y mas parecido a un proyecto en java.

En este post vamos a intentar solucionar un  típico  problema cuando empezamos a  desarrollar con  Android Studio  en equipos no muy modernos.

Este problema como vamos a ver, no se resuelve reinstalando   Android Studio

El error   completo  ocurre cuando intentamos probar cualquier proyecto  ( incluso vacío ) ,   apareciendo el mensaje “Gradle sync failed: CreateProcess failed, error=216 Consult IDE log for more details (Help | Show Log)”

Este es  un ejemplo:

error

 

El error  216  , que en ocasiones no es mostrado completo corresponde a este descriptivo “This version of %1 is not compatible with the version of Windows you’re running. Check your computer’s system information and then contact the software publisher

Esto sucede porque se incluye la versión de  64bit del JRE con Android Studio para Windows, lo cual  produce errores en sistemas de 32 bits.

La solución al problema pasa por dos pasos:

 

  • No utilice el JDK incorporado: vaya al cuadro de diálogo Archivo -> Estructura del proyecto, desmarque “Usar JDK incrustado” y seleccione el JRE de 32 bits que tenga instalado por separado en su sistema . Al menos debería ser  JDK8  o superior  .

 

android_studio

 

 

  • Disminuya la huella de memoria para Gradle en gradle.properties (Propiedades del proyecto), por ejemplo, establezca en -Xmx768m ( tendrá por defecto -Xmx1024m).Es decir debería quedar así:
org.gradle.jvmargs= -Xmx768m

 

Creación de una app movil para interactuar con Raspberry Pi


¿Piensa que  se necesita mucho tiempo para crear una app  movil para la Raspberry Pi que involucre un proyecto de  IO para conectar sensores de movimiento,  luces , relés  ,etc y se pueda completar en breve ?

La verdad es que  escribir una aplicación, implica leer toneladas de documentación, tomar mucho  tiempo para aprender  lenguajes de programación, código,y mucho tiempo de  trabajo…Pero ¿por qué invertir tanto tiempo en preparar su proyecto, cuando se puede estar en funcionamiento en una fracción de tiempo permitiendo  la construcción de sus proyectos de automatización en cuestión de minutos.?

Entonces, ¿cómo es posible todo esto? Pues gracias  a un  framework  gnerico desarrollado por  myDevices IO Project Builder llamado Cayenne .Cayennese ha creado para los desarrolladores y fabricantes deseosos de construir rápidamente prototipos y proyectos increíbles con  Raspberry Pi  permitiendo con una cuenta gratuita de Cayena, crear un número ilimitado de proyectos.

También tiene capacidades de pleno derecho de la IO  para que pueda controlar de forma remota sensores, motores, actuadores, incluidas los puertos  de GPIO con  almacenamiento ilimitado de datos recogidos por los componentes de hardware,   triggers y alertas,  que proporcionan las herramientas necesarias para la automatización y la capacidad de configurar alertas. Ademas también puede crear cuadros de mando personalizados para mostrar su proyecto con arrastrar y soltar widgets que también son totalmente personalizables.

 

 

 

Ejemplo paso a paso 

Como se puede ver en el video , Cayyene app es una innovadora solución genérica que nos puede ahorrar mucho trabajo a la hora de  crear un proyecto con la Raspberry Pi

En resumen ,algunos de los rasgos que más destacan de la solución de Cayyene es :

  • Tablero de instrumentos flexibles :Personalizar el teléfono o en el salpicadero en línea con arrastrar y soltar widgets.
  • Acciones de activación :Crear disparadores y alertas para dispositivos, eventos, acciones y más.
  • Control de GPIO :configurar a distancia GPIO desde una aplicación móvil o en el salpicadero.
  • El acceso remoto instantáneo :Automáticamente el control remoto y accede a tu Pi desde su teléfono o computadora.
  • Configuración fácil:conectar rápidamente su Pi a Internet y conectar sensores, actuadores y extensiones en cuestión de minutos

Par mostrar lo sencillo que puede ser crear un proyecto con Cayyene, vamos a ver un ejemplo

Todo el equipo que se necesita para la creación de myDevices Cayenne para la Raspbery Pi es muy sencillo (es posible que necesite piezas adicionales si usted está mirando para agregar más sensores, dispositivos y cualquier otra cosa que desee conectado a tu Pi ). :
Necesario:

  • Raspberry  Pi
  • 8gb tarjeta Micro SD si se está utilizando una Raspberry Pi + 2, 3 o B o tarjeta SD de 8 GB para cualquier versión anterior del Pi.
  • Cable Ethernet o Wifi dongle (Pi 3 tiene Wi-Fi incorporado).Usted también tendrá que asegurarse de que tiene una conexión a Internet para la Pi.

Opcional:

  • Caja para la Raspberry Pi
  • Teclado USB y ratón USB

A continuación se presentan los elementos utilizados en el circuito de ejemplo

  • DS 18B20 del sensor de temperatura o similar
  • 4v7k Resistencia
  • Kit de arranque GPIO
  • Cables de conexión
  • Placa prototipos

Instalación de Frambuesa Pi Cayenne

El proceso de instalación de Cayena en la Raspberry Pi es bastante simple y no debería tomar demasiado tiempo para obtener su creación y funcionamiento. Usted tendrá que asegurarse de que ha instalado en su Raspbian Pi. .

  1. En primer lugar, vaya a  myDevices Cayenne y registrarse para obtener una cuenta gratuita.
  2. Una vez que ya se ha registrado usted tendrá que registrarse / conectar el Pi hasta la cuenta que acaba de crear. Para ello sólo tiene que copiar las 2 líneas de comandos que se muestran después de su inscripción. Introduzca estos en el terminal para su Pi. (Estos archivos son únicos para cada instalación nueva)

Únete a la pantalla
Alternativamente, se puede descargar la aplicación y se puede localizar e instalar en su Cayenne Pi automáticamente. (Tenga en cuenta SSH debe estar habilitado )

  1. Tomará unos minutos para instalar en el Pi en función de la velocidad de su conexión a Internet es. El navegador web o aplicación deben actualizar automáticamente con información sobre el proceso de instalación.
  2. Una vez instalado el tablero de instrumentos se mostrará y debe verse como algo más adelante.

Pi tablero de cayena

Configuración de su primer sensor

En este ejemplo vamos a configurar un sensor de temperatura. El sensor usado es el DS18B20,ahora bien  el uso de Cayyene hace que sea muy sencillo.

Todo lo que necesita hacer es configurar el circuito y lo han conectado a la Pi.  También se he añadido un LED que está conectado a la clavija # 17 con una resistencia de 100 ohmios al carril de suelo.
Diagrama del sensor de temperatura Frambuesa Pi
Ahora bien, cuando  configuran el sensor se detecta automáticamente y se añade al tablero de instrumentos.Si no se agrega automáticamente a continuación, tendrá que añadir manualmente. Para añadir manualmente, simplemente, hacer lo siguiente.

  1. Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
  2. Elija un dispositivo en el cuadro desplegable.
  3. Encontrar el dispositivo, en este caso se trata de un sensor de temperatura DS18B20.
  4. Añadir todos los detalles para el dispositivo. En este caso, tendrá la dirección del esclavo para el sensor. Para obtener la dirección del esclavo escriba lo siguiente en el terminal del Pi.
    cd /sys/bus/w1/devices ls
  5. La dirección del esclavo será similar a esta 28-000007602ffa . Simplemente copia y pega esto en el campo de esclavos dentro de Cayena salpicadero.
  6. Una vez introducida seleccione sensor de complemento.
  7. El sensor se debe mostrar en el salpicadero.
  8. Si necesita personalizar su prensa sensor de la rueda dentada y va a llegar a algunas opciones.
  9. También puede ver estadísticas / gráficos. Por ejemplo, el sensor de temperatura puede representar gráficamente los datos en tiempo real y mantendrá los datos históricos también.

Si desea agregar también un LED que se pueda encender y apagar a través del panel de control, siga las siguientes instrucciones.

  1. Ahora vamos a añadir un dispositivo más. A menos que éste será un LED.
  2. Así que volver a añadir un nuevo dispositivo.
  3. Ahora buscar salida digital y seleccionarlo.
  4. Para este dispositivo seleccione su Pi, el tipo de widget es botón, el icono puede ser lo que quiera, y luego seleccione GPIO integrado. Por último canal es el pin / canal que nuestro LED está conectado. Para este ejemplo, es el pin # 17. (Esta es la numeración de los pines GPIO).
  5. A continuación, pulse el botón sensor de complemento.
  6. Ahora puede apagar el pin GPIO alta y baja del tablero de instrumentos y también utilizarlo en un disparador.
  7. Ahora estamos listos para crear nuestro primer gatillo.

Ahora debe tener dos dispositivos en el panel de control que debería ser algo como esto.
Los dispositivos añadidos

Configuración de su primer disparador

Disparadores en Cayyene son una manera de reaccionar a un cierto cambio en la Pi a través de un sensor conectado a él. Esto podría ser algo tan simple como una temperatura superior a un determinado valor o incluso sólo su pi ir fuera de línea. Como se puede imaginar que esto puede ser muy poderosa en la creación de dispositivos inteligentes que reaccionan a los alrededores. Por ejemplo, si la habitación se enfría demasiado, a continuación, convertir un calentador.

El proceso de añadir un disparador es muy sencillo :

  1. Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
  2. Seleccionar un trigger desde el cuadro de abajo.
  3. En primer lugar el nombre de su activación, voy a llamar a la mía “demasiado caliente”.
  4. Ahora arrastrar y soltar su Frambuesa Pi desde la esquina izquierda en el caso de la caja.
  5. Por debajo de esto seleccionar el sensor de temperatura y tienen casilla junto a “por encima de la temperatura” seleccionado. (Opciones del dispositivo Si no se muestran simplemente refrescar la página)
  6. Ahora en el cuadro de selección a continuación, notificación y agregar una dirección de correo electrónico o número de teléfono de un mensaje de texto (puede agregar ambos).Asegúrese de marcar las casillas de verificación también.

Gatillo demasiado caliente

  1. Ahora haga clic en “Activación de almacenamiento”.
  2. Ahora debería ser guardado y le enviará una alerta cada vez que el sensor de temperatura es superior a 40 grados centígrados.
  3. También puede arrastrar el Raspberry Pi en el cuadro a continuación, y tienen que hacer muchas cosas, incluyendo el control de los dispositivos de salida. Por ejemplo, en mi circuito Tengo un LED que se enciende cuando la temperatura supera los 40 grados centígrados.
  4. Para hacer clic en el gatillo de disparo LED de nueva situada en la parte superior de la página. Nombre esta activar el gatillo LED.
  5. Ahora arrastrar el Pi en el caso de la caja y luego seleccione el sensor de temperatura de nuevo con 40 grados centígrados por encima.
  6. Ahora arrastrar el Raspberry Pi en cuadro a continuación. Selecciona nuestra salida digital y tienen la casilla de marcado.
  7. Ahora haga clic en Activación de almacenamiento.
  8. Ahora cada vez que nuestro sensor de temperatura conectado a la Pi reporta una temperatura superior a 40 grados centígrados se enviará un correo electrónico y encienda el LED. También tendrá que añadir otro factor desencadenante para apagar el LED cuando se cae de nuevo por debajo de 40, pero eso se lo dejo por ahora y pasar a los eventos.

mydevices cayennem disparadores

Eventos

Eventos en Raspberry Pi Cayenne es algo similar a los factores desencadenantes pero son dependientes del tiempo en lugar de depender de un cambio en un sensor o el propio dispositivo. La creación de un evento es bastante fácil

Vamos  a  ver  rápidamente cómo configurar su pi para reiniciar una vez al mes.

  1. Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
  2. Seleccionar evento en el cuadro de abajo.
  3. Ahora debería ver una pantalla con un calendario y una ventana emergente llamado nuevo evento.
  4. Introduzca los detalles de su evento. Por ejemplo, el mío se llama reinicio mensual y ocurrirá en el primer día de cada mes a las 2 am. A continuación se muestra un ejemplo de la pantalla.

eventos de cayena con detalles

  1. Una vez hecho esto, haga clic en Guardar.
  2. Ahora debería ser capaz de ver su evento en el calendario. Basta con hacer clic en él si desea modificarlo.

Como se podría imaginar eventos puede ser bastante potente por lo que sería digno de mirar en estos más. Un buen ejemplo del uso de eventos sería si se necesita algo para ejecutar o activar (como luces que necesitan para ser activado en un momento específico).

Panel de GPIO

El panel GPIO dentro de Frambuesa Pi Cayena le permite controlar y modificar las patas del Pi. Por ejemplo, puede activar un pin de ser una entrada a una salida inversa y el vicio.También se puede activar tanto los pines de salida baja y alta.
Panel de GPIO cayena
Como se puede ver que también lo convierte en un gran lienzo de referencia si necesita hacer referencia hacia atrás y ver qué pines son los que necesita. También puede ver los dispositivos que están asignados actualmente a los pines específicos. También es capaz de ver el estado actual de un alfiler. (Por ejemplo, entrada o salida y baja o alta)

Escritorio remoto

Se  puede  instalar  Cayyene también en un escritorio remoto a su Frambuesa Pi, ya sea a través del navegador web o por medio de la aplicación móvil. Puede hacer esto simplemente haciendo lo siguiente.

  1. Sobre el tablero encontrar el widget que dice “comandos”.
  2. Dentro de este control, haga clic en el acceso remoto.
  3. Ahora se conectará a la Pi y abrir una nueva ventana. Si una nueva ventana no se abre el navegador más probable es bloqueado. Simplemente permiten cayenne.mydevices para abrir nuevas pestañas.
  4. Una vez hecho esto se puede controlar su Pi igual que como si estuviera allí con ella.
  5. Una de las ventajas con el uso de Cayena de escritorio remoto es que se puede acceder a él en cualquier parte del mundo con bastante facilidad en lugar de tener que configurar una VPN o abrir los puertos de la red.

 

Fuente   aqui

El primer libro de Netduino 2 en Español


En los últimos años, electrónica e informática han pasado de ser algo que sólo los ingenieros podían comprender, a estar accesible a todo el público en general sin necesitar demasiados conocimientos técnicos.

Netduino  como  tantas veces  se ha  hablado en  este blog,  precisamente ha crecido hasta convertirse en una parte de esta revolución, proporcionando en una placa del tamaño de una carta un potente entorno gracias a la depuración de programación basada en eventos, multi-threading, ejecución línea a línea, inserción de puntos de interrupción, etc, permitiendo tanto capturar como controlar dispositivos desde Internet de una manera mucho más sencilla y rápida comparada con otras plataformas basadas en   hardware. abierto.

portada libro

 

A propósito del libro , EL PRIMER LIBRO SOBRE NETDUINO 2 EN ESPAÑOL: Proyectos domóticos paso a paso para todos los niveles, por el momento disponible  en formato kindle  en  Amazon  ,pero muy pronto tambien disponible en papel ( en color y también  en versión eco de bajo coste),   éste intenta cubrir un vacío que existe en el mundo hispano-hablante respecto a  la  plataforma   Netduino 2+ intentando ser una referencia, tanto a las personas que ya manejen esta plataforma para profundizar en algunos aspectos, como aquellas otras que se inician por primera vez, para que de forma paulatina, vayan empezando a entender los entresijos de la programación en c# y su relación con el mundo físico.

La lectura de este nuevo  libro comienza intentando comprender el hardware  de Netduino y su evolución hacia Netduino 2+, este último sobre el que se centrará el resto del libro, explicando con detalle cómo instalar las herramientas necesarias.
Una vez el entorno preparado, lo primero es probar la comunicación y, tras esto, ya podemos a empezar a escribir nuestro propio primer programa haciendo encender o apagar un led (cap. 2 y 3).
Cuando controlamos salidas binarias lo siguiente es manejar las entradas binarias, lo cual se ilustra con un ejemplo que usará el pulsador interno (cap. 4).
Otro tema interesante puede ser PWM (cap. 5) que puede usarse en infinidad de aplicaciones y que, como ejemplo, usaremos para variar el brillo de un led.

En los capítulos siguientes se tratan los diferentes sensores que podemos utilizar en domótica empezando por los sensores de ruido (cap.6) para lo cual necesitaremos el procesamiento de señales analógicas que se trata con un ejemplo. Otro aspecto interesante son los sensores de posición que también se tratan con un ejemplo real (cap. 7).
En domótica aparte de las entradas y salidas binarias también se usan sensores de variables físicas como por ejemplo los sensores de temperatura, de luz o de movimiento que se tratan en los cap. 8,9 y 10 (terminando también cada uno con un ejemplo).
Una mención especial lo ocupa el cap.11 donde se tratan los sensores de consumo eléctrico tan usuales para monitorizar y optimizar nuestro consumo energético. Como no podría ser menos, también se proponen varios ejemplos de manejo real de éstos.
Una vez tratados la mayoría de los sensores, se explica cómo conectar Netduino 2 con un display LCD compatible con el estándar HD44780 para desplegar información en éste que nos interese viéndolo con dos ejemplos reales (cap12).
En los siguientes capítulos se describen cómo es posible acceder a todos los sensores y actuadores descritos (y por supuesto todos los que el lector decida) de forma remota, gracias a la conectividad tcp-ip que integra la misma placa Netduino 2 plus.
En primer lugar se trata de explicar los entresijos una aplicación que instalaremos en Netduino 2 plus que hace de servidor web, el cual nos va a permitir interactuar de forma remota con éste.
Y hablando de control ¿qué mejor que desarrollar una app para permitirnos controlar Netduino 2 a distancia? Pues para ello, se tratara primero de las generalidades de MIT App Inventor (cap14), entorno que nos va a permitir desarrollar una app móvil de una forma muy sencilla desde la nube.

Finaliza  el libro con el desarrollo de una aplicación móvil real que será capaz de interactuar desde Internet con todo el hw descrito en capítulos anteriores , haciendo de colofón del libro ,mostrando de esta forma cómo es posible hacer aplicaciones móviles que interactúen de forma remota con N2 plus de una forma sencilla

 

Espero   que   este libro  pueda  ayudar a comprender  y a  usar esta estupenda plataforma  como es Netduino+

 

Más  información  aqui

Llega la tecnología a la cocina


No hace mucho el centro de los avances en la tecnología de consumo no era  nuestro salón ,  sino precisamente todos los electrodomésticos que llenaban nuestras cocinas, como en su momento eran las  neveras, las cocinas, hornos de microondas, cafeteras, robots  de cocina ,y así, un largo  etcétera de gadgets

.Smart Phone

En efecto actualmente  nos puede dar  sensación de que ha habido muy pocos avances  en esos dispositivos  de serie  blanca , pues la electrónica de consumo parece  avanzar en otras direcciones , pero como siempre, el tiempo o la llamada “madurez tecnológica” vuelve  a colocar la  innovación donde le corresponde,  y lo cierto es que ya se ven signos de que nuestra cocina está a punto de ser   mejorada  por una tecnología  que  se centrará  en el  telecontrol y la monitorización gracias a la conectividad   .

Veamos algunos gadgets  curiosos  que en el momento actual son  ya una realidad:

Belkin Crock-Pot WeMo Slow Cooker

De le mano del famoso fabricante Belkin  y por un precio muy asequible  nos encontramos  con  una de las   propuestas tecnológica  más  interesantes que podemos ver en este campo

Con esta olla  casi por el precio de una oya programable podemos ademas adquirir una nueva olla  que ademas  nos va permite controlar  verdaderamente a distancia como se cocina nuestra comida desde cualquier parte.

Algunas de las características de esta  olla  inteligentes son:

  • CROCK-POT ® SMART:Añade flexibilidad a su horario de comidas con el Crock-Pot ® Smart olla con WeMo ®. Descargando la App gratuita WeMo al dispositivo inteligente y lo sincronización con el Crock-Pot ®, tendra  acceso remoto a las funciones de todos su olla de cocción lenta, no importa donde ests.
Wemo App
  • AJUSTAR Y CONTROLAR EL TIEMPO DE COCCIÓN Y LA TEMPERATURA CON APP GRATIS WEMO ™:La lapp ibre WeMo App permite cambiar el tiempo de cocción o ajustar la temperatura en la olla de cocción lenta utilizando tu smartphone o tablet. Ahora no hay que preocuparse si se levantó en la oficina o en un atasco. Puede utilizar la aplicación para supervisar el estado de cocción, activar o desactivar la la Crock-Pot ® Smart olla de cocción lenta y recibir notificaciones cuando termine la cocción. Lo mejor de todo, puede hacerlo todo desde la App WeMo gratis en su dispositivo inteligente. Cuando este en casa durante la cocción, la olla de cocción lenta tambien permite  controlar manualmente también desde la pantalla de LED.
Crock-Pot features
  • MISMAS CARACTERÍSTICAS CONVENIENTES:Preparar sopas, asados y otras comidas de una olla con esta gran olla de 6 cuartos. Simplemente añada los ingredientes, enchufe en la olla de cocción lenta y programar la hora y la temperatura de cocción antes de ir sobre tu día y controlarla desde tu dispositivo inteligente, no importa donde estés. Asas frescas al tacto Mantén seguras si tienes que mover la olla mientras aún está caliente.Tapa removible de recipiente de cerámica y vidrio son ambos lavavajillas para una fácil limpieza.
Three Temperature Settings
  • ELEGIR ENTRE TRES AJUSTES DE TEMPERATURA:El Crock-Pot ® Smart tiene tres ajustes de temperatura.Tiempos de cocción uso alta para los tiempos de cocción más cortos y bajo durante más tiempo. Cuando termine el tiempo de cocción, el Crock-Pot ® cambia automáticamente a warm para mantener los alimentos a una temperatura ideal servir hasta que estés listo para comer.
Elegant Design
  • DISEÑO ELEGANTE CON PANTALLA ILUMINADA LED:De esta olla acero inoxidable acabado y acentos negros hacen una pieza atractiva para que aparezca en cualquier mostrador. Ver fácilmente los controles de cocción incluso con luz tenue con la exhibición de LED iluminada.
Easy to Use
  • FÁCIL DE USAR, FÁCIL DE INSTALAR:Para comenzar a controlar tu Crock-Pot ® Smart olla de cocción lenta del dispositivo inteligente, simplemente enchufe la olla de cocción lenta y uso del dispositivo para descargar la App gratuita WeMo desde el Google Play Store, la App Store de Apple o Amazon App Store. La libre WeMo App que te mantiene conectado a su Crock-Pot ® Smart olla dondequiera usted es… sobre redes Wi-Fi, 3G o 4G. Haga clic aquí para referencia Guía de inicio rápido para obtener instrucciones detalladas.
  • TRABAJA CON DISPOSITIVOS ANDROID Y APPLE:El Crock-Pot ® Smart olla de cocción lenta es compatible con tu router Wi-Fi casera existente y su existente smartphone o tablet con Apple iOS 6 y superior o Android 4.0 y superiores. Está respaldado por una garantía limitada de un año.

Mas informacion  aqui

 

 

Admetior Digital Volumetric Spoon Scale

Capaz de cuantificar medidas volumetricas exactas y expresarlas para usted esta cuchara puede medir  cuatro tipo de unidades mediante su pantalla LCD  de forma muy sencilla.

Sus carastericticas  son 4 unidades de volumen (taza, mililitro, cucharada y cucharadita), pala desmontable para una fácil limpieza, fácil de leer pantalla LCD, mantenga la función de congelar las lecturas en la pantalla LCD, indicador de baja masa, apagado automático

En Amazon    esta disponible por unos 62€ :Admetior Digital Volumetric Spoon Scale by Admetior

 

 

Jarra medidora

Este gadget  es  muy similar a la anterior  pero en forma de taza de medir con escala digital y  con lectura de combinación integrado en el mango

Convierte automáticamente 5 ingredientes preestablecidos – harina, el azúcar, la leche, el agua y el aceite – de onzas (peso) a tazas (volumen),

Es fácil de leer medir las marcas de la taza de 1 incrementos / 4 de taza y 2 oz y esta alimentado por una  batería de litio (incluida)

Tiene  características  de tara / añadir y pesar y  recalibración, aviso de batería baja y  apagado automático.

!Por cierto sólo lavado a mano¡

En Amazon    esta disponible en Taylor 3890 Digital Measuring Cup and Scale by Taylor Thermometers

 

Egg Minder

Probablemente de las experiencias más desagradables con las que se puedes encontrar es romper un huevo en la sartén para descubrir que está caducados,lo cual parece les pasó a los creadores  de Egg Minder, que para solucionar el problema crearon este gadget que le avisará cuando sus huevos no se deben consumir.

De igual manera le notificará cuántos huevos le quedan, para que pueda reponer el inventario cuando va de compras.

Estas son las características en resumen:

  •  Ver cantidad de huevos en bandeja a través de la aplicación en el dispositivo móvil
  • Reciba notificaciones cuando los huevos van mal y son cerca de ir mal
  • Las alertas de programa cuando se ejecuta bajo en los huevos
  • LED parpadeante le permite saber que el huevo es la más antigua , cuando esté listo para cocinar
  • Tiene capacidad para 14 huevos

Neuro Fuzzy Rice Cooker

 

No hay comida más universal que el arroz. Sin embargo, preparar arroz delicioso puede ser un arte de lo más complicado. Si no es usted especialmente docto, y le gusta la  tecnología, entonces necesita el Neuro Fuzzy Rice Cooker. Como su nombre lo dice, es una máquina que hace arroz, y literalmente se encarga de hacer todo el proceso, controlando parámetros como humedad, presión, calor y demás, para hacer el arroz perfecto.

 

Blendtec Designer 700

Una licuadora no parece muy inteligente  cuando pensamos en alta teconología para la cocina, pero la verdad es que el Designer 700 de Blendtec  parece ser algo diferente pues estamos ante una máquina programable con pantalla táctil y 6 programas precargados.

Los que saben de cocina aseguran que se puede hacer maravillas con este aparato,pero la verdad que por unos 750$  esperamos que así sea.

 

 

Refrigerador Inteligente

Aunque parece ser  solo un diseño conceptual, este refrigerador inteligente intenta solucionar uno  de los grandes problemas con los que nos enfrentamos cada día en nuestra cocina: con los  ingredientes que tenemos en el refrigerador  ¿que nos podemos  cocinar?

La  idea es pues clara :que el refrigerador de sugerencias en función de loa alimentos  que almacena en su interior . Esperamos que esta  idea pueda  materializarse algún día pues en realidad va  a ser bastante complicado sobre todo por lo complejo de automatizar el control del inventario que almacenamos en su interior.

 

 

 

Funte  aqui

A %d blogueros les gusta esto: