2017-11-10 5 views
0

CoAPthonを使用してサーバーを作成しています.getメソッドが呼び出されるたびにjsonペイロードが返されます。以下は私のコードスニペットです。CoAPサーバーからjsonペイロードをCoAPthonライブラリを使用してGETメソッドに返す

from coapthon.resources.resource import Resource 
from coapthon.server.coap import CoAP 
import json 

class res(Resource): 
    def __init__(self,name="Res",coap_server=None): 
     super(res,self).__init__(name,coap_server,visible=True,observable=True,allow_children=True) 
     with open("/home/pratik/Iot_datamodels/IoT-openiot-DataModels/oic.r.temperature.json","r") as f: 
     value = json.load(f) 
     self.payload=value['definitions'] 
     self.resource_type = "oic.r.temperature" 
     self.content_type = "application/json" 
     self.interface_type = "oic.if.a" 

    def render_GET(self,request): 
    print json.dumps({"e":[{ "n": "temperature", "v":23.5,"u":"degC" }]}) 
    return json.dumps({"e":[{ "n": "temperature", "v":23.5,"u":"degC" }]})) 

class CoAPServer(CoAP): 
    def __init__(self, host, port, multicast=False): 
    CoAP.__init__(self,(host,port),multicast) 
    self.add_resource('sens-Me/',res()) 
    print "CoAP server started on {}:{}".format(str(host),str(port)) 
    print self.root.dump() 

def main(): 
    ip = "0.0.0.0" 
    port = 5683 
    multicast=False 
    server = CoAPServer(ip,port,multicast) 
    try: 
     server.listen(10) 
    except KeyboardInterrupt: 
     server.close() 

if __name__=="__main__": 
    main() 

サーバが稼働していて、銅線からIPアドレスを参照して確認できます。しかし私がgetを押すと、私は5.00 Internal Server Error(Blockwise)を私のブラウザに手に入れます。誰かが私にその方法を教えてもらえますか?

答えて

0

次のように次

from coapthon import defines 

は、クラスの解像度の内側get関数を再定義する最初のインポート: -

def render_GET(self,request): 
    self.payload = (defines.Content_types["application/json"],json.dumps({"e":[{ "n": "temperature", "v":23.5,"u":"degC" }]})) 
    return self 
関連する問題