Guld – Basal Script Opbygning

Script opbygning

Start

Simple kommandoer for toggle relæ, eller On/Off

// Toggler relæ
Shelly.call("switch.toggle", {id:0})

// Sætter relæ til ON
Shelly.call("switch.set", {id:0, on:true})

// Sætter relæ til OFF
Shelly.call("switch.set", {id:0, on:false})

 →

// Intet i loggen

Shelly.Call med function for at får data tilbage, men shelly sriver kun de sidste 8 linjer, derfor skal vi bruge  print(JSON.stringify(res))

// Hente status på Switch
Shelly.call("switch.getstatus", {id:0}, function(res){
  print(res)
})


 →

  // Shelly skriver kun de sidste 8 linjer
  "aenergy": { "total": 0,
    "by_minute": [ 0, 0, 0 ],
    "minute_ts": 1780527540 },
  "ret_aenergy": { "total": 0,
    "by_minute": [ 0, 0, 0 ],
    "minute_ts": 1780527540 },
  "temperature": { "tC": 68.9, "tF": 156.1 }
 }

Med JSON.stringify

Nu kan vi se hvad der fortæller status på relæ. Det er “output”, som pt. er slukket.

// For at få alt data må vi bruge JSON. stringify
Shelly.call("switch.getstatus", {id:0}, function(res){
  print(JSON.stringify(res))
})


 →

{"id":0,"source":"loopback","output":false,"apower":0,"voltage":243.4,"freq":50,"current":0,
"aenergy":{"total":0,"by_minute":[0,0,0],"minute_ts":1780528200},
"ret_aenergy":{"total":0,"by_minute":[0,0,0],"minute_ts":1780528200},
"temperature":{"tC":68.6,"tF":155.5}}

Nu  kender vi Nøglen vi skal kigge på for at får status på relæ. 
Definere vi ved at bruge res.output.

// For at få alt data må vi bruge JSON

Shelly.call("switch.getstatus", {id:0}, function(res){
  print(res.output)
})


 →

// Fortæller relæ er slukket ved at angive false
false

Hvis man skal bruge res.output flere gange, eller hvis udtrykket havde været langt.
Kan det være en fordel at tilføje værdien til en variabel.

// For at få alt data må vi bruge JSON

Shelly.call("switch.getstatus", {id:0}, function(res){
  let status = res.output
  print(status)
})


 →

// Fortæller relæ er slukket ved at angive false
false

For at få noget til at ske baseret på denne staus skal vi bruge if/else



Shelly.call("switch.getstatus", {id:0}, function(res){
  let status = res.output
  print(status)
  if (status == true) {
    print("Er tændt, så slukker"),
    Shelly.call("switch.toggle", {id:0})
  } else {
    print("Er slukket, så tænder"),
    Shelly.call("switch.toggle", {id:0})
  }
  
})


 →

true
Er tændt, så slukker

Tilføje timer så det  auto køre i interval.
Pakket det tidligere ind i en function, så den nemt kan kaldes.
og tilføjet Timer.set, der køre funktion hvert 5 sek.

function tid() {
  Shelly.call("switch.getstatus", {id:0}, function(res){
      if (res.output == true) {
      print("Er tændt, så slukker"),
      Shelly.call("switch.toggle", {id:0})
    } else {
      print("Er slukket, så tænder"),
      Shelly.call("switch.toggle", {id:0})
    }
  });
}

//functionen er sat in her for at den skal køre med det samme når script starter
tid();


// Timer er sat ind og kalder functionen tid(), hvert 5 min
Timer.set(5000, true, function(){
  tid();
})

 →

Er slukket, så tænder
02:46:23
Er tændt, så slukker
02:46:26
Er slukket, så tænder
02:46:31
Er tændt, så slukker
02:46:36
Er slukket, så tænder