Пример #1
0
async def main(host):
    # setup server resources
    root = resource.Site()
    root.add_resource(('time',), TimeResource())

    context = await Context.create_server_context(root)

    msg = Message(code=GET, uri='coap://{0}/cli/stats'.format(host), observe=0)
    req = context.request(msg)

    resp = await req.response
    print('First response: %s\n%r'%(resp, resp.payload))

    async for resp in req.observation:
        # We expect some other process to send another request, which generates
        # an observe notification.
        print('Next result: %s\n%r'%(resp, resp.payload))

        req.observation.cancel()
        break

    # Send msg to cancel observation
    msg = Message(code=GET, uri='coap://{0}/cli/stats'.format(host), observe=1)
    req = context.request(msg)
    resp = await req.response
    print('Final result: %s\n%r'%(resp, resp.payload))
Пример #2
0
async def main():
    #protocol = await Context.create_client_context()#create context for client
    root = resource.Site()
    protocol = await Context.create_server_context(root,bind=("0:0:0:0:0:ffff:7f00:1",3333))
    serv_job=server_job_type(protocol,3,"127.0.0.1","5000","jobs/testing") #pass this context, number of CRs at the server for this job type and the address of this job

    param="fff"
    print("client parameter is: "+param)

    jb=job(serv_job) #create a new job request of the above kind
    #METHOD 1: the api one by one sends IR and CR's by itself
    print("Result when API handles the whole CR,IR process: "+(await jb.do_job_whole(param.encode("ascii"))).decode("ascii")+"\n\n")

    jb=job(serv_job) #create another new job request of the same kind
    #METHOD 2: The client receives results one by one at each step, manipulates it and sends it for further processing
    res= await jb.do_job_step(param.encode("ascii"))
    print("Client gets result after one step:\n"+res.decode("ascii"))
    res= await jb.do_job_step(res)
    print(res.decode("ascii"))
    res= await jb.do_job_step(res)
    print(res.decode("ascii"))
    res= await jb.do_job_step(res)
    print("Client asks for more CRs than available: ")

    res= await jb.do_job_step(res)#exceeded CR requests, this should fail
    print(res.decode("ascii"))
Пример #3
0
def main(database: str, flush: bool = False):
    logger.info("Starting mqtt-coap bridge")

    loop = asyncio.get_event_loop()

    if flush:
        try:
            os.remove(database)
        except FileNotFoundError:
            pass

    coap_site = resource.Site()
    coap_site.add_resource(['.well-known', 'core'],
                           resource.WKCResource(
                               coap_site.get_resources_as_linkheader,
                               impl_info=None))

    bridge = MQTTCOAPBridge(database)
    coap_site.add_resource(['mqtt'], bridge.coap_connector)

    # May want to catch other signals too
    signals = (signal.SIGHUP, signal.SIGTERM, signal.SIGINT)
    for sig in signals:
        loop.add_signal_handler(
            sig,
            lambda sig=sig: asyncio.create_task(shutdown(sig, loop, bridge)))

    try:
        loop.create_task(start(coap_site, bridge))
        loop.run_forever()
    finally:
        loop.close()
        logger.info("Successfully shutdown the mqtt-coap bridge.")
Пример #4
0
async def main(host, credentialsFile):
    # setup server resources
    # As of 2019-12, not using server resources because DTLS server mode not
    # supported.
    root = resource.Site()
    root.add_resource(('time',), TimeResource())

    context = await Context.create_server_context(root)
    if proto_params['is_dtls']:
        context.client_credentials.load_from_dict(json.load(credentialsFile.open('rb')))

    uri = '{0}://{1}/cli/stats'.format(proto_params['uri_proto'], host)
    msg = Message(code=GET, uri=uri, observe=0)
    req = context.request(msg)

    resp = await req.response
    print('First response: %s\n%r'%(resp, resp.payload))

    async for resp in req.observation:
        # We expect some other process to send another request, which generates
        # an observe notification.
        print('Next result: %s\n%r'%(resp, resp.payload))

        req.observation.cancel()
        break

    # Send msg to cancel observation
    uri = '{0}://{1}/cli/stats'.format(proto_params['uri_proto'], host)
    msg = Message(code=GET, uri=uri, observe=1)
    req = context.request(msg)
    resp = await req.response
    print('Final result: %s\n%r'%(resp, resp.payload))
