Esempio 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)
Esempio 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
Esempio 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
Esempio 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)
Esempio 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)))
Esempio 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.
Esempio 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()
Esempio 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.
Esempio 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()
Esempio 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")
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 = []
Esempio 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):
Esempio 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		
	
Esempio 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)
Esempio 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()
Esempio 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):