Philips Hue

Dieser Teil des Beispiels umfasst eine PUT-Anfrage an eine Philips Hue Bridge (Erforderliche TwinCAT-Version: 3.1.4024.10). Die REST-API der Bridge ermöglicht es dem TwinCAT-Benutzer, Philips Hue Geräte aus der SPS heraus zu steuern. Der Benutzer benötigt dazu eine Philips Hue Bridge, die in seinem Netzwerk verfügbar ist, und mindestens ein Gerät, das damit verbunden ist.

Im Grunde sendet der HTTP-Client, in diesem Fall TwinCAT, verschiedene Werte als JSON-Dokument an die Bridge (z. B. Sättigung, Helligkeit, Zustands- und Farbwert für eine Glühbirne). Die Bridge antwortet mit einem anderen JSON-Dokument, das zeigt, ob die Befehle erfolgreich waren.

Philips Hue 1:
Schema Philips Hue

Beim Setup-Prozess generiert die Philips Hue Bridge zufällig einen Benutzernamen für ein Gerät, das als HTTP-Client fungiert. Dieser Benutzername kann dann für die Kommunikation mit der Bridge verwendet werden.

Philips bietet hier ein Tutorial „Erste Schritte“, in dem erläutert wird, wie die Bridge in einem Netzwerk zu finden ist und wie eine Client-Anwendung implementiert wird: https://developers.meethue.com/develop/get-started-2/
Die API-Beschreibung ist auf derselben Website zu finden, hierfür ist eine Registrierung erforderlich.

Das folgende Beispiel implementiert zum einen eine einfache PUT-Anfrage und zum anderen eine toggelnde PUT-Anfrage, die für einen sogenannten „Blinkmodus“ verwendet wird. Dieser Modus veranlasst eine Philips Hue Go Lampe dazu, jedes Mal, wenn der Timer-Ausgang gesetzt wird, die Farbe zu wechseln (zwischen 0 und 65000).

PROGRAM MAIN
VAR
    // trigger command execution for Philips Hue samples
    bPutPhilipsHue : BOOL;

    fbHttpClientPhilips Hue        : FB_IotHttpClient :=(sHostName:='172.17.x.x',
                                     bKeepAlive:=TRUE, tConnectionTimeout:=T#10S);

    fbHttpPutPhilipsHue            : FB_TestHTTP_Put_PhilipsHue;

    bBlinkingMode                  : BOOL;
    fbTimer                        : TON:=(PT:=T#500MS);
    nColor                         : UINT;
END_VAR
//init client parameters at startup
IF NOT fbHttpClientPhilipsHue.bConfigured THEN
    fbHttpClientPhilipsHue.nHostPort:= 80;
    fbHttpClientPhilipsHue.stTLS.bNoServerCertCheck:= FALSE;
END_IF

IF fbHttpClientPhilipsHue.bConfigured THEN
    fbHttpPutPhilipsHue(bSend:=bPutPhilipsHue, fbClient:=fbHttpClientPhilipsHue, nColor:=nColor);
END_IF

IF bBlinkingMode THEN
    fbTimer(IN:=NOT fbTimer.Q);
    IF fbTimer.Q THEN
        nColor:=nColor+5000;
        IF nColor=65000 THEN
            nColor:=0;
        END_IF
        IF bPutPhilipsHue THEN
            bPutPhilipsHue:=FALSE;
        ELSE
            bPutPhilipsHue:=TRUE;
        END_IF
    END_IF
END_IF

fbHttpClientPhilipsHue.Execute();