Home

Items in your download folder

Download folder is empty
item(s) in download folder

!

View download folder
To the download center

Items in your cart / project list

Cart / Project List is empty.
item(s) in cart / project list

Solution

Quantity:
Total:
View Cart / Project List
Open a different project list
Export as .xlsx Export as .csv Import from .csv Import from .bel
Discontinued Products
  • Welcome, {0} - My Account

    My Account


    • Logout
    Login/Register
  • Products

    Actuators

    • SelectPro™ Online (Actuators)
    • Non Fail-Safe Actuators
    • Fail-Safe Actuators
    • Outdoor Protected Actuators
    • Quick Running Actuators
    • Linear Actuators
    • Fire & Smoke Actuators
    • Airflow Measurement and Control
    • Accessories

    Valves

    • SelectPro™ Online (Valves)
    • Energy Valve
    • Pressure Independent Control Valves
    • Zone Valves
    • Characterized Control Valves
    • Ball Valves
    • Butterfly Valves
    • Globe Valves
    • Piping Packages
    • Potable Water Valves
    • Accessories

    Sensors / Meters

    • SelectPro™ Online (Sensors/Meters)
    • Duct Sensors (Air)
    • Pipe Sensors (Water)
    • Outdoor Sensors (Air)
    • Room Sensors (Air)
    • Gas Monitors (Air)
    • Meters (Water)
    • Accessories

    Systems

    • Energy Valve
    • Economizer
    • Room Solutions
    • Bus Integration
    • IoT Actuators
    • Accessories

    RetroFIT+

    • RetroFIT+ Product Replacement Tool
    • Fire & Smoke Actuators
    • Damper Actuators
    • Control Valve/Actuators
    • Butterfly Valve/Actuators
    • Globe Valve/Actuators
    • Economizer
    • Sensors/Meters Replacement Solutions

    Solutions

    • Data Center Cooling Solutions
    • Custom Products
    • Building IoT
    • Indoor Air Quality (IAQ)
  • Support

    Tools & Apps

    • Sizing, Selection & Replacement Tools
    • SelectPro™ Online (Actuators)
    • SelectPro™ Online (Valves)
    • SelectPro™ Online (Sensors/Meters)
    • RetroFIT+ Product Replacement Tool
    • Mobile Apps
    • Savings Estimators
    • Modeling and Simulation
    • Device Configuration
    • Belimo Cloud Login/Register

    Training

    • Schedule Onsite Training
    • Online and Classroom Training
    • Website Tutorials
    • Webinars
    • Customer Experience Center (Danbury, CT)

    Download Center

    • Product Documents
    • Software/Plug-Ins/Apps
    • Success Stories
    • Corporate
    • Images/Videos/Logos
    • Product Guide and Price List (PGPL)
    • Terms and Conditions of Sale and Warranty
  • About Us

    Belimo

    • Profile
    • Our Values
    • Sustainability
    • History
    • Awards & Recognitions
    • Suppliers
    • Affiliated Organizations
    • Social Responsibility
    • Inclusion & Diversity
    • Belimo Holiday Schedule
    • Quality

    Jobs & Careers

    • Jobs
    • Culture@BELIMO
    • Benefits
    • Recruitment process
    • Careers
    Navigation_Teaser_1

    Investor Relations

    • Key Figure Comparison
    • Reports and Presentations
    • Ad hoc and Corporate News
    • Belimo Share
    • Corporate Governance
    • Annual General Meeting
    • Financial Calendar
    • Contact

    Media

    • News
    • Highlights
    • Success Stories
    • Videos
    • Pictures and Logos
    • Event Schedule | Belimo
    • Contacts
    • Blog
    MKT-IMG_misc-homepage-new
  • Contact Us

    Distributor Lookup

    Belimo Contacts

    Call Belimo Now

    • 1 800-543-9038
      Available 8:30 am to 8:00 pm EST
  • Caribbean, Latin America, and United States

    Americas

    • Brazil
    • Canada
    • Caribbean, Latin America, and United States

    Europe, Middle East & Africa

    • Albania
    • Austria
    • Belarus
    • Belgium
    • Bosnia & Herzegovina
    • Bulgaria
    • Croatia
    • Czech Republic
    • Denmark
    • Estonia
    • Finland
    • France
    • Georgia
    • Germany
    • Greece
    • Hungary
    • Ireland
    • Israel
    • Italy
    • Kazakhstan
    • Latvia
    • Lithuania
    • Netherlands
    • North Macedonia
    • Norway
    • Poland
    • Romania
    • Saudi Arabia
    • Serbia & Montenegro
    • Slovakia
    • Slovenia
    • South Africa
    • Spain
    • Sweden
    • Switzerland
    • Turkey
    • Ukraine
    • United Arab Emirates (FZE)
    • United Kingdom

    Asia Pacific

    • Australia
    • Cambodia
    • China
    • Hong Kong SAR, China
    • India
    • Indonesia
    • Japan
    • Korea
    • Macau SAR, China
    • Malaysia
    • Myanmar
    • New Zealand
    • Philippines
    • Singapore
    • Taiwan, China
    • Thailand
    • Vietnam
    English

    English

    Español

  • Caribbean, Latin America, and United States

    Americas

    • Brazil
    • Canada
    • Caribbean, Latin America, and United States

    Europe, Middle East & Africa

    • Albania
    • Austria
    • Belarus
    • Belgium
    • Bosnia & Herzegovina
    • Bulgaria
    • Croatia
    • Czech Republic
    • Denmark
    • Estonia
    • Finland
    • France
    • Georgia
    • Germany
    • Greece
    • Hungary
    • Ireland
    • Israel
    • Italy
    • Kazakhstan
    • Latvia
    • Lithuania
    • Netherlands
    • North Macedonia
    • Norway
    • Poland
    • Romania
    • Saudi Arabia
    • Serbia & Montenegro
    • Slovakia
    • Slovenia
    • South Africa
    • Spain
    • Sweden
    • Switzerland
    • Turkey
    • Ukraine
    • United Arab Emirates (FZE)
    • United Kingdom

    Asia Pacific

    • Australia
    • Cambodia
    • China
    • Hong Kong SAR, China
    • India
    • Indonesia
    • Japan
    • Korea
    • Macau SAR, China
    • Malaysia
    • Myanmar
    • New Zealand
    • Philippines
    • Singapore
    • Taiwan, China
    • Thailand
    • Vietnam
  • EN ES
  • Welcome, {0} - My Account

    My Account


    • Logout
    Login/Register
Home
  • Products

    Actuators

    • SelectPro™ Online (Actuators)
    • Non Fail-Safe Actuators
    • Fail-Safe Actuators
    • Outdoor Protected Actuators
    • Quick Running Actuators
    • Linear Actuators
    • Fire & Smoke Actuators
    • Airflow Measurement and Control
    • Accessories

    Valves

    • SelectPro™ Online (Valves)
    • Energy Valve
    • Pressure Independent Control Valves
    • Zone Valves
    • Characterized Control Valves
    • Ball Valves
    • Butterfly Valves
    • Globe Valves
    • Piping Packages
    • Potable Water Valves
    • Accessories

    Sensors / Meters

    • SelectPro™ Online (Sensors/Meters)
    • Duct Sensors (Air)
    • Pipe Sensors (Water)
    • Outdoor Sensors (Air)
    • Room Sensors (Air)
    • Gas Monitors (Air)
    • Meters (Water)
    • Accessories

    Systems

    • Energy Valve
    • Economizer
    • Room Solutions
    • Bus Integration
    • IoT Actuators
    • Accessories

    RetroFIT+

    • RetroFIT+ Product Replacement Tool
    • Fire & Smoke Actuators
    • Damper Actuators
    • Control Valve/Actuators
    • Butterfly Valve/Actuators
    • Globe Valve/Actuators
    • Economizer
    • Sensors/Meters Replacement Solutions

    Solutions

    • Data Center Cooling Solutions
    • Custom Products
    • Building IoT
    • Indoor Air Quality (IAQ)
  • Support

    Tools & Apps

    • Sizing, Selection & Replacement Tools
    • SelectPro™ Online (Actuators)
    • SelectPro™ Online (Valves)
    • SelectPro™ Online (Sensors/Meters)
    • RetroFIT+ Product Replacement Tool
    • Mobile Apps
    • Savings Estimators
    • Modeling and Simulation
    • Device Configuration
    • Belimo Cloud Login/Register

    Training

    • Schedule Onsite Training
    • Online and Classroom Training
    • Website Tutorials
    • Webinars
    • Customer Experience Center (Danbury, CT)

    Download Center

    • Product Documents
    • Software/Plug-Ins/Apps
    • Success Stories
    • Corporate
    • Images/Videos/Logos
    • Product Guide and Price List (PGPL)
    • Terms and Conditions of Sale and Warranty
  • About Us

    Belimo

    • Profile
    • Our Values
    • Sustainability
    • History
    • Awards & Recognitions
    • Suppliers
    • Affiliated Organizations
    • Social Responsibility
    • Inclusion & Diversity
    • Belimo Holiday Schedule
    • Quality

    Jobs & Careers

    • Jobs
    • Culture@BELIMO
    • Benefits
    • Recruitment process
    • Careers
    Navigation_Teaser_1

    Investor Relations

    • Key Figure Comparison
    • Reports and Presentations
    • Ad hoc and Corporate News
    • Belimo Share
    • Corporate Governance
    • Annual General Meeting
    • Financial Calendar
    • Contact

    Media

    • News
    • Highlights
    • Success Stories
    • Videos
    • Pictures and Logos
    • Event Schedule | Belimo
    • Contacts
    • Blog
    MKT-IMG_misc-homepage-new
  • Contact Us

    Distributor Lookup

    Belimo Contacts

    Call Belimo Now

    • 1 800-543-9038
      Available 8:30 am to 8:00 pm EST
  • Discontinued Products
  • Items in your download folder

    Download folder is empty
    item(s) in download folder

    !

    View download folder
    To the download center
  • Items in your cart / project list

    Cart / Project List is empty.
    item(s) in cart / project list

    Solution

    Quantity:
    Total:
    View Cart / Project List
    Open a different project list
    Export as .xlsx Export as .csv Import from .csv Import from .bel
  1. Home
  2. Building IoT
  3. Belimo Digital Ecosystem Developer Space

