Objective of this demo is to showcase some of CycloneTCP / CycloneSSL / CycloneACME protocol implementations. The reference board used in this demo is STM32 Nucleo-144 development board with STM32F746ZG MCU, along side X-NUCLEO-IKS01A2 Motion MEMS and environmental sensor expansion board.

Picture of Demo

This page has been accessed 1214 times.

The Web server supports SSI (Server-Sides Includes) and CGI scripting for dynamic contents. The following properties are dynamically generated each time the page is refreshed (press F5). If your system supports IPv6, try to access the server using its IPv6 link-local address or global address and discover your own IPv6 host address!

System Information
Board: STM32F746ZG-Nucleo
MAC Address: 00-AB-CD-EF-07-A9
System Time: 549h 08min 41s 189ms
HTTP Connection
Remote Address: 3.236.50.201
Remote Port: 58628
Server Address: 192.168.1.93
Server Port: 443
Document URI: index.shtm
Query String:
IPv4 Configuration
IPv4 Address: 192.168.1.93
Subnet Mask: 255.255.255.0
Default Gateway: 192.168.1.1
Primary DNS: 192.168.1.1
Secondary DNS: 0.0.0.0
IPv6 Configuration
Link-Local Addr: fe80::2ab:cdff:feef:7a9
Global Address: ::
Prefix: ::/0
Router: ::
Primary DNS: ::
Secondary DNS: ::

AJAX stands for Asynchronous JavaScript And XML. In a nutshell, it is the use of the XMLHttpRequest object to communicate with servers. It can send and receive information in various formats, including JSON, XML, HTML, and text files. AJAX’s most appealing characteristic is its "asynchronous" nature, which means it can communicate with the server, exchange data, and update the page without having to refresh the page.

Current Temperature: Loading...

Current Atmospheric Pressure: Loading...

Current Humidity: Loading...

AJAX stands for Asynchronous JavaScript And XML. In a nutshell, it is the use of the XMLHttpRequest object to communicate with servers. It can send and receive information in various formats, including JSON, XML, HTML, and text files. AJAX’s most appealing characteristic is its "asynchronous" nature, which means it can communicate with the server, exchange data, and update the page without having to refresh the page.

Accelerometers measure linear acceleration. They can be also used for specific purposes such as inclination and vibration measurement. MEMS accelerometers embed several useful features for motion and acceleration detection, including free-fall, wakeup, single/double-tap recognition, activity/inactivity detection and 6D/4D orientation (more info).

MQTT (Message Queuing Telemetry Transport) is an open OASIS and ISO standard (ISO/IEC 20922) lightweight, publish-subscribe network protocol that transports messages between devices. It is designed for contexts where a "small code footprint" is required or the network bandwidth is limited.

MQTT Demo Architecture

Please follow the instructions below to access our live sensor data through MQTT:

  1. Open your favourite MQTT client. If you do not already have one, we can suggest MQTT.fx
  2. Please use the following information to subscribe to our data feed:
    • Broker address: mqtt.oryx-embedded.com
    • Broker port: 1883 (MQTT unencrypted)
  3. Topics:
    • Temperature Data: oryx/demo/temperature
    • Humidity Data: oryx/demo/humidity
    • Atmospheric Pressure Data: oryx/demo/pressure

The WebSocket APILearn More is an advanced technology that makes it possible to open a two-way interactive communication session between the user's browser and a server. With this API, you can send messages to a server and receive event-driven responses without having to poll the server for a reply.

This demo is secured using TLS 1.3, which is the most recent iteration of the Transport Layer Security (TLS) protocol, which supersedes TLS 1.2. It is designed with improved speed and performance as well as enhanced connection security. In 2018, CycloneSSL stack became one of the first commercial embedded TLS stacks to offer support for TLS 1.3. For more information about the SSL configuration of this demo, visit Qualys Inc SSL Labs.

The Automatic Certificate Management Environment (ACME) protocol is a communications protocol for automating interactions between certificate authorities and their users' web servers, allowing the automated deployment of public key infrastructure at very low cost. It was designed by the Internet Security Research Group (ISRG) for their Let's Encrypt service.

ACME & Let's Encrypt Architecture

Let's Encrypt certificate management workflow. (S = Signature, A = Authorized Key, LE = Let's Encrypt)
image credit: Let's Encrypt

How this demo is secured using Let's Encrypt & CycloneACME:

  1. Domain Validation: Let's Encrypt service identifies our demo using a public key. When our demo connected to the Let's Encrypt service for the first time, it generated a new keypair proving to the Let's Encrypt certificate authority that Oryx Embedded controls the domain under which our demo is hosted.
  2. Certificate Issuance and Revocation: Once we have generated a keypair, then we can easily communicate with Let's Encrypt service through CycloneACME for requesting, renewing and revocation of certificates. All API requests are signed with the authorized keypair generated in the previous step to securely communicate with Let's Encrypt service.
  3. Certificate Management: Once every two months, our demo sends a request to the Let's Encrypt service to renew our HTTPS server certificate. This process is completely automated thanks to CycloneACME.

Visit Let's Encrypt Docs for more information about this technology.