Create a Function to Automate the Process

Functions provide the capability to execute custom business rules. For this project, a function will be created to update the state of the lamp based on the temperature.

  1. Add two new properties to the Thing.


    Figure 1.
  2. Change to the Functions section to create your function.


    Figure 2.

Functions are divided into two main parts, called Workers and Triggers.

A Worker is the Function itself. It allows to create its custom-base function and enables to subscribe to an “Event Trigger”.

  1. Create the Function itself (Worker) using the following code. Complete the PATH with your own values.
    Note: Add your thing’s Client ID and Secret ID from the Interface tab inside the Thing.
    import time  
    import requests  
    import json  
    from swx.auth.token import get_token 
     
    API_HOST = 'https://api.swx.altairone.com'  
    PATH = "/spaces/YourSpaceID/categories/YourCategoryName/things/YourThingUID/properties/lamp-state"  
    CLIENT_ID = "EnterYourValues"  
    CLIENT_SECRET = "EnterYourValues"  
           
    def handle(req): 
        body = req.body.decode("utf-8") 
        body = json.loads(body) 
        temperature = body['temperature'] 
         
        with get_token(CLIENT_ID, CLIENT_SECRET, ["thing.read","thing.update"]) as token: 
    			if temperature >= 70: 
              state = "Warning" 
          else: 
              state = "Normal" 
     
          headers = {"Authorization": f"Bearer {token.access_token}"} 
          response = requests.request("PUT", API_HOST + PATH, headers=headers,json={"lamp-state": state}) 
     
        return { 
        	"body": response.json(), 
        	"status_code": response.status_code 
        } 
  2. Add the following event trigger:
    spaces/yourspaceID/categories/yourcategoryname/things/yourthingUID/properties/temperature

A Trigger is a component that is capable of invoking serverless Functions from an event source. Triggers work as a listener to a particular endpoint, capturing events and messages from different sources and redirecting them to one or more Functions.

  1. Create an MQTT trigger to subscribe to the topic entered as Event Trigger in the worker.
    Note: MQTT credentials can be obtained as shown below:


    Figure 3.
  2. Open the MQTT Inspector to track the messages received:


    Figure 4.
  3. Check that the Function works as expected:


    Figure 5.