viernes, 29 de diciembre de 2023

Instalar Cristal Azul en Raspberry 3

Después de rebuscar por Internet he encontrado varios tutoriales con instrucciones para instalar Kodi con Cristal Azul en una Raspberry Pi 3. En este artículo los he ordenado para tener todo el proceso de principio a fin, en la sección de Links encontrareis las fuentes. 


¿Que es Kodi?

Kodi es para muchos el reproductor o herramienta de streaming multimedia favorita, ya que además de las funciones básicas de un reproductor, se le pueden añadir un montón de funciones gracias al gran catálogo de addons para Kodi que podemos encontrar. Además, otra de las ventajas de Kodi es que es compatible con la gran mayoría de dispositivos. A continuación, vamos a mostrar cómo instalar Kodi en Raspberry Pi paso a paso.

En el primer caso, OMSC y LibreELEC son las distros más utilizadas para poder tener Kodi en las Raspberry Pi de forma rápida y sencilla, aunque puedes elegir otra, te para este tutorial te mostraré como instalarlo con LibreELEC, ya que me he encontrado con problemas con OMSC.


1er Paso: Instalar LibreELEC

Los pasos a seguir son muy sencillos, sin embargo, vamos a mostrar un repaso de todos los pasos a seguir para descargar e instalar esta distro en nuestra Raspberry Pi. El primer paso es formatear la SD para que Raspberry Pi pueda arrancar el sistema, algo que podrás hacer en pocos minutos.

Los primero de todo es ir a la página oficial de LibreELEC y descargar la versión de la herramienta para nuestro sistema operativo. A continuación, instalamos el programa LibreELEC USB-SD Creator como cualquier otra aplicación en nuestro PC y lo abrimos.

En la interfaz que se nos muestra debemos elegir nuestra versión de Raspberry Pi, la versión de LibreELEC, aunque por defecto nos asignará la última disponible, si queremos descargar o seleccionar el archivo si ya lo tenemos descargado, indicar el USB o tarjeta SD donde queremos instalar LibreELEC y por último pulsar sobre el botón Escribir imagen.



Una vez finalizado el proceso, ya podemos retirar el USB o tarjeta donde la hemos creado y conectarla a nuestra Raspberry Pi. Aprovecharemos también para conectar la fuente de alimentación, el monitor o televisor y el teclado para poder manejar Kodi en la Raspberry Pi. Ahora, ya podemos iniciar el programa, que nos pedirá algunas configuraciones básicas y, por último, ya podremos comenzar a disfrutar de Kodi en la Raspberry Pi.


2o Paso: Instalar add-on Luar

Los pasos de instalación son los siguientes:

1. Abrimos el Kodi

2. Vamos a los Ajustes ( el icono del engranaje )


3. Accedemos al Administrador de archivos


4. Seleccionamos Añadir fuente


5. En la URL indicamos la fuente http://luarsource.github.io/Fuente en el nombre escribimos Luar para identificarlo y después le damos a OK.


6. Volvemos al menú principal y seleccionaos Complementos 


7. En complementos le damos al icono de la Caja 


8. Marcamos la opción de Instalar desde archivo zip 


9. Escogemos la fuente Luar (la que hemos configurado en el 5o paso)


10. Seleccionamos el archivo script.luar-x.x.x.zip (depende de cuando lo leas la versión será diferente).


11. Esperamos a que salga la notificación de Add-on instalado. Si al cabo de unos minutos, no aparece, vuelve a repetir el paso 10 y normalmente a la segunda aparece el mensaje de Instalado. 


12. Ahora volvemos al menú de Complementos y ya tendremos disponible Luar . La primera vez que lo arranques completará la instalación.



3er y último paso. Instalar Cristal Azul

1.  Volvemos al menú inicial de Kodi y vamos a Complementos


2. Entre los Add-ons de programa seleccionamos y abrimos Luar


3. Escogemos la opción Por categorías 


4. Seleccionamos la categoria de Culturales y Curiosos 


