Shelly Schalter in HomeMatic integrieren

Puzzle
Lesedauer: 3 Minuten

Um einen Shelly per HomeMatic schalten zu können, benötigt man CUxD (40) 16-Kanal Universalsteuerung als Schalter.

Vorbereitung

CuX Gerät erstellen
CuX Gerät erstellen

Danach einmal in den Posteingang und das Gerät übernehmen.

Homematic - Posteingang
Homematic – Posteingang

Pro Shelly Kanal (Shelly 1(PM) -> 1 Kanal, Shelly 2.5PM -> 2 Kanäle) wird ein Kanal der Universalfernbedienung benötigt.
Die einzelnen Kanäle können in der Geräte Übersicht verschieden benannt werden und auch den einzelnen Räumen zugeordnet werden.

Geräte Einstellung

Als nächstes in die Geräte-Übersicht und das Gerät einstellen.

CuX Gerät bennen und Raum zuordnen
CuX Gerät bennen und Raum zuordnen

Per Klick auf Einstellen erreicht man die Einstellungen des Gerätes.

Parameter für den CuX Schalter anpassen
Parameter für den CuX Schalter anpassen

Einstellung für SWITCH|CMD_SHORT:

wget -q -O - 'http://192.168.2.31/relay/0?turn~3doff'

Einstellung für SWITCH|CMD_LONG:

wget -q -O - 'http://192.168.2.31/relay/0?turn~3don'

Hierbei ist zu beachten, das die IP-Adresse des Shelly’s angepasst wird.

Da das CuX Gerät als Schalter definiert ist, bleibt der Ein- und Aus Zustand hinterlegt. Da aber der Shelly auch am physischen Schalter/Taster oder per App geschaltet werden kann, bekommt die HomeMatic dies natürlich nicht mit. Dazu verhelfen wir uns einer Funktion, die in der Shelly Web-Oberfläche integriert ist: Actions.

Der Shelly übermittelt so beim Betätigen des physischen Schalters, als auch beim Schalten per App den richtigen Status an die HomeMatic.

Shelly Action Konfiguration

Dazu rufen wir die Web-Oberfläche des Shelly mit seiner IP Adresse im Browser auf.

Einstellungen des Shelly auf der Weboberfläche
Einstellungen des Shelly auf der Weboberfläche

Url to be hit when the button is switched ON:

http://192.168.2.20:8181/x.exe?Antwort=dom.GetObject("CUxD.CUX4000001:1.SET_STATE").State(1)

Hier bitte auch wieder die Adresse der HomeMatic anpassen.
Die ID (CUX4000001) des CuX ist die, die oben angelegt wurde.
State(1) besagt, das der Status auf wahr (true) gesetzt wird.

Url to be hit when the button is switched OFF:

http://192.168.2.20:8181/x.exe?Antwort=dom.GetObject("CUxD.CUX4000001:1.SET_STATE").State(0)

Hier auch wieder die Adresse der HomeMatic anpassen. Das State(0) am Ende besagt, das der Status auf falsch (false) gsetzt wird.

Mit diesen Daten können wir den Schalter nun von allen Stellen (HomeMatic, Shelly App/Cloud und physischer Schalter) aus- und einschalten.

Es kann vorkommen, dass der Shelly den Status in der HomeMatic manchmal nicht aktualisiert. Dies kann der Fall sein, wenn der Shelly seine Mitteilung senden möchte, die HomeMatic aber gerade “blockiert” ist und die Anfrage nicht bearbeitet.
Hier habe ich mir eines kleinen Programms beholfen, welches alle 30 Sekunden ausgeführt wird und so den Status aller Shelly’s abholt und den jeweiligen CuX Geräten zuweist. Es ist nicht notwendig, für jeden Shelly ein eigenes Programm ausführen zu lassen.

Hilfsprogramm zur Aktualisierung des Shelly in der HomeMatic

Damit dieses Programm funktioniert, benötigt man ein CuX Exec (28) Gerät.

CuX Exec Gerät erstellen
CuX Exec Gerät erstellen
Shelly Status Aktualisierung in der HomeMatic
Shelly Status Aktualisierung in der HomeMatic
! Statusaktualisierung von Shelly-Aktoren ###################
! Statusaktualisierung von Shelly-Aktor Schlafzimmer Schrankbeleuchtung
var url = "http://192.168.2.31/relay/0/status";
var cux_device = "CUxD.CUX4000001:1";
var cux_exec = "CUxD.CUX2801001:2";

