upload NK server code
This commit is contained in:
parent
2255b0fa39
commit
52db1f209e
21
SERVER_CODE/cloud_service.py
Normal file
21
SERVER_CODE/cloud_service.py
Normal file
@ -0,0 +1,21 @@
|
||||
import websocket_server
|
||||
import event_hub_listener
|
||||
from multiprocessing import Process
|
||||
|
||||
def start_WS_server():
|
||||
websocket_server.start_websocket_server()
|
||||
|
||||
def run_HUB_receiver():
|
||||
event_hub_listener.start_event_hub_listener()
|
||||
|
||||
def runInParallel(*fns):
|
||||
proc = []
|
||||
for fn in fns:
|
||||
p = Process(target=fn)
|
||||
p.start()
|
||||
proc.append(p)
|
||||
for p in proc:
|
||||
p.join()
|
||||
|
||||
if __name__ == '__main__':
|
||||
runInParallel(start_WS_server, run_HUB_receiver)
|
26
SERVER_CODE/donwlink_message.py
Normal file
26
SERVER_CODE/donwlink_message.py
Normal file
@ -0,0 +1,26 @@
|
||||
from azure.iot.hub import IoTHubRegistryManager
|
||||
from azure.iot.hub.models import CloudToDeviceMethod, CloudToDeviceMethodResult
|
||||
|
||||
CONNECTION_STRING = "HostName=AgriHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=v0auIwbmqfBDz3BY8aZtbnOzg8+6119LWylk1Jq1G0A="
|
||||
DEVICE_ID = "Guard_Node_00001"
|
||||
METHOD_PAYLOAD = "server_to_device_message"
|
||||
|
||||
def send_to_device(request_name):
|
||||
try:
|
||||
# Create IoTHubRegistryManager
|
||||
registry_manager = IoTHubRegistryManager(CONNECTION_STRING)
|
||||
|
||||
# Call the direct method.
|
||||
deviceMethod = CloudToDeviceMethod(method_name=request_name, payload=METHOD_PAYLOAD)
|
||||
print ( "Device Method called" )
|
||||
print ( "Device Method name : {0}".format(request_name) )
|
||||
print ( "Device Method payload : {0}".format(METHOD_PAYLOAD) )
|
||||
response = registry_manager.invoke_device_method(DEVICE_ID, deviceMethod)
|
||||
print ( "Response status : {0}".format(response.status) )
|
||||
print ( "Response payload : {0}".format(response.payload) )
|
||||
|
||||
except Exception as ex:
|
||||
print ( "Unexpected error {0}".format(ex) )
|
||||
return
|
||||
except KeyboardInterrupt:
|
||||
print ( "IoTHubDeviceMethod sample stopped" )
|
34
SERVER_CODE/event_hub_listener.py
Normal file
34
SERVER_CODE/event_hub_listener.py
Normal file
@ -0,0 +1,34 @@
|
||||
import logging
|
||||
import json
|
||||
import donwlink_message
|
||||
import asyncio
|
||||
from azure.eventhub import EventHubConsumerClient
|
||||
|
||||
connection_str = "Endpoint=sb://ihsuprodamres091dednamespace.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=v0auIwbmqfBDz3BY8aZtbnOzg8+6119LWylk1Jq1G0A=;EntityPath=iothub-ehub-agrihub-3199035-0595c5c32a"
|
||||
consumer_group = '$Default'
|
||||
eventhub_name = 'iothub-ehub-agrihub-3199035-0595c5c32a'
|
||||
client = EventHubConsumerClient.from_connection_string(connection_str, consumer_group, eventhub_name=eventhub_name)
|
||||
logger = logging.getLogger("azure.eventhub")
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
def background(f):
|
||||
def wrapped(*args, **kwargs):
|
||||
return asyncio.get_event_loop().run_in_executor(None, f, *args, *kwargs)
|
||||
return wrapped
|
||||
|
||||
def on_event(partition_context, event):
|
||||
#logger.info("Received event from partition {}".format(partition_context.partition_id))
|
||||
#print("PartitionContext: ", partition_context)
|
||||
partition_context.update_checkpoint(event)
|
||||
#print(event)
|
||||
print("JSON: -->",event.body_as_json(encoding='UTF-8'))
|
||||
message_arrrived = event.body_as_json(encoding='UTF-8')
|
||||
if message_arrrived["st"] > 5:
|
||||
request_sample()
|
||||
|
||||
@background
|
||||
def request_sample():
|
||||
donwlink_message.send_to_device("RequestAudioSample")
|
||||
|
||||
def start_event_hub_listener():
|
||||
client.receive( on_event=on_event, partition_id="0")
|
1
SERVER_CODE/model_batch_590.json
Normal file
1
SERVER_CODE/model_batch_590.json
Normal file
File diff suppressed because one or more lines are too long
37
SERVER_CODE/websocket_server.py
Normal file
37
SERVER_CODE/websocket_server.py
Normal file
@ -0,0 +1,37 @@
|
||||
import asyncio
|
||||
import websockets
|
||||
import cnn_classifier
|
||||
import donwlink_message
|
||||
import numpy as np
|
||||
from scipy.io import wavfile
|
||||
|
||||
server_classifier=None
|
||||
server_ip="192.168.1.71"
|
||||
server_port=8765
|
||||
model_struct = 'model_mukcso_batch256.json'
|
||||
model_weights = "best_model_mukcso_batch256.h5"
|
||||
|
||||
def background(f):
|
||||
def wrapped(*args, **kwargs):
|
||||
return asyncio.get_event_loop().run_in_executor(None, f, *args, *kwargs)
|
||||
return wrapped
|
||||
|
||||
async def service(websocket, path):
|
||||
buf = await websocket.recv()
|
||||
decoded = np.frombuffer(buf, dtype=np.int16)
|
||||
print("Wav arrived!")
|
||||
wavfile.write("arrived.wav", 44100, decoded.astype(np.int16))
|
||||
await websocket.send("Wav arrived to Server.")
|
||||
prediction=server_classifier.predict("arrived.wav")
|
||||
if prediction[0] == 'sturnus':
|
||||
alert()
|
||||
@background
|
||||
def alert():
|
||||
donwlink_message.send_to_device("RequestAlert")
|
||||
|
||||
def start_websocket_server():
|
||||
global server_classifier
|
||||
server_classifier = cnn_classifier.classifier(model_struct,model_weights)
|
||||
start_server = websockets.serve(service, server_ip, server_port)
|
||||
asyncio.get_event_loop().run_until_complete(start_server)
|
||||
asyncio.get_event_loop().run_forever()
|
Loading…
Reference in New Issue
Block a user