All Collections
Developers
Next Plus Python SDK
Next Plus Python SDK

Connect to Next Plus with ease using custom Python code, allows to interact with machines, sensors and GPIO.

Asaf Cohen avatar
Written by Asaf Cohen
Updated over a week ago

Introduction

The Next Plus Python SDK is a powerful and user-friendly package that allows developers to interact with the Nextplus API. With this SDK, developers can easily perform CRUD operations on tables and records within the Nextplus system.

It's a quick and valuable way to connect third-party components, including software and hardware, to Next Plus. This SDK can run practically on any computing module, from PC to Rasberry pi.

View Documentation pypi.org:

Features

  • User authentication with Next Plus API

  • Retrieve, create, update, and delete records in tables

  • Customizable queries with filtering options

Requirements

  • Python 3.x

  • requests library

Installation

To install the Next Plus Python SDK, you can use the following command:

pip install nextplus

Usage

Setting Up the Client

First, you need to set up the NextplusClient with your Next Plus server URL, username or email, and password. These can either be passed directly or set as environment variables.

from nextplus import NextplusClient # Note that you can use email or username client = NextplusClient( server_url='https://your.nextplus.server.url', email='[email protected]', password='yourpassword' )

Working with Tables

You can perform operations on tables, such as finding a specific table or fetching a list of all tables.

Find Tables

tables = client.Tables.find({'where': {'name': 'YourTableName'}}) print(json.dumps(tables))

Response:

[ { "id": "1958dbd0-b9bf-11ee-a4d7-950198b3451e", "name": "Machine Status Log", "columns": [ { "id": "_id", "name": "id", "type": "string" }, { "id": "deletedAt", "name": "deletedAt", "type": "date" }, { "id": "createdAt", "name": "createdAt", "type": "date" }, { "id": "modified", "name": "modified", "type": "date" }, { "id": "workflowSessionItemId", "name": "workflowSessionItemId", "type": "string" }, { "id": "formId", "name": "formId", "type": "string" }, { "name": "Machine ID", "type": "string", "required": true, "id": "COLUMN_machine-id" }, { "name": "Status", "type": "string", "id": "COLUMN_status" }, { "name": "Change Time", "type": "date", "id": "COLUMN_change-time", "deletedAt": "2024-01-23T08:06:42.426Z" } ], "created": "2024-01-23T07:14:51.021Z", "modified": "2024-01-23T08:06:44.500Z", "serverModified": "2024-01-23T08:06:44.500Z", "deletedAt": null, "deletedBy": null } ]

Note that you can only write to columns that are prefixed with COLUMN_. Other columns are auto-generated and read-only.

Working with Records in a Table

You can create, update, find, and delete records in a specific table.

INSERT A RECORD

table = client.Table('your_table_id') record = { "COLUMN_machine-id": "Machine1", "COLUMN_status": "idle" } result = table.insert(record) print(f"Record inserted with ID: {result['_id']}")

Response:

{ "COLUMN_machine-id": "Machine1", "COLUMN_status": "idle", "_id": "7b74899f-f863-473a-9a96-d37a75e1c7fe", "createdAt": "2024-01-23T11:33:37.205Z", "modified": "2024-01-23T11:33:37.205Z", "serverModified": "2024-01-23T11:33:37.205Z", "deletedAt": null }

UPDATE A RECORD

updated_record = { "_id": "record_id", "COLUMN_status": "busy" } update_result = table.update(updated_record) print(update_result)

Response:

{ "_id": "7b74899f-f863-473a-9a96-d37a75e1c7fe", "COLUMN_machine-id": "Machine1", "COLUMN_status": "busy", "createdAt": "2024-01-23T11:33:37.205Z", "modified": "2024-01-23T11:34:52.185Z", "serverModified": "2024-01-23T11:34:52.185Z", "deletedAt": null }

FIND RECORDS

rows = table.find({'where': {'COLUMN_machine-id': 'Machine1'}}) print(rows)

Response:

{ "_id": "7b74899f-f863-473a-9a96-d37a75e1c7fe", "COLUMN_machine-id": "Machine1", "COLUMN_status": "busy", "createdAt": "2024-01-23T11:33:37.205Z", "modified": "2024-01-23T11:34:52.185Z", "serverModified": "2024-01-23T11:34:52.185Z", "deletedAt": null, "id": "7b74899f-f863-473a-9a96-d37a75e1c7fe" }

DELETE A RECORD

table.remove("record_id")

Response:

{ "_id": "7b74899f-f863-473a-9a96-d37a75e1c7fe", "COLUMN_machine-id": "Machine1", "COLUMN_status": "busy", "createdAt": "2024-01-23T11:33:37.205Z", "modified": "2024-01-23T11:36:23.226Z", "serverModified": "2024-01-23T11:36:23.226Z", "deletedAt": "2024-01-23T11:36:23.226Z" }


Did this answer your question?