i am tried use Google, but I can't find solution how I can read Shelly Add-on temperature sensors data to Shelly script. I have to read two sensors data and change switch if differences of these sensors is bigger than set value. Can someone help me how I can do this?
Add-on temperature sensors data to Shelly script
Die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Weder Shelly noch die jeweiligen Autoren oder Entwickler der Skripte übernehmen irgendeine Form der Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung dieser Skripte entstehen könnten. Bitte stellen Sie vor dem Einsatz sicher, dass Sie den Quellcode verstehen und sich der möglichen Auswirkungen bewusst sind. Die Skripte werden ohne Gewähr bereitgestellt und unterliegen keiner regelmäßigen Wartung oder offiziellen Unterstützung.
Hinweis für Entwickler
Wenn Sie eigene Skripte bereitstellen, achten Sie bitte darauf, eine klare Beschreibung, eventuelle Einschränkungen und Sicherheitsaspekte zu dokumentieren. Beachten Sie zudem, dass Nutzer Ihre Skripte grundsätzlich auf eigenes Risiko verwenden. Eine Haftung für Schäden ist ausgeschlossen, sofern diese nicht vorsätzlich oder grob fahrlässig verursacht wurden oder gesetzlich anderweitig geregelt ist.
-
-
You can get the temperature from add-on sensors like this:
Codefunction Loop(){ try{ var temp= Shelly.getComponentStatus('Temperature', 101).tC; //Temp ID, mostly 100 to 102 print(temp); }catch(e){print(e);} } Timer.set(2000,true,Loop);Here are some script examples that use the addon.
BeitragRE: Temperatur-Differenzregelung
NEUE VERSION: 25.09.2023 16:00
Hier jetzt das funktionierende Skript. Bitte mindesten FW 1.0.0 verwenden.
Danke an @De kat fur den Hinweis auf Shelly.getComponentStatus.
In der Config:
temp_diff = zugelassene Differez (z.B. deine 2K)
temp_min = minimale Innentemperatur(z.B. deine12°C)
id_inside = Id des Innentemperaturfühlers
id_outside = Id des Außentemperaturfühlers
relay = welches Relais soll schalten 0 oder 1
interval = Messen, Auswerten und Schalten alle x Sekunden
(Quelltext, 59 Zeilen)
ostfriese21. September 2023 um 20:57 BeitragRE: Klimaraumsteuerung Plus2PM mit Script
@1danny,
bitte schön, ich konnte das Script aber nicht wirklich testen, du solltest es also am besten direkt ausführlich testen:
In der Toolbox sind nur Funktionen die den Shelly.call() zuverlässiger machen, Call Debug Handling, Error Handling und umbenannte nativ Funktionen.
Update: (22.12.2023)
-Toolbox von v2.9 auf v3.2
(Verbesserung der Call Warteschlange um auch hängende Calls zu berücksichtigen)
(Quelltext, 94 Zeilen)
Apache License Version 2.0, January 2004, siehe Link für mehr Infos: …_[Deleted]_14. Dezember 2023 um 04:23 BeitragRE: Hot to get Input(100) values into a script
@Nordlicht_2023 Thats wrong.
You can always get your input values with print(Shelly.getComponentStatus('input',100));, No 'Shelly.call' is necessary for this.
@AJSG1969 Welcome,
What you are looking for are events, and normally your input 100 should also create events, so you can just use an event handler, and then filter for your input 100 events.
Put this line of code into a script and it will show you all the events within your Script Consol: Shelly.addEventHandler(function(data){print(data);});…_[Deleted]_13. Dezember 2023 um 21:14 -
Thank you very much about this advise. I can now read all data what I need, but I have still one problem. I have to pause code execution if one "else" is true. I tried put there a new timer, but I got message that I use too many timers. How I can do that at correct way? My code is below and there is text PAUSE where I want the pause. I want that relay not turn ON before than set time has gone out.
Code
Alles anzeigen//GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 //More information: https://www.gnu.org/licenses/gpl-3.0.txt //ABSOLUTELY NO WARRANTY!!! //Made by Ostfriese //############################## Config ############################ let Config = { temp_diff : 2, temp_min : 10, id_ulko : 100, id_kenno: 101, relay : 0, interval : 60 // 2 seconds is the minimum interval } //############################## Config end ############################ function watch() { try { temp_ulko = Shelly.getComponentStatus('Temperature', Config.id_ulko).tC; temp_kenno = Shelly.getComponentStatus('Temperature', Config.id_kenno).tC; print('Temp. ulko =',temp_ulko); print('Temp. kenno =',temp_kenno); //temp_ulko >= minimum if (temp_ulko >= Config.temp_min) { Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay) + '?turn=off'}); print('Relay(', Config.relay, ') off. ulko >= ', Config.temp_min); } else { delta = temp_ulko - temp_kenno; print('Delta =',delta); //delta more than or equal Config.temp_diff if (delta >= Config.temp_diff) { Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay) + '?turn=off'}); print('Relay(', Config.relay, ') off. Delta >= ', Config.temp_diff); } //delta less than Config.temp_diff else { //PAUSE Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay) + '?turn=on'}); print('Relay(', Config.relay, ') on. Delta < ', Config.temp_diff); } } print('\n') } catch (err) { Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay) + '?turn=off'}); print(err); } } function start() { // do a first shot watch(); // set watch timer to configured value Timer.set(Config.interval * 1000,true,watch); } // schedule script start for 1 second Timer.set(1000,false,start); -
First of all, what exactly is the goal of your project?
-
My English is not very good, but I try explain what is the project goal. I have air heat pump, which defrosting logic is very poor. It make several defrosting without any reason. I try make better logic with two temperature sensor. One sensor measure outside temperature and other one heat exchanger temperature. When difference between these sensors are two Celsius degree, defrosting start. This part work now pretty good, but I have still couple of problems.
When defrosting start, I want that code running stop 15-20 minutes. If it not stop, relay status can change when defrosting is running and I don't want it.
Other problem is defrosting fail safe mode. I want that defrosting happens once in six hours althought temperature sensors not get correct value.
Hopefully you understand what I mean. I have tried many way resolve this problem, but I can't done it yet.
-
Dieses Thema enthält 4 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.