lunes, 4 de junio de 2018

OrangePi PC

A continuación todo lo que he ido reuniendo sobre la configuración que yo buscaba, como servidor de archivos y gestor de descargas:

  1. Descargar e instalar Armbian. 
  2. Ajustar distribución de teclado español.
  3. Ajustar la zona horaria
  4. Cambiar a una IP fija
  5. Hacer un script que se ejecute al inicio, o bien tras iniciar sesión en la consola.
  6. Personalizar la pantalla de inicio MOTD (Message Of The Day).
  7. Instalar el servidor de archivos SAMBA
  8. Montar un Pendrive de forma fija
  9. MiniDLNA, para ver los archivos compartidos desde un smart TV (probado en Samsung)
  10. Transmission-daemon. Para descargar torrent desde PC o App Android/iOS.
  11. Instalar un servidor VPN
  12. Configurar un servidor DNS (si tu IP es dinámica)
  13. Redirigir puertos en el router
  14. Utilidades y comandos

1. Descargar e instalar Armbian. 

En mi caso, la versión de consola 5.38. Son 244mb de descarga. La he subido a mi Drive, ocupa una tarjeta de 2Gb al 70%, una vez instalado.
También he probado la versión completa, subida a mi Drive por si las moscas. Ocupa una tarjeta de 8Gb al 30%, una vez instalado.
No pierdo demasiado tiempo explicando cómo descargar y grabar la imagen en la microSD, ambas vienen en un archivo comprimido que contiene un .img; hay muchas herramientas para grabarlo a la SD.
Sí hago hincapié en el login inicial: 
nombre de usuario: root
contraseña: 1234
También lo pone en la web de armbian, pero no lo ví en su momento...

Para las siguientes configuraciones iniciales, hay maneras más fáciles de hacerlo en el entorno gráfico, pero como la consola vale para las dos, me centro en ella.

2. Ajustar distribución de teclado español.

sudo dpkg-reconfigure keyboard-configuration
Elegir teclado genérico de 105 teclas.

3. Ajustar la zona horaria

sudo dpkg-reconfigure tzdata


4. Cambiar a una IP fija

Liberar IP:
sudo dhclient -r
Renovar IP (DHCP):
sudo dhclient

Para establecer una IP fija yo lo he hecho con la utilidad de configuración de armbian:
sudo armbian-config

Network/IP/Static/Ajustar IP/Cancel/cancel

Tras reiniciar, se habrá ajustado a la IP seleccionada.
También posible sin reiniciar:
ifconfig (equivalente a ipconfig en windows, muestra información del adaptador (eth0) e ip actual)
sudo ifdown eth0 (desconecta el adaptador eth0)
sudo ifup eth0 (lo vuelve a conectar, esta vez con la IP ajustada).

5. Hacer un script que se ejecute al inicio, o bien tras iniciar sesión en la consola.

Muy útil para cargar programas, etc. Hay dos opciones: que se inicie cuando arrancas la OPi, aunque no hayas encendido la pantalla ni iniciado sesión, o bien cuando inicias sesión en consola, SSH, etc.
La primera la expondré en la sección del VPN
La segunda es la que explico en la sección siguiente:

6. Personalizar la pantalla de inicio MOTD (Message Of The Day).

sudo run-parts /etc/update-motd.d/

















7. Instalar el servidor de archivos SAMBA

sudo apt-get install samba
Nueva carpeta para compartir en la red:
sudo mkdir /shared
Check permisos (por curiosidad):
stat /shared (mostrará 0755)
Le damos permisos:
sudo chmod 777 /shared