Пример #5
0
def main():
    # Resource tree creation
    root = resource.Site()

    """In the following lines, we added a block to use another port that is not 
    the default CoAP port, it will be substituted by the 5684 port temporarely
    as we make the corresponding tests (In order to do not affect Gwen's database 
    format"""
    # Comment following block code to use the default CoAP port
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
        s.connect(("8.8.8.8", 80)) # connect outside to get local IP address
        ip_addr = s.getsockname()[0]

    port = 5684
    print ("++++++++++++++++++++++++++++++++++++++++++++")
    print ("server running on ", ip_addr, "at port", port)
    #Comment up to here

    root.add_resource(['humidity_w'], humidity_wifi())
    root.add_resource(['humidity_l'], humidity_lora())
    root.add_resource(['watering'], watering_info())


    #Uncomment next line to use Default CoAP port
    #asyncio.Task(aiocoap.Context.create_server_context(root))
    #Comment next line to use Default CoAP port 
    asyncio.Task(aiocoap.Context.create_server_context(root,bind=("::", port)))

    asyncio.get_event_loop().run_forever()
Пример #6
0
def start_coap_test():
    root = resource.Site()
    root.add_resource(('.well-known', 'core'),
                      resource.WKCResource(root.get_resources_as_linkheader))
    root.add_resource(('other', 'block'), BlockResource())
    asyncio.Task(aiocoap.Context.create_server_context(root))
    asyncio.get_event_loop().run_forever()
Пример #7
0
 def __init__(self, upload_path, port=COAP_PORT):
     self.root_coap = resource.Site()
     self.port = port
     self.upload_path = upload_path
     self._bootstrap_resources()
     asyncio.Task(Context.create_server_context(self.root_coap,
                           bind=('::', self.port)))
Пример #8
0
    def main_func():
        led1 = LEDResource(21)
        led2 = LEDResource(22)

        root = resource.Site()
        root.add_resource(['.well-known', 'core'],
                          resource.WKCResource(
                              root.get_resources_as_linkheader))
        root.add_resource(['led1'], led1)
        root.add_resource(['led2'], led2)
        root.add_resource(['button1'],
                          ButtonResource(11,
                                         lambda: led1.resource.toggle(),
                                         loop=event_loop))
        root.add_resource(['button2'], ButtonResource(12, loop=event_loop))

        tasks = []

        asyncio.set_event_loop(event_loop)
        asyncio.Task(
            Context.create_server_context(root, bind=(SERVER_IP, 5683)))
        tasks.append(
            asyncio.ensure_future(
                observe_button('127.0.0.3', 'shutter',
                               lambda: led1.resource.off())))
        tasks.append(
            asyncio.ensure_future(
                observe_button('127.0.0.5', 'button2',
                               lambda: led1.resource.toggle())))
        event_loop.run_forever()

        for t in tasks:
            t.cancel()
Пример #9
0
def MyCoap():
    # Resource tree creation
    root = resource.Site()

    lock = threading.Lock()

    root.add_resource(('.well-known', 'core'),
                      resource.WKCResource(root.get_resources_as_linkheader))

    # root.add_resource(('time',), TimeResource())

    # root.add_resource(('other', 'lockrequest'), BlockResource())

    root.add_resource(('hello', ), HelloResource())

    root.add_resource(('receiveData', ), ReceiveData())

    root.add_resource(('queryData', ), QueryData())

    root.add_resource(('mobileEvent', ), MobileEventDeal())

    # root.add_resource(('other','gpsinfo'), GPSPositionResource())

    asyncio.Task(aiocoap.Context.create_server_context(root))

    asyncio.get_event_loop().run_forever()
Пример #10
0
 def setup(self):
     """Setup CoAP resources exposed by this server."""
     root_coap = resource.Site()
     root_coap.add_resource(('server', ), CoapServerResource(self))
     root_coap.add_resource(('alive', ), CoapAliveResource(self))
     asyncio. async (Context.create_server_context(root_coap,
                                                   bind=('::', self.port)))
Пример #11
0
 def __init__(self):
     super(Server, self).__init__()
     logger.debug("creating server instance")
     self.hasher = Hasher(os.urandom(30))
     self.site = resource.Site()
     self.site.add_resource((self.get_path(), ), self)
     self.handle = None
Пример #12
0
def main():
    # Resource tree creation
    root = resource.Site()
    root.add_resource(('sensor', 'FaceRecognition'), FaceSensorResource())
    asyncio.Task(aiocoap.Context.create_server_context(root))
    asyncio.get_event_loop().run_forever()
    loop = asyncio.get_event_loop()
