// Variables used by Scriptable. // These must be at the very top of the file. Do not edit. // icon-color: teal; icon-glyph: images; const urlJeedom = `url direct du virtuel jeedom` let widget = await createWidget(urlJeedom) if (config.runsInWidget) { Script.setWidget(widget) } else { widget.presentSmall() } Script.complete() async function createWidget(urlJeedom) { let jsonMaison = await getDataJeedom(urlJeedom) let statusMica = jsonMaison['michael']['status'] let statusDateMica = jsonMaison['michael']['statusDate'] let statusTimeMica = jsonMaison['michael']['statusTime'] let statusJenny = jsonMaison['jennifer']['status'] let statusDateJenny = jsonMaison['jennifer']['statusDate'] let statusTimeJenny = jsonMaison['jennifer']['statusTime'] let statusMaison = jsonMaison['maison']['status'] let tempMaison = jsonMaison['maison']['temp'] let w = new ListWidget() w.setPadding(0, 0, 0, 0) //make a gradient let startColor = new Color("141414") let endColor = new Color("13233F") let gradient = new LinearGradient() gradient.colors = [startColor, endColor] gradient.locations = [0.0, 1] w.backgroundGradient = gradient w.backgroundColor = new Color("#ff5401") //Show app icon and title let symTitle = SFSymbol.named("line.horizontal.3.decrease.circle") let headerStack = w.addStack() let titleStackVerti = headerStack.addStack() titleStackVerti.layoutVertically() let titleStack = titleStackVerti.addStack() let appIconElement = titleStack.addImage(symTitle.image) appIconElement.imageSize = new Size(15, 15) appIconElement.tintColor = Color.orange() titleStack.addSpacer(3) let titleElement = titleStack.addText("Jeedom") titleElement.textColor = Color.white() titleElement.textOpacity = 0.7 titleElement.font = Font.mediumSystemFont(14) titleStack.addSpacer(20) let refreshStackVerti = headerStack.addStack() refreshStackVerti.layoutVertically() refreshStackVerti.addSpacer(2) let refreshStack = refreshStackVerti.addStack() let symFooter = SFSymbol.named("gobackward") let footerIcon = refreshStack.addImage(symFooter.image) footerIcon.imageSize = new Size(12, 12) footerIcon.tintColor = Color.gray() refreshStack.addSpacer(3) let dateFooter = new Date() let footerTitle = refreshStack.addText(dateFooter.getHours().toString().padStart(2, '0')+"h"+dateFooter.getMinutes().toString().padStart(2, '0')) footerTitle.textColor = Color.gray() footerTitle.font = Font.mediumSystemFont(12) w.addSpacer(15) let symMica if (statusMica == 1) { symMica = SFSymbol.named("checkmark") } else { symMica = SFSymbol.named("xmark") } let symJenny if (statusJenny == 1) { symJenny = SFSymbol.named("checkmark") } else { symJenny = SFSymbol.named("xmark") } let symStack = w.addStack() symStack.addSpacer(25) let wSymMica = symStack.addImage(symMica.image) wSymMica.imageSize = new Size(20, 20) if (statusMica == 1) { wSymMica.tintColor = Color.green() } else { wSymMica.tintColor = Color.red() } symStack.addSpacer(55) let wSymJenny = symStack.addImage(symJenny.image) wSymJenny.imageSize = new Size(20, 20) if (statusJenny == 1) { wSymJenny.tintColor = Color.green() } else { wSymJenny.tintColor = Color.red() } w.addSpacer(5) let namesStack = w.addStack() namesStack.addText("Michael") namesStack.addSpacer(10) namesStack.addText("Jennifer") let dateStack = w.addStack() dateStack.addSpacer(8) let dateMichael = dateStack.addText(statusDateMica) dateMichael.textColor = Color.white() dateMichael.textOpacity = 0.7 dateMichael.font = Font.mediumSystemFont(9) dateStack.addSpacer(26) let dateJennifer = dateStack.addText(statusDateJenny) dateJennifer.textColor = Color.white() dateJennifer.textOpacity = 0.7 dateJennifer.font = Font.mediumSystemFont(9) let timeStack = w.addStack() timeStack.addSpacer(15) let timeMichael = timeStack.addText(statusTimeMica) timeMichael.textColor = Color.white() timeMichael.textOpacity = 0.7 timeMichael.font = Font.mediumSystemFont(9) timeStack.addSpacer(43) let timeJennifer = timeStack.addText(statusTimeJenny) timeJennifer.textColor = Color.white() timeJennifer.textOpacity = 0.7 timeJennifer.font = Font.mediumSystemFont(9) w.addSpacer(10) let houseStack = w.addStack() houseStack.addSpacer(15) let houseSymStack = houseStack.addStack() houseSymStack.layoutVertically() let symHouse = SFSymbol.named("house") let wSymHouse = houseSymStack.addImage(symHouse.image) if (statusMaison == 1) { wSymHouse.tintColor = Color.red() } else { wSymHouse.tintColor = Color.green() } wSymHouse.imageSize = new Size(40, 40) houseStack.addSpacer(10) let houseTempStack = houseStack.addStack() houseTempStack.layoutVertically() houseTempStack.addSpacer(6) let houseTemp = houseTempStack.addText(tempMaison) houseTemp.font = Font.lightSystemFont(25) houseTemp.textColor = Color.orange() return w } async function getDataJeedom(url) { let reqJeedom = new Request(url) let resJeedom = await reqJeedom.loadString() return JSON.parse(resJeedom.replaceAll("'", "\"")) }