Phidget Network Server: Difference between revisions

From Phidgets Support
Line 326: Line 326:
</syntaxhighlight>
</syntaxhighlight>
|-|
|-|
  JavaScript=
  JavaScript=<syntaxhighlight lang=javascript>
In Javascript, instead of opening a Phidget using the network server, you can open it normally after connecting to the remote server that the Phidget belongs to. (In a sense, JavaScript is always opening Phidgets remotely)
const conn = new phidget22.NetworkConnection(5661, 'localhost')
await conn.connect()
 
const ch = new phidget22.LightSensor()
 
ch.deviceSerialNumber = 37299
ch.hubPort = 0
 
await ch.open()
</syntaxhighlight>
</tabber>
</tabber>



Revision as of 20:25, 25 April 2022

 Phidget Programming Basics: Phidget Network ServerTOC Icon.png Table of Contents

Nav Back Arrow.png Nav Back Hover.png WhiteTab1.png HoverTab1.jpg WhiteTab2.png HoverTab2.jpg WhiteTab3.png HoverTab3.jpg WhiteTab4.png HoverTab4.jpg WhiteTab5.png HoverTab5.jpg WhiteTab6.png HoverTab6.jpg WhiteTab7.png HoverTab7.jpg WhiteTab8.png HoverTab8.jpg WhiteTab9.png HoverTab9.jpg WhiteTab10.png HoverTab10.jpg WhiteTab11.png HoverTab11.jpg WhiteTab12.png HoverTab12.jpg WhiteTab13.png HoverTab13.jpg WhiteTab14.png HoverTab14.jpg GreenTab15.png WhiteTab16.png HoverTab16.jpg Nav Next Arrow.png Nav Next Hover.png


15 . Phidget Network Server

The Phidget Network Server is a feature of Phidgets that makes it possible to control or interact with Phidgets connected to other computers on your local network.

General Overview

Once the Phidget Network Server is enabled, your computer hosts a Phidget Server which broadcasts all connected Phidgets to other computers on your network. When another computer tries to open a channel, these Phidgets will be included in the list of channels that can be attached.

Phidgets attached over a Phidget Network server can be addressed, opened, and attached in much the same way as local Phidgets, so long as the program has access to the Network Server hosting the Phidgets.

Channels that are attached remotely may be opened by multiple programs simultaneously using the Phidget Network Server. There are some exceptions, such as motor controllers, that will never match more than one channel at a time for safety reasons.

NetworkServer PhidgetServer.jpg

When you open a Phidget, you have the option of opening it locally or remotely.

Opening a Phidget locally means communicating with it directly. You can only locally open Phidgets that are physically connected to the computer running your program.

Opening a Phidget remotely means communicating with it using the Network Server. You can remotely open any Phidget on your network, even ones that are physically connected to the computer running your program.

IsLocal and IsRemote serve as additional Addressing Properties when a Phidget Network Server is used in your application, and are used to specify if a Phidget should be attached locally or remotely. If you are opening a Phidget your computer is physically connected to and your program uses the Phidget Network Server, it is strongly recommended to specify if you intend to connect to it locally or remotely.

Using The Network Server

The specifics of running a Phidget Network Server on your machine depends on the operating system it is using. Select your operating system below for instructions:

Select an Operating System for Instructions

Connecting to a Network Server

There are two ways to gain access to a Phidget server that's being hosted on your network. If the server is discoverable, you can simply enable automatic server discovery in your program. Select your programming language below to see a sample of how this is done.

Net.enableServerDiscovery(PhidgetServerType.PHIDGETSERVER_DEVICEREMOTE)

Net is the object that is used for Phidget Networking. You can find a full list of methods and properties available use with the network in the Phidget22 API by selecting Networking API in the drop-down menu.

If the Phidget server is not discoverable, you can connect to it by adding it specifically. This is done using AddServer, which takes a number of parameters that help specify the server to connect to (e.g. IP address, port, password). See below for an an example of adding a specific server, and take a look at the Networking API in the Phidget22 API for details.

Net.addServer("ServerName", "192.168.2.20", 5661, "passwd", 0)

Enabling the Web Server

The Phidget Network Server includes a built-in Webserver. It can be used to serve files - such as the Phidget JavaScript library, or your own projects. By default, it serves the JavaScript control panel files. The main purpose of the Webserver is to support a Websockets connection for the Browser library - because regular sockets cannot be used in Browser. If you're on Windows or Mac, you can enable the Webserver in the Phidget Control Panel:

Enable webserver.jpg

If you're using Linux, you can enable it in the Network Server config file located at:

/etc/phidgets/phidget22networkserver.pc

by changing enabled to 'true' in the www section.

Network Server on a Phidget Single Board Computer

The Phidget Single Board Computer (SBC) can provide a compact, inexpensive way to easily run the Network Server. It runs the Network Server in the background automatically from the moment you turn it on, and allows you to remotely read from and control all Phidgets attached to it:

Network server sbc.jpg

In this example, a Phidget SBC is connected to a VINT Hub, which in turn is connected to a VINT device. By using the Network Server, it makes all of these channels available to any device connected to the same network. The Network Server on the SBC is discoverable by default.

This is convenient because it allows the Phidgets and sensors to be in a remote location, like mounted on a wall or inside some kind of assembly, rather than sitting on your computer desk. The channels of this system could be conveniently accessed by a home computer on the network, a phone running some Phidgets code, or even another Phidget SBC in a different location.

For more information on controlling Phidgets with your phone, have a look at the mobile section of our operating system support page, or read this article where we use iOS to control a robot full of Phidgets.

Examples

Below are some quick examples showing how simple it is to open a Phidget remotely over the Network Server. In each example, a light sensor Phidget is being remotely opened on port 0 of a VINT Hub with serial number 37299.

ch = LightSensor()

ch.setDeviceSerialNumber(37299)
ch.setHubPort(0)
ch.setIsRemote(1)

Net.enableServerDiscovery(PhidgetServerType.PHIDGETSERVER_DEVICEREMOTE)

ch.open();

For more information, have a look at the Phidget22 API and select your language from the drop-down menu. You can learn more about opening Phidgets on the Programming Basics page.

Troubleshooting

When using the Network Server, both the client and server should have the same version of the Network Server installed. The easiest way to ensure this is to update your libraries on both ends.

Sometimes viewing the Network Server log file can provide additional information if something isn't working properly. If you contact Phidgets support for a Network Server issue, it will be helpful if you attach the log file. You can find the log file depending on your operating system:

When using the Phidget Control Panel in Windows, you can find the log file at
C:\ProgramData\Phidgets\logs\Phidget22NetworkServer_networkserver.log
Which can also be found by clicking on the "Logs" link in the bottom right corner of the Control Panel window.

For other troubleshooting tips, try our Network Server Troubleshooting page.