Пример #13
0
async def main():
    # Resource tree creation
    root = resource.Site()

    root.add_resource(['.well-known', 'core'],
                      resource.WKCResource(root.get_resources_as_linkheader))

    server_credentials = aiocoap.credentials.CredentialsMap()

    root = oscore_sitewrapper.OscoreSiteWrapper(root, server_credentials)

    protocol = await aiocoap.Context.create_server_context(root)

    # Keys from IETF109 plug test: Rikard Test 2 Entity 1
    server_credentials[":a"] = \
            aiocoap.oscore.SimpleGroupContext(
                    algorithm = aiocoap.oscore.algorithms[aiocoap.oscore.DEFAULT_ALGORITHM],
                    hashfun = aiocoap.oscore.hashfunctions[aiocoap.oscore.DEFAULT_HASHFUNCTION],
                    alg_countersign = aiocoap.oscore.Ed25519(),
                    group_id = bytes.fromhex('DD11'),
                    master_secret = bytes.fromhex('11223344556677889900AABBCCDDEEFF'),
                    master_salt = bytes.fromhex('1F2E3D4C5B6A7081'),
                    sender_id = bytes.fromhex('0A'),
                    private_key = bytes.fromhex('397CEB5A8D21D74A9258C20C33FC45AB152B02CF479B2E3081285F77454CF347'),
                    peers = {
                        bytes.fromhex('51'): bytes.fromhex('2668BA6CA302F14E952228DA1250A890C143FDBA4DAED27246188B9E42C94B6D'),
                        bytes.fromhex('52'): bytes.fromhex('5394E43633CDAC96F05120EA9F21307C9355A1B66B60A834B53E9BF60B1FB7DF'),
                        bytes.fromhex('dc'): aiocoap.oscore.DETERMINISTIC_KEY,
                        },
                    )

    await asyncio.get_running_loop().create_future()
Пример #14
0
def main():
    #Resource tree creation
    root = resource.Site()

    root.add_resource(['sensor'], SensorResource())

    asyncio.Task(aiocoap.Context.create_server_context(root))
    asyncio.get_event_loop().run_forever()
Пример #15
0
def main():
    root = resource.Site()
    root.add_resource(('data',), DataResource())
    root.add_resource(('test',), CoapTest())
    root.add_resource(('conf',), ConfigResource())
    asyncio.Task(aiocoap.Context.create_server_context(root, bind=('10.1.8.92', 8080)))
    #asyncio.Task(aiocoap.Context.create_server_context(root, bind=('localhost', 20002)))
    asyncio.get_event_loop().run_forever()
Пример #16
0
 def __init__(self, fw_path, port=COAP_PORT):
     self.port = port
     self.fw_path = fw_path
     root_coap = resource.Site()
     root_coap.add_resource(('version', ), FirmwareVersionResource(self))
     root_coap.add_resource(('firmware', ), FirmwareBinaryResource(self))
     asyncio. async (Context.create_server_context(root_coap,
                                                   bind=('::', self.port)))
Пример #17
0
 def __init__(self, fw_path, port=COAP_PORT):
     self.port = port
     self.fw_path = fw_path
     self.root_coap = resource.Site()
     for filename in os.listdir(fw_path):
         self.add_resources(filename)
     asyncio.async(Context.create_server_context(self.root_coap,
                                                 bind=('::', self.port)))
Пример #18
0
 def __init__(self, ipv6_addr, port):  #client initialises ip and port
     self.root = resource.Site()
     asyncio.Task(
         aiocoap.Context.create_server_context(self.root,
                                               bind=(ipv6_addr, port)))
     loop = asyncio.get_event_loop()
     if not server_job_handler.started:
         loop.create_task(server_job_handler.job_deletion_manager())
         server_job_handler.started = True
Пример #19
0
def setup_server(device):
    root = resource.Site()
    root.add_resource(('.well-known', 'core'),
                      resource.WKCResource(root.get_resources_as_linkheader))

    for sensor in device.sensors:
        root.add_resource(sensor.route, sensor.resource)

    return root
Пример #20
0
def main():
    # Resource tree creation
    root = resource.Site()

    root.add_resource(('temperature', ), TemperatureResource())

    asyncio.ensure_future(
        aiocoap.Context.create_server_context(root, bind=("127.0.0.1", 5683)))
    asyncio.get_event_loop().run_forever()
Пример #21
0
 def coap_event_server(self, comm_wrapper, ip6_address, coap_port):
     root = resource.Site()
     root.add_resource(
         ('.well-known', 'core'),
         resource.WKCResource(root.get_resources_as_linkheader))
     root.add_resource(('wishful_events', ), EventResource(comm_wrapper))
     yield from aiocoap.Context.create_server_context(root,
                                                      bind=(ip6_address,
                                                            coap_port))
Пример #22
0
def main():
    # Resource tree creation
    root = resource.Site()
    root.add_resource(('twitter', ), RiotTwitterResource())
    root.add_resource(('.well-known', 'core'),
                      resource.WKCResource(root.get_resources_as_linkheader))
    asyncio. async (aiocoap.Context.create_server_context(root))

    asyncio.get_event_loop().run_forever()
