Skip to content

FaceStream.AI

Documentation

Integrations

Face recognition with Loxone

Face recognition for the Loxone Intercom and Miniserver: the bell starts the recognition, the name lands on a virtual input. Step by step.

On this page

FaceStream.AI recognises the people at your Loxone Intercom or any other camera and and tells the Miniserver who is there. What follows is configured where everything else in a Loxone home is configured, in Loxone Config: a lighting scene for the family, a push message for a stranger, the door for the people you choose.

FaceStream.AI reports; the Miniserver decides.


How it fits together

  1. Somebody rings at the Intercom. The Miniserver calls FaceStream.AI's trigger address.
  2. FaceStream.AI looks at the Intercom's picture for a few seconds.
  3. It sends the name to a virtual text input on the Miniserver, or Unknown, and, for the people you chose, a pulse to a virtual input.
  4. Your configuration in Loxone Config does the rest.

Every step works on its own. Without step 1 the camera recognises continuously; without step 3 you only use the pulse; and any camera that delivers RTSP or MJPEG can take the Intercom's place.

What you need

FaceStream.AI Pro and up: the Loxone connection and recognition on request are part of Pro. With the Free edition, see Loxone with the Free edition
Loxone A Miniserver and Loxone Config
A camera The Loxone Intercom, or any camera with RTSP or MJPEG
A Loxone user A user of its own for FaceStream.AI, with a password
The network FaceStream.AI and the Miniserver reach each other by their local addresses

The examples use 192.168.1.20 for FaceStream.AI, 192.168.1.10 for the Miniserver and 192.168.1.52 for the Intercom.


Step 1: The Intercom as a camera

The Intercom does not announce itself to the camera search, so its address is typed in.

  1. In FaceStream.AI, Camera → Add camera → Enter an address instead.
  2. Stream URL http://192.168.1.52/mjpg/video.mjpg, and in Username and Password the sign-in that protects the Intercom's picture.
  3. When it recognises: On request only, the bell will start it in step 2.
  4. Name the camera Intercom and Save cameras.

The camera card of the Intercom: MJPEG address, username, a saved password, On request only, 720p

The Overview now shows the Intercom's picture. If it stays black, check the address and the sign-in in a browser: http://192.168.1.52/mjpg/video.mjpg asks for the same user and password.

Step 2: The bell starts the recognition

  1. In FaceStream.AI, open the Intercom's Trigger dialog and copy the Trigger URL:

    http://192.168.1.20:8100/trigger?camera=intercom&token=…
    

    The Trigger dialog of the Intercom: look for 5 seconds, 3 attempts per second, stop once recognised, and the trigger URL

  2. In Loxone Config, add a Virtual Output with the address http://192.168.1.20:8100.

  3. Below it, add a Virtual Output Command. As Command for ON, enter the rest of the trigger URL, starting with the slash: /trigger?camera=intercom&token=…. The HTTP method stays GET.

  4. Connect the command to the Bell output of the Door Controller block your Intercom is assigned to.

  5. Save the configuration to the Miniserver.

From now on, every ring starts a request: FaceStream.AI looks for five seconds, three times a second, and stops as soon as it has recognised somebody. The settings in the dialog change that for the Intercom.

To check the address without ringing, open it in a browser. It answers at once with {"status": "ok", …}; the recognition then runs in the background.

Step 3: Tell the Miniserver who is there

  1. In Loxone Config, add a Virtual Text Input called VTI_FrontDoor and save to the Miniserver.

  2. In FaceStream.AI, Notifications → Add connection → Loxone:

    Field Value
    Miniserver address 192.168.1.10, the local address, not a CloudDNS or Remote Connect address
    Text input VTI_FrontDoor, exactly as in Loxone Config
    User, Password The Loxone user for FaceStream.AI
    Message [[name]]

    A Loxone connection: Miniserver address, text input, user, password, and the name as the message

  3. Test. The text input now says FaceStream test.

  4. Add two rules, one for people it recognises, one for people it does not:

    Rule Event Cameras Then
    Who is at the door Visit starts Intercom the Loxone connection
    Someone we do not know Face without a match Intercom the Loxone connection
  5. Save connections and rules.

