[Modul] "Home Assistant" (Integration über MQTT Statestream + REST)

Wo ich das bei dir gesehen habe, habe ich auch mal eine Aufgabe angelegt. Die kommt bei mir sauber als Button nach Symcon:
image

Und der funktioniert auch:

1 „Gefällt mir“

Schau mal im Konfigurator, ob der Button in der Liste der Domänen ist.

Nein, da sind die Button’s nicht drin.

Das ist die Ursache, warum sie nicht kommen. Einfach hinzufügen oder noch besser, den Konfigurator löschen und neu anlegen. Dann sind sie vollständig und auf dem neuesten Stand.

1 „Gefällt mir“

Das war es, danke.

20 Zeichen…

Es gibt einen neuen Stand:

1.0 build 34
neu:
- Neue Entität lawn_mower ergänzt
korrigiert:
- Vacuum-Steuerung korrigiert

Mangels Geräten bin ich hier beim Testen auf eure Mithilfe angewiesen.

1 „Gefällt mir“

Kommt bei beiden eine "Aktion"s Variable, beim vacuum funktioniert sie. Beim lawn_mower spinnt gerade die Verbindung :smiley: Teste ich dann bei Gelegenheit, wenn der wieder online ist.

Zum Sauger muss ich noch einmal nachfragen.
Kann ich dir da irgendetwas zuarbeiten?
In der Symcon Instanz habe ich in der Entität folgendes json:

{"software_version":"lewis+22.52.10+2023-10-03-e032ab4903c+Firmware-Build+4820","status":"None","bin_present":true,"bin_full":false,"friendly_name":"Uschi","supported_features":[[[[null]]],[[[null]]],[[[null]]],[[[null]]],[[[null]]],[[[null]]],[[[null]]]]}

Aktuell steuere ich den Sauger über dieses Action Script:

$token = '1234piep';

$varid = IPS_GetParent($_IPS['SELF']);

if ($_IPS['SENDER'] == 'Execute')
	{
    //echo IPS_GetParent($_IPS['SELF']);
    exit(0);
	}

if ($_IPS['SENDER'] == 'WebFront')

    {

        switch ($_IPS['VALUE']) 
        {

            case 0:
            // echo "Die Zahl ist 0\n";
            SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
            IPS_SetScriptTimer($_IPS['SELF'], 0);  // Timer deaktivieren
            break;

            case 1:
            // Roomba starten
            $befehl = 'start';
            IPS_SetScriptTimer($_IPS['SELF'], 5);  // Timer nochma auf 5 Sekunden
            break;

            case 2:
            // Roomba pausieren
            $befehl = 'pause';
            IPS_SetScriptTimer($_IPS['SELF'], 5);  // Timer nochma auf 5 Sekunden
            break;

            case 3:
            // Roomba fortfahren
            $befehl = 'start';
            IPS_SetScriptTimer($_IPS['SELF'], 5);  // Timer nochma auf 5 Sekunden
            break;

            case 4:
            // Roomba Stop
            $befehl = 'stop';
            IPS_SetScriptTimer($_IPS['SELF'], 5);  // Timer nochma auf 5 Sekunden
            break;

            case 5:
            // Roomba ins Dock zum Aufladen
            $befehl = 'return_to_base';
            IPS_SetScriptTimer($_IPS['SELF'], 5);  // Timer nochma auf 5 Sekunden
            break;
        }
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://homeassistant.local.IP:8123/api/services/vacuum/'.$befehl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer '.$token,
        'Content-Type: application/json',
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, '{"entity_id": "vacuum.uschi"}');

    curl_exec($ch);
    curl_close($ch);

    }

if ($_IPS['SENDER'] == 'TimerEvent')
	{
        SetValueInteger($varid, 0);
        IPS_SetScriptTimer($_IPS['SELF'], 0);  // Timer deaktivieren
    }

Somit funktionieren ja die Standard Befehle der Domäne Vacuum.

Gruß,
Loerdy

Die Attribute sehen nicht gut aus.

Zum Vergleich meine

{"fan_speed_list":["Silent","Standard","Medium","Turbo","Gentle","Auto"],"battery_level":100,"battery_icon":"mdi:battery-charging-100","fan_speed":"Turbo","status":"Charging","friendly_name":"roborock.vacuum.a10","supported_features":14204,"supported_features_list":["Vacuum feature: Locate","Vacuum feature: Map","Vacuum feature: Pause","Vacuum feature: Return Home","Vacuum feature: Send Command","Vacuum feature: State","Vacuum feature: Stop"]}

Schau mal bitte in HA unter Entwicklerwerkzeuge->Zustände, wie dort die Attribute aussehen. Dort haben sie ihren Ursprung

Dir fehlen jetzt noch die Variablen

Danke für die Rückmeldung.
So sieht das bei mir aus:

Wofür auch immer die 13084 bei supported Features steht …

Gruß,
loerdy

Das sieht ja erst mal gut aus.

