Ejemplo n.º 1
0
def correr(nombre):
	buzComun = sysvmq.Queue(420)
	sid = nombre #Identificador
	#print("Corriendo: " + str(sid))
	buz = sysvmq.Queue(nombre)	#crea buzon 
	while True:
		print(nombre)
		#time.sleep(2)
		pack = buz.get()
		print (pack)
		#info = struct.unpack('BIBBBBBf',pack)
		
		if( pack[2]== 5 and (pack[6] == 6 or pack[6] == 8) ):	
			tipoDato = 2 #Tipo dato 2 es flotante
			infoUtil = struct.pack('IIfB',sid,pack[1],pack[7],tipoDato)
			buzComun.put(infoUtil)
		
		elif ( pack[2] == 6):
			tipoDato = 1 #Tipo dato 1 es entero
			infoUtil = struct.pack('IIfB',sid,pack[1],pack[7],tipoDato)
			buzComun.put(infoUtil)
		
		else:
			tipoDato = 0 #Tipo dato 0 es booleano
			infoUtil = struct.pack('IIfB',sid,pack[1],pack[7],tipoDato)
			buzComun.put(infoUtil)
Ejemplo n.º 2
0
from ipcqueue import sysvmq  # Biblioteca para los buzones.
import struct
#FORMAT = 'BIBBBBBf'
buzComun = sysvmq.Queue(420)
infoUtil = struct.pack('=IIfB', 52, 2, 57, 1)  #Dato a leer 1
print(infoUtil)
i = 0
while (True):
    buzComun.put(infoUtil)
    i += 1
Ejemplo n.º 3
0
from ipcqueue import sysvmq

values = []

#UDP_IP = "10.1.137.196"
UDP_IP = "127.0.0.1"
UDP_PORT = 5005

time.sleep(5)  # Test the client's timeout

sock = socket.socket(
    socket.AF_INET,  # Internet
    socket.SOCK_DGRAM)  # UDP
sock.bind((UDP_IP, UDP_PORT))

q = sysvmq.Queue(2)
s = struct.Struct("BIBBBBBf")
ss = struct.Struct("BBBBB")
sss = struct.Struct("BIBBf")
while True:
    readable = select.select([sock], [], [], 6)
    if readable[0]:
        data, addr = sock.recvfrom(1024)  # buffer size is 1024 bytes
        values = s.unpack(data)
        dtime = time.ctime(values[1])
        #values[0] => Random(ACK)
        #values[1] => Time
        #values[2] => Team Id
        #values[3] => Sensor Id
        #values[4] => Sensor Id
        #values[5] => Sensor Id
Ejemplo n.º 4
0
from ipcqueue import sysvmq
# ~ from typing import NamedTuple
from time import time
#import time
import struct
import random
import select


sensorId = [0x00,0x01,0x02]
values = []
values.append(random.randint(0,255))
values.append(int(time()))
values.append(4) #TeamID

q = sysvmq.Queue(1)
s = struct.Struct('BIBBBBBf')
sensorData = struct.Struct('BBf')

UDP_IP = "127.0.0.1"
#UDP_IP = "10.1.137.67"
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP

checker = False

while True:
	checker = False
	packet = q.get(block=True, msg_type=1)
	packArray = sensorData.unpack(packet)
Ejemplo n.º 5
0
# ~ q.put(data, msg_type=1)
# ~ elif sys.argv[1] == '5': #404 sensors
# ~ data = ss.pack(5)
# ~ q.put(data, msg_type=1)
# ~ elif sys.argv[1] == '6': #Poffis sensors
# ~ print "Poffis seleccionado"
# ~ data = ss.pack(6)
# ~ q.put(data, msg_type=1)
# ~ else:
# ~ print "Grupo desconocido\n"

# ~ else:
# ~ print "El uso de graphics es python graphics.py [IDGrupo]\n"