5. Seleccionamos CRISTAL AZUL 


6. Marcamos sobre Instalar y esperamos a que se complete


7. Esperamos al mensaje que indica que se ha completado. 


8. Y ya tendremos disponible el complemento de CRISTAL AZUL en el menú de Add-ons de vídeo 


9. Y ya dentro de CRISTAL AZUL podrás navegar por las categorias de contenido




Links:

https://www.adslzone.net/como-se-hace/kodi/instalar-kodi-raspberry-pi

https://libreelec.tv/downloads/

https://mundokodi.com/addon-cristal-azul-en-kodi/

https://mundokodi.com/addon-luar-en-kodi/

domingo, 30 de enero de 2022

Creando un WebSocket en la API de Binance con Python - Día 2

En esta segundo articulo del blog, vamos a crear un WebSocket que conecte con la API de Binance. 

Seguramente tú ya lo sabes, pero en el momento de realizar este ejercicio no tenia claro lo que era un WebSocket, así que si tú ya lo sabes, puedes saltarte este apartado. 

Qué es un WebSocket? 

Un WebSockets es una sesión de comunicación interactiva entre el navegador del usuario y un servidor. Usando esta sesión con la API de Binance, puedo enviar mensajes a un servidor y  recibir respuestas controladas por eventos.

Antes de empezar

Antes de empezar a jugar con el código, recuerda que tienes que importar las librerias de Binance, cargar las claves de la API e iniciar el Cliente. 

# Importar librerias
import binance 
from binance.client import Client

# Cargar claves de variables de OS y crear objeto Cliente
import os
api_key = os.environ.get('binance_api')
api_secret = os.environ.get('binance_secret')
client = Client(api_key, api_secret)
# si quieres usar la API de TESTNET en vez de la del entorno real
client.API_URL = 'https://testnet.binance.vision/api'

En la última línea se usa para acceder a la API de Testnet de Binance en vez de la del entorno real.


Crear un WebSocket para obtener el último precio


El websocket de Binance permite que solo con enviar un comando se cree un canal que reciba el último precio de un token.

Primero vamos a necesitar importar la clase ThreadedSocketManager y la función sleep del modulo de time . 

from time import sleep from binance import ThreadedWebsocketManager
El siguiente paso es crear un diccionario que alojara los datos del último precio e indicará si existe algun problema con el websocket. 
btc_price = {'error':False}
def btc_trade_history(msg):
    ''' define how to process incoming WebSocket messages '''
    if msg['e'] != 'error':
	print(msg['c'])
	btc_price['last'] = msg['c']
	btc_price['bid'] = msg['b']
	btc_price['last'] = msg['a']
	btc_price['error'] = False
    else:
        btc_price['error'] = True

Estamos almacenando algunos elementos en el diccionario para poder acceder a los datos fuera de la funcion btc_trade_history y esta es la manera en que accederermos a los datos del websocket. 

El último paso es crear una función que le indique al socket que hacer cuando reciba la información, para este primer ejemplo tan solo imprimeros el último precio de Bitcoin en pantalla. 

bsm = ThreadedWebsocketManager()
bsm.start()
bsm.start_symbol_ticker_socket(callback=btc_trade_history, symbol='BTCUSDT')

Estamos llamando a la función start_symbol_ticker que tiene una salida similar a la función get_symbol_ticker que vimos en la entrada anterior , pero esta vez recibiremos un flujo de datos del último precio del ticker que hemos escogido (BTCUSDT).



Para parar el canal tienes que usar la función stop().

bsm.stop()

Si quieres escoger otro ticker tan solo tienes que cambiar el parametro symbol . Por ejemplo, si quieres ver el precio de Ethereum en Dolares $ :

bsm.start_symbol_ticker_socket(callback=btc_trade_history, symbol='ETHUSDT')



El WebSocket puede proporcionar multiples datos, si quieres ver el detalle de las opciones y parametros disponibles puedes verlos usando el comando help() o bien consultar la documentación. 