Dann scheint etwas beim Anlegen der Instanz nicht geklappt zu haben :frowning:

Magst du mal im Konfigurator die „Erweiterte Debug-Ausgaben aktivieren“ und mir dann den Debug vom „Aktualisieren“ zukommen lassen. Vorher noch das Anzeigelimit im Debug auf z.B. 1000 hochsetzen :slight_smile:

Im Debug sollte die 13084 auftauchen

15.03.2026, 16:16:18 |   LogUpdatedEntities | Found: Testraum | roborock.vacuum.a10 | roborock.vacuum.a10 | Attr: {"fan_speed_list":["Silent","Standard","Medium","Turbo","Gentle","Auto"],"battery_level":93,"battery_icon":"mdi:battery-90","fan_speed":"Silent","status":"Charger disconnected","friendly_name":"roborock.vacuum.a10","supported_features":14204}

Bei dir ergibt das

8192 = FEATURE_START
4096 = FEATURE_STATE
512 = FEATURE_LOCATE
256 = FEATURE_SEND_COMMAND
16 = FEATURE_RETURN_HOME
8 = FEATURE_STOP
4 = FEATURE_PAUSE
Also: 13084 = 8192 + 4096 + 512 + 256 + 16 + 8 + 4

Genau das, was momentan fehlt.

Ist vorhanden:

15.03.2026, 16:34:51 |   LogUpdatedEntities | Found: Wohnzimmer | Uschi | Uschi | Attr: {"software_version":"lewis+22.52.10+2023-10-03-e032ab4903c+Firmware-Build+4820","status":"None","bin_present":true,"bin_full":false,"friendly_name":"Uschi","supported_features":13084}

ich habe das Update installiert und
die Instanz einmal gelöscht und neu angelegt. Jetzt habe ich das folgende json

{"software_version":"lewis+22.52.10+2023-10-03-e032ab4903c+Firmware-Build+4820","status":"None","bin_present":true,"bin_full":false,"friendly_name":"Uschi","supported_features":13084,"supported_features_list":["Vacuum feature: Pause","Vacuum feature: Stop","Vacuum feature: Return Home","Vacuum feature: Send Command","Vacuum feature: Locate","Vacuum feature: State","Vacuum feature: Start"]}

Und folgende Befehle sind vorhanden:

Das sieht doch schon mal gar nicht so schlecht aus :slight_smile:

Ich teste das morgen, mag die Königin jetzt nicht stören …

Danke,
Loerdy

1 „Gefällt mir“

Gestern war heute noch Morgen, oder wie war das noch? :smiley:

Ich habe getestet, funktioniert bestens!
Dein Modul bereichert Symcon um Einiges, da sicher viele eine HA Instanz am Laufen haben.

dankende Grüße,
Loerdy

Das freut mich. Wenn noch etwas seltsam daherkommt immer melden.:face_with_peeking_eye:

1 „Gefällt mir“

Guten Abend,

ich spiele gerade mit den helpern rum. Wenn ich einen Schalter oder einen Taster als Helper anlege wird der nicht in Symcon angezeigt, richtig?

Gruß,
loerdy

Ja, Helper sind mir und dem Modul bislang noch unbekannt :slight_smile:
Braucht man sie für eine Integration in Symcon?

Guten Morgen,

ich bin nicht sicher … :sweat_smile:

Ich habe einen Taster von Onvis, dieser ist mit dem Homekit Protokoll in IP-Symcon angebunden und wird mit Deinem Modul in Symcon bereitgestellt. Ich wollte über diesen Weg mit dem Taster Geräte in Symcon steuern, da ich den Taster nicht direkt in Symcon integriert bekomme. ( War leider ein Fehlkauf, obwohl dick auf der Verpackung das Zeichen für Thread prangt wird nur Homekit unterstützt).

Der Taster wird in Symcon zwar angezeigt, zeigt aber immer den letzten Zustand an:

Es gibt einfach / zweifach und Long Press.
Somit kann ich nicht auf die Events nicht auf „Ändern“ triggern sondern wollte auf das Event
„bei Aktualisierung“ auslösen und dann den Wert abfragen. Nun ist es leider so, das die Zustände zyklisch refresht werden und somit die Events auslösen, weil sich der Zeitstempel der Variablen ändert. Und da war dann meine Idee über die Helper Taster oder Schalter zwischenzuschalten und dann auf die Zustandsänderung reagieren zu können.

oder siehst Du eine andere Möglichkeit?

Danke,
Loerdy

@bumaas macht es nicht Sinn Variablen nur zu aktualisieren wenn sich auch der Wert ändert?

Viele Grüße
Stephan

Das würde das Problem mit dem Taster nicht lösen.
Auch jetzt kann ein Ereignis auf Änderung reagieren, womit wiederholte einlzene Tastendrücke aber nicht erkannt werden würden.
Wenn sich die Variable nur bei veränderten Werten aktualisiert, ist dass das gleiche in grün.

Ok, hab heute Pech beim Denken :joy: