Categories
Coding Home Automation Notes Server Thoughts Uncategorized

Openclaw – So richtig überzeugt es nicht

Openclaw. Grosser hype, aber so mega überzeugt hat es mich jetzt nicht. Und mit jedem zweiten Upgrade übrigens, ist er so “eingeschnappt”, dass man direkt die Konfiguration bearbeiten muss und ins Terminal abtauchen darf.

Nun, wofür ist er wirklich gut: Ich nutze Homeassistant um meinen Saugroboter (Roborock S7, liebevoll genannt: Rocki) zu steuern. Homeassistant (HASS) hatte vor einiger Zeit das Year of the Voice. Daraus entstanden ist das kleine weisse Gerät. Homeassistant Voice Preview. Die Integration von Rocki mit HASS ist relativ holprig! Sagen wir, auf einem Level, dass openclaw das sicher nicht konfigurieren könnte. Nun jedenfalls muss man zuerst die Räume aktivieren, und dann die Reinigung starten.

Nachdem ich openclaw am laufen habe, kann man relativ einfach einen Skill erstellen, mit dessen Hilfe Openclaw erfolgreich Rocki steuern kann. Es gelingt openclaw ausserdem, zuerst die Räume zu selektieren, und danach die Reinigung zu starten.

Für eine gelungene Integration mit hass voice preview bedarf es aber dem hass plugin: openclaw-homeassistant und einem mini-fix (siehe Grafik unten). Dann konfiguriert man die Stimmen über die Google API STT (welche ich irgendwie vor ewiger Zeit installiert hatte). Und man kann mittels: “Ok nabu, bitte saug die Küche und das Esszimmer” sehr zuverlässig die Reinigung starten.

Doch mei-oh-mei, ist das eine Architektur. Nabu => hass => google STT => openclaw => LLM => [1. openclaw tools, etc. => hass ] [2. response to hass about success] => google tts => nabu

Kurzer Einschub: Ähnlich, nur weniger klar konfiguriert ist es nur wenn ich meinen Signal channel verwende: Signal => openclaw => voxtral for stt => openclaw => [1. openclaw tools => hass] [2. message to signal] => tagged tts via openai => signal. Übrigens, diese Konfiguration ist aktuell nciht sehr zuverlässig. Neuerdings generiert openclaw wohl eine tagged message, um openclaw zu signalisieren, dass TTS verwendet werden soll: [[tts: dies ist die nachricht]]

  "tools": {
    "profile": "coding",
    "media": {
      "audio": {
        "enabled": true,
        "models": [
          {
            "provider": "mistral",
            "model": "voxtral-mini-2602"
          }
        ]
      }
    }
  },
  "messages": {
    "ackReactionScope": "group-mentions",
    "tts": {
      "auto": "tagged",
      "provider": "openai",
      "openai": {
        "apiKey": "sk-proj-lRxxxxxxxx",
        "model": "gpt-4o-mini-tts",
        "voice": "fable"
      }
    }
  },

Nun zum eigentlich lustigen, weshalb openclaw einfach nicht überzeugt. Es heisst ja immer, openclaw lerne, konfiguriere sich selbst usw, usw…: Mir ist aufgefallen, dass openclaw in slack immer mit einer audio nachricht antworte. Obwohl er nur antworten sollte, wenn ich anfänglich eine audio nachricht schicke. Also bitte, tomclaw merk dir das:

Neue session, neuer Verlauf:

(Funny, das slack transcript – die Nachricht ist aber 1 zu 1 der Text)

Nun, es sind die kleinen Dinge, aber wenn er quasi nicht mal das kann, hab ich nicht sehr viel Vertrauen darin, dass er das macht was ich ihm sage.