help(ThreadedWebsocketManager)




Y si has seguido leyendo hasta aquí, muchas gracias!


Links:

http://acodigo.blogspot.com/2021/01/python-binance-api.html

https://algotrading101.com/learn/binance-python-api-guide/

https://python-binance.readthedocs.io/en/latest/websockets.html




jueves, 23 de diciembre de 2021

Probando la API de Binance con Python - Día 1

 

Hace mucho tiempo que no escribo en este blog porque despues de lanzar la APP para iPhone y analizar el feedback decidí aparcarlo para dedicar los esfuerzos a otros proyectos.

Ahora que el mundo de las cryptomonedas está en boca de todo el mundo he decidido retomar los proyectos relacionados con las herramientas para trading. El primer paso que he querido dar es el de probar la conexión a la API de un trader, es este caso el de Binance que permite crear una cuenta de prueba para poder "jugar". 

Para empezar, contestaremos a la pregunta de ¿Qué es la API de Binance? 




Una API (Application Programming Interfaces) es una interfaz que permite la comunicación con el servicio a través de un lenguaje de progración. Para este caso Binance tiene una API RESTfil que usa peticiones HTTP a través de Python para enviar y recibir datos. Además tambien tiene un socket web que permite el streaming de datos como el precio o el estatus de la cuenta. 

En esta entrada configuraré un framework para conectar a la API usando la libraria python-binance en un sistema Windows. En una próxima entrada, haré lo mismo para un sistema Mac. 

Preparar el Framework

Para preparar el entorno de trabajo que permita conectarnos a la API de Binance necesitaremos tres cosas: 

  • el cliente de Python
  • el modulo de gestión de paquetes PIP 
  • y la libraria Python-Binance

Para instalar el cliente Python en Windows 10 es tan fácil como buscarlo en la Microsoft Store e instalarlo.



Para obtener PIP, el primer paso es descarcargar el script que lo va a instalar: 

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

Una vez descargado, ejecutamos el script desde Python.

python get-pip.py

Y una vez se complete la instalación, solo queda comprobar que esta correctamente instalado.


El último punto es instalar el 

pip install python-binance

Con estos tres componentes ya tenemos el framework necesario para conectar a la API, el siguiente punto es realizar la conexión y para ello, necesitamos unas claves para autenticarnos. 

Obtener claves de Testnet

Antes de empezar a hacer trading en un entorno real Binance da la opción de testear el codigo en una Testnet: 

https://testnet.binance.vision/



Desde aquí podremos autenticar usando la cuenta de GitHub:




Una vez dentro, veremos disponible la opción de generar unas nuevas claves HMAC_SHA256 para conectar a la API. Tambien es posible registrar unas claves RSA, pero es algo que veremos en otra ocasión. 


Una vez cliquemos en el enlace para generar las claves HMAC SHA256, tan solo tenemos que introducir una descripción que tan solo nos valdrá para identificar las claves en la web:


Nos mostrará las claves y las guardaremos a buen recaudo para poder usarlas en nuestros scripts para autenticar con la API. 

Securizar las claves de la API

Os recomiendo guardar las claves como variables de entorno, de esta manera aunque guardes el código en de tu script en un repositorio Git público o lo compartas con alguien, no corres el riesgo de revelar las claves. Para hacerlo puedes usar estos comandos: 

set binance_api=aqui_tu_clave_api
set binance_secret=aqui_tu_secreto_api

Y puedes probar a importar las variable a Python usando el comando import os de la siguiente manera :


"Hello World!"

Ahora que tenemos el framework preparado y las claves generadas como primera prueba vamos a hacer algunas consultas a la API. 

El primer paso es iniciar un cliente: 

import os # para importar las variables de entorno donde estan las claves
from binance.client import Client # para importar la clase Client

Como en la prueba anterior, cargamos las claves que tenemos en las variables de entorno.

