Shelly til Shelly Standalone uden Wi-fi (men med Wi-fi)

Introduktion:

Selvom du befinder dig i et område uden Wi-Fi-dækning, er det faktisk muligt at få to eller flere Shelly-enheder til at integrere med hinanden baseret på Actions (webhooks) og range extender funktionen.
I dette eksempel vil vi bruge to Shelly Plus 1PM-enheder.
Den ene med range extender aktiveret kalder vi Master.
Den anden kalder vi Slave.

Note:

Da vi bruger enhederne uden internetforbindelse, er det ikke muligt at bruge Schedule funktionen.

*Update* Script Version (Kun på engelsk for nu)

If you just want a simple follow function where one or more relays (up to four) automatically mirror the state of a master relay.
this can now be done easily with a script.

Note:
This script only mirrors the ON/OFF status from one relay to others.
If you need two-way synchronization (where both relays follow each other),
you still need to follow the original guide below.

Script - Access Point Switch Sync (Click to expand)

Access Point Switch Sync script:

  • Detects all devices connected to the Shelly’s access point.
  • Sends the current switch state (on/off) to each connected client.
  • Automatically keeps all connected devices synchronized.
  • Supports up to 4 clients per access point

Tested with FW 1.7.1

Setup steps

  1. Enable Range extender mode on your Shelly device
    (Settings → Wi-Fi → Access Point → Enable)
  2. Upload the script under
    (Settings → Scripts → Add new script → Paste code → Save & Enable)
    Note: make sure to toggle “Run on startup”

  3. Connect other Shellys to this AP (they will act as clients).

    See how to add Script guide here.

Notes

  • Works for Switch components only (not Light).
  • Max 4 connected devices recommended.
  • Works only with channel ID:0 (can be adjustet in script settings)
/*
Automatically detects all devices connected to the access point
and synchronizes the switch state with them.
!!Script can handle max 4 connected devices!!
*/

try {
  // CONFIG
  let SWITCH_ID = 0; // which relay we follow
  let TARGET_ENDPOINT = "/rpc/Switch.Set?id=0&on="; // webhook path

  function sendToClients(state) {
    print("Fetching AP clients...");
    Shelly.call("Wifi.ListAPClients", {}, function(result, err) {
      if (err) {
        print("Error getting AP clients:", JSON.stringify(err));
        return;
      }

      let clients = result.ap_clients;
      if (!clients || clients.length === 0) {
        print("No clients connected to AP");
        return;
      }

      print("Found", clients.length, "clients");

      for (let i = 0; i < clients.length; i++) {
        let ip = clients[i].ip;
        if (!ip) continue;

        let url = "http://" + ip + TARGET_ENDPOINT + (state ? "true" : "false");
        print("-> Sending command to", ip, ":", url);

        Shelly.call("HTTP.GET", { url: url }, function(res, err) {
          if (err) {
            print("Error sending to", ip, ":", JSON.stringify(err));
          } else {
            print("Response from", ip, ":", JSON.stringify(res));
          }
        });
      }
    });
  }

  // Event listener
  Shelly.addEventHandler(function(event) {
    if (event.component === "switch:" + SWITCH_ID &&
        event.info && event.info.event === "toggle") {
      let newState = event.info.state; // true = on, false = off
      print("Switch", SWITCH_ID, "toggled. New state:", newState);
      sendToClients(newState);
    }
  });

  print("Follow script started. Waiting for toggle events...");
} catch (e) {
  print("Error in follow script:", e.message || e);
}

The originale guide fra webinterface starter her:

Trin 1: Opdater Firmwaren

Det er altid en god idé at opdatere firmwaren til den nyeste version.
For at gøre dette skal enhederne være tilsluttet et Wi-Fi-netværk med internetadgang.
Udfør dette trin for alle enheder.

1.
Log ind på enhedens access point og gå til den web interface ved at skrive 192.168.33.1 i en browser.

 

2.
Gå til Settings -> Wi-fi og Enable Wi-fi 1.
Vælg et Wi-fi netværk med internet forbindelse og tast password ind.
Save settings.

3.
Når den er forbundet til netværket
Gå til Settings -> Firmware.
søg efter og opdater til seneste stabile.