Nachtrag:

  • Hinzu kommt, standardmässig wird das API token für hass direkt in der TOOLS.md gespeichert und geht so bei jedem LLM request mit raus…, nicht sehr vertrauenserweckend. Ein versuch dies in eine .env-Datei zu verfrachten hat nur dazu geführt, dass er manchmal hass nicht erreichen kann. Je nach modell (sonnet-4.6) funktioniert es, mit dem günstigeren gemini-flash-3.1 eher nicht.
  • 5.4.2026: Es könnte sein, ich habe es falsch konfiguriert. Es scheint eine openclaw-integration zu geben: https://www.getopenclaw.ai/integrations/home-assistant. Wobei ich mit diesem Ansatz wahrscheinlich nicht nabu als openclaw voice input nutzen könnte…

Notizen:

Categories
Coding Home Automation Server

home assistant voice assistant and Roborock integration

TL;DR: roborock s7 and home assistant work quite well with voice assistant.

So today I wanted to try to find a replacement for home asssitant voice assistant. I successfully setup a voice assistant within home assistant. However, the performance of this voice assistant was not, what I was hoping for. My main scenario was to start my vacuum with home assistant.

Rocki and home assistant

So how do I do that…? Roborock S6 integration with home assistant was easy. However, in order to start room clean with one click, you have to create boolean helper variables for each and a script, that correlates these variables to a room id. Then, based on wich boolean is activated will activate the room clean:

Note here, for the inexperienced home assistant user, you CAN edit everything in code and not in the GUI.

sequence:
  - variables:
      room_configs:
        - name: living_room
          boolean: input_boolean.rocki_room_living_room
          id: 16
        - name: kitchen
          boolean: input_boolean.rocki_room_kitchen
          id: 17
        - name: storeroom
          boolean: input_boolean.rocki_room_storeroom
          id: 19
        - name: dining_room
          boolean: input_boolean.rocki_room_dining_room
          id: 20
        - name: foodstorage
          boolean: input_boolean.rocki_room_foodstorage
          id: 21
        - name: office
          boolean: input_boolean.rocki_room_office
          id: 23
        - name: hallway
          boolean: input_boolean.rocki_room_hallway
          id: 24
  - variables:
      selected_rooms: |-
        {% set ns = namespace(rooms=[]) %}
        {% for room in room_configs %}
          {% if is_state(room.boolean, 'on') %}
            {% set ns.rooms = ns.rooms + [room.id] %}
          {% endif %}
        {% endfor %}
        {{ ns.rooms }}         
  - data:
      command: app_segment_clean
      params:
        - segments: |
            {{selected_rooms}}
    target:
      entity_id: vacuum.rocki
    action: vacuum.send_command
alias: Selective Cleaning
description: ""

So, how does it work? I activate each boolean on my dashboard and then tell it to clean:

I was really happy here 🙂 And after a few trials, I can safely say, my flat has never been vacuumed so thoroughly!

Kudos to: https://www.youtube.com/watch?v=xe7xjnGqYiU

Voice Assistant

I’m a happy owner of the Voice Preview Edition (https://www.home-assistant.io/voice-pe/) Starting with the voice assistant was not THAT successful. I run home assistant in docker, that might make it a little more complicated.

The integrated home assistant voice assistant (did nothing, and I ended up deleting it)

I also tried the home assistant cloud, and I would have been happy on supporting them monthly, if it gave me a working voice assistant.

Next I tried Local-LLM via hacs. This seemed promising, but neither the llama.cpp on my server, nor an ollama instance on my PC worked properly.

What did work, was integrate it with google-gemini. I just used all google services.

And it worked:

BUT: In order now to start my cleaning i have to issue a voice command like this:

Ok nabu! Activate the hallway, storeroom, kitchen and dining room, then start cleaning

This command mimics how I would do it manually via the dashboard, activate booleans and then initiate cleaning.

Another problem: my nabu device doesn’t engage in a more nuanced dialogue, I cannot chain or anything. Like:

Ok nabu! What time is ti?
>>> It is …
When was the last cleaning?
>>> Last cleaning was …
Ok, so please clean kitchen and dining room again
>>> Starting cleaning…, do you want me to create an automation that rocki cleans the kitchen every Wednesday
No thanks.

OK, so the last part may be over the top, but still, that’s my goal.
So what was the hacker reaction to this, I figured, I might need to program everything from scratch and do it myself! 😅

Let’s see!