27 de enero de 2019

Cacharreando con el led RGD y Arduino

Esta tarde he estado practicando un poco. Es lo que tiene estar encerrado en casa... Bueno, no voy a desvelar lo que tengo en la cabeza... Todavía, pero aquí va un preliminar. Un control con un potenciómetro de los colores de un LED RGB (cátodo común). Más información en https://www.prometec.net/rgb-led/

El chasco es que la mezcla de colores no es "color mezcla"; o al menos a mí no me lo parece. La mezcla, por ejemplo, de azul y verde no da amarillo, en el sentido de que, al menos, no es esa la apariencia sino dos luces verdes y azules juntas. Pero en fin. Otros tonos parecen más acertados. 

La idea es tener un color progresivo con el potenciómetro desde el rojo al verde. No sé si lo he logrado mucho, pero por lo menos funciona.



Código arduino

long valor = 0; // valor de entrada del potenciómetro analógico
int pinElegido[]={3,5,6}; // valores de los pins
float colorIntermedio[]={10.0,100.0,100.0}; // colores que se alcanzan en el valor intermedio (1) RGB
int numPin = 2;

void setup() {
  pinMode(3,OUTPUT); // salidas analógicas
  pinMode(5,OUTPUT); // salidas analógicas
  pinMode(6,OUTPUT); // salidas analógicas
  Serial.begin(9600);

}

void loop() {
  valor = analogRead(A0);
  encender(valor); // devuelve un número entre 0 y 2 con la situación del valor
  delay(250);
}

// *********
// Funciones
// *********

void encender(long dato) {
  int valores = map(dato,0,920,0,900); // depuración del rango... El sensor no da más de 920 (ver cuando cambie de sensor)
  int cual = map(dato,0,920,0,10); // Elijo cual es el que me corresponde... Pero a lo mejor no hace falta
  float x = valores / 450.0; // paso a las x los valores, entre 0 y 2 (máximo se toma 900).
  // Funcion parabólica para el rojo
  float red = (127.5-colorIntermedio[0])*x*x+(2*colorIntermedio[0]-382.5)*x+255.0; // esta función calcula los valores de rojo, pasando por los colores 255 en 0,colorIntermedio[0] en 1 y 0 en 2
  red=red*(red>=0.0); // corta los valores negativos y los pone a cero

  // **********************************
  // Función exponencial para el verde
  // **********************************
  float Agreen= (colorIntermedio[1]*colorIntermedio[1])/(2.0*colorIntermedio[1]-255.0);
  float Cgreen = log(1.0-colorIntermedio[1]/Agreen);
  // Serial.print(Agreen,6);   Serial.print(" -- " );   Serial.print(Cgreen,6);
  float green = Agreen*(1-exp(Cgreen*x));  
  // float green = (127.5-colorIntermedio[1])*x*x+(2*colorIntermedio[1]-127.5)*x+0.0; // esta función calcula los valores de verde, pasando por los colores 0 en 0,colorIntermedio[1] en 1 y 0 en 2
  // green=green*(green>=0.0); // corta los valores negativos y los pone a cero
  
  float blue = -colorIntermedio[2]*x*x+2*colorIntermedio[2]*x; // esta función calcula los valores de azul, pasando por los colores 0 en 0,50 en 1 y 0 en 2
  blue=blue*(blue>=0.0); // corta los valores negativos y los pone a cero
  
  analogWrite(pinElegido[0],(int) red); // Escribo en el pin primero el valor de los rojos. Valor absoluto corta los valores negativos
  analogWrite(pinElegido[1],(int) green); // Escribo en el pin primero el valor de los rojos
  analogWrite(pinElegido[2],(int) blue); // Escribo en el pin primero el valor de los rojos
  /* 
  for (int i=0;i<=2;i++) {
    analogWrite(pinElegido[i],colores[cual][i]); //en cada pin Red 3, Green 5, Blue 6 se escribe los valores de "cual" he escogido
  } */
  // Serial.println((String) cual +" : "+ (String) colores[cual][0] +":" +(String) colores[cual][1] +":"+ (String) colores[cual][2] ) ;
  Serial.println((String) dato +" --> "+ (String) x +" : "+ (String) red +":" +(String) green +":"+ (String) blue + " cualitativo: " + (String) cual ) ;
}