Trin 2: Opsæt Master. AP password og aktiver Range Extender

1.
Log ind på Master enhedens Wi-Fi network og tilgå web interfacet med adressen 192.168.33.1
Gå til Settings -> Access Point og giv det et password.
Save settings.

2.
Gå til Settings -> Range extender og enable range extender.
Save settings og reboot, når den spørg efter det.

Trin 3: Opsæt Slave. AP password og opret forbindelse til Master

1.
Log ind på Slave enhedens Wi-Fi network og tilgå web interfacet med adressen 192.168.33.1
Gå til Settings -> Access Point og giv det et password.
Save settings.


2.
Gå til Settings -> Wi-fi og Enable Wi-fi 1.
Vælg Master’ens Wi-fi netværk og skriv password.
Save settings.

3. OBS!!
Når en Shelly enhed forbinder til en anden Shelly’s access point, vil den ikke længere kunne tilgås med adressen 192.168.33.1, når du er forbundet direkte til dens wifi.
I stedet for skal der bruges  192.168.34.1

Trin 4: Se enheder der er forbundet til Range Extenderen

1.
Log ind på Master enhedens Wi-fi og tilgå dens web interface med  adressen 192.168.33.1

2.
Gå til Settings – Range extender.

3.
Find Slavens Ip adresse. 

Forklaring

Som du kan se, så er der to forbundne enheder, men vi har kun forbundet en enhed?

Når man slår range extender funktionen til på en enhed, så viser den sig selv som forbundet.

Kig efter MAC adressen for at finde den der er din slave.
Du kan så kopiere Slavens interne ip adresse og sætte den ind i et nyt browser vindue for at tilgå dens web interface.

Ud fra denne information, ved vi nu , hvilke ip adresser vi ska bruge til  Actions/webhook kommandoerne.
Master = 192.168.33.1
Slave = 192.168.33.3

Trin 5: Eksempel på at tænde flere Shelly'er sammen med actions

Der er mange måde du kan vælge at styre lyset på.
I det følgende eksempel, vil jeg vise, hvor simpelt det er er tænde flere shelly’er sammen ved hjælp af actions.
På denne måde vil den ene altid være tændt/slukket baseret på den anden enhed og omvendt.

Note: Dette eksempel kræver, man bruger afbryderen som kiptænding, så, hvis du har en alm. afbryder, så skal der en fjeder i.

1. Både Master og Slave skal sættes til Button-momentary input mode

Gå til Home -> Input -> Settings -> Input/Output settings.

 

  • Sæt Input mode til Button
  • Sæt Output type til Momentary Switch

2. Opret actions på Master enhed

Gå til Actions -> New Action – Select Output – Create action.

Opret to  actions.
When it’s ON then Turn Slave ON
When it’s OFF then Turn Slave OFF

Click here for at se alle HTTP kommandoer

Tænd Slave, når output på Master er Tændt

  • Giv den et navn
  • Execute when: Vælg “Switch toggled on”
  • Then do: klik på “+ Add URL” og tilføj http kommandoen for at tænde slave enheden.
    http://192.168.33.3/relay/0?turn=on

Sluk Slave, når output på Master er slukket

  • Giv den et navn.
  • Execute when: Vælg “Switch toggled off”
  • Then do: klik på “+ Add URL” og tilføj http kommandoen for at slukke slave enheden.
    http://192.168.33.3/relay/0?turn=off



3. Opret action på Slave enhed

Gå til Actions -> New Action – Select Output – Create action.

Opret to actions.
When it’s ON then Turn Master ON
When it’s OFF then Turn Master OFF

Click here for at se alle HTTP kommandoer

Tænd Slave, når output på Master er Tændt

  • Giv den et navn.
  • Execute when: Vælg “Switch toggled on”
  • Then do: Klik på “+ Add URL” og tilføj http kommandoen for at tænde Master enheden.
    http://192.168.33.1/relay/0?turn=on

Turn Master OFF, when output of Slave is OFF

  • Give it a Name.
  • Execute when: Vælg “Switch toggled off”
  • Then do: Klik på “+ Add URL” og tilføj http kommandoen for at tænde Master enheden.
    http://192.168.33.1/relay/0?turn=off

Trin 6: Du er Færdig

Meget nemt!