# importar claves
api_key = os.environ.get('binance_api')
api_secret = os.environ.get('binance_secret')

El siguiente paso es crear una objeto de la clase Client usando las claves de la API


client = Client(api_key, api_secret)

Y el último paso es cambiar manualmente la URL para conectar al entorno de Testnet: 
client.API_URL = 'https://testnet.binance.vision/api'
Llegados a este punto podemos empezar a lanzar consultas a la API. 

Lo primero que podemos probar es obtener los balances e información de la cuenta de test: 
# obtener todos los balances e informacion de la cuenta: print(client.get_account())

La siguiente prueba puede ser el balance de una crypto en concreto, para este ejemplo Bitcoin:
print(client.get_asset_balance(asset='BTC'))

Y la última prueba es la de obtener el precio de un token en concreto, por ejemplo Ethereum
# obtener el precio de la API de la Testnet btc_price = client.get_symbol_ticker(symbol="ETHUSDT") # imprimir el resultado print(btc_price)


Y hasta aquí la primera toma de contacto con la API de Binance, el framework para conectarse a la API real es el mismo, la única diferencia es que las claves hay que solicitarlas en la cuenta de Binance que tengamos abierta. Pero eso lo veremos en futuras antreadas. 

Gracias por llegar hasta aquí!


Links

https://algotrading101.com/learn/binance-python-api-guide/

https://phoenixnap.com/kb/install-pip-windows


lunes, 27 de abril de 2015

v 1.2

Con las últimas versiones de dispositivos iOS y los nuevos modelos de iPhone, me ha tocado adaptar el código de la aplicación y corregir la visualización con el modulo de AutoLayout .Si hay alguien interesado en como funciona que me lo comente en privado y le doy la información que me ha sido útil.

A nivel de funcionalidad no he añadido nada, solo he cambiado el Banner de publicidad de iAd de Apple por el AdMob de Google.

v 1.2

  • Corrección de Bugs
    • Corregir errores con con la localización (traducción de la versión según la configuración del dispositivo) .

martes, 12 de agosto de 2014

v 1.1


Después del feedback recibido sobre la primera versión de la aplicación TraderTools, he corregido algunos los bugs que me han comentado y incluido algunas filtros para evitar errores con los datos introducidos para calcular los valores. 

v1.1

  • Corrección de Bugs
    • El nombre de la App se muestra mal en el icono de inicio.
    • La barra de publicidad no aparece en la parte inferior de la pantalla en iPhone 5, se incluye la funcionalidad AutoLayout para solucionar este bug.
  • Control de errores
    • Se controla que el precio de StopLoss sea inferior al precio de entrada.
    • Se controla que precio objetivo sea superior al precio de entrada. 

miércoles, 18 de junio de 2014

Qué es TraderTools?


TraderTools es una App para el Control de Riesgo en operaciones de Bolsa.

El control de riesgo consiste en tener la capacidad de saber cuanto dinero estamos arriesgando en cada operación, y realizar la operación en función de los parámetros de entrada (precio de compra, stoploss, precio de venta) y de ese riesgo.

Las funciones que incluye la versión 1.0 de la aplicación son:

  • Simulador de resultados : Muestra las posibles ganancias o pérdidas que se pueden obtener en una operación con los parámetros indicados. 
  • Ratio Bº/Rº : Indica el Ratio Beneficio / Riesgo , el Ratio del beneficio que esperamos obtener en función del capital que estamos arriesgando. 
  • Control de Riesgo : Calcula el número de acciones a comprar teniendo en cuenta los parámetros de entrada y el capital que estamos dispuestos a arriesgar.
  • Analizador de Operación : Analiza una operación completa teniendo en cuenta las funciones anteriores: Ganancias, Ratio B/R y Control de Riesgo
Link iTunes

Instalar Cristal Azul en Raspberry 3

Después de rebuscar por Internet he encontrado varios tutoriales con instrucciones para instalar Kodi con Cristal Azul en una Raspberry Pi 3...