Skip to content

Commit

Permalink
Merge pull request #17 from Veltys/testing
Browse files Browse the repository at this point in the history
Testing
  • Loading branch information
Veltys authored Aug 9, 2017
2 parents ebc2a98 + 88f39fb commit 7b2539f
Show file tree
Hide file tree
Showing 12 changed files with 710 additions and 506 deletions.
11 changes: 5 additions & 6 deletions Python/comun.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
# Title : comun.py
# Description : Módulo de funciones comunes a varios sistemas
# Author : Veltys
# Date : 18-07-2017
# Version : 0.2.2
# Date : 09-08-2017
# Version : 0.2.4
# Usage : import comun | from comun import <clase>
# Notes :

Expand Down Expand Up @@ -80,7 +80,6 @@ def arranque(self):
- Si no, establece un bloqueo para evitar otras ejecuciones
- Si sí, sale
- Configura los puertos GPIO
- Llama a la función self.bucle()
'''

if self._bloqueo == False or self._bloqueo.comprobar():
Expand All @@ -104,15 +103,15 @@ def arranque(self):
if not(self._config.GPIOS[i][1]): # En el caso de tener un pin GPIO de entrada, se necesitará transformar en lista la tupla, ya que es posible que
self._config.GPIOS[i] = list(self._config.GPIOS[i]) # haga falta modificar su contenido

self.bucle()
return 0

else:
print('Error: No se puede bloquear ' + self._bloqueo.nombre(), file = sys.stderr)
sys.exit(errno.EACCES)
return errno.EACCES

else:
print('Error: Ya se ha iniciado una instancia de ' + self._bloqueo.nombre(), file = sys.stderr)
sys.exit(errno.EEXIST)
return errno.EEXIST


def asignar_senyales(self):
Expand Down
189 changes: 96 additions & 93 deletions Python/config.py.sample
Original file line number Diff line number Diff line change
@@ -1,93 +1,96 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-


# Title : config.py
# Description : Módulo configurador para ser importado en el resto de módulos o sistemas que lo necesiten
# Author : Veltys
# Date : 16-07-2017
# Version : 1.3.0
# Usage : import config | from config import <clase>
# Notes : Se han estructurado en clases las distintas configuraciones
# GPIOS contiene pares de datos en formato lista:
# el primer elemento será el número (BCM) de puerto GPIO a manipular,
# el segundo, el modo (True para salida, False para entrada)
# y el tercero, la activación si es de salida (True si es activo a alto nivel o False si es a bajo nivel) o el estado si es de entrada (True si está bajado y False subido)
# PAUSA (o PAUSAS, en el caso de reiniciar_router_config) contiene el/los tiempo(s) que el bucle estará parado
# senyales (señales) contiene el tipo de señal y la función a la que ésta se asociará
#
# A título ilustrativo, a se ofrece una configuración por defecto (la mía, para ser exactos)


from copy import copy # Copia de objetos
from copy import deepcopy # Copia "segura" de objetos


class cpu_config:
GPIOS = [(26, True, True ),
(19, True, True ),
(13, True, True ),
( 6, True, True ),
( 5, True, True ),
]

PAUSA = 10

senyales = {'SIGTERM': 'sig_cerrar',
'SIGUSR1': 'sig_test',
'SIGUSR2': 'sig_apagado',
}


class domotica_cliente_config:
PAUSA = 0.1

puerto = 4710 # El puerto 4710 ha sido escogido arbitrariamente por estar libre, según la IANA:
# https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?&page=85


class domotica_servidor_config(domotica_cliente_config):
GPIOS = [(17, False, False),
(27, True, False),
]

senyales = {'SIGTERM': 'sig_cerrar',
'SIGUSR1': 'sig_test',
}


class internet_config:
HOSTS = ['google.es',
'8.8.8.8',
'8.8.4.4',
'208.67.222.222',
'208.67.220.220',
]


class reiniciar_router_config:
GPIOS = [( 4, True, False),
]

PAUSA = 15

senyales = {'SIGTERM': 'sig_cerrar',
'SIGUSR1': 'sig_test',
}


class temperaturas_config:
GPIOS = [(21, True, True ),
(20, True, True ),
(16, True, True ),
(12, True, True ),
]

TEMPERATURAS = [40, 45, 50]

PAUSA = 60

senyales = {'SIGTERM': 'sig_cerrar',
'SIGUSR1': 'sig_test',
'SIGUSR2': 'sig_apagado',
}
#!/usr/bin/env python3
# -*- coding: utf-8 -*-


# Title : config.py
# Description : Módulo configurador para ser importado en el resto de módulos o sistemas que lo necesiten
# Author : Veltys
# Date : 10-08-2017
# Version : 1.3.0
# Usage : import config | from config import <clase>
# Notes : Se han estructurado en clases las distintas configuraciones
# GPIOS contiene ternas de datos en formato lista:
# el primer elemento será el número (BCM) de puerto GPIO a manipular,
# el segundo, el modo (True para salida, False para entrada)
# y el tercero, la activación si es de salida (True si es activo a alto nivel o False si es a bajo nivel) o el estado si es de entrada (True si está bajado y False subido)
# PAUSA (o PAUSAS, en el caso de reiniciar_router_config) contiene el/los tiempo(s) que el bucle estará parado
# senyales (señales) contiene el tipo de señal y la función a la que ésta se asociará
#
# A título ilustrativo, a se ofrece una configuración por defecto (la mía, para ser exactos)


class cpu_config:
GPIOS = [(26, True, True ),
(19, True, True ),
(13, True, True ),
( 6, True, True ),
( 5, True, True ),
]

PAUSA = 10

senyales = {'SIGTERM': 'sig_cerrar',
'SIGUSR1': 'sig_test',
'SIGUSR2': 'sig_apagado',
}


class domotica_cliente_config:
PAUSA = 0.1

puerto = 4710 # El puerto 4710 ha sido escogido arbitrariamente por estar libre, según la IANA:
# https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?&page=85


class domotica_servidor_config(domotica_cliente_config):
GPIOS = [(17, False, False),
(27, True, False),
(23, False, False),
(24, True, False),
]

senyales = {'SIGTERM': 'sig_cerrar',
'SIGUSR1': 'sig_test',
}


class internet_config:
HOSTS = ['google.es',
'2001:4860:4860::8888',
'2001:4860:4860::8844',
'8.8.8.8',
'8.8.4.4',
'opendns.com',
'2620:0:ccc::2',
'2620:0:ccd::2',
'208.67.222.222',
'208.67.220.220',
]


class reiniciar_router_config:
GPIOS = [( 4, True, False),
]

PAUSA = 15

senyales = {'SIGTERM': 'sig_cerrar',
'SIGUSR1': 'sig_test',
}


class temperaturas_config:
GPIOS = [(21, True, True ),
(20, True, True ),
(16, True, True ),
(12, True, True ),
]

TEMPERATURAS = [40, 45, 50]

PAUSA = 60

senyales = {'SIGTERM': 'sig_cerrar',
'SIGUSR1': 'sig_test',
'SIGUSR2': 'sig_apagado',
}
12 changes: 9 additions & 3 deletions Python/cpu.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
# Title : cpu.py
# Description : Sistema indicador led de la carga de CPU en tiempo real. Utiliza tantos leds como GPIOs se le indiquen, siendo el último el de "alarma"
# Author : Veltys
# Date : 16-07-2017
# Version : 2.1.5
# Date : 30-07-2017
# Version : 2.1.6
# Usage : python3 cpu.py
# Notes : Mandándole la señal "SIGUSR1", el sistema pasa a "modo test", lo cual enciende todos los leds, para comprobar su funcionamiento
# Mandándole la señal "SIGUSR2", el sistema pasa a "modo apagado", lo cual simplemente apaga todos los leds hasta que esta misma señal sea recibida de nuevo
Expand Down Expand Up @@ -78,7 +78,13 @@ def __del__(self):

def main(argv = sys.argv):
app = cpu(config, os.path.basename(argv[0]))
app.arranque()
err = app.arranque()

if err == 0:
app.bucle()

else:
sys.exit(err)


if __name__ == '__main__':
Expand Down
Loading

0 comments on commit 7b2539f

Please sign in to comment.