The second rule matters: at a camera on request, a stranger is not a Visit starts but a Face without a match, once the five seconds are up, see Recognition and requests. The text input then says Unknown. If nobody was in the picture at all, nothing is sent: the text keeps its old value, so reset it in Loxone Config if you show it somewhere.

Loxone can show a virtual text input in its app, so everybody in the house sees who is at the door, and the text can go into a push message from the Miniserver.

Step 4: React to particular people

For logic, the hallway light for the family, the door for the people you chose, a pulse on an ordinary virtual input is easier to work with in Loxone Config than a text.

  1. In Loxone Config, add a Virtual Input called VI_FamilyAtTheDoor.

  2. In FaceStream.AI, add a second Loxone connection with Text input VI_FamilyAtTheDoor and the Message Pulse. The field takes the name of any virtual input, and the Miniserver understands On, Off and Pulse for a digital one.

    A second Loxone connection that sends Pulse to the virtual input VI_FamilyAtTheDoor

  3. Add a rule Family at the door: event Visit starts, Who Selected people with the family ticked, the door cameras ticked, and Only when the liveness check passed. Then: the new connection.

    The rule Family at the door: Visit starts, one person selected, two cameras, only when the liveness check passed, then the pulse connection

  4. In Loxone Config, connect VI_FamilyAtTheDoor to whatever should happen.

One connection sends to one input. For a second group, the cleaner on Tuesdays, say, add another virtual input, another connection and another rule; a rule can limit itself to certain days and times with Between and On.

If the pulse opens the door

The Miniserver opens it, not FaceStream.AI, so the Miniserver should only do so on a pulse that deserves it. The rule above already does two of the three things that matter: it reacts to Visit starts only, never to a suspected spoof, and only when the liveness check passed. The third is the bell itself: with On request only, the Intercom looks only when somebody rang, and the face answers a question instead of being the only key.

The liveness check stops a photo held up to the camera on the off chance. It does not stop somebody who prepared. Whether a face may be the only key to your door is your decision. Rules that open a door says more.


Loxone with the Free edition

The Free edition has no Loxone connection, but it can send UDP, and the Miniserver listens to UDP. The camera recognises continuously, because requests are part of Pro.

  1. In Loxone Config, add a Virtual UDP Input with FaceStream.AI's address as the sender and a free port as the receiving port, for example 7000.
  2. In FaceStream.AI, Add connection → UDP: Host 192.168.1.10, Port 7000, Message [[name]]. A rule on Visit starts sends it.
  3. In Loxone Config's UDP monitor, the names arrive as they are recognised. Create a Virtual UDP Input Command from a name to get a pulse whenever that name arrives.

UDP is not acknowledged: whether the Miniserver received a message, FaceStream.AI cannot know, and Recent deliveries only says it was sent.


What FaceStream.AI sends

One HTTP request per message, over the local network:

GET http://192.168.1.10/dev/sps/io/VTI_FrontDoor/Amelia%20Hart
Authorization: Basic …

The value is encoded for the address, so names with spaces or accents arrive as they are written. Any placeholder works in the message, [[name]], [[source]] for the camera, [[known]], [[time]]; see Connections and rules. The Miniserver's answer is listed under Notifications → Recent deliveries.

The request uses plain HTTP with the user and password of the connection, which is why FaceStream.AI should have a Loxone user of its own and talk to the Miniserver only inside your network.


When it does not work

What you see What to check
401 Client Error: Unauthorized under Recent deliveries User or password of the Loxone connection
timed out or Connection refused The Miniserver address: the local IP address, reachable from the machine FaceStream.AI runs on
Delivered, but nothing changes in Loxone The name of the input must match Loxone Config exactly, and the configuration must be saved to the Miniserver. The Miniserver's answer under What was sent usually says which
The bell does not start a recognition Open the trigger URL in a browser. {"status": "ok"} means the Virtual Output's address or command is the problem; an error names what is wrong with the URL
Family members arrive as Unknown Better photos, ideally taken by the Intercom itself. See People and photos
The text input is never Unknown The rule on Face without a match is missing

Loxone is a trademark of Loxone Electronics GmbH. FaceStream.AI talks to the Miniserver through its documented web interface and is not affiliated with, certified or endorsed by Loxone.