Пример #23
0
def main(host="::", port=5683):
    print("Running Sensor Server on port %s." % (str(port), ))
    root = resource.Site()
    root.add_resource(('reading1', ), SensorReadingResource(str(1)))
    root.add_resource(('reading2', ), SensorReadingResource(str(2)))
    root.add_resource(('reading3', ), SensorReadingResource(str(3)))
    asyncio. async (aiocoap.Context.create_server_context(root,
                                                          bind=(host, port)))
    asyncio.get_event_loop().run_forever()
Пример #24
0
def coap_server_init(max_time):
    """Initialize the CoAP server."""
    global _max_time
    _max_time = max_time

    root_coap = resource.Site()
    root_coap.add_resource(('server', ), CoapServerResource())
    root_coap.add_resource(('alive', ), CoapAliveResource())
    asyncio. async (Context.create_server_context(root_coap))
Пример #25
0
def main():
    # Resource tree creation
    root = resource.Site()

    root.add_resource(('status', ), StatusResource())

    asyncio.Task(aiocoap.Context.create_server_context(root))

    asyncio.get_event_loop().run_forever()
Пример #26
0
def main():
    root = resource.Site()

    root.add_resource((".well-known", "core"),
                      resource.WKCResource(root.get_resources_as_linkheader))
    root.add_resource(("testing", "things"), SimpleResource())

    asyncio.Task(coap.Context.create_server_context(root))
    asyncio.get_event_loop().run_forever()
def main():
    # Resource tree creation
    root = resource.Site()

    # adds resource at localhost/minecraft/position
    root.add_resource(('minecraft', 'position'), SendPlayerPos())

    asyncio.Task(aiocoap.Context.create_server_context(root))

    asyncio.get_event_loop().run_forever()
Пример #28
0
def Coap_server():
    loop_func = asyncio.new_event_loop()
    asyncio.set_event_loop(loop_func)
    root = resource.Site()
    root.add_resource(('.well-known', 'core'),
                      resource.WKCResource(root.get_resources_as_linkheader))
    root.add_resource(('other', 'block'), resources_block())
    asyncio.Task(aiocoap.Context.create_server_context(root))
    loop_func = asyncio.get_event_loop()
    loop_func.run_forever()
Пример #29
0
def main():
    # Resource tree creation
    root = resource.Site()
    root.add_resource(('.well-known', 'core'),
                      resource.WKCResource(root.get_resources_as_linkheader))
    root.add_resource(('time', ), TimeResource())
    root.add_resource(('other', 'block'), BlockResource())
    root.add_resource(('other', 'separate'), SeparateLargeResource())
    asyncio. async (aiocoap.Context.create_server_context(root))
    asyncio.get_event_loop().run_forever()
Пример #30
0
def piccolo_server(serverCfg):

    log = logging.getLogger("piccolo.server")

    log.info("piccolo3 server version %s" % piccolo.__version__)

    # creat system info
    psys = piccolo.PiccoloSysinfo()
    # create data directory
    pdata = piccolo.PiccoloDataDir(serverCfg.cfg['datadir']['datadir'],
                                   device=serverCfg.cfg['datadir']['device'],
                                   mntpnt=serverCfg.cfg['datadir']['mntpnt'],
                                   mount=serverCfg.cfg['datadir']['mount'])
    # read the piccolo instrument configuration file
    piccoloCfg = piccolo.PiccoloConfig()
    cfgFilename = pdata.join(
        serverCfg.cfg['config'])  # Usually /mnt/piccolo2_data/piccolo.config
    piccoloCfg.readCfg(cfgFilename)

    # initialise the shutters
    try:
        shutters = piccolo.PiccoloShutters(piccoloCfg.cfg['channels'])
    except:
        log.error('failed to initialise shutters')
        sys.exit(1)

    # initialise the spectrometers
    try:
        spectrometers = piccolo.PiccoloSpectrometers(
            piccoloCfg.cfg['spectrometers'], shutters.keys())
    except Exception as e:
        log.error('failed to initialise spectrometers: {}'.format(str(e)))
        sys.exit(1)

    # initialise the piccolo controller
    controller = piccolo.PiccoloControl(pdata, shutters, spectrometers)

    root = resource.Site()
    # add the components
    for c in [psys, pdata, shutters, spectrometers, controller]:
        root.add_resource(*c.coapSite)

    root.add_resource(('.well-known', 'core'),
                      resource.WKCResource(root.get_resources_as_linkheader))
    asyncio.Task(
        aiocoap.Context.create_server_context(root,
                                              bind=serverCfg.bind,
                                              loggername='piccolo.coapserver'))

    if piccoloStatusLED is not None:
        piccoloStatusLED.blink()
    else:
        log.warning('no hardware support')

    asyncio.get_event_loop().run_forever()