Plot your first graph in Python

In a few simple steps you can build your fully-functional application, main focus is on:

  • Gain access to the Service User Space
  • Select data
  • Acquire data
  • Plot

To have the complete example just cut and paste in a single file the code shown in the next paragraphs. 

This example has been designed for the demo environment so you will replace "__UserPlaceHolder__" and "__PasswordPlaceHolder__" with your BelimoID Account credential and "__ClientIDPlaceHolder__" and "__ClientSecretPlaceHolder__" with the credential you received for the Developer Space.

To access the complete documentation about our Cloud API log in http://cloud.belimo.com using your BelimoID and then chose "support" -> "Documentation" 

 

Python Libraries import

import requests
import json
import pandas as pd
import matplotlib.pyplot as plt
# enable inline pictures in Jupyter Notebook
%matplotlib inline
from oauthlib.oauth2 import LegacyApplicationClient
from requests_oauthlib import OAuth2Session

Set up the OAuth2.0 session

# OAuth Client
client_id = '__ClientIDPlaceHolder__'
client_secret = '__ClientSecretPlaceHolder__'
# OAuth user
user = '__UserPlaceHolder__'
passwd = '__PasswordPlaceHolder__'

# shorthand url
cloud = 'https://cloud.belimo.com'
oauth = OAuth2Session(client=LegacyApplicationClient(client_id=client_id))
token = oauth.fetch_token(
token_url='https://id.belimo.com/oauth/token',
username=user,
password=passwd,
client_id=client_id,
client_secret=client_secret,
include_client_id=True,
audience="https://api.cloud.belimo.com/",
scope=['public.read', 'offline_access', 'read:dataprofile'])

Get an overview of your devices

oauth.get(url=cloud + '/api/v3/devices/stats').json()

The output is then something like:

 

{
    'totalDevices': 36, 
    'connection': 
        {
         'offline': 1, 
         'online': 35
         }, 
    'health': 
        {
         'problem': 1, 
         'ok': 35
        }, 
    'transfer': 
        {
         'incoming': 0, 
         'outgoing': 0
        } 
}
         
     

Now we examine in more detail the devices seen and filter for those which are associated with heating:

