[Modul] Shelly

in der Hoffnung, mit Nützlichem zu dienen, lege ich hier ein Skript, welches ein Shelly Mini Gen4 schaltet. Der Konfigurator für Gen4-Geräte geht ja noch nicht.

<?php
// Shelly Mini Gen4 configuration
$ip   = "10.10.22.55";
$user = ""; // optional
$pass = ""; // optional

// Variable IDs — replace with your actual IDs from Symcon
$varSwitch = 12527;  // Boolean variable for on/off
$varPower  = 38335;  // Float variable for watt consumption


// ---- If script triggered by variable (switch action) ----
if (isset($_IPS['VALUE'])) {
    $state = $_IPS['VALUE'];
    $url = "http://$ip/rpc/Switch.Set?id=0&on=" . ($state ? "true" : "false");
    if ($user != "") {
        $opts = ["http" => ["header" => "Authorization: Basic " . base64_encode("$user:$pass")]];
        $context = stream_context_create($opts);
        $result = file_get_contents($url, false, $context);
    } else {
        $result = file_get_contents($url);
    }
    IPS_LogMessage("Shelly Mini", "Switch set to " . ($state ? "ON" : "OFF") . " - Response: " . $result);
}

// ---- Always read current status and power ----
$url = "http://$ip/rpc/Switch.GetStatus?id=0";
if ($user != "") {
    $opts = ["http" => ["header" => "Authorization: Basic " . base64_encode("$user:$pass")]];
    $context = stream_context_create($opts);
    $response = file_get_contents($url, false, $context);
} else {
    $response = file_get_contents($url);
}

if ($response) {
    $data = json_decode($response, true);
    if (isset($data['output'])) {
        SetValue($varSwitch, $data['output']); // update switch state
    }
    if (isset($data['apower'])) {
        $power = $data['apower'];
        SetValue($varPower, $power);           // update watt consumption

        // 👉 Print consumption if run manually
        echo "Current Power Consumption: " . round($power, 2) . " W";
        IPS_LogMessage("Shelly Mini", "Power: " . round($power, 2) . " W");
    } else {
        echo "No power data available.";
    }
} else {
    echo "No response from Shelly device at $ip";
}
?>

Hier wird Gen4 wohl nie mehr erweitert werden :wink:
Warum nicht das neue Modul benutzen?

Bei mir funktioniert das neue Modul nicht, es werden keine Geräte eingelesen, aus irgendeinem Grund.

Hallo zusammen,

ich habe am Wochenende mein Netzwerk von Fritzbox auf Unifi umgestellt.
Ich habe jetzt Probleme mit der Integration der Shellys. Alle altern Shelly 1 Geräte haben sie problemlos auf neue WLAN Netz und den geänderten MQTT Server umstellen lassen.

Alle neuen Geräte sind auch ohne Probleme ins neue WLAN umgezogen und i der Dream Maschine sichtbar. Sie werden aber in Symcon nicht Shelly Konfigurator V2 gefunden.

Kennt jemand dieses Problem und kann mir auf die Sprünge helfen?

Vielen Dank und viele Grüße

Joerg

Hallo Joerg,

ich habe dieselbe Konstellation. Neuere Shellys werden gefunden, die älteren nicht. Du kannst in der UDM schauen ob MDNS aktiviert ist. Auch wenn die Shelly nicht gefunden werden kannst du sie manuell über Instanz hinzufügen aktivieren. Sie funktionieren trotzdem.

Viele Grüße

Gerd

Hallo,

meine shellys lassen sich über Symcon nicht schalten.

Shelly 1PM Mini Gen3 1.7.1
Shelly Plus2PM 1.7.1

Ich sehe im MQTT Explorer das werte gesendet werden, wird aber wohl von den Shellys ignoriert.
In symcon kann ich alle Werte sehen.

Versucht habe ich schon:
Instanzen + Konfigurator löschen und neu einbinden
komplett ausgeschaltet (Fi ausgelöst weil die alle verbaut sind :grinning_face_with_smiling_eyes: )
Symcon ist auf Debian installiert.
Die shelly config sollte eigentlich stimmen.

pls help me

Gruß Tom_

Port und Topic passen in IPS ?

Ich glaube das ist so weit ok

Ne, oben steht Licht-Kueche.

ja richtig, das habe ich umbenannt damit ich den shelly einfach wiederfinden kann.
hmmm… ist das vielecht der fehler? Ich dachte intern arbeitet symcon nur mit Ids?

Das ist der Fehler !

@Tom: ich hatte mir mal aufgeschrieben, dass „Generic status update over MQTT“ angeklickt werden muss (siehe Hardcopy 5045)

ja intern in IPS kannst Du umbenennen, Dein Screenshot zeigt aber den anderen Namen im Shelly Gerät. Für mich sieht es so aus, als wenn Du das im Shelly geändert hast. Den lasse ich immer original im Shelly und benenne es generell nach der Einbindung erst in IPS um. Da habe seit dem keine Probleme mehr (dank dieses Forums)

1 „Gefällt mir“

ok, ich habs gelöscht und so belassen wie der Konfigurator es gefunden hat.
Aber leider klappt es noch nicht.

das mqtt password habe ich auch noch geändert im Shelly und im Symcon.
da hatte ich im Pw ne “#” (Tasmota hat mir das sehr übel genommen), bei den shellys hats nichts gebracht.

umlaute entfernt

letzter stand.. schaltet nicht.

Sollten nicht MQTT Prefix, Client ID und MQTT Topic gleich sein?

Genau, alle diese drei Elemente müssten meiner Meinung nach gleich sein, im Shelly (Client ID, MQTT Prefix) und in IPSymcon (MQTT Topic). So funktioniert es bei mir

Vielleicht hilft dir das etwas weiter. Ist zwar ein anderes Gerät aber wenn die und der Port nicht stimmen, hast Du Probleme mit der Einrichtung. Damit hatte ich auch lange gekämpft.

2 Beiträge wurden in ein existierendes Thema verschoben: Shelly BLU

Es funktioniert ! :+1:

@rro das war der Fehler, eigentlich Logisch… Vielen lieben dank an alle die mich hier unterstützt haben.

Tom_

1 „Gefällt mir“