if len(sys.argv) == 3:  # Contiene el numero de grupo y el numero de sensor
    q = sysvmq.Queue(15)
    mainQueue = sysvmq.Queue(2)
    s = struct.Struct("BIBBf")
    ss = struct.Struct("II")
    dataType = 0
    graphicsName = [
        "Whitenoise Movimiento", "Whitenoise Big Sound", "Flamingo Movimiento",
        "Flamingo Fotoresistor", "Gisso Movimiento", "Gisso Shock",
        "KOF Movimiento", "KOF Touch", "404 Movimiento", "404 Humedad",
        "404 Temperatura", "Poffis Humedad", "Poffis Big Sound"
    ]

    if ((sys.argv[2] == '6' or sys.argv[2] == '8') and (sys.argv[1] == '5')):
        dataType = 2  #Float data type

    elif (sys.argv[2] == '1' or sys.argv[2] == '2' or sys.argv[2] == '3'
#import RPi.GPIO as GPIO
import socket
import time
import datetime
import random
from ipcqueue import sysvmq as SYSV

#GPIO.setmode(GPIO.BCM)
#GPIO_PIR = 26
#GPIO.setup(GPIO_PIR, GPIO.IN)

buzon = SYSV.Queue(63)
cambioDeEstado = 1
#file = open("datos.txt", "w+")

try:
    while True:
        valor = random.randint(0, 1)
        #este if es del keep alive
        if cambioDeEstado == valor:
            now = time.time()
            buzon.put([2, 1, now])
            #file.write("Intruder detected. Date " + now.strftime("%d/%m/%Y Time %Hh:%Mm:%Ss") + "\n")
            print("Keep Alive " + str(time.ctime(now)))
            #print(buzon.get())
        else:
            if valor:
                now = time.time()
                buzon.put([1, 1, now])
                #file.write("Intruder detected. Date " + now.strftime("%d/%m/%Y Time %Hh:%Mm:%Ss") + "\n")
                print("Intruder " + str(time.ctime(now)))
Ejemplo n.º 7
0
import RPi.GPIO as GPIO
import time
from ipcqueue import sysvmq

pir = 27
GPIO.setmode(GPIO.BCM)
GPIO.setup(pir, GPIO.IN)

date = int(time.time())
q = sysvmq.Queue(1)  # Crea el buzon con la llave 1

while True:
    if GPIO.input(pir):  # Si detecto actividad en ese pin
        print("Signal detected")
        q.put(int(time.time()))  # Agrega el tiempo en que se detecto al buzon
    else:
        q.put(
            0
        )  # Agrega 0 al buzon indicando que no se detecto movimiento, seria el keepalive

    time.sleep(1)  # Espera 1 segundo.
Ejemplo n.º 8
0
import select
from ipcqueue import sysvmq as SYSV

UDP_IP = "127.0.0.1"
UDP_PORT = 10001

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(5)

saved_data = []
last_id = 0

queue_overflow = False
empty_queue = 1

my_queue = SYSV.Queue(63)
my_queue_attributes = my_queue.qattr()
my_queue_max_size = my_queue_attributes['max_bytes']


class myPackage:

    random_id = 0
    date = 0
    sensor_id = bytearray([0x02, 0x00, 0x00, 0x00])
    sensor_type = 0x00
    data = 0.0


my_pack = myPackage()
Ejemplo n.º 9
0
from ipcqueue import sysvmq  # Biblioteca para los buzones.

UDP_IP = "192.168.5.75"  #IP a enviar
MINE = "192.168.1.65"  # Mi ip, para el bind

UDP_PORT = 10001

SHOCK_ID = 0x04
MOV_ID = 0x01
KEEP_ALIVE = 0x0
TEAM_ID = 0x03
BOOL_TYPE = 0x01
FORMAT = 'BIBBBBBf'

shock = sysvmq.Queue(
    1
)  # Se crea el buzon con la llave 1 para que se conecte con el creado en shock.py
mov = sysvmq.Queue(
    2
)  # Se crea con la llave 2 para que se conecte con el creado en movement.py

lastRandomId = 0
randomId = -1

sock = socket.socket(
    socket.AF_INET,  # Abrir los sockets
    socket.SOCK_DGRAM)  #
sock.bind((MINE, UDP_PORT))  # Crea la conexion


# Metodo que envia el paquete al cliente.
Ejemplo n.º 10
0
def crearThread(identificador):
	
	x = threading.Thread(target=correr, args=(identificador,))
	buz =sysvmq.Queue(identificador)	#crea buzon 
	diccionario.setdefault(identificador,buz) # z=key del buzon
	x.start()
Ejemplo n.º 11
0
import random
from ipcqueue import sysvmq
import pdb
import socket
#IPDistribuida = 192.168.1.100
PORT = 2000  # Port to listen on (non-privileged ports are > 1023)
#IPDistribuida = '10.1.137.53'
IPDistribuida = '127.0.0.1'
numeroPagina = 0
tamanoPaginaTotal = 84600
memoriaPrincipal = []  #Memoria principal o local
#Hay que agregar frame table
pageArray = []  # Contiene los ID Pagina que estan en memoria Local
numeroFilasMemoria = 4  #Tamano de la memoria local
contadorFilaActual = 0
buzonLlamados = sysvmq.Queue(17)
buzonRetornos = sysvmq.Queue(16)
buzonParametros = sysvmq.Queue(15)
contadorPrueba = 0

#Codigos de llamados
#HabilitarPagina = 0
#pedirPagina =1
#guardar=2

#Se crea socket para la comunicacion con la ID
socket_send = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Antes del connect")
socket_send.connect((IPDistribuida, PORT))
print("Despues del connect")
Ejemplo n.º 12
0
import time
import datetime
import select
import sys
import os
from ipcqueue import sysvmq as SYSV
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import plotly.graph_objects as go

buzon = SYSV.Queue(15)

datos1 = []
datos2 = []
bin_count = 5


def convert_time(bin_maxes):
    for i in range(len(bin_maxes)):
        tiempo = time.strftime("%m/%d/%Y, %H:%M:%S",
                               time.localtime(bin_maxes[i]))
        bin_maxes[i] = tiempo
    return bin_maxes


def count_bins(min_meas, max_meas):
    bin_width = (max_meas - min_meas) / bin_count
    bin_maxes = []
    bin_counts1 = []
    bin_counts2 = []
Ejemplo n.º 13
0
#Imports
import socket
from ipcqueue import sysvmq
import struct
import memory_manager as memory_manager
#Imports

page_table = dict()
queueR = sysvmq.Queue(2)
queueS = sysvmq.Queue(15)

s = struct.Struct("II")
ss = struct.Struct("BIBBf")

values = []

lastId = 0


def malloc_maravilloso(sensorId, teamId):
    global page_table
    global lastId
    lastId += 1
    page = memory_manager.create_page(lastId)
    page_table[str((sensorId + teamId))] = ProcessInfo()
    print(str((sensorId + teamId)))
    page_table[str((sensorId + teamId))].last = page
    page_table[str((sensorId + teamId))].list.append(page)


# def store(sensorId, teamId, date, data):
Ejemplo n.º 14
0
# coding: utf8
import time
import datetime
import struct 
from ipcqueue import sysvmq
formatoFloat = 'If'
formatoInt = 'II'
formatoBool = 'IB'
matrizRetorno = []
buzonLlamadoGraficador=sysvmq.Queue(69)
buzonRetornoGraficador=sysvmq.Queue(469)


x_eje = []  # Datos que delimitan
y_eje = []	# la grafica

cantidad_y = []
datos_y = []

tipoDato = 0


# Obtiene la hora de cada paquete. Linea comentada seria la final, comentada por testeo
def getHour(packet):
	global tipoDato
	formato = formatoBool
	if(tipoDato == 1):
		formato = formatoBool
	elif (tipoDato == 2):
		formato = formatoInt		
	
Ejemplo n.º 15
0
import time
from ipcqueue import sysvmq

i = 0
buzonLlamadoGraficador = sysvmq.Queue(69)
while (i < 5):
    buzonLlamadoGraficador.put(i)
    i += 1
    time.sleep(5)
Ejemplo n.º 16
0
# coding: utf8
import struct
import time
import random
from ipcqueue import sysvmq
import threading
pageTable = []
tamanoPT = 0 #Tamano page table
FORMAT = '=IIfB' # IdentificadorSensor,fecha, dato,bit para verificar dato. 

buzonGeneral = sysvmq.Queue(420)#Buzon para procesos recolectores
buzonLlamados = sysvmq.Queue(17)#Buzon para solicitar al administrador meter datos.
buzonRetornos = sysvmq.Queue(16)#Buzon para recibir la respuesta del administrador.
buzonParametros = sysvmq.Queue(15)
buzonLlamadoGraficador = sysvmq.Queue(69)
buzonRetornoGraficador = sysvmq.Queue(469)

	
def mallocMaravilloso(sensorId): #Agrego en la page table y despues habilito pagina en memoria principal 
	global pageTable,tamanoPT					#Y despues meto el numero de pagina en la page table 
	pageTable.append([])
	pageTable[tamanoPT].append(sensorId)
	buzonLlamados.put(0) #Para llamar a habilitarPagina()
	print("Llame al habilitar")
	nuevaPag = buzonRetornos.get() 
	#Agrego la nueva pagina a la page table
	pageTable[tamanoPT].append(nuevaPag)
	tamanoPT += 1
	print("PageTable ",pageTable)
	
def getPaginasSensor(sensorId):# Busca en la page table y retorna los numeros de pagina referentes a un sensorId, lo utiliza pedirDatos()
Ejemplo n.º 17
0
# coding=utf-8
import os
import time
import sys
import threading
import administradorMem
import struct
from ipcqueue import sysvmq as SYSV


colector_queue = SYSV.Queue(14)                     # cola para recolector
plotter_queue = SYSV.Queue(15)                      # cola para graficador
first_time = False                                  # variable que revisa si es la primera vez que se ejecuto el programa
lock = threading.Lock()                             # lock para los threads
memory_admin = administradorMem.AdministradorMem()  # instancia del administrador de memoria

# -----------------
# Metodo run que va a correr los threads
# Usa locks en zonas criticas para prevenir condiciones de carrera
# -----------------

class threadsInterface(threading.Thread):

    def __init__(self, name):

        threading.Thread.__init__(self)
        self.name = name
        self.kill = False

    def run(self):