Shelly Plus 1 mit AddOn Temperaturfühler

Hallo,

leider wird bei mir der Shelly Plus 1 mit angeschlossenen AddOn mit Temperaturfühler als offline in der Homee App angezeigt. In der Shelly App ist er Online und zeigt die richtige Temperatur an.
Das Gerät initialisiert ewig in der Homee App und ist dann offline. Hab es schon mehrfach versucht hinzuzufügen.
Bis jetzt habe ich es nur 1x geschafft es in die Homee-App zu bekommen, jedoch war die Temperatur unrealistisch hoch und wurde nicht aktualisiert. Schalten lies sich der Shelly auch nicht

Hat jemand Ideen? Vom Support hab ich leider seit 3 Wochen auch keine Info bekommen

LG
Andi

Kontrolliere in der Shelly Oberfläche bitte den MQTT Broker. Wenn dort die ID:1883 eingetragen ist dann ändere bitte die ID zur IP:1883 ( homee IP ). Starte danach das Device neu.
VG

3 „Gefällt mir“

Hi,
Danke für den Tipp.
ID:1883 war schon so eingetragen.

Hab als username und pw die Homee Zugangsdaten eingegeben.
Leider ohne Erfolg.

LG

Username and Password frei lassen. Und die Home ID durch die IP ersetzen! Diese findest du ua in den Routereinstellungen.

2 „Gefällt mir“

Die ID löschen („homee-“ ist ein Teil der ID)
Da wo die ID Stand die IP Adresse deines homee, gefolgt von :1883 eingeben und speichern.
Danach Shelly neu starten!

Siehe auch hier:

2 „Gefällt mir“

Hallo,

Danke für die Infos, habe nun eure Vorschläge umgesetzt.
Homee und Shelly haben jetzt eine feste IP.
In den MQTT Einstellungen habe ich die ID durch die IP ersetzt mit hinten :1883. (192.xxx.x.x:1883)

Der Temperaturverlauf wird nun angezeigt und aktualisiert, jedoch ist das Gerät in der Homee-App offline und lässt sich dort nicht schalten.
Weiters wird mir die Temperatur von 23,8° (Shelly-App) in der Homee-App mit54,9° angezeigt.

LG
Andreas

Wenn die Temperatur aktualisiert wird, kann das Gerät eigentlich nicht offline (ausgegraut) sein.

Schau mal Bitte beim Plus 1 selbst und nicht beim Adon nach der Temperatur, ich vermute dass Dir die Temperatur des Plus1 angezeigt wird.

Edit: das Adon wird offiziell garnicht unterstützt, evtl. lässt sich der Plus1 deswegen nicht schalten.

1 „Gefällt mir“

Guten Morgen,
hab mir natürlich nicht vorher durchgelesen, dass das Addonn von Shelly nicht von Homee unterstützt wird.
Oder und das ist meine Frage, hat sich seit dem 10. April (letzter Eintrag) irgendetwas getan in diese Richtung. Vielleicht kann mir jemand mal auf die Sprünge helfen.
Wollte nur im Keller die Feuchtigkeit messen und ggf. die Ventilatoren anschmeissen wenn die Luftfeuchtigkeit zu hoch wird.
Danke für Eure Kommentare.
Grüße Michael

Das kannst du mit dem addon ja machen und das ganz ohne homee.
Dafür ein kleines Script auf dem Shelly schreiben und fertig.
Von homee wird das Addon noch nicht unterstützt.

3 „Gefällt mir“

Das Problem ist aus meiner Sicht, dass die Ventilatoren über Z-Wave über mein Homee gesteuert werden. Jetzt bin ich in der Tat überfragt wie ein Skript die Ventilatoren in der Homee Umgebung steuern soll.
HILFE :crazy_face:

per Webhook :wink:

1 „Gefällt mir“

So wie @Maddes geschrieben hat geht das problemlos.
Ich kann dir mal nen einfaches Skript dafür anlegen.

// Konfigurationsvariablen
let temperatureThreshold = 28; // Schwellenwert in °C
let urlToSendRequest = "http://192.xxx.xxx.69:1880/script"; // URL für den HTTP-Request

// Funktion zum Senden des HTTP-Requests
function sendHttpRequest(currentTemperature) {
   let fullUrl = urlToSendRequest + "?temperature=" + currentTemperature;
    Shelly.call("HTTP.GET", { url: fullUrl }, function (response, error_code, error_message) {
        if (error_code === 0) {
            console.log("Request erfolgreich gesendet:", response.code);
        } else {
           console.log("Fehler beim Senden des Requests:", error_message);
        }
    });
}

// Überwachung der Temperatur
Shelly.addStatusHandler(function (event) {
    if (event.id === 100 ) {
        let currentTemperature = event.delta.tC;
        console.log("Aktuelle Temperatur:"+currentTemperature+"°C");

        // Prüfen, ob der Schwellenwert überschritten wurde
        if (currentTemperature > temperatureThreshold) {
            console.log("Schwellenwert überschritten:", currentTemperature, "°C");
            sendHttpRequest(currentTemperature);
        }
    }
});

console.log("Skript gestartet, Schwellenwert:", temperatureThreshold, "°C");

hier mal für nen Temperatursenor mit der ID 100

3 „Gefällt mir“

Du bist ein Engel :slight_smile:
War schon total frustriert, dass das Addon in Homee nicht erkannt wird.
Ich werde das Skript mal ausprobieren und Dir dann berichten.
Tausend Dank
Grüße
Michael

