Time
|
Package =
time
|
Function
|
Return Type
|
Description
|
Example
|
delay(tmsec)
|
N/A
|
Pauses the program for tmsec milliseconds. Value of 0 has the
meaning of sleeping until the next execution cycle, as determined
by the run-time.
|
delay(1700) same as sleep(1.7)
|
sleep(tsec)
|
N/A
|
Pauses the program for tsec seconds. Fractional seconds values
for tsec are acceptable. Value of 0 has the meaning of sleeping
until the next execution cycle, as determined by the run-time.
|
sleep(0.25)same as delay(250)
|
uptime()
|
float
|
Returns the time since the device was started in seconds.
|
print(uptime())
|
gmtime([secs]) |
struct_time |
Converts a time in seconds since epoch to struct_time in UTC. If secs is not provided, it uses the current
time as returned by time(). |
print(gmtime()) |
localtime([secs]) |
struct_time |
Converts a time in seconds since epoch to struct_time in local time. If secs is not provided, it uses the
current time as returned by time(). |
print(localtime()) |
asctime([time]) |
string |
Converts a time in struct_time to a string in the form of
'Sun
Jun
20
23:21:05
1993'. If time is not provided, it uses the current time as returned by localtime().
|
print(asctime()) |
ctime([secs]) |
string |
Converts a time in seconds since epoch to a string in the form of
'Sun
Jun
20
23:21:05
1993'. If secs is not provided, it uses the current time as returned by time().
|
print(ctime()) |
mktime(time) |
int |
Converts a time in struct_time to a time in seconds since epoch. |
mktime(localtime()) |
timezone |
int |
The local (non-DST) timezone's offset in seconds west of UTC.
|
print(timezone) |
altzone |
int |
The local (DST) timezone's offset in seconds west of UTC. |
print(altzone) |
tzname |
tuple(string, string) |
A tuple of two strings with the first being the local non-DST timezone name, and second being the local DST
timezone name. |
print(tzname) |
daylight |
int |
Nonzero if in a DST timezone. |
print(daylight) |
accept2dyear |
bool |
Whether two digit year will be accepted. |
print(accept2dyear) |
strftime(format[, time])
|
string |
Converts a time in struct_time to a string in the format.
Format directives:
-
%a - Locale's abbreviated weekday name.
%A - Locale's full weekday name.
%b - Locale's abbreviated month name.
%B - Locale's full month name.
%c - Locale's appropriate date and time representation.
%d - Day of the month as a decimal number [01,31].
%H - Hour (24-hour clock) as a decimal number [00,23].
%I - Hour (12-hour clock) as a decimal number [01,12].
%j - Day of the year as a decimal number [001,366].
%m - Month as a decimal number [01,12].
%M - Minute as a decimal number [00,59].
%p - Locale's equivalent of either AM or PM.
%S - Second as a decimal number [00,61].
%U - Week number of the year (Sunday as the first day of the week) as a decimal number [00,53].
All days in a new year preceding the first Sunday are considered to be in week 0.
%w - Weekday as a decimal number [0(Sunday),6].
%W - Week number of the year (Monday as the first day of the week) as a decimal number [00,53].
All days in a new year preceding the first Monday are considered to be in week 0.
%x - Locale's appropriate date representation.
%X - Locale's appropriate time representation.
%y - Year without century as a decimal number [00,99].
%Y - Year with century as a decimal number.
%Z - Time zone name (no characters if no time zone exists).
%% - A literal '%' character.
|
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())) |
strptime(string[, format])
|
struct_time |
Converts a time in string format to a time in struct_time. The format parameter uses the same directives
as those used by strftime(); it defaults to "%a %b %d %H:%M:%S %Y" which matches the formatting returned
by ctime(). |
print(strptime("30 Nov 00", "%d %b %y")) |
|
|
|
|
struct_time class
|
|
|
|
tm_year |
int |
year, for example, 1993 |
|
tm_mon |
int
|
month of year, range [1, 12] |
|
tm_mday |
int
|
day of month, range [1, 31] |
|
tm_hour |
int
|
hours, range [0, 23] |
|
tm_min |
int
|
minutes, range [0, 59] |
|
tm_sec |
int
|
seconds, range [0, 61] |
|
tm_wday |
int
|
day of week, range [0, 6], Monday is 0 |
|
tm_yday |
int
|
day of year, range [1, 366] |
|
tm_isdst |
int
|
1 if summer time is in effect, 0 if not, and -1 if unknown |
|
TCP
|
Package =
tcp
|
Function
|
Return Type
|
Description
|
Example
|
TCPClient()
|
TCPClient
|
Creates a TCP Client.
|
client = TCPClient()
|
connect(ip, port)
|
bool
|
Connects to ip and port.
|
client.connect("1.1.1.1", 2000)
|
connected()
|
bool
|
Returns true if connected
|
client.connected()
|
close()
|
N/A
|
Disconnects.
|
client.close()
|
state()
|
int
|
Returns the state of the connection.
|
client.state()
|
remoteIP()
|
str
|
Returns the remote IP.
|
client.remoteIP()
|
remotePort()
|
int
|
Returns the remote port.
|
client.remotePort()
|
localIP()
|
str
|
Returns the local IP
|
client.localIP()
|
localPort()
|
int
|
Returns the local port
|
client.localPort()
|
send(data)
|
N/A
|
Sends data to remote connection
|
client.send("hello")
|
sendWithPDUInfo(data, pduInfo)
|
bool
|
Sends data to remote connection with PDU info.
|
data = "hello"pduInfo =
PDUInfo(0xffff00) pduInfo.setOutFormat("MyProtocol",
"MyPDU", {"type": "REPLY", "data":
data})pduInfo.addOutMessage("I am sending some data.")
client.sendWithPDUInfo(data, pduInfo)
|
onReceive(callback)
|
N/A
|
Sets the callback for when data is received.
|
def onTCPReceive(data): print(data)
...
client.onReceive(onTCPReceive)
|
onReceiveWithPDUInfo(callback)
|
N/A
|
Sets the callback for when data is
received and includes the PDU info.
|
client = TCPClient()...def onTCPReceiveWithPDUInfo(data, pduInfo): print(client.remoteIP() + ": " + data) pduInfo.addInMessage("I got some data.") pduInfo.setAccepted()...
client.onReceiveWithPDUInfo(onTCPReceiveWithPDUInfo)
|
onConnectionChange(callback)
|
N/A
|
Sets the callback for when the connection changes.
|
def onTCPConnectionChange(type): print(type)
...
client.onConnectionChange(onTCPConnectionChange)
|
|
|
|
|
TCPServer()
|
TCPServer
|
Creates a TCP Server.
|
server = TCPServer()
|
listen(port)
|
N/A
|
Starts listening on port.
|
server.listen(2000)
|
stop()
|
N/A
|
Stops listening.
|
server.stop()
|
onNewClient(callback)
|
N/A
|
Sets the callback for when a new client comes in.
|
def onTCPNewClient(client): print(client)
...
server.onNewClient(onTCPNewClient)
|
UDP
|
Package =
udp
|
Function
|
Return Type
|
Description
|
Example
|
UDPSocket()
|
UDPSocket
|
Creates an UDP Socket.
|
udp = UDPSocket()
|
begin(port)
|
bool
|
Starts listening on port.
|
udp.begin(2000)
|
stop()
|
N/A
|
Stops listening.
|
udp.stop()
|
send(ip, port, data)
|
bool
|
Sends data.
|
udp.send("1.1.1.1", 2000, "hello")
|
sendWithPDUInfo(ip, port, data, pduInfo)
|
bool
|
Sends data with PDU info.
|
data = "hello"pduInfo = PDUInfo(0xffff00)
pduInfo.setOutFormat("MyProtocol", "MyPDU",
{"type": "REPLY", "data":
data})pduInfo.addOutMessage("I am sending some data.")
udp.sendWithPDUInfo("1.1.1.1", 2000, data, pduInfo)
|
onReceive(callback)
|
N/A
|
Sets the callback for when data is received.
|
def onUDPReceive(ip, port,
data):
print(data)
...
udp.onReceive(onUDPReceive)
|
onReceiveWithPDUInfo(callback)
|
N/A
|
Sets the callback for when data is
received and includes PDU info.
|
def onUDPReceiveWithPDUInfo(ip, port, data, pduInfo): print(data)
pduInfo.addInMessage("I got some data.") pduInfo.setAccepted()...
udp.onReceiveWithPDUInfo(onUDPReceiveWithPDUInfo)
|
USB
|
Package =
usb
|
Function
|
Return Type
|
Description
|
Example
|
USB( usbNum, speed)
|
USB
|
The variable for USB port.
|
usb = USB(0, 9600);
|
close()
|
N/A
|
Ends communication.
|
usb.close();
|
inWaiting()
|
int
|
# of bytes available for reading in buffer.
|
bytes = usb.inWaiting();
|
readLine()
|
string
|
Reads a line of string or to the end of stream.
|
val = usb.readLine();
|
read()
|
string
|
Reads the first character and removes from buffer.
|
val = usb.read();
|
peek()
|
string
|
Reads one character without removing from buffer.
|
val = usb.peek();
|
write(val)
|
int
|
Prints to USB, returns the number of bytes written.
|
val = usb.write(val);
|
|
|
|
|
PTmata(usbNum, speed)
|
PTmata
|
The variable for PTmata communication over USB port.
|
ptmata = PTmata(0, 9600)
|
close()
|
N/A
|
Ends communication.
|
ptmata.close()
|
pinMode(slot, mode)
|
N/A
|
Set a digital slot on other side to INPUT or OUTPUT.
|
ptmata.pinMode(1, OUT)
ptmata.pinMode(2, IN)
|
digitalRead(slot)
|
int
|
Reads from a digital slot on other side, returns HIGH or
LOW.
|
val = ptmata.digitalRead(1)
|
digitalWrite(slot, value)
|
N/A
|
Writes to a digital slot on other side with HIGH or
LOW.
|
ptmata.digitalWrite(1, HIGH)
|
analogRead(slot)
|
int
|
Reads from an analog slot on other side, returns 0 to 1023.
|
val = ptmata.analogRead(A1);
|
analogWrite(slot, value)
|
N/A
|
Writes a PWM wave to a digital slot on other side, from 0 to
255.
|
ptmata.analogWrite(A1, 128);
|
customRead(slot)
|
string
|
Reads from an custom slot on other side, returns a String
|
val = ptmata.customRead(1);
|
customWrite(slot, value)
|
N/A
|
Writes a string to a digital slot on other side. You can use
customRead directly from the other side
|
ptmata.customWrite(1, "hello");
|
inWaiting()
|
int
|
# of bytes available for reading in buffer.
|
bytes = ptmata.inWaiting();
|
processInput()
|
N/A
|
Reads from buffer and processes inputs for commands and reports
of states.
|
def loop() :
while ptmata.inWaiting():
ptmata.processInput()
ptmata.readAndReportData()
|
readAndReportData()
|
N/A
|
Reads this side's slot values and report to other side if they
are changed.
|
ptmata.readAndReportData();
|
IoE
Client (SBC only)
|
Package
= ioeclient
|
Function
|
Return Type
|
Description
|
Example
|
IoEClient.setup(api)
|
N/A
|
Sets up the API for remote monitor and control from IoE server.
The api is an object with the following properties describing
the device:
For measurement systems other than Metric and Imperial, use
only the "unit" property. That means if you want a
device to show more than Metric and Imperial, you need to create
another device for other measurement systems.
|
IoEClient.setup({
"type": "Door",
"states": [{
"name": "Open",
"type": "bool"
}, {
"name": "Lock",
"type": "options",
"options": {
"0": "Unlock",
"1": "Lock"
},
"controllable": True
}]
});
IoEClient.setup({
"type": "Thermostat",
"states": [{
"name": "Status",
"type": "options",
"options": {
"0": "Off",
"1": "Cooling",
"2": "Heating",
"3": "Auto"
},
"controllable": True
}, {
"name": "Temperature",
"type": "number",
"unit": "°C",
"imperialUnit": "°F",
"toImperialConversion": "x*1.8+32",
"toMetricConversion": "(x-32)/1.8",
"decimalDigits": 1
}, {
"name": "Auto Cool Temperature",
"type": "number",
"unit": "°C",
"imperialUnit": "°F",
"toImperialConversion": "x*1.8+32",
"toMetricConversion": "(x-32)/1.8",
"decimalDigits": 1,
"controllable": True,
"minValue": 10,
"maxValue": 100
}, {
"name": "Auto Heat Temperature",
"type": "number",
"unit": "°C",
"imperialUnit": "°F",
"toImperialConversion": "x*1.8+32",
"toMetricConversion": "(x-32)/1.8",
"decimalDigits": 1,
"controllable": True,
"minValue": -100,
"maxValue": 20
}]
});
|
IoEClient.reportStates(states)
|
N/A
|
Reports the states of this device to the IoE server. The
argument can be a string representing all states of this device.
Each state is separated by a comma. The argument can also be an
array representing all states. The number of states must match
the length of the states property in setup().
|
IoEClient.reportStates("0,1")
IoEClient.reportStates([0, 1, "str"])
|
IoEClient.onInputReceive(callback)
|
N/A
|
Sets the callback for processing inputs received from IoE
server. The argument to the callback is a string containing all
states of this device.
This is called with all states info. onStateSet is called with
only the state that was changed.
|
def onInputReceiveDone(input): print(input)
... IoEClient.onInputReceive(onInputReceiveDone)
|
IoEClient.onStateSet(callback)
|
N/A
|
Sets the callback for processing inputs received from IoE
server. The arguments to the callback are state name and state
value.
This is called with only the state that was changed.
onInputReceive is called with all states info.
|
def onStateSet(stateName, value): print(stateName + ":
" + value) ... IoEClient.onStateSet(onStateSet)
|
Physical
|
Package
= physical
|
Function
|
Return Type
|
Description
|
Example
|
move(x,y)
|
N/A
|
Move thing to position x and y in screen coordinates. The
parameters expect x and y are ints. Casting may be required.
|
move(200,200)
|
moveBy(x,y)
|
N/A
|
Increment position of thing by x and y in screen
coordinates. The parameters expect x and y are ints. Casting
may be required.
|
moveBy(1,0)
|
moveItemInWorkspace(name, x, y)
|
bool
|
Moves the item defined by name to x and y in screen coordinates
in the active workspace
|
moveItemInWorkspace("building", 300,300)
|
getX()
|
float
|
Gets the x position of thing in screen coordinates.
|
x = getX()
|
getY()
|
float
|
Gets the y position of thing in screen coordinates.
|
y = getY()
|
devicesAt(x, y, width, height)
|
list
|
Gets a list of devices at position x and y with a boundary of
width and height. The parameters expect x and y are ints.
Casting may be required.
|
devices = devicesAt(10,10,100,100)
|
devicesIncludingClustersAt(x, y, width, height)
|
Array of string
|
Gets a list of devices at position x and y with a boundary of
width and height including clusters
|
devicesIncludingClustersAt(10, 10, 100, 100)
|
getName()
|
str
|
Gets the name of the thing
|
devName = getName()
|
getDeviceProperty(deviceName, property)
|
str
|
Gets the property of a device with the specified property
|
prop = getDeviceProperty("Car", "material")
|
setDeviceProperty(deviceName, property, value)
|
N/A
|
Set property for device
|
prop= setDeviceProperty("Car", "material",
"metal")
|
setComponentOpacity(componentName, value)
|
N/A
|
Set the opacity of a component in the thing. The value is from
0 to 1, where 1 is opaque.
|
setComponentOpacity("light", 0.5)
|
setComponentRotation(componentName, value)
|
N/A
|
Sets the component rotation in degrees
|
setComponentRotation("hourHand", 90)
|
setThingRotation(value)
|
N/A
|
Sets the entire thing rotation in degrees
|
setThingRotation(180)
|
getSerialNumber()
|
str
|
Gets the serial number of the thing
|
serialNo = getSerialNumber()
|
setCustomText(x,y,width,height,text)
|
N/A
|
Write some text on the Thing viewable on the workspace.
|
setCustomText(0,0,100,100,"Device is On")
|
fillColor(componentName, red, green, blue)
|
N/A
|
Fill the component with the specified RGB values. The component
original image will have to be transparent for the color to show
up.
|
fillColor("led", 0,0,255)
|
addSound(soundID, soundPath)
|
N/A
|
Adds a sound to the device so it can be used. Sound is
referenced by the ID for later use. PT sound folder is:
"/../Sounds/"
|
addSound('sound1', '/../Sounds/buzzLow.wav');
|
playSound(soundID, playLength)
|
N/A
|
Plays a sound that has been added to the device. soundID
references the ID the sound was added with, playLength is how many
times the sound should run. -1 will make the sound loop
forever.
|
playSound('sound1', 2);
|
stopSound(soundID)
|
N/A
|
Stops a sound. soundID references the ID the sound
played.
|
stopSound('sound1');
|
destroySounds()
|
N/A
|
Stops any sounds playing in the devices and removes them.
They can't be played again unless re-added.
|
destroySounds();
|
setParentGraphicFromComponent(componentName, index)
|
N/A
|
Sets the parent container of both physical and logical view to
a graphic from component.
|
setParentGraphicFromComponent("name", 0)
|
setLogicalParentGraphicFromComponent(componentName, index)
|
N/A
|
Sets the parent container of logical view to a graphic from
component.
|
setLogicalParentGraphicFromComponent("name", 0)
|
setPhysicalParentGraphicFromComponent(componentName, index)
|
N/A
|
Sets the parent container of physical view to a graphic from
component.
|
setPhysicalParentGraphicFromComponent("name", 0)
|
setLogicalBackgroundPath(path)
|
N/A
|
Sets the logical view background to an image at path.
|
setLogicalBackgroundPath("path")
|
getAttributeOfDeviceAtSlot(attribute, slot)
|
float
|
Returns the attribute value of the device connected at the
specified slot.
|
value = getAttributeOfDeviceAtSlot("name", 0)
|
getAttributeOfDevice(attribute)
|
float
|
Returns the attribute value of this device.
|
value = getAttributeOfDevice("name")
|
getSlotsCount()
|
int
|
Returns the number of slots this device has.
|
slots = getSlotsCount()
|
Environment
|
Package = environment (from environment import *) or (from
environment import Environment)
|
Function
|
Return Type
|
Description
|
Example
|
get(environmentID)
|
float
|
Gets the value of the environment by its ID. You can get the ID
by placing your mouse over the environment name in the Environment
GUI.
If the environment does not exist, it will return -1.
|
Environment.get("Ambient Temperature")
|
setGlobalProperty(propertyName, value)
|
N/A
|
Sets a global property with a value. Both are strings.
|
Environment.setGlobalProperty("CLOCK", "12:00:00
pm")
|
getGlobalProperty(propertyName)
|
string
|
Returns the global property value.
|
Environment.getGlobalProperty("CLOCK")
|
hasGlobalProperty(propertyName)
|
boolean
|
Returns true if the property name exists, otherwise false.
|
Environment.hasGlobalProperty("CLOCK")
|
setContribution(environmentID, rate, limit, bCumulative)
|
|
Set the things contribution to an environment based on it's
environment ID. You do not need to worry about how much time has
passed and you only need to call this function when you need
different parameters.
rate: the rate to add or subtract from the total environment
value in value/second. Value should be in metric.
limit: the maximum or minimum this thing is allowed to
contribute. The limit should be in metric.
bCumulative: add up contributed values over time. For
environments like light sources that disappear when off,
bCumulative should be set to false.
|
// increase the Ambient Temperature at 0.05C/second until 100C.
Environment.setContribution("Ambient Temperature",
0.05, 100, true)
|
removeCumulativeContribution(environmentID)
|
|
Remove the overall cumulative contribution from the Thing. In
most cases, you do not need to do this. Rather, you should set up
the container to use transference or other things to remove
accumulated contributions.
|
Environment.removeCumulativeContribution("Ambient
Temperature")
|
setTransferenceMultiplier(environmentID, multiplier)
|
|
Increase or decrease the current transference value by
multiplier.
For example, if you open the door to the house, you may want to
speed up the Ambient Temperature convergence with the outside by
increasing the container's transference by the multiplier.
|
Environment.setTransferenceMultiplier("Ambient
Temperature", 2)
|
getTotalContributions(environmentID)
|
float
|
Returns the total value of contributions by all things
|
Environment.getTotalContributions("Wind Speed")
|
getCumulativeContribution(environmentID)
|
|
Returns the cumulativeContribution for just the thing that is
calling the function
|
Environment.getCumulativeContribution("Wind Speed")
|
getMetricValue(environmentID)
|
float
|
Returns the metric value of the environmentID regardless of
user preference
|
Environment.getMetricValue("Ambient Temperature")
|
getValueWithUnit(environmentID)
|
string
|
Returns the value in metric or imperial based on the user
preference and also append the unit
|
Environment.getValueWithUnit("Ambient Temperature")
|
getUnit(environmentID)
|
string
|
Returns the unit for the environmentID. The unit can be metric
or imperial based on the user preferences
|
Environment.getUnit("Ambient Temperature")
|
getVolume()
|
float
|
Returns the volume size of the container in meters^3 that
caller of the function is in
|
Environment.getVolume()
|
getTimeInSeconds()
|
int
|
Returns the current time
|
Environment.getTimeInSeconds();
|
getElapsedTime(lastTime)
|
int
|
Returns the time passed since the lastTime value
|
var time = Environment.getTimeInSeconds();
delay(1000);
Environment.getElapsedTime(time);
|
Real HTTP Server (External Network Access)
|
Package = realhttp
|
Function
|
Return Type
|
Description
|
Example
|
RealHTTPServer()
|
RealHTTPServer
|
Creates a Real HTTP Server.
|
http =
RealHTTPServer()
|
start( port )
|
N/A
|
Start server listening on port.
|
http.start(
8765 )
|
stop( )
|
N/A
|
Stop server listening.
|
http.stop()
|
isListening( )
|
boolean
|
Returns the listening status of the server.
|
if
http.isListening() : ...
|
route( url-pattern, request-types, callback, context=None)
|
N/A
|
Adds callback to be run for all request-types
matching url-pattern.
callback: function ( context, request, reply); requst:
RealHttpServerRequest response:
RealHttpServerResponse
url-pattern: string request-types: array of
strings (“GET”, “POST”, “PUT”,
“UPDATE”, “DELETE”)
context:
object. If None
the server object
will be passed in as context.
|
def
on_get_files( context, request, reply ): ... def
on_posts( context, request, reply ): ... def
on_everything( context, request, reply ): ... http.route(
“/files/*”, [“GET”],
on_get_files) http.route( “*”, [“POST”],
on_posts) http.route( “*”, [],
on_everything)
|
websocket(
url-pattern, callback)
|
N/A |
Adds
callback to be run for incoming websocket connections matching
url-pattern.
callback:
function (client);
client:
RealWSClient
url-pattern:
string
|
def callback( client ): pass
server.websocket("/ws", callback)
|
|
|
|
|
RealHTTPServerRequest
|
|
Request object passed to routing callbacks.
|
|
headers( )
|
object
|
Returns object containing request headers.
|
headers =
request.headers( ) ... headers[“Content-Type”] ...
|
method( )
|
string
|
Returns request's method (“GET”, etc.)
|
if
request.method() == “POST”: ...
|
body( )
|
string
|
Returns the body of the request.
|
request.body();
|
url( )
|
string
|
Returns requested URL.
|
request.url();
|
ip( )
|
string
|
Returns IP address of the request origin.
|
if
request.ip() == “1.1.1.1”: ...
|
|
|
|
|
RealHTTPServerResponse
|
|
Response object passed to routing callbacks.
|
|
setStatus( code )
|
N/A
|
Sets response status to code.
code:
number
|
response.setCode(
200 ) # for OK response
|
setHeaders( headers )
|
N/A
|
Sets response headers in bulk. Object properties define header
names and values.
headers: object
|
response.setHeaders({
“Authorization”: “basic”,
“Cookie”: “Id=1234; Group=users” })
|
addHeader( name, value )
|
N/A
|
Sets header name to
value.
name:
string value: string
|
response.addHeader(
“Cookie”, “Group=inner” )
|
appendContent( content )
|
N/A
|
Appends content to
response body.
content: string
|
response.appendContent(
“more stuff“ )
|
resetContent( )
|
N/A
|
Resets the body of the response to empty.
|
response.resetContent()
|
end( )
|
N/A
|
Initiates network transfer for the response.
|
response.setContent(
“Hello, world!” ) response.end()
response.setToPath(
“my-file.txt” ) response.end()
|
setContent( content )
|
N/A
|
Sets the body of the response to content.
content: string
|
response.setContent(
“Hello, world!” )
|
setToFile( path )
|
N/A
|
Sets content of the response to the contents of the file at
path. The path must be
local to the device running the server.
path: string
|
response.setToFile(
“intro.html” )
|
setToNotFound( )
|
N/A
|
Canned response for when a requested resource can not be
located.
|
response.setToNoFound()
|
send( content )
|
N/A
|
Sends content as plain
text.
content: string
|
response.send(
“Hello, world!” )
|
setContentType( type )
|
N/A
|
Sets Content-Type header
to type.
type: string
|
response.setContentType(
“text/html” )
|
sendFile( path )
|
N/A
|
Sends the contents of the file at path.
path: file path local to the device
running the server.
|
response.send(
“my-file.txt” )
|
sendNotFound( )
|
N/A
|
Sends canned response for when a requested resource can not be
located.
|
response.sendNotFound()
|
Real HTTP Client (External Network Access)
|
Package
= realhttp
|
Function
|
Return Type
|
Description
|
Example
|
RealHTTPClient()
|
RealHTTPClient
|
Creates a Real HTTP Client.
|
http = RealHTTPClient()
|
get(url)
|
N/A
|
Gets an URL.
|
http.get(“http://www.cisco.com”)
|
post(url, data)
|
N/A
|
Posts data to an URL.
data can be a string or a dictionary; if dictionary, it will be
URL-encoded into the body.
|
http.post(url, {"num":1, "str":"hello"})
|
put(url, data)
|
N/A
|
Puts data to an URL.
data can be a string or a dictionary; if dictionary, it will be
URL-encoded into the body.
|
http.put(url, {"num":1, "str":"hello"})
|
deleteResource(url)
|
N/A
|
Sends a delete to an URL.
|
http.deleteResource(url)
|
getWithHeader(url, header)
|
N/A
|
Gets an URL with custom header fields as a dictionary.
|
http.getWithHeader("https://api.ciscospark.com/v1/people/me",
{"Authorization": "Bearer xxyyzz"})
|
postWithHeader(url, data, header)
|
N/A
|
Posts data to an URL with custom header fields as a dictionary.
data can be a string or a dictionary; if dictionary and custom
header field has "application/json" as the
"content-type", it will be json-encoded, otherwise it
will be URL-encoded into the body.
|
http.postWithHeader("https://api.ciscospark.com/v1/messages",
{"toPersonId": "722bb271-d7ca-4bce-a9e3-471e4412fa77",
"text": "Hi Sparky"}, {"Authorization":
"Bearer xxyyzz", "Content-Type":
"application/json"})
|
putWithHeader(url, data, header)
|
N/A
|
Puts data to an URL with custom header fields as a dictionary.
data can be a string or a dictionary; if dictionary and custom
header field has "application/json" as the
"content-type", it will be json-encoded, otherwise it
will be URL-encoded into the body.
|
http.putWithHeader("https://api.ciscospark.com/v1/rooms/xxyyzz",
{"title": "New room name"}, {"Authorization":
"Bearer xxyyzz"})
|
deleteResourceWithHeader(url, header)
|
N/A
|
Sends a delete to an URL with custom header fields as a
dictionary.
|
http.deleteResourceWithHeader("https://api.ciscospark.com/v1/messages/xxyyzz",
{"Authorization": "Bearer xxyyzz"})
|
onDone(callback)
|
N/A
|
Sets the callback for when the request is done.
replyHeader is a dictionary of header fields in the reply. It
is added to 7.1 and is optional.
|
def onHTTPDone(status, data, replyHeader): print(data)
...
http.onDone(onHTTPDone)
|
Real TCP (External Network Access)
|
Package
= realtcp
|
Function
|
Return Type
|
Description
|
Example
|
RealTCPClient()
|
RealTCPClient
|
Creates a Real TCP Client.
|
client = RealTCPClient()
|
connect(ip, port)
|
N/A
|
Connects to ip and port.
|
client.connect("1.1.1.1", 2000)
|
connected()
|
bool
|
Returns true if connected.
|
client.connected()
|
close()
|
N/A
|
Disconnects.
|
client.close()
|
state()
|
int
|
Returns the state of the connection.
|
client.state()
|
remoteIP()
|
str
|
Returns the remote IP.
|
client.remoteIP()
|
remoteHost()
|
str
|
Returns the remote server host name.
|
client.remoteHost()
|
remotePort()
|
int
|
Returns the remote port.
|
client.remotePort()
|
localIP()
|
str
|
Returns the local IP.
|
client.localIP()
|
localPort()
|
int
|
Returns the local port.
|
client.localPort()
|
send(data)
|
N/A
|
Sends data to remote connection.
|
client.send("hello")
|
error()
|
int
|
Returns the last error code.
|
client.error()
|
errorString()
|
str
|
Returns the last error in string.
|
client.errorString()
|
onReceive(callback)
|
N/A
|
Sets the callback for when data is received.
|
def onTCPReceive(data): print(data)
...
client.onReceive(onTCPReceive)
|
onConnectionChange(callback)
|
N/A
|
Sets the callback for when the connection changes.
|
def
onTCPConnectionChange(type): print(type)
...
client.onConnectionChange(onTCPConnectionChange)
|
|
|
|
|
RealTCPServer() |
RealTCPServer |
Creates a Real TCP Server. |
server = RealTCPServer() |
|
bool |
Listens on port on host device and returns whether it was successful.
|
|
isListening() |
bool |
Returns true if listening. |
server.isListening() |
|
N/A |
Stops listening. All connections remain open.
|
|
listeningIP() |
str |
Returns the listening IP. |
server.listeningIP() |
listeningPort() |
int |
Returns the listening port. |
server.listeningPort() |
error() |
int |
Returns the last error code. |
server.error() |
errorString() |
str |
Returns the last error in string. |
server.errorString() |
|
N/A |
Sets the callback for when a new client is connected.
|
def onTCPNewClient(client):
print("new client")
...
server.onNewClient(
onTCPNewClient)
|
Simulation
|
Package
= simulation
|
Function
|
Return Type
|
Description
|
Example
|
Simulation.isInSimulationMode()
|
bool
|
Returns whether PT is currently in Simulation Mode.
|
if Simulation.isInSimulationMode(): print("In sim mode")
|
Simulation.addCustomProtocolType(protocol)
|
bool
|
Adds a new protocol type to the current file/network. The
protocol will show up in the Event List Filters. Returns true if
successful, false otherwise.
|
Simulation.addCustomProtocolType("MyProtocol")
|
Simulation.hasCustomProtocolType(protocol)
|
bool
|
Returns whether the protocol type is already added to the
current file/network.
|
if not Simulation.hasCustomProtocolType("MyProtocol"):
Simulation.addCustomProtocolType("MyProtocol")
|
Simulation.addCustomPDU(protocol, pduType, definition)
|
bool
|
Adds a new protocol type and PDU type to the current
file/network. The protocol will show up in the Event List Filters,
and the PDU with its definition will show up in PDU details.
Returns true if successful, false if the definition is invalid. It
will replace existing definitions if using the same protocol and
PDU type names.
The definition argument is an object with the following
properties describing the layout and fields of the PDU:
title - a string that shows up
as the title in PDU Details
units - a string
unit_marks - an array of
numbers indicating where the marks are to show up
width - an integer indicating
the width of PDU
fields - an array of objects
representing each field in the PDU; each object must contain the
following properties:
|
Simulation.addCustomPDU("MyProtocol", "MyPDU", { "title": "My PDU", "units": "Bits", "unit_marks": [16], "width": 32, "fields": [ { "value": "TYPE: {type}", "size": 32 }, { "value": "DATA: {data}", "size": 32 } ]})
|
Simulation.hasCustomPDU(protocol, pduType)
|
bool
|
Returns whether the protocol and PDU type is already added to
the current file/network.
|
if not Simulation.hasCustomPDU("MyProtocol",
"MyPDU"): # add it
|
|
|
|
|
PDUInfo(color)
|
PDUInfo
|
Creates a PDU Info object with the pdu color. A PDUInfo is
required to show PDU with more details in Simulation Mode.
|
pduInfo = PDUInfo(0xffff00)
|
setOutFormat(protocol, pduType, fields)
|
N/A
|
Sets the outgoing PDU to be displayed in a custom PDU
definition. The fields argument is an object with the variables
defined in the PDU definition fields property.
|
pduInfo.setOutFormat("MyProtocol", "MyPDU",
{"type": "REPLY", "data": data})
|
addOutMessage(message)
|
N/A
|
Adds a message to the outgoing OSI layer 7.
|
pduInfo.addOutMessage("I am sending some data.")
|
addInMessage(message)
|
N/A
|
Adds a message to the incoming OSI layer 7.
|
pduInfo.addInMessage("I received some data.")
|
setAccepted()
|
N/A
|
Sets the PDU as accepted.
|
pduInfo.setAccepted()
|
setDropped()
|
N/A
|
Sets the PDU as dropped.
|
pduInfo.setDropped()
|
Workspace
|
Package
= workspace
|
Function
|
Return Type
|
Description
|
Example
|
getPhysicalObject()
|
PhysicalObject
|
Returns the current device's physical object.
|
po = getPhysicalObject()
|
getName()
|
str
|
Returns the name of this physical object.
|
print(po.getName())
|
getType()
|
int
|
Returns the type of this physical object. Valid values are:
INTER_CITY = 0CITY = 1BUILDING = 2WIRING_CLOSET = 3RACK =
4TABLE = 5DEVICE = 6MULTIUSER = 7GENERIC_CONTAINER = 8
|
print(po.getType())
|
getX()
|
float
|
Returns the x coordinate relative to its parent in meters.
|
print(po.getX())
|
getY()
|
float
|
Returns the y coordinate relative to its parent in meters.
|
print(po.getY())
|
getCenterX()
|
float
|
Returns the center x coordinate relative to its parent in
meters.
|
print(po.getCenterX())
|
getCenterY()
|
float
|
Returns the center y coordinate relative to its parent in
meters.
|
print(po.getCenterY())
|
getGlobalX()
|
float
|
Returns the global x coordinate of this physical object in
meters.
|
print(po.getGlobalX())
|
getGlobalY()
|
float
|
Returns the global y coordinate of this
physical object in meters.
|
print(po.getGlobalX())
|
getWidth()
|
float
|
Returns the width of this physical object in meters.
|
print(po.getWidth())
|
getHeight()
|
float
|
Returns the height of this physical object in meters.
|
print(po.getHeight())
|
moveTo(x, y)
|
N/A
|
Moves this physical object's top left corner to the specified
coordinates in meters relative to its parent.
|
po.moveTo(10, 20)
|
moveCenterTo(x, y)
|
N/A
|
Moves this physical object's center to the specified
coordinates in meters relative to its parent.
|
po.moveCenterTo(10, 20)
|
moveBy(x, y)
|
N/A
|
Moves this physical object by the specified coordinates in
meters.
|
po.moveBy(10, 20)
|
setVelocity(x, y)
|
N/A
|
Sets this physical object's velocity in meters. This physical
object then moves automatically.
|
po.setVelocity(1, 2)
|
getXVelocity()
|
float
|
Returns the x velocity of this physical object in meters.
|
print(po.getXVelocity())
|
getYVelocity()
|
float
|
Returns the y velocity of this physical
object in meters.
|
print(po.getYVelocity())
|
getParent()
|
PhysicalObject
|
Returns this physical object's parent.
|
parentPO = po.getParent()
|
moveOutOfParent()
|
bool
|
Moves this physical object out of its parent to the same level
as the parent, and returns whether it was successful.
|
po.moveOutOfParent()
|
moveInto(name)
|
bool
|
Moves this physical object into a container with the specified
name that is in the same level as this physical object, and
returns whether it was successful.
|
po.moveInto("Corporate Office")
|
getChildCount()
|
int
|
Returns the number of children this physical object has.
|
print(po.getChildCount())
|
getChildAt(index)
|
PhysicalObject
|
Returns the child physical object at the specified index.
|
childPO = po.getChildAt(0)
|
getChild(name)
|
PhysicalObject
|
Returns the child physical object with the specified name.
|
childPO = po.getChild("Wiring Closet")
|
|
|
|
|
getLogicalObject()
|
LogicalObject
|
Returns the current device's logical object.
|
lo = getLogicalObject()
|
getName()
|
str
|
Returns the name of this logical object.
|
print(lo.getName())
|
getType()
|
int
|
Returns the type of this logical object. Valid values are:
ROOT = 1099DEVICE = 1100CLUSTER = 1104MULTIUSERITEM = 1108
|
print(lo.getType())
|
getX()
|
int
|
Returns the x coordinate relative to its parent in pixels.
|
print(lo.getX())
|
getY()
|
int
|
Returns the y coordinate relative to its
parent in pixels.
|
print(lo.getY())
|
getCenterX()
|
int
|
Returns the center x coordinate relative
to its parent in pixels.
|
print(lo.getCenterX())
|
getCenterY()
|
int
|
Returns the center y coordinate relative
to its parent in pixels.
|
print(lo.getCenterY())
|
getWidth()
|
int
|
Returns the width of this logical object
in pixels.
|
print(lo.getWidth())
|
getHeight()
|
int
|
Returns the height of this logical object
in pixels.
|
print(lo.getHeight())
|
moveTo(x, y)
|
N/A
|
Moves this logical object's top left corner to the specified
coordinates in pixels relative to its
parent.
|
lo.moveTo(10, 20)
|
moveCenterTo(x, y)
|
N/A
|
Moves this logical object's center to the specified coordinates
in pixels relative to its parent.
|
lo.moveCenterTo(10, 20)
|
moveBy(x, y)
|
N/A
|
Moves this logical object by the specified coordinates in
pixels.
|
lo.moveBy(10, 20)
|
setVelocity(x, y)
|
N/A
|
Sets this logical object's velocity in pixels.
This logical object then moves automatically.
|
lo.setVelocity(1, 2)
|
getXVelocity()
|
float
|
Returns the x velocity of this logical
object in pixels.
|
print(lo.getXVelocity())
|
getYVelocity()
|
float
|
Returns the y velocity of this logical
object in pixels.
|
print(lo.getYVelocity())
|
getParent()
|
LogicalObject
|
Returns this logical object's parent.
|
parentLO = lo.getParent()
|
moveOutOfParent()
|
bool
|
Moves this logical object out of its parent to the same level
as the parent, and returns whether it was successful.
|
lo.moveOutOfParent()
|
moveInto(name)
|
bool
|
Moves this logical object into a container with the specified
name that is in the same level as this logical object, and returns
whether it was successful.
|
lo.moveInto("Cluster0")
|
getChildCount()
|
int
|
Returns the number of children this logical object has.
|
print(lo.getChildCount())
|
getChildAt(index)
|
LogicalObject
|
Returns the child logical object at the specified index.
|
childlo = lo.getChildAt(0)
|
getChild(name)
|
LogicalObject
|
Returns the child logical object with the specified name.
|
childlo = lo.getChild("Cluster0")
|
Bluetooth Manager
|
Package
= bluetooth
|
Function |
Return Type |
Description |
Example |
init() |
N/A |
Initialize Bluetooth functionality for the device. |
def main():
Bluetooth.init()
|
onDeviceDiscovered(macAddress, deviceName) |
N/A |
This event handler is called when a device is discovered. |
def handleDeviceDiscovered(macAddress, deviceName):...
Bluetooth.onDeviceDiscovered(handleDeviceDiscovered)
Bluetooth.discover()
|
onDevicePaired(macAddress) |
N/A |
This event handler is called when a device is paired. |
def handleDevicePaired(macAddress):...
Bluetooth.onDevicePaired(handleDevicePaired) |
onDeviceUnPaired(macAddress) |
N/A |
This event handler is called when a device is unpaired. |
def handleDeviceUnpaired(macAddress):...
Bluetooth.onDeviceUnpaired(handleDeviceUnpaired) |
onDeviceConnected(macAddress) |
N/A |
This event handler is called when a device is connected. |
def handleDeviceConnected(macAddress):...
Bluetooth.onDeviceConnected(handleDeviceConnected) |
onDeviceDisconnected(macAddress) |
N/A |
This event handler is called when a device is disconnected. |
def handleDeviceDisconnected(macAddress):...
Bluetooth.onDeviceDisconnected(handleDeviceDisconnected) |
setDiscoverable(discoverable) |
N/A |
Sets the bluetooth device to discoverable or not. |
Bluetooth.setDiscoverable(true) |
isDiscoverable() |
bool |
Returns true if discoverable otherwise false. |
Bluetooth.isDiscoverable() |
discover() |
N/A |
Starts the discovering process. If devices are discovered, the onDeviceDiscovered() event will trigger. |
Bluetooth.discover() |
pair(mac) |
N/A |
Starts pairing with mac address. |
Bluetooth.pair(macAddress) |
unpair(mac) |
N/A |
Starts unpairing with mac address. |
Bluetooth.unpair(macAddress) |
onPairRequest(macAddress, deviceName) |
N/A |
This event handler is called if there's a pair request and the bluetooth manager is set to accept pair requests. |
Bluetooth.setAcceptingPairRequest(true)
def handlePairRequest(macAddress, deviceName):...
Bluetooth.onPairRequest = handlePairRequest |
setAcceptingPairRequest(accepting) |
N/A |
Sets the bluetooth manager to accept pair requests |
Bluetooth.setAcceptingPairRequest(true) |
acceptPairRequest(macAddress, deviceName) |
N/A |
Accepts the pair request with macAddress and deviceName |
Bluetooth.acceptPairRequest(macAddress, deviceName) |
getPairedDevices() |
Array |
Returns an array of paired bluetooth devices. |
var devices = Bluetooth.getPairedDevices() |
getConnectedDevices() |
Array |
Returns an array of connected devices. |
var devices = Bluetooth.getConnectedDevices() |
enableBroadcast() |
N/A |
Enables bluetooth broadcast. |
Bluetooth.enableBroadcast() |
isBroadcastEnabled() |
bool |
Returns true if broadcast is enabled. |
Bluetooth.isBroadcastEnabled() |
broadcastBeacon(beaconUuid, data) |
bool |
Broadcast beacon with beaconUuid and data. |
Bluetooth.broadcastBeacon(uuid, data) |
Bluetooth Service
|
Package
= bluetooth
|
Function |
Return Type |
Description |
Example |
start(uuid) |
N/A |
Starts the bluetooth service. |
bts = BluetoothService()
dstService = "{00000000-0000-0000-0000-000000000001}"
bts.start(dstService)
|
connect(dstMac, dstServiceUuid) |
bool |
Returns true if connected to dstMac and dstServiceUuid; false otherwise. |
bts.connect(dstMac, dstServiceUuid) |
stop() |
N/A |
Stops the bluetooth service. |
bts.stop() |
send(dstMac, dstServiceUuid, data) |
N/A |
Sends data to dstMac and dstServiceUuid with data. |
bts.send(dstMac, dstServiceUuid, "hello") |
sendToConnected(data) |
N/A |
Sends data to connected device. |
bts.sendToConnected("hello") |
onReceive(srcMac, srcService, dstMac, dstService, data) |
N/A |
This event handler receives data from srcMac, srcService, dstMac and dstService with data. |
def handleReceive(srcmac, srcData, dstMac, dstService, data){...}
bts.onReceive(handleReceive) |