10 de octubre de 2018

Shockwave Flash Activación

El problema de no ejecutarse cierto contenido en las pizarras digitales de la Junta de Andalucía puede resolverse en parte con la configuración del plugin de Shockwave Flash en Mozilla-Firefox.

Acceder en el Mozilla-Firefox a Herramientas>>Complementos y acceder al Plugin de Shockwave Flash (preferencias). Desmarcar "Bloquear contenido Flash peligroso e intrusivo" y ACTIVAR SIEMPRE.

 

8 de agosto de 2018

Repasando Python. Mi solución a "New Cities - SENDGRID"

No estoy muy convencido. Habría que repasar la lista de las conexiones filtradas, por si pueden generar agrupaciones. Pero resuelve la cuestión.


= = = = = = = = = =

import re

# -------------------
# pasar lista a cadena
# -------------------
def pasarLista(listado):
    cadena=[]   
    for subcadena in listado:
        for item in subcadena:
            cadena.append(item)
    return "".join(cadena) # envía la cadena.
   
def filtro(listado,quitar):
    cadena=[]
    for subcadena in listado:
        if (not subcadena[0] in quitar and not subcadena[1] in quitar):
            cadena.append(subcadena)
    return cadena

# ----------------
# función problema
# ----------------
def subnetworks(net, crushes):
  
    suma = 0
   
    # 1/ Construir una cadena con las conexiones.
    # hay una conexión a la fuente.
    cadena=pasarLista(net)
    cadena2=filtro(net,crushes)
   
    # 2/ Quitar los que estén en crushes - poner guiones.
    cadenaCrushes="".join(sorted([i for i in crushes]))
    cadenaNodos=re.sub("["+cadenaCrushes+"]",r"-",cadena)
    # cadenaNodos=re.sub("["+cadenaCrushes+"]",r"-","BABBACCDHHFDCACBACSE")
   
    # 3/ Obteniendo lista de grupos en cadenaNodos
    # unicos --> grupos de un solo nodo
    # conjunto --> cadena agrupando nodos
    conjunto=[j for i in cadena2 for j in i]
    unicos=[i for i in cadenaNodos.split("-") if len(i)==1]
   
    #4/ A partir de la cadena conjunto
    # si único está en la lista conjunto, quitar de único
    for j in conjunto:
        if j in unicos:
            unicos.remove(j)
           
    # print(cadena,cadenaCrushes,cadenaNodos,unicos,conjunto)
    # print(cadena2)
    # print(len(cadena2)+len(unicos))
   
    # La solución es la suma de los nodos filtrados +
    # los nodos que se han quedado sueltos en único
    # a menos de que tenga que hacer algo más en CONJUNTO
   
    return len(cadena2)+len(unicos)

if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert subnetworks([
            ['A', 'B'],
            ['B', 'C'],
            ['C', 'D']
        ], ['B']) == 2, "First 2"
    assert subnetworks([
            ['A', 'B'],
            ['A', 'C'],
            ['A', 'D'],
            ['D', 'F'],
        ], ['A']) == 3 , "Second 3"
    assert subnetworks([
            ['A', 'B'],
            ['B', 'C'],
            ['C', 'D']
        ], ['C', 'D']) == 1, "Third 1"
    assert subnetworks([
            ['A', 'B'],
            ['A', 'C'],
            ['A', 'D'],
            ['D', 'F'],
            ['B', 'C'],
        ], ['A']) == 2, "Second-BIS 2"
    print('Done! Check button is waiting for you!')

5 de agosto de 2018

Prestashop. Guía de trabajo.

Prestashop

Primera parte