dom.GetObject(""#cux_exec#".CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject(""#cux_exec#".CMD_QUERY_RET").State(1);
string Status = dom.GetObject(""#cux_exec#".CMD_RETS").State();
dom.GetObject(""#cux_exec#".CMD_SETS").State("0");  
if (Status.Contains("\"ison\":false")) {
  dom.GetObject(""#cux_device#".SET_STATE").State(0);
}
if (Status.Contains("\"ison\":true")) {
  dom.GetObject(""#cux_device#".SET_STATE").State(1);
}

Als Zeitsteuerung verwende ich die der HomeMatic.
Ausführung ganztägig/alle 30 Sekunden.

Hier bitte folgende Daten anpassen:

var url = "http://192.168.2.31/relay/0/status"; <- Adresse des Shelly
var cux_device = "CUxD.CUX4000001:1"; <- ID und Kanal des CuX Gerätes für den Shelly
var cux_exec = "CUxD.CUX2801001:2"; <- Das System-Exec Gerät.

Darauf achten, das hier der Kanal angepasst wird, wenn man mehrere Exec Geräte in anderen Skripten ausführen lässt.
Zum Beispiel:
Kanal 2: Aktualisierung der Shellys

Das Skript kann man nun mehrmals in das Programm kopieren und somit den Status von allen Shellys abholen lassen. Der Kanal des System Exec kann für alle Shellys verwendet werden. Da der Kanal nach jeder Abarbeitung wieder freigegeben wird, besteht hier auch keine Gefahr, das der Kanal “besetzt” ist und mit anderen Ausführungen kollidiert.

Wie hat Dir der Beitrag gefallen?
Bewertung: 5/5 - abgegebene Bewertungen: 3

23 Gedanken zu „Shelly Schalter in HomeMatic integrieren

  1. Thomas Marko Berkermann Antworten

    Hallo, wie würde denn das ganze mit einem Shelly Plus Plug S funktionieren? Also die Befehle, der Rest ist ja wahrscheinlich gleich

  2. Karl Antworten

    Servus , kann ich einen shelly 1 mit Schalter benutzen um einen
    HomeMatic Funk-Schaltaktor 1-fach zu kombinieren? Also Licht per shelly und per Homematic ein ausschalten ? Direkte Verknüpfung ist ja mit cuxd nicht möglich oder ?

    • Stephan Autor des BeitragsAntworten

      Hallo Karl,
      direkte Verbindungen gehen nur mit physischen Geräten. CuX sind virtuell und müssten über Programme geschaltet werden.

      Gruß,
      Stephan

  3. Fabian Antworten

    Sehr gute Anleitung – ich schaffe es aber nicht mein Shelly mit einem Taster zu steuern – nur über die Oberfläche der HM (Rasberry). Wie kann ich es verknüpfen?

    • Stephan Autor des BeitragsAntworten

      Hallo Fabian,
      Du kannst ein entsprechendes Skript in der Homematic anlegen, welches auf den Taster reagiert.

      Dann kannst Du den Shelly schalten.

      Gruß
      Stephan

        • Stephan Autor des BeitragsAntworten

          Hallo Karl,
          Man erstellt sich ein Skript, welches als Bedingung den CuX Eingang hat und vorher prüft, ob die Lampe ein oder aus ist.
          Dann wird entsprechend reagiert.

          Gruß,
          Stephan

  4. Michael Antworten

    Dies verstehe ich irgendwie nicht.

    “Darauf achten, das hier der Kanal angepasst wird, wenn man mehrere Exec Geräte in anderen Skripten ausführen lässt.
    Zum Beispiel:
    Kanal 2: Aktualisierung der Shellys”

    Habe 2 Schellys laufen, verstehe nicht wie ich die Exec Geräte Kanalmäßig zuordnen muss.
    Muß ich für jeden Schelly einen neuen CuXd Exec anlegen, oder kann ich die Untergeordneten geräte kanal einen Schelly zuordnen.

    Grüße Michael

    • Stephan Autor des BeitragsAntworten

      Hallo Michael,

      hier ist gemeint, das jedes Exec-Gerät und jeder Exec-Kanal nur einmalig verwendet wird, da sonst – sollte der Exec-Kanal doppelt belegt sein (durch in anderes Skript zum Beispiel) – die Abarbeitung nicht richtig funktioniert oder ggf. sogar abgebrochen wird.

      Heisst:
      1 Kanal – 1 Skript ODER
      1 Kanal – mehrere Skripts, die auch garantiert zu unterschiedlichen Zeiten laufen.

      Am Besten als immer 1 -1.

      Gruß,
      Stephan

  5. Hartmut Antworten

    Vielen Dank für die großartige Anleitung. Meine Shellys sind jetzt perfekt in der Raspberrymatic intergriert.

  6. Paul Merkelbach Antworten

    kann man diese Syntax

    wget -q -O – ‘http://192.168.2.31/relay/0?turn~3don’

    erweitern, wenn man für z.B. 60 Sekunden den Schalter einschalten will (und damit nicht generell in der Konfiguration den Schalter als Timer mit festgelegter Dauer) ?

    Gruß
    PM

    • Stephan Autor des BeitragsAntworten

      Hallo Paul,
      ja, das ist möglich. Folgende Syntax wäre hier für 60 Sekunden zu nutzen:

      wget -q -O – ‘http://192.168.2.31/relay/0?auto_off~3d60’

      Gruß,
      Stephan

  7. Paul Antworten

    Tolle Anleitung !!
    In der Vorbereitung sollte noch der Geräte-Posteingang nach dem Erzeugen des CUxD-Gerätes erwähnt werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert