Google Site Kit

Hoy definitivamente he desinstalado MonsterInsights de mi blog en WordPress y lo he cambiado por Google Site Kit. Las razones principales han sido que MonsterInsights no me ha impresionado nada y muchas de sus funcionalidades eran de pago.

La verdad es que Google Site Kit funciona muy bien y se configura rápidamente permitiendo conectar con Analytics, Search Console, Page SpeedInsights, Adsense, Optimize y Tag Manager. Además el plugin es original de Google con lo que te olvidas de licencias y problemas de compatibilidades.

Deep Nostalgia de MyHeritage

He descubierto hoy dentro de MyHeritage.com una aplicación espectacular que «revive» fotografías estáticas de personas creando la sensación de que están vivas. La aplicación se llama Deep Nostalgia y está accesible en este link.

Por ejemplo, a partir de una fotografía antigua de mi madre de 1955 he creado el vídeo de aquí abajo.

La aplicación solo puede usarse para animar unas 8 o 9 imágenes. Después, tienes que pagar la suscripción a MyHeritage que es de 129€ al año.

Llamador automático DX

Hace 25 años, invertía mi tiempo construyendo cacharros electrónicos y uno de los que estoy más orgulloso es el «Llamador Automático DX».

Cuando tenía 21 años conseguí mi licencia de radioaficionado de clase A después de pasar cuatro o cinco exámenes entre los que estaban el de aptitud para decodificar mensajes sonoros en código morse. Mi código de llamada era EA3GIW.

Uno de los problemas que tenía era que mi estación no era muy potente (apenas 4W) y aun menos la antena dipolo que me había construido por lo que en momentos de poca propagación electromagnética era importante mantener la llamada DX abierta para capturar cualquier apertura puntual. Eso podía tomar horas por lo que el problema era como podía tener mi equipo de radio haciendo llamadas sin tener que estar yo directamente a los mandos del micrófono.

Lo que hice fue construir un pequeño dispositivo que grababa digitalmente un mensaje de voz y que lo repetía ininterrumpidamente en un bucle infinito dejando espacios de 10 segundos entre repetición y repetición. Una de las complejidades era como activar y desactivar la función llamada en la emisora cuando el mensaje estaba en repetición. Al final, todo funcionó de maravilla durante muchos años.

Parte delantera del Llamador Automático DX

El diseño del sistema y el circuito impreso estaba todo hecho por mi, un poco artesanalmente y algo feo, pero funcional. Las fotografías que he hecho esta mañana son del primer prototipo que hice y que funcionaba.

Parte trasera del Llamador Automático DX

Iba tan bién que incluso vendí algunas unidades del llamador para conseguir algo de dinero aunque para soldar cada uno invertía un buen rato y no salía el precio de la hora muy rentable.

Obtener datos históricos de criptomonedas

Para obtener datos históricos de cotizaciones de criptomonedas suelo utilizar https://min-api.cryptocompare.com/ principalmente porque es una de las pocas que te permite obtener los valores por horas y no solamente por días como la mayoría.

La consulta la ejecuto directamente a través del navegador y el resultado es un archivo JSON. La URL que tengo que poner es:

https://min-api.cryptocompare.com/data/histohour?fsym=btc&tsym=EUR&limit=2000

Los parámetros para configurar la llamada son «fsym» para especificar la moneda (BTC para Bitcoin, OMG para OMG Network, ETH para ethereum, etc.), «tsym» para indicar si queremos euros o dólares y «limit» para definir el número de filas que queremos obtener. Si en vez de cotizaciones por hora las queremos por día, tenemos que utilizar «histoday» en vez de «histohour»,

La fecha se indica en formato epoch y para convertirla a algo legible podemos utilizar esta fórmula en excel:

=(A1/86400)+FECHA(1970,1,1)

A1 es la celda en la que tenemos la fecha en formato epoch.

La API de Coinbase Pro

Durante estas vacaciones me he estado peleando con la API de Coinbase Pro y sobre como poder llamarla correctamente a través de Google Apps Script, la plataforma de desarrollo de Google que integra toda su suite de productos.

El mayor problema es que es muy complicado, por no decir imposible, encontrar información fiable sobre como realizar llamadas a la API de Coinbase Pro con Google Apps Script y sobre todo como firmarlas siguiendo el protocolo de seguridad que implementa.

Después de muchos intentos finalmente conseguí hacerlo y este es el código que utilicé.

var globalvars_CB = {
   'apikey'     : 'f7d2dkifmdXXXXXXXXXXXXXa18c',
   'secret'     : 'ptjlbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZAMe1TV1zuh5U6WFiFw==',
   'passphrase' : 'cXXXXXXXXXXXXXXXXXX',
   'uri'        : 'https://api.pro.coinbase.com'
  }


function SignAndCallAPI(method, requestPath, body) {
//method: "GET", "POST",...
//requestpath: el path para ejecutar la función (por ejemplo: "/accounts")
//body: los parámetros de llamada. Habitualmente solo para POST

  var timestamp = Math.floor(Date.now() / 1000).toString();
  var what = Utilities.base64Decode(Utilities.base64Encode(timestamp+method+requestPath+body));
  var decodedsecret = Utilities.base64Decode(globalvars_CB.secret);
  var hmac = Utilities.base64Encode(Utilities.computeHmacSha256Signature(what, decodedsecret));
     
  var options = {
    'method' : method,
    'payload' : body,
    'muteHttpExceptions' : true,     
    'headers' : {
      'Content-Type': 'application/json',
      'CB-ACCESS-KEY' : globalvars_CB.apikey,
      'CB-ACCESS-SIGN' : hmac,
      'CB-ACCESS-TIMESTAMP' : timestamp,
      'CB-ACCESS-PASSPHRASE' :  globalvars_CB.passphrase,
     }
  }  
      
return(UrlFetchApp.fetch(globalvars_CB.uri+requestPath, options));

}

El mayor problema estaba en como firmar con SHA256 y con el formato de datos que se precisa además de evitar confundirse con la API de Coinbase que es ligeramente diferente de la de Coinbase Pro.

Personalizar idiomas en WordPress

Hasta hace poco utilizaba el método tradicional de actualización de idiomas para plantillas y plugins en WordPress que expliqué aquí hace un par de años. Sin embargo, últimamente utilizo el plugin Loco Translate que permite la gestión de las traducciones desde dentro de WP sin tener que utilizar programas externos como Poedit.

Uno de los aspectos más delicados es como personalizar un idioma que ya existe para que WordPress no lo sobrescriba cada vez que hay una actualización. Esto es importante si queremos tenemos párrafos con matices de idioma por razones de localización o de temática de nuestra web que no están recogidos en el archivo estándar del idioma: por ejemplo, usar «Ideas» en vez de «Comentarios».

Para solucionarlo, Loco Translate lo explica perfectamente aquí y puede aplicarse tanto si utilizamos el Plugin como si queremos seguir usando el método manual tradicional.

Cambiar Permisos en Linux

En AWS LightSail, si queremos subir archivos desde SFTP vamos a tener que cambiar algunos permisos. Se hace de esta forma:

sudo chown bitnami DIRECTORIO
sudo chmod +w DIRECTORIO

Para restablecer los permisos originales una vez que hayamos añadido o modificado archivos a través de SFTP, tenemos que hacerlo así:

sudo chown daemon:daemon DIRECTORIO
sudo chmod 0775 DIRECTORIO

Es importante limitar dichos permisos para evitar problemas de seguridad.

Mis Plugins preferidos en WordPress

Llevo ya 12 años utilizando WordPress y he hecho tantas instalaciones y migraciones que lo conozco como si fuera mi propia casa. Durante todo este tiempo he probado cientos de plugins y esta es la lista de los mejores y más indispensables:

      • All-in-One WP Migration. Probablemente el único plugin que funciona perfectamente cuando tienes que migrar tu WP entre hostings o símplemente si quieres hacer una copia de seguridad con todo (a diferencia de las herramientas nativas de importar/exportar que no copian plugins ni configuraciones ni algunos medios).
      • Akismet Anti-Spam. Imprescindible para detener los comentarios de spam en nuestros posts.
      • Jetpack by WordPress. Incluye varios servicios importantes para que tu sitio web funcione perfectamente. Se incluyen estadísticas, compartición en redes sociales, mejora de rendimiento, botones de Me Gusta, seguridad, etc.
      • WP Offload SES Lite. Se utiliza para conectar WP a AWS Simple Email Service para permitir el envío y recepción de correos. Esta es una alternativa mucho mejor que tener instalado nuestro propio servidor de email para evitar problemas de seguridad.
      • WooCommerce. Es algo más que un plugin. Es el comercio electrónico que más crece ahora mismo. Está repleto de funcionalidades y frente a otros productos como Magento o Prestashop es mucho más fácil de configurar y está nativamente integrado con WP por lo que solo necesitarás una única plataforma para tener tu web, tu eCommerce y tu blog.
      • Login with Ajax. Se utiliza para añadir un widget de login en la librería de widgets de tu sitio. Después de su activación, puedes añadirlo en una de las barras laterales o símplemente para reemplazar la página estándar de login de WP. Tiene un funcionamiento sencillo y limpio.
      • WP User Frontend. Es perfecto para crear formularios y convertir sus datos en posts o páginas. Tiene muchas opciones de configuración y es muy potente y fiable.
      • Site Kit by Google. Sin duda, este es el mejor plugin que puedes instalar para conectar Google Analytics en WordPress. Es mucho mejor que otras opciones, como MonsterInsights, en los cuales cedes el control de tu cuenta de Analytics a empresas externas. Site Kit, además, no solo viene con Analytics sino que también integra Search Console, AdSense y PageSpeed Insights.

Habrás notado que no he añadido nada relacionado con SEO y es que soy un gran amante del posicionamiento natural a base de interacciones, comentarios y actualización de contenido. Las cosas más imprescindibles como los mapas XML ya los genera automáticamente Jetpack.

Cambiar la URL en WordPress con SSH y VIM

Dejando de lado todo el proceso de creación de la URL, configuración de las Hosted Zones y cambios de DNS que es bastante trivial, especialmente si sabes hacerlo, uno de los puntos donde podemos quedar parados es en la página de configuración de WordPress a la hora de cambiar las direcciones. El problema suele ser que no es posible hacerlo desde la propia página y tenemos que ir a cambiar los parámetros al archivo wp-config.php.

Este paso es especialmente crítico cuando añadimos un certificado SSL para securizar nuestra página porque aunque parezca que funciona bien y que aparece el candado junto a la URL en nuestro navegador, el cambio no estará perfectamente finalizado hasta que tengamos las URLs actualizadas en wp-config.php mostrando https en vez de http.

Si disponemos de una conexión SSH, como en mi caso donde utilizo Lightsail de AWS en una instancia de Linux, podemos hacer el cambio usando el editor VIM y realizando los siguientes pasos:

      • Conectar a la cónsola de Linux con SSH
      • Ir al directorio apps/wordpress/htdocs/
      • Abrir el archivo con vim wp-config.php
      • Localizar las líneas define(‘WP_SITEURL’, ‘http://’ . $SERVER[‘HTTPHOST’] . ‘/‘); y define(‘WP_HOME’, ‘http://’ . $SERVER[‘HTTPHOST’] . ‘/‘);
      • Cambiar el texto en rojo con las nuevas URLs o símplemente añadir S al http si hemos instalado un certificado SSL
      • No olvidarse de añadir / al final de la URL.
      • Una vez realizado el cambio, tenemos que pulsar la tecla ESC y después teclear :wq para grabar y salir.
      • Finalmente cerramos la sesión SSH y ya debería estar hecho el cambio.

Si no queremos utilizar VIM, otra opción es hacerlo a través de FTP, accediendo al archivo y modificándo el archivo.

Automatizar luces con Alexa

Continúo automatizando cosas con Alexa y esta vez, más allá de controlar enchufes como explicaba en este post, lo que necesitaba era poder encender las dos luces de la terraza a la vez (están separadas unos 8 metros) y teniendo en cuenta que no tienen interruptores sino simplemente un cable que sale de la pared con corriente.

Lo que he hecho es utilizar un Sonoff TH10 directamente instalado en una de las cajas de empalmes de la pared, escondido a la vista y protegido de las inclemencias meteorológicas. El plan es no solamente controlar una de las luces sino también poder monitorizar la temperatura exterior. Para esto, he pasado el cable de la sonda desde la caja hacia el exterior, siguiendo la guía de los cables preexistentes.

Sonoff TH10 en la caja de empalmes

En la otra caja he instalado un Sonoff Mini DIY, un mini interruptor controlado también por wifi de tan solo 4 x 4 x 2 cms que se puede poner en cualquier lado de forma muy discreta.

La forma de conectar ambos Sonoffs es muy similar: «L In» y «N In» se conectan a la regleta con corriente eléctrica mientras que «L Out» y «N» se conectan a la lámpara, foco o lo que queramos encender. Una de las novedades más interesantes del Sonoff Mini DIY es que permite conectar un interruptor a S1-S2 para poder encender y apagar luces a través de wifi o del interruptor manual. En el siguiente esquema se muestra la forma de conectar dos interruptores conmutados.

Una vez que tenemos los dos Sonoffs conectados en las dos cajas de empalmes, ya solamente tenemos que activarlos en la aplicación eWeLink y posteriormente instalar en nuestra aplicación Alexa el skill «eWeLink Smart Home«. Y ya está, así de fácil.

Alexa detectará automáticamente todos los dispositivos adicionales que conectemos a eWeLink y podremos crear rutinas como «Alexa, enciende todas las luces» o «Alexa, enciende la luz izquierda de la terraza».