Presentación de la tienda on line. Items calificables de la primera parte de la página.
  1. Inclusión de, al menos, tres categorías o subcategorías de productos. Las categorías no tienen por qué tener una imagen asociada.
  2. Cada categoría debe tener, al menos, un par de etiquetas. Puedes añadir además una meta descripción, un meta title y una url amigable.
  3. Usar Localización > Localización para importar paquetes de idiomas, monedas, etc. Descarga los de "United Kingdom" y "USA". Si navegas por Localización > Idiomas, podrás ver cómo se han añadido los idiomas inglés británico e inglés estadounidense. (¿Versión 1.6 sólo Inglés?)
  4. Edita una de las categorías o subcategorías que tienes, elige idioma inglés británico, y escribe las entradas de esa categoría en inglés. Guarda. Ve a la tienda, entra en esa categoría y cambia al idioma inglés para comprobar que aparece correctamente. Recuerda en que tienes que traducir al inglés cada campo que escribiste antes en español: etiquetas, url amigable, etc.
  5. Elegir 6 productos, que hay que distribuir entre las 3 categorías. Uno de esos seis productos deberá tener la información en inglés británico. Al menos uno de los productos tiene que tener una imagen (opcional: más de una imagen para un mismo producto, con una de portada). Importante: elige una referencia clara (clave primaria) para cada producto, como por ejemplo PR01,PR02,etc.
  6. Establecer los precios y el IVA de cada producto.
  7. Añade un nuevo impuesto y aplícaselo a un producto de los seis anteriores. Navega hasta Localización > Impuestos y añade el NUEVO IVA 23%. Al fondo de la página, elige basada en "Dirección de facturación". Navega después a Localización > Reglas de Impuestos y crea una nueva regla de impuestos, con el nuevo IVA, que se llame NOS SUBEN EL IVA, aplicado sólo a España. Importante: después de crear la regla, pulsar en "Añadir nueva regla de impuestos" (ver imagen).

  1. A otro producto cualquiera, establecer precios específicos desde la pestaña PRECIO. Elige que para los clientes (customers) españoles pagando en euros, se aplique una reducción de un 5% si compran tres o más unidades de ese producto.
  2. Sería conveniente que entrando en Catálogo > Atributos de Productos seleccionemos los que necesitamos. Por ejemplo, yo no necesito el número de zapatos, ya que no los voy a vender. Personalizar la lista de estos atributos.
  3. Gestiona manualmente la cantidad de productos que existen usando combinaciones, si un mismo producto tiene distinto tamaño o color pero sigue siendo el mismo y costando lo mismo, y cantidades, para definir manualmente cuántos productos quedan en la tienda.
  4. Utiliza la pestaña SEO para añadir información meta de cada producto. En español e inglés, de igual forma que lo hiciste para las categorías.
  5. Las características pueden gestionarse en el menú Catálogo > Características. Pon valores a algunas. Estas son características GENERALES de los productos. Navega después hasta PRODUCTOS > CARACTERÍSTICAS (o FUNCIONALIDADES en otra versión) y elige alguna para esa gama de productos.
  6. Añadiremos combinaciones (antiguas declinaciones) de los productos (pág 27 del manual). Navega hasta el menú Catálogo > Atributos y valores (Atributos de productos). Elige un atributo nuevo, distinto a color, capacidad, ICU que vienen por defecto y añádelo. Pulsando en la lista de atributos en Acciones el botón "+" aparece la lista de valores. Añade algunos. Posteriormente, en PRODUCTOS > COMBINACIONES  añade una nueva combinación de este producto usando el atributo que antes hayas elegido.
  7. NOTA: las características son siempre las mismas para todos los productos. Los atributos y valores pueden depender de los modelos que haya para cada producto.
  8. Opcional: personalización de productos. Añadir adjuntos (por ejemplo, guías de instalación, etc).
  9. Añadir, al menos, un "pack" de productos.

