Woopsa

Woopsa is a protocol that's simple, lightweight, free, open-source, web and object-oriented, publish-subscribe, real-time capable and Industry 4.0 ready. It contributes to the revolution of the Internet of Things.

JavaScript Browser Client
var woopsa = new WoopsaClient("http://demo.woopsa.org/woopsa", jQuery);
woopsa.read("/Temperature", function(result){
  //result = 24.2
});
Dynamic C# Client
dynamic client = new WoopsaDynamicClient("http://demo.woopsa.org/woopsa");

Console.WriteLine(client.Temperature); 
// result = 24.2
Regular C# Client
WoopsaClient client = new WoopsaClient("http://demo.woopsa.org/woopsa");

Console.WriteLine(client.Root.Properties.ByName("Temperature").Value); 
// result = 24.2
C# Server
WeatherStation station = new WeatherStation();
WoopsaServer server = new WoopsaServer(station);

station.Temperature = 24.2;

Woopsa is a protocol that allows you to share the complete object model of your application in a way that's similar to OPC-UA. It's web-based and uses rock-solid foundations such as HTTP and JSON, which makes it work with your browser. It allows you to remotely access structured data between applications in different languages like C#, JavaScript and C.

Why use Woopsa?

It makes you ready for the Industry 4.0 revolution.
When simplicity also means power. Aside from reading/writing values and calling methods, Woopsa also supports multiple requests and the publish-subscribe pattern as native extensions. This makes polling a thing of the past, and allows you to communicate in real-time with very low bandwidth overhead. Because Woopsa shares so many concepts with OPC-UA, you can also use it as a gateway server to connect your webapps to OPC-UA servers.
Get started in less than 5 minutes.
Sure, you could roll out your own RESTful API, imagine which methods and data your application needs to expose and then write both the client — and server — side of your application. Save time by using Woopsa: you can immediately get properties and call methods on your model, with virtually zero effort.
It's super simple stuff.
Woopsa is an Internet of Things protocol that brings all the communication mechanisms you need for your connected applications : explore the model, read/write properties, invoke methods, publish/subscribe notifications and perform multiple requests at once. All these services are implemented simply using JSON over HTTP, making it also usable in web browsers natively. Woopsa can also be used as a simpler protocol that answers the common needs of OPC-UA users, making it a viable open, free and simple alternative for many applications.

What can Woopsa do?

Explore

Explore the server and see its entire data hierarchy.

Read / Write

Read and write values on the server with ultra-low latency.

Invoke

Remotely call a method on the server and instantly get the result.

Publish / Subscribe

Get instant notifications on data change, avoiding polling.

Multiple requests

Make multiple requests at once, lowering overhead in big applications.

Real-time

The Woopsa server replies blazingly fast with a read latency under 200 µs.

Embedded

Woopsa works on embedded devices because it uses very little resources.

Encryption

Because it uses HTTP, encryption is just a matter of adding SSL.

How does Woopsa work?

Simple! All requests are made using the standard HTTP protocol. There are only 4 verbs: read, write, invoke and meta. The response is pure JSON and contains the value as well as type information. Optionnaly, a timestamp can be added so you can keep track of the evolution of data over time.

Woopsa's simplicity is what distinguishes it from every other industrial protocol out there. However, Woopsa extensions, which are published as regular Woopsa methods, add powerful mechanisms like multiple requests or even the publish/subscribe pattern.

GET /woopsa/read/Temperature
{"Value":24.2,"Type":"Real"}

How do I start using it?

Woopsa is based on solid foundations everybody knows, so it takes very little effort to use it in your own applications.

All it takes to understand what Woopsa can do is to take a look at our "get started" guide and then take a look at the simple UML model.

Once you've got that figured out, you can dig a bit deeper and read our source code — it's free as freedom!

If you're interested, you can also read the complete specifications to the protocol!