1 „Gefällt mir“

Du musst nur nen Paar Sachen anpassen.
ID des Sensors und den Schwellwert für das Überschreiten sowie den korrekten Webhook.

1 „Gefällt mir“

Habe jetzt nochmal ein modifiziertes Script erstellt. Der von Homee erzeugte Webhook klappt wunderbar. Nur das Script in Shelly scheint nicht zu funktionieren.
Hat jemand vielleicht eine Idee woran das liegen könnte. Muss ich in den Einstellungen des Shelly plus 1 noch etwas ändern? Hier mal das Script:
// Konfigurierbare Variablen
let humidityThreshold = 40; // Schwellenwert für die Luftfeuchtigkeit in %
let webhookUrl = „https://192.168.179.55/api/v2/webhook_trigger?webhooks_key=OKVVRKIQLMHAVLDPIXSNENBECCXIBYWKNARVLOEFRUITPWIMVMORVFPJVFTVPWNJ&event=Keller“; // URL des Webhooks
let checkInterval = 60; // Intervall in Sekunden für die Messung

// Funktion zum Versenden des Webhooks
function sendWebhook(humidity) {
Shelly.call(
„HTTP.POST“,
{
url: webhookUrl,
body: JSON.stringify({ humidity: humidity }),
headers: { „Content-Type“: „application/json“ },
},
function (response, error_code, error_msg) {
if (error_code === 0) {
print("Webhook erfolgreich gesendet: ", response);
} else {
print("Fehler beim Senden des Webhooks: ", error_msg);
}
}
);
}

// Funktion zur Überwachung der Luftfeuchtigkeit
function checkHumidity() {
Shelly.call(
„http.get“,
{ url: „http://localhost/rpc/Sensor.GetStatus?id=0“ }, // Sensorstatus abrufen
function (result, error_code, error_msg) {
if (error_code === 0) {
let sensorData = JSON.parse(result.body);
if (sensorData.aHum && sensorData.aHum > humidityThreshold) {
print("Luftfeuchtigkeit überschreitet Schwellenwert: ", sensorData.aHum);
sendWebhook(sensorData.aHum);
} else {
print("Luftfeuchtigkeit im Normalbereich: ", sensorData.aHum);
}
} else {
print("Fehler beim Abrufen der Sensordaten: ", error_msg);
}
}
);
}

// Wiederholter Aufruf der Überwachungsfunktion
Timer.set(checkInterval * 1000, true, checkHumidity);

Codes Bitte in ein Code tag packen :wink:
Macht es
a: übersichtlicher
b: einfacher zu kopieren

Schau mal das du nur einen http aufruf im lokalen Netzwerk machst sowie den Webhook als GET ausführen.
Warum rufst du die Daten nicht intern ab sondern rufst diese über http Request ab?

// Konfigurierbare Variablen
let humidityThreshold = 40; // Schwellenwert für die Luftfeuchtigkeit in %
let webhookUrl = „https://192.168.179.55/api/v2/webhook_trigger?webhooks_key=OKVVRKIQLMHAVLDPIXSNENBECCXIBYWKNARVLOEFRUITPWIMVMORVFPJVFTVPWNJ&event=Keller“; // URL des Webhooks
let checkInterval = 60; // Intervall in Sekunden für die Messung

// Funktion zum Versenden des Webhooks
function sendWebhook(humidity) {
Shelly.call(
„HTTP.POST“,
{
url: webhookUrl,
body: JSON.stringify({ humidity: humidity }),
headers: { „Content-Type“: „application/json“ },
},
function (response, error_code, error_msg) {
if (error_code === 0) {
print("Webhook erfolgreich gesendet: ", response);
} else {
print("Fehler beim Senden des Webhooks: ", error_msg);
}
}
);
}

// Funktion zur Überwachung der Luftfeuchtigkeit
function checkHumidity() {
Shelly.call(
„http.get“,
{ url: „http://localhost/rpc/Sensor.GetStatus?id=0“ }, // Sensorstatus abrufen
function (result, error_code, error_msg) {
if (error_code === 0) {
let sensorData = JSON.parse(result.body);
if (sensorData.aHum && sensorData.aHum > humidityThreshold) {
print("Luftfeuchtigkeit überschreitet Schwellenwert: ", sensorData.aHum);
sendWebhook(sensorData.aHum);
} else {
print("Luftfeuchtigkeit im Normalbereich: ", sensorData.aHum);
}
} else {
print("Fehler beim Abrufen der Sensordaten: ", error_msg);
}
}
);
}

// Wiederholter Aufruf der Überwachungsfunktion
Timer.set(checkInterval * 1000, true, checkHumidity);

Sorry bin nicht so bewandert was das Thema Skripte hochladen betrifft. Seht es mir nach.
@ Micha: Steh bei Deiner Bemerkung auf dem Schlauch. Meinst Du mit intern ünber localhost ?

Du kannst wie in meinem Beispiel einfach auf die Events hören und auf den entsprechenden Sensor filtern.
Das bedarf dann keinen http Aufruf auf den localhost.

Denk bitte mal daran den Webhook als get zu senden und ohne https sondern http.
Deine Webhook url darf muss innerhalb von den Anführungszeichen stehen.
So geht das nicht bei dir wie in deinem letzten Code Beispiel.