Segunda parte

  1. Entra en Catálogo > Monitoreo. Podrás observar si tienes categorías vacías, productos desactivados, productos con o sin atributos y fuera de stock
  2. OBSOLETO EN LA VERSIÓN 1.6 (no hacer).En Catálogo > Mapas de Imágenes (escenas) puedes incluir imágenes interactivas. Una imagen grupal en la que, pulsando con el botón en diferentes zonas, accedes a diferentes productos. Lee la siguiente guía:  mapas de imágenes. Pulsa en "guardar y continuar" para ir guardando los cambios. Añade, al menos, una imagen mapeada o una escena.
  3. Puedes gestionar las etiquetas usadas en la web desde Catálogo > Etiquetas. Asegúrate que, al menos, existen 4 etiquetas en la web, tanto en español como en inglés (CUATRO POR CADA UNA).
  4. En Clientes > Grupos añade un nuevo grupo de clientes. Por ejemplo, un grupo llamado "de la provincia de Cádiz" a los que se aplicará un 5% de descuento.
  5. Añade manualmente clientes a la base de datos, en Clientes > Clientes. El nombre, apellidos, dirección de correo electrónico y una contraseña son obligatorios. Añade, al menos, 2 clientes a la base de datos.  Uno debe pertenecer al grupo anterior (punto 4).
  6. En Clientes > Direcciones, al menos para uno de los clientes anteriores, introduce datos de teléfono, dirección, código postal, etc. Empieza escribiendo el correo electrónico, y podrás recuperar el nombre, apellidos, etc. La información ya añadida en clientes.
  7. Truco: para ver toda la información referida a un cliente, el correo electrónico desaparece y se convierte en un botón. Al hacer click, aparecerá no sólo su información, sino lo que haya comprado, su carrito, sus direcciones, sus grupos, etc.
    • Bien por el procedimiento del punto 7 o bien entrando en Clientes > Carrito se puede saber qué ha pedido el cliente.
  8. Introduce al menos un fabricante nuevo usando el acceso Catálogo > Fabricantes. Recuerda activarlo. Los campos de información son ya conocidos, con etiquetas, descripción, logo... Los fabricantes coinciden con las distintas marcas que vendemos en la tienda. En la lista de los productos, en Catálogo > Productos (Elige un producto de la lista) > Asociaciones puede cambiarse el nombre del fabricante de dicho producto.
  9. Introduce al menos dos nuevos proveedores usando el acceso Catálogo > Proveedores. Añade información de dónde se encuentran esos proveedores y actívalos. Navega hasta Catálogo > Productos (Elige un producto de la lista) > Proveedores y, por cada producto, elige los proveedores que te suministran ese producto. Puedes además incluir la referencia que tu proveedor tiene de ese producto.
Gestión de los módulos de pago.
  1. En este punto hemos de decidir cómo nos podrán pagar los clientes. Buscamos la opción del menú Módulos > Pago . Aparecerán muchos servicios a través de los cuales poder ingresar dinero. Activados, por defecto, tenemos Trasferencia bancaria y Cheque. Vamos a desactivar la opción de cheque y a configurar las opciones de Transferencia bancaria (si es necesario, actualizar previamente). Incluir nombre de la empresa propietaria de la cuenta, nº de cuenta, sucursal, dirección de la sucursal (inventaros los datos). En un caso real, este punto es fundamental. Hay que barajar la posibilidad de aumentar el número de formas en las que un cliente pueda pagarnos. Una muy usada es PayPal.
  2. De las otras opciones vamos a instalar el módulo de Pago Contra Reembolso (o cashondelivery).
  3. En la misma página de "Pago" podemos gestionar las restricciones (al fondo de la página web). Entre ellas, vamos a activar los módulos de transferencia y pago contra reembolso para todos los países, quitárselas a los visitantes e invitados (visitors-guests), y por moneda, dejarla la transferencia sólo en euros. No os olvidéis de pulsar en "Guardar restricciones" para cada caso.
Transportistas.
  1. Es interesante restringir las zonas geográficas, países y estados a los que se venderá. Verlo en Localización >> Zona (deja activado sólo Europa y Norteamérica). Usa esta opción en combinación con las zonas geográficas de los transportistas (punto siguiente).
  2. Definir dos nuevos transportistas (Menú Transportes >> Transportistas). Puedes, por ejemplo, acceder a correos y definir la entrega por paquete azul (nacional) o por paquete internacional económico (internacional) (*). Otro de ellos, puedes buscarlo en las múltiples empresas de paquetería, como NACEX, SEUR, etc.
    • (*) NOTA: las condiciones de los envíos de paquetes con correos pueden cambiar. En todo caso, consultar la web.
    • SEUR tiene un módulo de instalación gratuita en PRESTASHOP 1.6, aunque hay que registrarse en la compañía para usarlo.
    • Al menos, de uno de los transportistas hay que rellenar la ficha: velocidad, plazo máximo, rangos de precios según zonas geográficas, tamaños máximos de paquetes, etc.
  3. Llegados a este punto, llamar al profesor/a para que pueda realizar una compra en mi tienda.
