Bevor das eigentliche Script folgt muss ich erwähnen das es aus zwei besteht.
Das erste wird benötigt um die Szene zu erstellen und die ID auszugeben.
Natürlich könnte man dieses auch selbst erstellen, müsste dann aber im zweiten Script den Body entsprechend anpassen.
Zur Erklärung
1. Script: Erzeugt eine Szene im Bereich Instrumententafel (Dashboard) die in der Vergangenheit liegt und lediglich eine Push Nachricht beinhaltet.
Der Name kann Frei gewählt werden. Muss aber auch im 2. Script angegeben werden und ist somit auch über dieses Änderbar.
2. Script Verarbeitet eine aufgerufene Seite und gibt das gewünschte aus (in meinem Beispiel die Brightness eines Dimmers)
Dies wird dann in die Push übertragen, einen Moment gewartet und dann die Szene gestartet damit die Push kommt.
Die Wartezeit ist damit die Änderung erstmal ''ankommen'' kann, sonst kann es zu falschen Meldungen kommen.
Weiterer Hinweis, wie ihr dieses Script startet überlasse ich euch, ich mach es mit dem Aufruf über die Action ''When Output is ON'' vom Dimmer
und lasse es mit einem weiteren Script beenden, somit sendet der Dimmer bei jeder Änderung den Startbefehl und ich bekomme den aktuellen Wert per Push.
Das vorher beenden ist in dieser Methode nötig da es sonst nicht erneut ausgeführt wird (Vergleichbar mit dem Druck auf ''Save and Run'' und ''Stop'')
Nun folgen die beiden Script
// Author: SebMai
// Description: This script creates a scene for the message via shelly app (push notification)
// CONFIG Cloud
// IMPORTANT at the end the generated id will be printed, write it down, copy it or remember it!!!
let CLOUD = {
server: 'https://shelly-X-eu.shelly.cloud', //cloud server
auth_key: 'YOUR KEY', //cloud key
name: '123', //name for the scene
};
Shelly.call(
"http.request", {
method: "POST",
url: ''+CLOUD.server+'/scene/add',
headers: {
"Content-Type":"application/x-www-form-urlencoded"
},
body: 'auth_key='+CLOUD.auth_key+'&scene_script={"if":{"or":[{"and":[{"eq":[{"rr":"dt:dt"},"2022-05-01 15:00"],"_gui_type":"ot_cond"}]}]},"do":[{"notify":"push_notification","msg":"Mein Text geändert","_gui_type":"notification","_gui_function":"push_notification"}],"_run_on_ingest":true,"_enabled":true,"_meta":{"name":"'+CLOUD.name+'","room":"-1","image":"assets/predefined_images/room/room1.png"}}',
},
function (res) {
let id = JSON.parse(res.body).data.scene_id;
print (id);
},
null
);
Alles anzeigen
// Author: SebMai
// Description: This script queries the json and outputs the result in a message via shelly app (push notification)
//CONFIG Cloud
let CLOUD = {
server: 'https://shelly-X-eu.shelly.cloud', //cloud server
auth_key: 'YOUR KEY', //cloud key
id: '123456789', //scene id
name: '123', //name for the scene
before: 'Eingestellt sind', //text before the parsed
after: 'Prozent', //text after the parsed
};
//CONFIG URL
let url = 'http://IP/light/0?'; // the URL need to be adjusted / eg. for settings
Shelly.call("http.get", {url: url},
function (res) {
let parse = JSON.parse(res.body).brightness;
//change .brightness to the content you want Parse
Shelly.call(
"http.request", {
method: "POST",
url: ''+CLOUD.server+'/scene/edit',
headers: {
"Content-Type":"application/x-www-form-urlencoded"
},
body: 'auth_key='+CLOUD.auth_key+'&id='+CLOUD.id+'&scene_script={"if":{"or":[{"and":[{"eq":[{"rr":"dt:dt"},"2022-05-01 15:00"],"_gui_type":"ot_cond"}]}]},"do":[{"notify":"push_notification","msg":"'+CLOUD.before+'+'+str(parse)+'+'+CLOUD.after+'","_gui_type":"notification","_gui_function":"push_notification"}],"_run_on_ingest":true,"_enabled":true,"_meta":{"name":"'+CLOUD.name+'","room":"-1","image":"assets/predefined_images/room/room1.png"},"_id":"'+CLOUD.id+'"}',
},
null
);
},
);
function str(text) {
return JSON.stringify(text);
};
function startTimer() {
Timer.set(5*1000,false,function(){Shelly.call("http.get", {url: ''+CLOUD.server+'/scene/manual_run&auth_key='+CLOUD.auth_key+'&id='+CLOUD.id},);},null);
}
startTimer();
Alles anzeigen
Und zum Ende noch ein Bildchen wie es dann am Handy aussehen kann.
Screenshot_20220605-194454_One UI Home.jpg
Vielleicht kann es ja der ein oder andere gebrauchen, deshalb viel Spaß damit