Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(GH-305) Upgrade library to version without dependency on boost #424

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 30 additions & 32 deletions resources/code-template/python/sendD2C.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,66 +7,64 @@

# Using the Python Device SDK for IoT Hub:
# https://github.com/Azure/azure-iot-sdk-python
# Run 'pip install azure-iothub-device-client' to install the required libraries for this application
# The sample connects to a device-specific MQTT endpoint on your IoT Hub.
import iothub_client
# pylint: disable=E0611
from iothub_client import IoTHubClient, IoTHubClientError, IoTHubTransportProvider, IoTHubClientResult
from iothub_client import IoTHubMessage, IoTHubMessageDispositionResult, IoTHubError, DeviceMethodReturnValue
# Run 'pip install azure-iot-device' to install the required libraries for this application

import asyncio
from azure.iot.device.aio import IoTHubDeviceClient
from azure.iot.device import Message

# The device connection string to authenticate the device with your IoT hub.
CONNECTION_STRING = "{{deviceConnectionString}}"

# Using the MQTT protocol.
PROTOCOL = IoTHubTransportProvider.MQTT
MESSAGE_TIMEOUT = 10000

# Define the JSON message to send to IoT Hub.
TEMPERATURE = 20.0
HUMIDITY = 60
MSG_TXT = "{\"temperature\": %.2f,\"humidity\": %.2f}"

def send_confirmation_callback(message, result, user_context):
print ( "IoT Hub responded to message with status: %s" % (result) )

def iothub_client_init():
# Create an IoT Hub client
client = IoTHubClient(CONNECTION_STRING, PROTOCOL)
return client

def iothub_client_telemetry_sample_run():
async def iothub_client_telemetry_sample_run():

try:
client = iothub_client_init()
print ( "IoT Hub device sending periodic messages, press Ctrl-C to exit" )
# Create instance of the device client using the authentication provider
device_client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)

# Connect the device client.
await device_client.connect()

while True:
# Build the message with simulated telemetry values.
temperature = TEMPERATURE + (random.random() * 15)
humidity = HUMIDITY + (random.random() * 20)
msg_txt_formatted = MSG_TXT % (temperature, humidity)
message = IoTHubMessage(msg_txt_formatted)
message = Message(msg_txt_formatted)

# Add a custom application property to the message.
# An IoT hub can filter on these properties without access to the message body.
prop_map = message.properties()
if temperature > 30:
prop_map.add("temperatureAlert", "true")
message.custom_properties["temperatureAlert"] = "true"
else:
prop_map.add("temperatureAlert", "false")
message.custom_properties["temperatureAlert"] = "false"

# Send a single message
print( "Sending message: %s" % message )
await device_client.send_message(message)
print("Message successfully sent!")

# Send the message.
print( "Sending message: %s" % message.get_string() )
client.send_event_async(message, send_confirmation_callback, None)
time.sleep(1)

except IoTHubError as iothub_error:
print ( "Unexpected error %s from IoTHub" % iothub_error )
return
except KeyboardInterrupt:
print ( "IoTHubClient sample stopped" )
except Exception as iothub_error:
print ( "Unexpected error %s from IoTHub" % iothub_error )
finally:
print ( "Disconnecting client" )
await device_client.disconnect()

if __name__ == '__main__':
print ( "IoT Hub simulated device" )
print ( "Press Ctrl-C to exit" )
iothub_client_telemetry_sample_run()
asyncio.run(iothub_client_telemetry_sample_run())

# If using Python 3.6 or below, use the following code instead of asyncio.run(iothub_client_telemetry_sample_run()):
# loop = asyncio.get_event_loop()
# loop.run_until_complete(iothub_client_telemetry_sample_run())
# loop.close()