Anexo: configuración del tema en http://profesoryale.com/plantillas-prestashop/

Tercera parte

  1. En este punto el profesor/a debería haber realizado una o dos compras en mi tienda (una como transferencia bancaria, otra como pago contrareembolso).
  2. Consultar la lista de pedidos (pág. 54) en Pedidos > Pedidos.
    1. Comprobar el estado de cada pedido. Pulsar en la lista en el icono 
    2. En el pedido por Contrareembolso  puede comprobarse su estado (Preparación en curso). Puede, dentro de sus características, verse la factura generada y el comprobante de envío.  Cambia el estado a "enviado", como que ya se ha realizado el envío.
    3. Asímismo, cambiar el estado de un envío por transferencia como "pago aceptado" o "enviado".
    4. En Facturas, puede verse un desglose de las facturas emitidas, según fechas o estados. En ("Bonos de entrega")"Comprobantes de Entrega" se puede ver una relación de lo que se ha enviado al cliente. Queda constancia en este último caso de la factura y del albarán de entrega.
    5. En ("Estado de los pedidos") "Estados" se definen todas aquellas situaciones en las que se puede encontrar un pedido.
    6. Vamos a activar las devoluciones. En Pedidos > Devoluciones de mercancía activar las devoluciones en 15 días. Avisar al profesor/a para que, bajo su cuenta, demande la devolución de un producto. Debe escribir una razón. Vosotros podréis poner el estado de la devolución en "Pendiente de confirmación" ," En espera de paquetes", "Paquetes recibidos", "Volver negó" y "Diligenciados".
    7. Opcional: establece una devolución como "diligenciada". Accede después a Pedidos >> Pedidos. En la parte superior, encontrarás un icono de "Devolución parcial" "Reembolso Parcial". Púlsalo. Podrás entonces...
      • "Reingresar productos al inventario" - Opción que deberás confirmar si el producto vuelve a estar disponible para la venta.
      • "Crear un bono" - Le creará un bono de descuento para usar en próximas compras, estos aparece en "Pedidos >> Vales"  "Reglas de Descuentos/Vales descuento"
      • "Reembolso parcial" (Botón) esto te creará la factura rectificativa del pedido por el importe indicado; una factura rectificativa es importante para cumplir con la fiscalidad española. Dicha factura puede obtenerse del listado de documentos como "Créditos a favor".
    8. Reglas de descuento >> Vales descuento (vales o reglas de cesta). Seguid las instrucciones que se dan en el vídeo (https://youtu.be/BW__4PY6SLc y crear una regla de compra o vale para regalar un descuento a un cliente concreto.  Esta opción sirve, o para bien realizar una devolución descontando lo pagado en la próxima compra, o bien para aplicar un vale de descuento promocional a un grupo de clientes a los que, por ejemplo, se les regale una cierta cantidad de dinero en sus compras, o uno de los productos de la tienda, o la rebaja del precio de envío. Es una opción muy configurable.
    9. Ofrecer una regla de descuento del 5% a una categoría de producto determinada en Reglas de descuentos >> Reglas del catálogo.
  3. Opcional: Conviene repasar los vídeos de Luis Cambras sobre gestión de pedidos:
  4. Mensajes al cliente. Si al cliente, desde pedidos, le queremos enviar un mensaje podemos hacerlo. Escogeremos un mensaje predefinido (que podemos configurar desde Pedidos > Mensajes de Pedidos) o bien escribiremos uno nosotros. Escribid uno.

Cuarta Parte


  1. En Localización >> Monedas, activaremossólo el euro como moneda transaccional. Actualizar las tasas de cambio.
  2. En Estadísticas, tenemos una gran cantidad de opciones que analizan distintos aspectos de nuestra tienda. Analiza, por ejemplo, las ventas y pedidos en el período de un año. Enseña los resultados/as a tu profesor/a. Valora el hecho de estudiar opciones como "Procedencia de los visitantes" que indica qué página web han visto tus clientes ANTES de acceder a tu página.
  3. Los módulos son funcionalidades extra que pueden instalarse o desinstalarse de la tienda. Accede a la lista en Módulos >> módulos. Desde aquí pueden activarse, desactivarse, instalarse, desinstalarse... Por ejemplo, filtra los módulos por Módulos no instalados, y por ejemplo, instala el módulo "Shopgate M-Commerce". Usando la pestaña Módulos >> Catálogo de módulos y temas accederás a una serie de módulos y temas instalables, pero no gratuitos. También desde el enlace "Addons" (enlace en la parte inferior derecha de cualquier página del back-office).
  4. Instalación de un tema (instala al menos otro tema):
  5. Para configurar el aspecto de la tienda (plantilla por defecto) os dejo esta web: http://profesoryale.com/plantillas-prestashop/
  6. Leer bien el apartado 5. Algunas de las cosas que aparecen en la página se modifican en el Configurador de temas y otras tienen sus módulos específicos, como las diapositivas de la página web (que hay que buscar en Módulos  >> Módulos ).
  7. El menú superior, por ejemplo, puede cambiarse desde Módulos  >> Módulos buscando "Menú horizontal superior".
  8. En Módulos >> posiciones de los módulos pueden cambiarse la posición de los módulos en el front-office (tienda visualizada). Cada zona de la página se llama "hook". Los módulos pueden cambiarse de hook, aunque no siempre es posible, porque el programa no lo permite. Más información en esta web.
  9. Editar PREFERENCIAS:
    • Asegurarse de que en General Configuración habilitamos el redondeo Clásico.
    • En Pedidos poner el proceso de pedido en una sola página.
    • Habilita el modo B2B en las preferencias de cliente.
    • En SEO y URL tener en cuenta que hay que escribir el dominio donde está mi página. En modo local es localhost, pero si la lanzo por internet hay que cambiar el nombre del dominio. también se puede cambiar el nombre y la información de ciertas páginas: si cambio la página "index" personalizo la información que aparece en el título de la ventana del navegador y su pestaña.
    • En CMS se gestiona el contenido estático, o sea, de aquellas páginas que muestran informaciones fijas, como las condiciones de compra, etc.
    • Se pueden gestionar en preferencias >> imágenes los tamaños y los tipos de imágenes.
  10. Otros:
    • En Clientes >> Títulos Tratamientos se puede cambiar el tratamiento formal de una persona: señor, señora, doctor, etc.
    • En Parámetros Avanzados >> Correo electrónico tener en cuenta que , si no funciona el envío de mensajes con la función mail de PHP, es posible que tengamos que configurar una dirección de correo por SMTP. Consultar proveedor de  correo electrónico. A mí me gusta el servicio de gmail.
    • En Parámetros Avanzados > Copia de seguridad DB Respaldar BD puedes guardar una copia de los datos de la base de datos. Importante tener copias de tu página por si necesitases restaurarla. Hazlo con cierta frecuencia.
    • En Parámetros Avanzados > Protocolos del sistema Registros/Logs pueden verse los errores que se han cometido en el mismo. Normalmente los errores no son críticos. Aquí aparece un listado de ellos. También u nregistro de lo que hemos ido haciendo en la página.
    • Si está instalado el módulo de actualización 1-click , desde Parámetros Avanzados >> 1-click upgrade podemos actualizar las versiones. Recomiendo antes hacer copia de la base de datos y del sitio web.
    • En Administración >> Preferencias pueden editarse algunos parámetros, como el tamaño máximo de archivos que pueden subirse al sitio.
    • En Administración >> Acceso rápido se pueden editar diversos accesos a ciertas páginas.
    • En Administración >> Empleados pueden añadirse cuentas de administración del sistema, para que más personas puedan administrar el sitio web. Añadir al menos otra cuenta de administrador.
    • En Administración >> perfiles y permisos pueden editarse ciertos roles con los permisos correspondientes para administrar el sitio, más o menos importantes.
    • En Preferencias >> productos, apartado "inventario de productos", activar las opciones: "¿Activar el manejo automático del inventario?" y "¿Habilitar las opciones avanzadas del inventario?". Aparecerá una nueva opción del menú de administración llamada Existencias. Desde aquí puede gestionarse el stock de productos.