Vielen Dank!
Ich komme eher aus der embedded Richtung.
Beiträge von BugSimpson
-
-
Und wenn ich in einer Schleife das ganze Abfragen will, kann man das so machen?
Code
Alles anzeigenfunction readTemperatureSensor(callback, ip_addr) { Shelly.call( "HTTP.GET", { url: "http://" + ip_addr +"/rpc/Temperature.GetStatus?id=100" }, function (result, error_code, error_message) { if (error_code !== 0) { callback(null, error_message); // Fehler an den Callback weitergeben } else { try { let jsonData = JSON.parse(result.body); callback(jsonData.tC, null); // Erfolg an den Callback weitergeben } catch (e) { callback(null, "JSON-Parsing-Fehler: " + e.message); // Parsing-Fehler } } } ); } function loop() { readTemperatureSensor(function (myTemp, error_message) { if (error_message) { print("Fehler: " + error_message); } else { print("Die Außentemperatur beträgt: " + myTemp + " °C"); } }, "192.168.178.70"); } Timer.set(10000,true, loop);
-
Alles klar, die Kommunikationj ist von Shelly zu Shelly aber nicht z.B. vom raspberry zu Shelly oder umgekehrt, richtig?
Von Shelly zu Shelly
-
Ja Temperatur bekomme ich ja vom Script an der Stelle : 20
Nur die Rückgabe zur Hauptfunktion funzt nicht..Die Rückgabe wird ja nur an die Callback Funktion übergeben und dann nicht weiter..
-
Ein einfaches Beispiel:
Codefunction ichBinEineFunktionMitRueckgabe() { let temp = 60; // Die Variable wird 60 zugewiesen return temp; } // Aufruf der Funktion: let wieIstTemp = ichBinEineFunktionMitRueckgabe(); print("Die Temperatur ist: " + wieIstTemp + " °C");
Um die Funktion aufzurufen musst du nach der function definition ein Aufruf schreiben.
let wieIstTemp = ichBinEineFunktionMitRueckgabe();
--------------
Shelly A mit dem AddOn + Temperaturfühler hat die IP 192.168.178.155
Der Shelly B hat die IP 192.168.178.150Auf Shelly B wird das Script Ausgeführt. Das Script Besteht aus einer Funktion -> function {...}. wie das einfache Beispiel Script.
Über die URL werden die Daten vom Shelly A am AddOn ausgelesen -> Rückgabe ist ein JSON Datei.
Aus der wird dann die Temperatur extrahiert.Die Funktion hat außerdem ein return Aufruf: Der gibt dir den Wert, in diesem Fall Temp als Zahl zurück. Wie das einfache Beispiel Script.
Wenn du nun auf Shelly B die Temperatur auf Shelly A abfragen willst musst du unter der function
den Aufruf ausführen.
let myTemp = readTemperaturSensor();
myTemp enthält nun den Temp Wert.
Das Script nochmal alles zusammen:Code
Alles anzeigenfunction readTemperaturSensor() { //print ("readTemperaturSensor..."); Shelly.call( "HTTP.GET", { url: "http://192.168.178.155/rpc/Temperature.GetStatus?id=100" }, // IP von Shelly mit AddOn function(result, error_code, error_message) { if (error_code !== 0) { print('Error'); } else { let jsonData = JSON.parse(result.body); let tempHome = jsonData.tC; //print ("Temp Home: " ,tempHome); return tempHome; // <--- RÜCKGABE <---- } }); } let myTemp = readTemperaturSensor(); // Funktion aufrufen mit Rückgabewert print("Die Zimmertemperatur ist: " + myTemp + " °C");
Irgendwas passt mit dem Rückgabewert nicht. Ich bekomme ein "undefined"..
Siehe Foto.
-
Mal anders gefragt, was soll denn das jetzt bezwecken? Oder geht es darum eine Aktion an einem anderen Shelly bei einer bestimmten Temperatur auszulösen? Das geht einfach mit einer Szene.
An einem Shelly ist das AddOn gesteckt. In anderen Räumen mit anderen Shellys möchte ich von diesem AddOn die Temperatur haben und danach halt interagieren.
**UPDATE**
Habe es gerade im Szenen Modus gefunden und eingestellt, mal schauen ob das funktioniert. Vielen Dank für den Hinweis! -
Hallo Forum,
ich bin gerade sehr neu in der Shelly Welt und habe direkt mal eine Frage.
An einem Shelly habe ich eine AddOn Erweiterung angeschlossen mit einem Temperatur Sensor.
In der App kann ich die Temperatur auch schon sehen.
Nun meine Frage: Da ich mehrere Shellys im selben Netzwerk habe und ich diese Temperatur auch an den anderen Shellys brauche und ich denke mal nicht für jeden Shelly einen AddOn mit Temperatursenso
benötige, kann man das sicherlich anhand von Scripten lösen oder?
Wie kann ich auf einem anderen Shelly der dieses AddOn nicht besitzt die Temperatur von dem Shelly auslesen der dieses AddOn besitzt?Grüße Jan.