# The id of the device (unique name)
# DisplayName: set during commissioning (allows for easy identification) (we will filter according to that one)
# Dataprofile: Where to find the information how to interprete data from the device
# url parameters
params = {
    'state': 'REGISTERED', # only get registered devices
    'limit': '100' # page size
}
# call API and print information
for device in oauth.get(url=cloud + '/api/v3/devices', params=params).json()['data']:
    if 'Heizung' in device['displayName']: # german word for 'Heating'
        print('id: ' + device['id'])
        print('name: ' + device['displayName'])
        print('dataprofile: ' + device['dataprofile']['entityId'])

The output is something like:

id: 5a430aa2-1d46-4776-bfe1-a10b6c567230
    name: Energieventil Heizung 2.OG Sued-Ost
    dataprofile: energyvalve3/1.2
    id: 3c563d80-48f0-4a7a-8701-65d65aefdd9c
    name: Energieventil Heizung 2.OG Nord-Ost
    dataprofile: energyvalve3/1.2
    id: 3c6f7077-a147-4d25-865f-e72901d9de62
    name: Energieventil Heizung 2.OG Nord-West
    dataprofile: energyvalve3/1.2
    id: b69b0b32-03ca-4ec4-8850-2a1b474fbd83
    name: Energieventil Heizung 1.OG Sued-West
    dataprofile: energyvalve3/1.2
    id: 0cc5b932-c7b0-4eab-87ae-153aec6a7f90
    name: Energieventil Heizung 2.OG Sued-West
    dataprofile: energyvalve3/1.2    

Now let's download the Dataprofile and find the datapoint of interest

let's say we are interested in the following device

  • id: 3c6f7077-a147-4d25-865f-e72901d9de62
  • name: Energieventil Heizung 2.OG Nord-West
  • dataprofile: energyvalve3/1.2
deviceid = '3c6f7077-a147-4d25-865f-e72901d9de62'
dataprofileid = 'energyvalve3/1.2'

dataprofiledef  = oauth.get(url=cloud + '/api/v3/definitions/dataprofiles/' + dataprofileid).json()
# Extract relevant datapoints
# Let's say we are interested in energy consumption
print('Energy related datapoints:')
for dp in dataprofiledef['datapoints']:
    if 'Energy' in dp['featureValues']['default.description']: # get those datapoints which are related to Energy
        print('id: ' + dp['id'])
        print('description: ' + dp['featureValues']['default.description'])

The output will be something like this:

    Energy related datapoints:
    id: evcloud.200
    description: Cooling Energy in J
    id: evcloud.210
    description: Heating Energy in J

let's get the state and historical values for the heating energy:

# Current state
# First we the current state of the device, and extract from it e.g. location
state = oauth.get(url=cloud + '/api/v3/devices/' + deviceid).json()
# We can print current Value
state['state']['datapoints']['evcloud.210']
# Set parameters to access the historical data
params = {
    'datapointIds': 'evcloud.210',
    'resolution': '1d',
    'from': '2017-12-01T00:00:00Z',
    'to': '2018-12-01T00:00:00Z'
}
data = oauth.get(url=cloud + '/api/v3/devices/' + deviceid + '/data/history/timeseries', params=params).json()
# Extract the time series
# We only queried for one series
# We are interested in the values, not the metadata
# construct pandas DataFrame from data
heatingEnergy = pd.DataFrame(data['series'][0]['values'])
# convert timestamp to pandas datetime
heatingEnergy['timestamp'] = pd.to_datetime(heatingEnergy.timestamp)
# Energy is cumulative -- here we compute the difference between timepoints and convert to kWh
heatingEnergy['DiffEnergyConsumption'] = heatingEnergy.value.diff() / 3600000

and then plot the energy consumption

heatingEnergy.plot(x='timestamp', y='DiffEnergyConsumption', marker='o', alpha=0.5, stacked=True, figsize=(20,10))

plt.show()

The outcome should look like this:

output_31_1

Welcome to Belimo {{js-currentCountryName}}

{{js-currentCountryText}}
Contact Us Privacy Policy Change privacy settings Terms & Conditions
+1-800-543-9038
Subscribe
© 1999 - 2023 BELIMO AIRCONTROLS (USA), Inc. All Rights Reserved