Este es un punto que me costó entender cuando empecé con linux: esta carpeta pertenece a la tarjeta SD (es el "disco duro" de la Orange Pi"), con lo cual, podemos poner cosas dentro hasta llenar el disco. Sin embargo, también podemos utilizarla como punto de montaje de un medio extraible (disco duro o pendrive USB). Así, esta carpeta "enlazará" con el medio seleccionado, y todo lo que pongamos, se guardará en el pincho o disco duro externo.
Si ya lo hemos enchufado, podemos identificarlo por su capacidad con el comando:
sudo fdisk -l
En mi caso aparece como /dev/sda1
Para ver tipo de disco:
sudo blkid /dev/sda1
En mi caso, TYPE="vfat"
Otro dato muy importante es "UUID": si utilizamos más de un pendrive y queremos que uno en particular siempre se monte en una ubicación concreta, lo definiremos así al editar la tabla fstab:
sudo nano /etc/fstab
 Y añado la siguiente línea:
/dev/sda1 /shared vfat defaults 0 0
Si quiero montarlo por UUID, igual:
UUID=47FA-4071 /shared vfat defaults 0 0

Ahora editamos el fichero de configuración:
sudo nano /etc/samba/smb.conf

Para añadir al final:

[SAMBA]
comment = Carpeta compartida
path = /shared
browseable = Yes
writeable = Yes
create mask = 0777
directory mask = 0777
Public = yes
Guest ok = yes

Para terminar con la configuración de samba, hay que darle una contraseña para samba a nuestro usuario de linux (o crear uno nuevo en linux para luego darle contraseña y usarlo en samba):
sudo smbpasswd -a miguel

8. Montar un Pendrive de forma fija

Ya visto en el apartado anterior.

9. MiniDLNA, para ver los archivos compartidos desde un smart TV (probado en Samsung)

Empiezo instalando el paquete:
sudo apt-get install minidlna
Ahora configurando las opciones:
sudo nano /etc/minidlna.conf
Modifico la línea:
media_dir=V,/shared
También me gusta descomentar la siguiente y darle un nombre visible desde la TV:
friendly_name=OrangePi

Si hay que hacer algún cambio en la configuración, detener el servicio, hacer el cambio y volver a arrancarlo:
sudo service minidlna stop
sudo service mimidlna (re)start

10. Transmission-daemon. Para descargar torrent desde PC o App Android/iOS.


Primera parte: Instalación y configuración en la OPi.


sudo apt-get install transmission-daemon
sudo service transmission-daemon stop
Editar el fichero de configuración:
sudo nano /etc/transmission-daemon/settings.json
Ahí modificamos las líneas:
"download-dir": "/shared",
"incomplete-dir": "/shared/temp",
"incomplete-dir-enabled": true,
"rpc-password": "mi contraseña",
"rpc-username": "mi usario",
"rpc-whitelist-enabled": false,

Como hicimos en el apartado 7; nueva carpeta para los archivos temporales:
sudo mkdir /shared/temp
Check permisos (por curiosidad):
stat /shared (mostrará 0755)
Le damos permisos:
sudo chmod 777 /shared/temp

sudo service transmission-daemon restart

Ahora, tras reiniciar la OPi, debería estar el servicio corriendo:
sudo reboot now
sudo service transmission-daemon status
Para salir de ahí: Ctrl+C

Segunda parte: Uso desde Android.

Descargar Remote Transmission.
Configurarlo con la dirección, nombre de usuario y contraseña escogidas anteriormente.
Añadir nuevos archivos copiando y pegando el enlace magnet.

También puede hacerse desde el ordenador, entrando en la IP:9091.

Problemas con permisos.

A la carpeta madre (/shared) le hemos dado permisos de escritura (chmod 777), pero las que crea en adelante (cuando añades una descarga, por ejemplo), sólo tienen permisos de lectura (755), cuando accedemos por Samba.
Por lo que para borrar o modificar una carpeta, renombrar un archivo, etc, tengo que entrar por línea de comandos con permiso de root.
Tengo que investigar más en esta cuestión.

11. Instalar un servidor VPN

Este paso nos permitirá conectarnos a nuestra red de casa. O sea, acceder a la impresora, los ordenadores y demás aparatos conectados. Además de la OPi, por supuesto.
Una vez conectados, ya podremos arrancar Putty y controlar la OPi como si estuvieramos con el cable al mismo switch.

Si tenemos IP dinámica, es mejor posponer la instalación del servidor VPN para cuando ya tengamos el paso 12 (servidor VPN). Si ya lo tenemos, instalamos OpenVPN con:
curl -L https://install.pivpn.io | bash
Esto arranca un instalador bastante amigable, por lo que se reduce a pulsar intro de vez en cuando.
En raspberry pi, te pide una dirección IP interna estática. En OPi se salta este menú. Supongo que da por hecho que la IP ajustada es estática. No he tenido problemas con ello.
Sobre la IP externa, hay un menú donde introducir la IP estática ( en caso de haber contratado este servicio con nuestro ISP) o bien la URL de nuestro servidor DNS (ver paso 12).

Cuando termine, tras reiniciar, creamos un nuevo cliente:
pivpn add

Exportamos el fichero de configuración al teléfono, o donde vayamos a poner el cliente.

En el cliente instalamos OpenVPN Client. En windows, android o iOS.
Tras la instalación, importar el fichero de configuración y poner la contraseña.

Otro modo de instalación, que no he probado...
http://domology.es/instalar-openvpn-nuestra-raspberry-pi-orange-pi/

"Conflictos" de IP

No comprendo del todo cómo funciona la VPN: qué tráfico se redirecciona y cuál no; ya que con el cliente conectado a la red remota, sigo teniendo acceso a todos los equipos de la red local. Es decir, que si la red local está en el mismo rango que la red remota (por ejemplo que ambas tengan el rango 192.168.1.xxx), puede darse que dos equipos tengan la misma IP (cada una en su red).
En mi caso, pasa que ambas redes locales tienen la Raspberry / Orange Pi en la 192.168.1.101 y al acceder con Putty, lo hago al dispositivo local, no al remoto.
Bien, como el cliente OpenVPN me da la IP 10.8.0.2, entiendo que el servidor DHCP podría ser la 10.8.0.1.
He probado a conectar así con Putty y ha funcionado. Por mi parte, problema solucionado.

12. No-IP Device configuration assistant (router)




Mitrastar success!!!

Actualizar ip desde raspberry. Instalar según:
https://www.realdroid.es/2016/10/29/configurar-no-ip-para-raspberry-pi-y-de-paso-que-es-no-ip/
Después gestionar inicio automático si hay desktop instalado desde:
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
Añadiendo la línea:
@sudo /usr/local/bin/noip2
Comprobar mediante:
sudo noip2 -S


13. Redirigir puertos en el router

Entramos a la página de configuración desde el navegador. Normalmente desde la IP 192.168.1.1
La contraseña por defecto es admin@admin, 1234@1234 o similar. Aunque en los últimos routers de fibra de telefónica lleva una contraseña impresa en la etiqueta bajo el propio router.
En la sección de puertos (redirección de puertos) deberemos ajustar la IP de la OPi,
El protocolo, que si no hemos cambiado, será UDP.
El puerto externo y el interno, que si no hemos cambiado, será el 1194.

14. Utilidades y comandos

Actualizar:
sudo apt-get update
sudo apt-get upgrade

Ver carga del procesador, ram, procesos, etc:
htop

OPi Monitor:
Igual que la anterior, pero de forma más gráfica y remota. Se instala con:
sudo armbianmonitor -r
Luego accedes desde el navegador, a la IP:8888
*Si accedemos desde VPN, y nos asigna la IP 10.8.0.2, podemos acceder desde el navegador, a través de la IP 10.8.0.1:8888

miércoles, 7 de febrero de 2018

VIRTUALBOX - Usar impresora de red sin permitir el acceso a internet

Por motivos que no vienen al caso, me interesa que la máquina virtual no tenga acceso a internet, pero sí pueda acceder a la impresora de la red.
Para ello, configuramos la máquina virtual como "Sólo Anfitrión".


Ésto nos permitirá acceder desde el invitado al anfitrión, pero no al resto de la red, ni a internet.
Ahora tenemos que compartir la impresora desde el anfitrión. Para ello, botón de inicio y entramos en "Impresoras y escáneres". Escogemos la deseada y entramos en "Propiedades de impresora", pestaña "Compartir". Activamos la pestaña de "Compartir esta impresora" y le damos el nombre que nos apetezca.


Ya podemos iniciar la máquina virtual. Abrimos una carpeta y en la parte izquierda, clic en "Red".
Cargará los equipos accesibles. Uno será el anfitrión y otro el invitado. Tras abrir el anfitrión nos pedirá identificarnos (nombre de usuario y contraseña del ordenador principal, si no hemos creado más usuarios). Es interesante activar la casilla de "Recordar mis credenciales".


Ahí aparece la impresora, con el nombre que le hemos dado al compartira en el anfitrión. Al hacer doble clic sobre ella se instalará, estando disponible para la máquina virtual.

Estoy seguro de que hay mejores maneras de hacerlo, pero es la que se me ha ocurrido y funciona!


martes, 29 de noviembre de 2016

Cambiar ID de volumen (HD)

Útil si tienes una licencia vitalicia ligada al ID del disco duro. Tiene un formato hexadecimal del tipo XXXX-XXXX.
Para verlo, desde cmd: vol c:.
Para cambiarlo, descargar y extraer la versión adecuada (32 o 64 bits) del programa VolumeID donde queramos usarlo (en mi caso en la máquina virtual).
Acceder desde la consola a la ruta donde lo hemos extraido y escribir: "volumeid64 c: XXXX-XXXX". Caso de 32 bits: misma instrucción pero sin el "64".
Tras el reinicio, se aplicarán los cambios.

domingo, 5 de junio de 2016

Redireccionar variables en Siemens STEP 7

En mi primer programa real, definí unas direcciones para las entradas y salidas que luego no correspondieron con lo que la subcontrata cableó en el PLC y las tarjetas.

Yo ya había hecho el programa, la tabla de símbolos y el sinóptico en WinCC, así  que tenía que hacerlo de manera automatizada para las tres "partes" que se veían afectadas por estos cambios.

En primer lugar lo hice en la tabla de símbolos: desde el menú Tabla/exportar, elijo el tipo DIF (Data Interchange Format), que puede ser modificado y guardado por EXCEL.
Importante, antes de modificarla, guardar una copia añadiendo una columna con el nuevo direccionado. Así tendremos el "historial de cambios", útil para el siguiente paso.
Importante que se respeten los espacios entre letra y número (7 u 8 espacios), para que la importación no dé errores.
Antes de importar la tabla modificada, borramos el contenido de la tabla actual en el Editor de símbolos de S7, para evitar duplicidades.

El segundo paso es el propio programa. Para ello seleccionamos todos los bloques que lo componen en el SIMATIC Manager y desde el menú Herramientas/Recablear.
Funciona similar al "Buscar y reemplazar" del office. Lo bueno es que hace toda la lista de una sola vez, haciendo todas las modificaciones sobre el estado inicial, no en el actualizado. Me resulta difícil de explicarlo, así que pongo un ejemplo para el siguiente bloque:


Nuestra tabla en el menú de recablear puede ser:



Y el resultado será exactamente el que nosotros queremos. No amontonará los recién cambiados A0.0 en A0.1 sobre A0.2. Por ello, el único trabajo que tenemos que hacer sobre la tabla de símbolos que hemos preparado antes sobre excel es seleccionar todas las celdas, Buscar y Reemplazar los 7 espacios por ninguno (los elimina).
Ya podemos copiar de excel y pegar en esta tabla. Sencillo, no?

Por último, en WinCC es mucho más rápido, ya que todas las asignaciones a las variables del Graphic Designer se hacen buscando por el nombre simbólico, no por la dirección de la vaiable.
Como los simbólicos no han cambiado, sólo tenemos que generar nuevamente la tabla de variables (en el menú de Administración de Variables) pegando desde la misma tabla de excel que acabamos de usar.


Esta entrada sólo muestra cómo lo hago yo. Agradecería infinitamente que alguien aportara una manera más rápida.
Sinceramente esperaba que hubiera alguna opción de aplicar los cambios a todo el programa, modificando la Tabla de Símbolos de Step 7. Pero bueno, como no es algo que esté haciendo cada día, tampoco pasa nada.
Veremos cómo va en TIA Portal...

martes, 24 de mayo de 2016

Trasladar sistema operativo a SSD

Tentado por las bondades de los discos duros de estado sólido y necesitado de más velocidad para el trabajo, me decidí a la migración. Mi problema particular, y objeto de esta entrada, es que el disco de destino es de menor capacidad que el de origen, por lo que en la migración quise dejar atrás la partición de backup del disco antiguo.
Para la migración utilicé el programa clonezilla. Es un live-CD / live-USB que te permite la copia de particiones o de disco entero.
Lo que debería haber hecho es, fijarme en las particiones que tenía el disco duro de windows. Habría visto la primera partición, de 100MB, que es la que almacena los datos de arranque (y otras cosas que no entiendo, pero ahora sé que eran necesarias). No la ví, no la copié al nuevo disco y por supuesto, windows no arrancó.

Finalmente, arranqué desde un live CD de Linux Mint, y calqué esta partición en el nuevo SSD:


Nombre: Reservado para el sistema
Tamaño: 100MB
Sistema de archivos: NTFS

La segunda partición, también NTFS, ya ocupando el resto del SSD (no quería partición de backup).

En el disco origen ya había pasado los archivos que no quería pasar al nuevo SSD a la partición de backup.

Ahora el proceso que queda por delante es arrancar desde el live-CD/USB de clonezilla y clonar las particiones de "Reservado para el sistema" y de "Windows".

Aunque sean de distinto tamaño, mientras el contenido quepa en el destino, no habrá problema.

A partir de ahí, todo disfrute: no hace nada de ruido, el sistema operativo arranca en segundos, todos los programas se abren más rápido y aunque el trabajo es el trabajo, te ahorras esos momentos en los que ya vas tarde y cuando el pc te hace esperar quieres hundir el puño en la pantalla.
En los SSD no hay piezas en movimiento, por lo que no le afectan las vibraciones ni los golpes, cosa que en la puesta en marcha da un extra de confianza.

El único pero: duran menos.

Yo hace tiempo que hago las copias de seguridad en la nube, así que espero que cuando rompa, no me pille por sorpresa.

CMD batch para reiniciar dispositivo en Windows 7 64bits

Tras la instalación de algún programa, el ratón USB fallaba al reiniciar el PC:


El problema se solucionaba deshabilitando y volviendo a habilitar el disposivo desde el administrador de dispositivos, así que en lugar de buscar el origen del problema, decidí taparlo (como buen español).
La solución expuesta es una mezcla de varios foros, pero que escribo por no haber encontrado nada similar en un solo sitio. En forma de resumen, engloba los siguientes pasos:

  1. Conseguir DEVCON
  2. Escribir un archivo de consola
  3. Programar una tarea para que se ejecute al inicio
En primer lugar, devcon es una herramienta que, en línea de comandos, hace lo mismo que el administrador de dispositivos. Antes se podía descargar solo, pero ahora forma parte de un paquete de herramientas de desarrollo que pesa un huevo y no necesitamos. Podemos encontrar fácilmente la herramienta en cuestión googleando un poco. Da un poco de miedo porque utilizas un exe de alguien que no sabes si es de confianza, pero si lo compruebas con el antivirus antes, deberías estar a salvo.
Hay dos versiones incompatibles entre sí (32 y 64 bits). Debes descargar la correspondiente a tu sistema operativo. Otra opción es descargar el giga y pico de la instalación del paquete WDK y coger de ahí el ejecutable "devcon.exe" que nos hace falta.

El siguiente paso es hacerla accesible desde la consola, por lo que debes pegar el ejecutable en la carpeta C:\Windows\System32\
Una vez hecho esto, puedes comprobar que funciona escribiendo "devcon help" en la consola.

El siguiente paso es obtener la información (ID) del dispositivo que falla. Entramos en el administrador de dispositivos (escribiéndolo en la barra de búsqueda del menú inicio).
Botón derecho / propiedades en el dispositivo que quieres reiniciar, pestaña detalles, y en el desplegable de "Propiedad", escoger "Id. de hardware".


El valor que estamos buscando es, en mi caso, DEV_1042. con esta información ya podemos crear el archivo de consola:

Yo lo he creado en C:/ (raiz). Abro la carpeta desde el explorador de windows y creo un documento de texto con el siguiente contenido:


devcon disable *DEV_1042*

devcon enable *DEV_1042*

Primero lo escribí dando un tiempo de espera ("timeout 5"), pero ví que funcionaba igual sin él...
A la hora de guardar el archivo, escogemos *.* Todos los archivos y ponemos el nombre que queramos, con la extensión ".cmd". Por ejemplo: RESETXHCI.cmd

Ya podemos abrir el programador de tareas (igual que antes, buscándolo desde el menú inicio) y añadir una tarea nueva (Acción/Crear Tarea (básica, si queremos usar el asistente)):


Desencadenadores: al iniciar la sesión.
Acciones: Iniciar un programa. Examinar: C:\RESETXHCI.cmd
Condiciones: Desactivar "Iniciar la tarea sólo si el equipo está conectado a la corriente alterna"
Configuración: Desactivar "Detener la tarea si se ejecuta durante más de 3 días"



lunes, 3 de noviembre de 2014

Conexión de shield relé arduino


Como ya es habitual en las piezas de origen chino, compramos a bajo precio, pero tenemos que pagar con tiempo la carencia de documentación.
En este caso partimos de un Relay Shield de dos canales preparado para funcionar a 5VDC, tanto para alimentación como maniobra, comandado, por ejemplo, por arduino:
Para no sobrecargar las salidas del arduino, es conveniente separar la parte de señal de la de "potencia". Entrecomillado, porque la potencia sólo alimenta las bobinas de los relés.
Viendo los pines disponibles, en primer lugar quitamos el jumper que une COM y GND.
La alimentación de potencia se hará entre los pines VCC y COM, con un consumo máximo de 200mA (8mA en reposo (led Power iluminado), 90-100mA por cada bobina excitada).
La alimentación de mando proviene del arduino y se realiza entre los pines IN1 y GND, e IN2 y GND, con un consumo máximo de 20mA (8-10mA por canal).


Como nota adicional, arduino consume un máximo de 50mA, según varias fuentes de internet (yo he medido 35mA alimentando ambos relés. Entiendo que si ocupamos todas sus salidas alimentando relés, se sobrepasará esta cifra), por lo que en mi caso una misma fuente de 5VDC 350mA (cargador NOKIA) puede alimentar ambas placas (arduino y relés).