Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [Idee] ioBroker Widgets auf iPhone mittels Scriptable App

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    501

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

[Idee] ioBroker Widgets auf iPhone mittels Scriptable App

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
scriptableappleioswidget
54 Beiträge 15 Kommentatoren 10.9k Aufrufe 30 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K kassmann

    @blackst225 Vielen Dank für deine Hilfe. Leider kommt bei mir, beim Aufruf von http://192.168.xxx.xx:8082/objects: „File not found: {}“. :disappointed_relieved:

    B Offline
    B Offline
    blackst225
    schrieb am zuletzt editiert von
    #31

    @kassmann

    geh mal bitte in deinen webAdapter und schaue welchen Port du da eingerichtet hast.
    und WICHTIG den Haken in dem Adapter auf Eingebautes "Simple-API" setzen!

    K 1 Antwort Letzte Antwort
    0
    • B blackst225

      @kassmann

      geh mal bitte in deinen webAdapter und schaue welchen Port du da eingerichtet hast.
      und WICHTIG den Haken in dem Adapter auf Eingebautes "Simple-API" setzen!

      K Offline
      K Offline
      kassmann
      schrieb am zuletzt editiert von
      #32

      @blackst225 am Haken der Simlpe-API hat es gelegen. Danach klappt es. Leider nutze ich noch iQontrol und eben da muss es zwingend deaktiviert sein. :disappointed_relieved: Mist, Zwickmühle.

      1 Antwort Letzte Antwort
      0
      • IdleBitI Offline
        IdleBitI Offline
        IdleBit
        schrieb am zuletzt editiert von IdleBit
        #33

        @kassmann Du kannst auch den neuen https://github.com/ioBroker/ioBroker.rest-api Adapter dafür nutzen ;)

        Edit:
        Hier einmal die angepasste getValue Function

        async function getValue(point) {
            try {
                const req = new Request(`${host}/v1/state/${point}/plain`)
                const value = await req.loadString()
                return value;
            } catch (err) {
                console.error(err)
                return "n/a"
            }
        }
        
        K 1 Antwort Letzte Antwort
        0
        • IdleBitI IdleBit

          @kassmann Du kannst auch den neuen https://github.com/ioBroker/ioBroker.rest-api Adapter dafür nutzen ;)

          Edit:
          Hier einmal die angepasste getValue Function

          async function getValue(point) {
              try {
                  const req = new Request(`${host}/v1/state/${point}/plain`)
                  const value = await req.loadString()
                  return value;
              } catch (err) {
                  console.error(err)
                  return "n/a"
              }
          }
          
          K Offline
          K Offline
          kassmann
          schrieb am zuletzt editiert von
          #34

          @idlebit Ich bin für alles offen :blush: . Nur sind meine Kenntnisse vom Programmieren, ähm nicht vorhanden :dizzy_face:

          Bei mir zieht es jetzt so aus.

          async function getValue(point) {
              try {
                  const req = new Request(`${192.168.178.xx:xxxx}/v1/state/${plenticore.0.devices.local.Pv_P}/plain`)
                  const value = await req.loadString()
                  return value;
              } catch (err) {
                  console.error(err)
                  return "n/a"
              }
          }
          
          

          Bleiben die "{" oder das "$" vor und nach meinen Einfügungen drin? Denn dann kommt eine Fehlermeldung: "2022-04-27 14:24:29: Error on line 3: SyntaxError: Unexpected number '.178'. Expected a closing '}' following an expression in template literal."

          Ohne die "{" oder das "$" kommt zwar keine Fehlermeldung, aber auch kein Werte. Wenn ich aber "http://192.168.178.xx:xxxx/v1/state/plenticore.0.devices.local.Pv_P/plain" im Browser eingebe, kommt der Wert.

          Sorry für die vielleicht blöde Frage... :grimacing:

          IdleBitI 1 Antwort Letzte Antwort
          0
          • K kassmann

            @idlebit Ich bin für alles offen :blush: . Nur sind meine Kenntnisse vom Programmieren, ähm nicht vorhanden :dizzy_face:

            Bei mir zieht es jetzt so aus.

            async function getValue(point) {
                try {
                    const req = new Request(`${192.168.178.xx:xxxx}/v1/state/${plenticore.0.devices.local.Pv_P}/plain`)
                    const value = await req.loadString()
                    return value;
                } catch (err) {
                    console.error(err)
                    return "n/a"
                }
            }
            
            

            Bleiben die "{" oder das "$" vor und nach meinen Einfügungen drin? Denn dann kommt eine Fehlermeldung: "2022-04-27 14:24:29: Error on line 3: SyntaxError: Unexpected number '.178'. Expected a closing '}' following an expression in template literal."

            Ohne die "{" oder das "$" kommt zwar keine Fehlermeldung, aber auch kein Werte. Wenn ich aber "http://192.168.178.xx:xxxx/v1/state/plenticore.0.devices.local.Pv_P/plain" im Browser eingebe, kommt der Wert.

            Sorry für die vielleicht blöde Frage... :grimacing:

            IdleBitI Offline
            IdleBitI Offline
            IdleBit
            schrieb am zuletzt editiert von
            #35

            @kassmann
            "host" und "point" sind Variablen!
            Du musst nur die Funktion die ich gepostet habe hier austauschen
            https://gist.github.com/hacki11/0a3bfbd3c5bc7d6ed460a43799687736
            und der Rest läuft dann wie von @blackst225 hier oben wie beschrieben.

            K 1 Antwort Letzte Antwort
            0
            • IdleBitI IdleBit

              @kassmann
              "host" und "point" sind Variablen!
              Du musst nur die Funktion die ich gepostet habe hier austauschen
              https://gist.github.com/hacki11/0a3bfbd3c5bc7d6ed460a43799687736
              und der Rest läuft dann wie von @blackst225 hier oben wie beschrieben.

              K Offline
              K Offline
              kassmann
              schrieb am zuletzt editiert von
              #36

              @idlebit Ah, jetzt habe ich es verstanden. :+1:

              IdleBitI 1 Antwort Letzte Antwort
              0
              • K kassmann

                @idlebit Ah, jetzt habe ich es verstanden. :+1:

                IdleBitI Offline
                IdleBitI Offline
                IdleBit
                schrieb am zuletzt editiert von
                #37

                Ich habe das gestern auch mal Probiert, aber nur ganz Basic.
                Geht erstaunlich gut :)

                80b8174e-b422-4c2a-a6e0-62c0ee48f95f-image.png

                K 1 Antwort Letzte Antwort
                1
                • IdleBitI IdleBit

                  Ich habe das gestern auch mal Probiert, aber nur ganz Basic.
                  Geht erstaunlich gut :)

                  80b8174e-b422-4c2a-a6e0-62c0ee48f95f-image.png

                  K Offline
                  K Offline
                  kassmann
                  schrieb am zuletzt editiert von
                  #38

                  @idlebit sieht auf jeden Fall besser aus als meins :confused: C6F330DD-5B3A-4829-940C-375724A3DB34.jpeg
                  Bekomme ich die Nachkommastellen noch gekürzt?

                  1 Antwort Letzte Antwort
                  0
                  • IdleBitI Offline
                    IdleBitI Offline
                    IdleBit
                    schrieb am zuletzt editiert von
                    #39

                    @kassmann Ja mit z.B. toFixed() kann man die nachkommerstellen begrenzen.https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

                    Sonst zeig mal deinen Code.

                    K 1 Antwort Letzte Antwort
                    0
                    • IdleBitI IdleBit

                      @kassmann Ja mit z.B. toFixed() kann man die nachkommerstellen begrenzen.https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

                      Sonst zeig mal deinen Code.

                      K Offline
                      K Offline
                      kassmann
                      schrieb am zuletzt editiert von
                      #40

                      @idlebit

                      let host = args.widgetParameter;
                      if (!host)
                        host = "http://xxxxxx"
                      
                      console.log(host)
                      
                      
                      let widget = await createWidget()
                      Script.setWidget(widget)
                      widget.presentSmall()
                      Script.complete()
                      
                      async function createWidget() {
                      
                          const list = new  ListWidget()
                      
                          try {
                              const line1 = list.addText(await getValue("plenticore.0.devices.local.Pv_P") + " W")
                              line1.font = Font.boldSystemFont(17)
                              line1.textColor = Color.green()
                          
                              const line2 = list.addText(await getValue("plenticore.0.devices.local.battery.SoC") + " %")
                              line2.font = Font.boldSystemFont(17)
                              line2.textColor = Color.orange()
                      
                              return list
                      
                          } catch(err) {
                              const errorList = new ListWidget()
                              errorList.addText(err)
                              return errorList
                          }
                      }
                      
                      async function getValue(point) {
                          try {
                              const req = new Request(`${host}/v1/state/${point}/plain`)
                              const value = await req.loadString()
                              return value;
                          } catch (err) {
                              console.error(err)
                              return "n/a"
                          }
                      }
                      
                      
                      IdleBitI 1 Antwort Letzte Antwort
                      0
                      • K kassmann

                        @idlebit

                        let host = args.widgetParameter;
                        if (!host)
                          host = "http://xxxxxx"
                        
                        console.log(host)
                        
                        
                        let widget = await createWidget()
                        Script.setWidget(widget)
                        widget.presentSmall()
                        Script.complete()
                        
                        async function createWidget() {
                        
                            const list = new  ListWidget()
                        
                            try {
                                const line1 = list.addText(await getValue("plenticore.0.devices.local.Pv_P") + " W")
                                line1.font = Font.boldSystemFont(17)
                                line1.textColor = Color.green()
                            
                                const line2 = list.addText(await getValue("plenticore.0.devices.local.battery.SoC") + " %")
                                line2.font = Font.boldSystemFont(17)
                                line2.textColor = Color.orange()
                        
                                return list
                        
                            } catch(err) {
                                const errorList = new ListWidget()
                                errorList.addText(err)
                                return errorList
                            }
                        }
                        
                        async function getValue(point) {
                            try {
                                const req = new Request(`${host}/v1/state/${point}/plain`)
                                const value = await req.loadString()
                                return value;
                            } catch (err) {
                                console.error(err)
                                return "n/a"
                            }
                        }
                        
                        
                        IdleBitI Offline
                        IdleBitI Offline
                        IdleBit
                        schrieb am zuletzt editiert von IdleBit
                        #41

                        So ist in Zeile 18 der Wert auf 2 Stellen gekürzt, aber nicht gerundet.

                        let host = args.widgetParameter;
                        if (!host)
                          host = "http://xxxxxx"
                         
                        console.log(host)
                         
                         
                        let widget = await createWidget()
                        Script.setWidget(widget)
                        widget.presentSmall()
                        Script.complete()
                         
                        async function createWidget() {
                         
                            const list = new  ListWidget()
                         
                            try {
                                const line1 = list.addText(Number(await getValue("plenticore.0.devices.local.Pv_P")).toFixed(2)+ " W")
                                line1.font = Font.boldSystemFont(17)
                                line1.textColor = Color.green()
                            
                                const line2 = list.addText(await getValue("plenticore.0.devices.local.battery.SoC") + " %")
                                line2.font = Font.boldSystemFont(17)
                                line2.textColor = Color.orange()
                         
                                return list
                         
                            } catch(err) {
                                const errorList = new ListWidget()
                                errorList.addText(err)
                                return errorList
                            }
                        }
                         
                        async function getValue(point) {
                            try {
                                const req = new Request(`${host}/v1/state/${point}/plain`)
                                const value = await req.loadString()
                                return value;
                            } catch (err) {
                                console.error(err)
                                return "n/a"
                            }
                        }
                        

                        Gerundet würde die Zeile so ausgehen:

                        const line1 = list.addText(Math.round(Number(await getValue("plenticore.0.devices.local.Pv_P")) * 100) / 100 + " W")
                        
                        K 1 Antwort Letzte Antwort
                        0
                        • IdleBitI IdleBit

                          So ist in Zeile 18 der Wert auf 2 Stellen gekürzt, aber nicht gerundet.

                          let host = args.widgetParameter;
                          if (!host)
                            host = "http://xxxxxx"
                           
                          console.log(host)
                           
                           
                          let widget = await createWidget()
                          Script.setWidget(widget)
                          widget.presentSmall()
                          Script.complete()
                           
                          async function createWidget() {
                           
                              const list = new  ListWidget()
                           
                              try {
                                  const line1 = list.addText(Number(await getValue("plenticore.0.devices.local.Pv_P")).toFixed(2)+ " W")
                                  line1.font = Font.boldSystemFont(17)
                                  line1.textColor = Color.green()
                              
                                  const line2 = list.addText(await getValue("plenticore.0.devices.local.battery.SoC") + " %")
                                  line2.font = Font.boldSystemFont(17)
                                  line2.textColor = Color.orange()
                           
                                  return list
                           
                              } catch(err) {
                                  const errorList = new ListWidget()
                                  errorList.addText(err)
                                  return errorList
                              }
                          }
                           
                          async function getValue(point) {
                              try {
                                  const req = new Request(`${host}/v1/state/${point}/plain`)
                                  const value = await req.loadString()
                                  return value;
                              } catch (err) {
                                  console.error(err)
                                  return "n/a"
                              }
                          }
                          

                          Gerundet würde die Zeile so ausgehen:

                          const line1 = list.addText(Math.round(Number(await getValue("plenticore.0.devices.local.Pv_P")) * 100) / 100 + " W")
                          
                          K Offline
                          K Offline
                          kassmann
                          schrieb am zuletzt editiert von
                          #42

                          @idlebit ungerundet ist völlig ausreichend, super vielen Dank.

                          Kannst du eventuell deinen Code auch posten? Würde da gern was kombinieren. :grin:

                          IdleBitI 1 Antwort Letzte Antwort
                          0
                          • K kassmann

                            @idlebit ungerundet ist völlig ausreichend, super vielen Dank.

                            Kannst du eventuell deinen Code auch posten? Würde da gern was kombinieren. :grin:

                            IdleBitI Offline
                            IdleBitI Offline
                            IdleBit
                            schrieb am zuletzt editiert von
                            #43

                            @kassmann Ja kann ich, ist aber nur so eben schnell hingeschmissen der Code

                            let host = args.widgetParameter;
                            if (!host)
                                host = "http://192.168.0.203:8093"
                            
                            let widget = await createWidget()
                            Script.setWidget(widget)
                            widget.presentSmall()
                            Script.complete()
                            
                            
                            async function createWidget() {
                                // let g = new LinearGradient();
                                // g.colors = [Color.red(), Color.red(), Color.blue(), Color.blue()];
                                // g.locations = [0, 0.5, 0.5, 1];
                            
                                const widget = new ListWidget();
                                //list.backgroundGradient = g;
                            
                                const nextRefresh = Date.now() + (1000 * 30) // add 30 second to now
                            
                                widget.refreshAfterDate = new Date(nextRefresh)
                            
                                try {
                                    const solarHeader = widget.addText("Solar Strom");
                                    solarHeader.font = Font.boldSystemFont(12);
                                    solarHeader.centerAlignText();
                            
                                    const solar = widget.addText(`${await getValue("solax.0.data.acpower")}W | ${Number(await getValue("sourceanalytix.0.solax__0__data__yieldtotal.currentYear.consumed.01_currentDay")).toFixed(1)}kWh | ${await getValue("sourceanalytix.0.solax__0__data__yieldtotal.currentYear.costs.01_currentDay")}€`);
                                    solar.font = Font.boldSystemFont(16);
                                    solar.centerAlignText();
                            
                                    widget.addSpacer();
                            
                                    const netzHeader = widget.addText("Netz Strom");
                                    netzHeader.font = Font.boldSystemFont(12);
                                    netzHeader.centerAlignText();
                            
                                    const netz = widget.addText(`${await getValue("sonoff.0.SmartMeter.LK13BE_current")}W | ${Number(await getValue("sourceanalytix.0.sonoff__0__SmartMeter__LK13BE_total.currentYear.consumed.01_currentDay")).toFixed(1)}kWh | ${await getValue("sourceanalytix.0.sonoff__0__SmartMeter__LK13BE_total.currentYear.costs.01_currentDay")}€`);
                                    netz.font = Font.boldSystemFont(16);
                                    netz.centerAlignText();
                            
                                    widget.addSpacer();
                            
                                    const houseHeader = widget.addText("Haus Strom");
                                    houseHeader.font = Font.boldSystemFont(12);
                                    houseHeader.centerAlignText();
                            
                                    const house = widget.addText(`${await getValue("0_userdata.0.Energy.CurrentHouseEnergyConsumption")}W | ${await getValue("0_userdata.0.Energy.TotalHouseEnergyToday")}kWh | ${await getValue("0_userdata.0.Energy.EnergyAutakie")}%`);
                                    house.font = Font.boldSystemFont(16);
                                    house.centerAlignText();
                            
                                    widget.addSpacer();
                            
                                    const description = widget.addText(`Stand: ${new Date().toLocaleTimeString()} Uhr`);
                                    description.centerAlignText();
                                    description.font = Font.mediumSystemFont(9);
                            
                                    return widget;
                            
                                } catch (err) {
                                    const errorList = new ListWidget();
                                    errorList.addText(err);
                                    return errorList;
                                }
                            }
                            
                            async function getValue(point) {
                                try {
                                    const req = new Request(`${host}/v1/state/${point}/plain`)
                                    const value = await req.loadString()
                                    return value;
                                } catch (err) {
                                    console.error(err)
                                    return "n/a"
                                }
                            }
                            
                            K 1 Antwort Letzte Antwort
                            0
                            • IdleBitI IdleBit

                              @kassmann Ja kann ich, ist aber nur so eben schnell hingeschmissen der Code

                              let host = args.widgetParameter;
                              if (!host)
                                  host = "http://192.168.0.203:8093"
                              
                              let widget = await createWidget()
                              Script.setWidget(widget)
                              widget.presentSmall()
                              Script.complete()
                              
                              
                              async function createWidget() {
                                  // let g = new LinearGradient();
                                  // g.colors = [Color.red(), Color.red(), Color.blue(), Color.blue()];
                                  // g.locations = [0, 0.5, 0.5, 1];
                              
                                  const widget = new ListWidget();
                                  //list.backgroundGradient = g;
                              
                                  const nextRefresh = Date.now() + (1000 * 30) // add 30 second to now
                              
                                  widget.refreshAfterDate = new Date(nextRefresh)
                              
                                  try {
                                      const solarHeader = widget.addText("Solar Strom");
                                      solarHeader.font = Font.boldSystemFont(12);
                                      solarHeader.centerAlignText();
                              
                                      const solar = widget.addText(`${await getValue("solax.0.data.acpower")}W | ${Number(await getValue("sourceanalytix.0.solax__0__data__yieldtotal.currentYear.consumed.01_currentDay")).toFixed(1)}kWh | ${await getValue("sourceanalytix.0.solax__0__data__yieldtotal.currentYear.costs.01_currentDay")}€`);
                                      solar.font = Font.boldSystemFont(16);
                                      solar.centerAlignText();
                              
                                      widget.addSpacer();
                              
                                      const netzHeader = widget.addText("Netz Strom");
                                      netzHeader.font = Font.boldSystemFont(12);
                                      netzHeader.centerAlignText();
                              
                                      const netz = widget.addText(`${await getValue("sonoff.0.SmartMeter.LK13BE_current")}W | ${Number(await getValue("sourceanalytix.0.sonoff__0__SmartMeter__LK13BE_total.currentYear.consumed.01_currentDay")).toFixed(1)}kWh | ${await getValue("sourceanalytix.0.sonoff__0__SmartMeter__LK13BE_total.currentYear.costs.01_currentDay")}€`);
                                      netz.font = Font.boldSystemFont(16);
                                      netz.centerAlignText();
                              
                                      widget.addSpacer();
                              
                                      const houseHeader = widget.addText("Haus Strom");
                                      houseHeader.font = Font.boldSystemFont(12);
                                      houseHeader.centerAlignText();
                              
                                      const house = widget.addText(`${await getValue("0_userdata.0.Energy.CurrentHouseEnergyConsumption")}W | ${await getValue("0_userdata.0.Energy.TotalHouseEnergyToday")}kWh | ${await getValue("0_userdata.0.Energy.EnergyAutakie")}%`);
                                      house.font = Font.boldSystemFont(16);
                                      house.centerAlignText();
                              
                                      widget.addSpacer();
                              
                                      const description = widget.addText(`Stand: ${new Date().toLocaleTimeString()} Uhr`);
                                      description.centerAlignText();
                                      description.font = Font.mediumSystemFont(9);
                              
                                      return widget;
                              
                                  } catch (err) {
                                      const errorList = new ListWidget();
                                      errorList.addText(err);
                                      return errorList;
                                  }
                              }
                              
                              async function getValue(point) {
                                  try {
                                      const req = new Request(`${host}/v1/state/${point}/plain`)
                                      const value = await req.loadString()
                                      return value;
                                  } catch (err) {
                                      console.error(err)
                                      return "n/a"
                                  }
                              }
                              
                              K Offline
                              K Offline
                              kassmann
                              schrieb am zuletzt editiert von
                              #44

                              @idlebit Kannst du mir nochmal helfen, ich hoffe, dass letzte mal :disappointed_relieved:. Hier mal ein kurzer Auszug, ich hoffe der reicht.

                              widget.refreshAfterDate = new Date(nextRefresh)
                               
                                  try {
                                      const solarHeader = widget.addText("Solar Strom");
                                      solarHeader.font = Font.boldSystemFont(12);
                                      solarHeader.centerAlignText();
                               
                                      const solar = widget.addText(`${await getValue("plenticore.0.devices.local.Pv_P")).toFixed(2)}W | 
                                      ${Number(await getValue("plenticore.0.scb.statistic.EnergyFlow.EnergyHomePvDay")).toFixed(1)}kWh`);
                                      solar.font = Font.boldSystemFont(16);
                                      solar.centerAlignText();
                              

                              In Zeile 8 wird die Kürzung der Kommastelle nicht ausgeführt und es kommt der Fehler:
                              SyntaxError: Unexpected token ')'. Expected a closing '}' following an expression in template literal.

                              Zeile 9 klappt.

                              Schon mal Danke

                              IdleBitI 1 Antwort Letzte Antwort
                              0
                              • K kassmann

                                @idlebit Kannst du mir nochmal helfen, ich hoffe, dass letzte mal :disappointed_relieved:. Hier mal ein kurzer Auszug, ich hoffe der reicht.

                                widget.refreshAfterDate = new Date(nextRefresh)
                                 
                                    try {
                                        const solarHeader = widget.addText("Solar Strom");
                                        solarHeader.font = Font.boldSystemFont(12);
                                        solarHeader.centerAlignText();
                                 
                                        const solar = widget.addText(`${await getValue("plenticore.0.devices.local.Pv_P")).toFixed(2)}W | 
                                        ${Number(await getValue("plenticore.0.scb.statistic.EnergyFlow.EnergyHomePvDay")).toFixed(1)}kWh`);
                                        solar.font = Font.boldSystemFont(16);
                                        solar.centerAlignText();
                                

                                In Zeile 8 wird die Kürzung der Kommastelle nicht ausgeführt und es kommt der Fehler:
                                SyntaxError: Unexpected token ')'. Expected a closing '}' following an expression in template literal.

                                Zeile 9 klappt.

                                Schon mal Danke

                                IdleBitI Offline
                                IdleBitI Offline
                                IdleBit
                                schrieb am zuletzt editiert von IdleBit
                                #45

                                EDIT:
                                Ein Number fehlte

                                widget.refreshAfterDate = new Date(nextRefresh)
                                 
                                    try {
                                        const solarHeader = widget.addText("Solar Strom");
                                        solarHeader.font = Font.boldSystemFont(12);
                                        solarHeader.centerAlignText();
                                 
                                        const solar = widget.addText(`${Number(await getValue("plenticore.0.devices.local.Pv_P")).toFixed(2)}W | 
                                        ${Number(await getValue("plenticore.0.scb.statistic.EnergyFlow.EnergyHomePvDay")).toFixed(1)}kWh`);
                                        solar.font = Font.boldSystemFont(16);
                                        solar.centerAlignText();
                                
                                K severendisS 2 Antworten Letzte Antwort
                                0
                                • IdleBitI IdleBit

                                  EDIT:
                                  Ein Number fehlte

                                  widget.refreshAfterDate = new Date(nextRefresh)
                                   
                                      try {
                                          const solarHeader = widget.addText("Solar Strom");
                                          solarHeader.font = Font.boldSystemFont(12);
                                          solarHeader.centerAlignText();
                                   
                                          const solar = widget.addText(`${Number(await getValue("plenticore.0.devices.local.Pv_P")).toFixed(2)}W | 
                                          ${Number(await getValue("plenticore.0.scb.statistic.EnergyFlow.EnergyHomePvDay")).toFixed(1)}kWh`);
                                          solar.font = Font.boldSystemFont(16);
                                          solar.centerAlignText();
                                  
                                  K Offline
                                  K Offline
                                  kassmann
                                  schrieb am zuletzt editiert von
                                  #46

                                  @idlebit Ein Traum, tausend Dank :grinning:

                                  1 Antwort Letzte Antwort
                                  0
                                  • IdleBitI IdleBit

                                    EDIT:
                                    Ein Number fehlte

                                    widget.refreshAfterDate = new Date(nextRefresh)
                                     
                                        try {
                                            const solarHeader = widget.addText("Solar Strom");
                                            solarHeader.font = Font.boldSystemFont(12);
                                            solarHeader.centerAlignText();
                                     
                                            const solar = widget.addText(`${Number(await getValue("plenticore.0.devices.local.Pv_P")).toFixed(2)}W | 
                                            ${Number(await getValue("plenticore.0.scb.statistic.EnergyFlow.EnergyHomePvDay")).toFixed(1)}kWh`);
                                            solar.font = Font.boldSystemFont(16);
                                            solar.centerAlignText();
                                    
                                    severendisS Offline
                                    severendisS Offline
                                    severendis
                                    schrieb am zuletzt editiert von
                                    #47

                                    @idlebit

                                    Hallo!

                                    Ich habe hier ein Problem, das es bei Deinem Sycript bei mir zur Ausgabe "File state/....." kommt und das an jeder Stelle wo ein Wert stehen sollte.

                                    Der Datenpunkt stimmt. In der einfacheren Version (danke @blackst225 ) habe ich die Ausgabe bekommen.
                                    Bitte nur die erste Zeile der Datenausgabe beachten. Die anderen beiden hatte ich noch nicht angepasst.

                                    Was kann das sein?

                                    Danke schon mal!

                                    let host = args.widgetParameter;
                                    
                                    if (!host)
                                    
                                        host = "http://192.168.11.166:8082"
                                    
                                     
                                    
                                    let widget = await createWidget()
                                    
                                    Script.setWidget(widget)
                                    
                                    widget.presentSmall()
                                    
                                    Script.complete()
                                    
                                     
                                    
                                     
                                    
                                    async function createWidget() {
                                    
                                        // let g = new LinearGradient();
                                    
                                        // g.colors = [Color.red(), Color.red(), Color.blue(), Color.blue()];
                                    
                                        // g.locations = [0, 0.5, 0.5, 1];
                                    
                                     
                                    
                                        const widget = new ListWidget();
                                    
                                        //list.backgroundGradient = g;
                                    
                                     
                                    
                                        const nextRefresh = Date.now() + (1000 * 30) // add 30 second to now
                                    
                                     
                                    
                                        widget.refreshAfterDate = new Date(nextRefresh)
                                    
                                     
                                    
                                        try {
                                    
                                            const solarHeader = widget.addText("Solar Strom");
                                    
                                            solarHeader.font = Font.boldSystemFont(12);
                                    
                                            solarHeader.centerAlignText();
                                    
                                            const solar = widget.addText(`${await getValue("0_userdata.0.Huawei.Inverter.PV_P")}W | ${await getValue("0_userdata.0.Huawei.Inverter.PV_P")}kWh | ${await getValue("0_userdata.0.Huawei.Inverter.PV_P")}€`);
                                    
                                            solar.font = Font.boldSystemFont(16);
                                    
                                            solar.centerAlignText();
                                    
                                     
                                    
                                            widget.addSpacer();
                                    
                                     
                                    
                                            const netzHeader = widget.addText("Netz Strom");
                                    
                                            netzHeader.font = Font.boldSystemFont(12);
                                    
                                            netzHeader.centerAlignText();
                                    
                                     
                                    
                                            const netz = widget.addText(`${await getValue("sonoff.0.SmartMeter.LK13BE_current")}W | ${Number(await getValue("sourceanalytix.0.sonoff__0__SmartMeter__LK13BE_total.currentYear.consumed.01_currentDay")).toFixed(1)}kWh | ${await getValue("sourceanalytix.0.sonoff__0__SmartMeter__LK13BE_total.currentYear.costs.01_currentDay")}€`);
                                    
                                            netz.font = Font.boldSystemFont(16);
                                    
                                            netz.centerAlignText();
                                    
                                     
                                    
                                            widget.addSpacer();
                                    
                                     
                                    
                                            const houseHeader = widget.addText("Haus Strom");
                                    
                                            houseHeader.font = Font.boldSystemFont(12);
                                    
                                            houseHeader.centerAlignText();
                                    
                                     
                                    
                                            const house = widget.addText(`${await getValue("0_userdata.0.Energy.CurrentHouseEnergyConsumption")}W | ${await getValue("0_userdata.0.Energy.TotalHouseEnergyToday")}kWh | ${await getValue("0_userdata.0.Energy.EnergyAutakie")}%`);
                                    
                                            house.font = Font.boldSystemFont(16);
                                    
                                            house.centerAlignText();
                                    
                                     
                                    
                                            widget.addSpacer();
                                    
                                     
                                    
                                            const description = widget.addText(`Stand: ${new Date().toLocaleTimeString()} Uhr`);
                                    
                                            description.centerAlignText();
                                    
                                            description.font = Font.mediumSystemFont(9);
                                    
                                     
                                    
                                            return widget;
                                    
                                     
                                    
                                        } catch (err) {
                                    
                                            const errorList = new ListWidget();
                                    
                                            errorList.addText(err);
                                    
                                            return errorList;
                                    
                                        }
                                    
                                    }
                                    
                                     
                                    
                                    async function getValue(point) {
                                    
                                        try {
                                    
                                            const req = new Request(`${host}/v1/state/${point}/plain`)
                                    
                                            const value = await req.loadString()
                                    
                                            return value;
                                    
                                        } catch (err) {
                                    
                                            console.error(err)
                                    
                                            return "n/a"
                                    
                                        }
                                    
                                    }
                                    
                                    IdleBitI 1 Antwort Letzte Antwort
                                    0
                                    • severendisS severendis

                                      @idlebit

                                      Hallo!

                                      Ich habe hier ein Problem, das es bei Deinem Sycript bei mir zur Ausgabe "File state/....." kommt und das an jeder Stelle wo ein Wert stehen sollte.

                                      Der Datenpunkt stimmt. In der einfacheren Version (danke @blackst225 ) habe ich die Ausgabe bekommen.
                                      Bitte nur die erste Zeile der Datenausgabe beachten. Die anderen beiden hatte ich noch nicht angepasst.

                                      Was kann das sein?

                                      Danke schon mal!

                                      let host = args.widgetParameter;
                                      
                                      if (!host)
                                      
                                          host = "http://192.168.11.166:8082"
                                      
                                       
                                      
                                      let widget = await createWidget()
                                      
                                      Script.setWidget(widget)
                                      
                                      widget.presentSmall()
                                      
                                      Script.complete()
                                      
                                       
                                      
                                       
                                      
                                      async function createWidget() {
                                      
                                          // let g = new LinearGradient();
                                      
                                          // g.colors = [Color.red(), Color.red(), Color.blue(), Color.blue()];
                                      
                                          // g.locations = [0, 0.5, 0.5, 1];
                                      
                                       
                                      
                                          const widget = new ListWidget();
                                      
                                          //list.backgroundGradient = g;
                                      
                                       
                                      
                                          const nextRefresh = Date.now() + (1000 * 30) // add 30 second to now
                                      
                                       
                                      
                                          widget.refreshAfterDate = new Date(nextRefresh)
                                      
                                       
                                      
                                          try {
                                      
                                              const solarHeader = widget.addText("Solar Strom");
                                      
                                              solarHeader.font = Font.boldSystemFont(12);
                                      
                                              solarHeader.centerAlignText();
                                      
                                              const solar = widget.addText(`${await getValue("0_userdata.0.Huawei.Inverter.PV_P")}W | ${await getValue("0_userdata.0.Huawei.Inverter.PV_P")}kWh | ${await getValue("0_userdata.0.Huawei.Inverter.PV_P")}€`);
                                      
                                              solar.font = Font.boldSystemFont(16);
                                      
                                              solar.centerAlignText();
                                      
                                       
                                      
                                              widget.addSpacer();
                                      
                                       
                                      
                                              const netzHeader = widget.addText("Netz Strom");
                                      
                                              netzHeader.font = Font.boldSystemFont(12);
                                      
                                              netzHeader.centerAlignText();
                                      
                                       
                                      
                                              const netz = widget.addText(`${await getValue("sonoff.0.SmartMeter.LK13BE_current")}W | ${Number(await getValue("sourceanalytix.0.sonoff__0__SmartMeter__LK13BE_total.currentYear.consumed.01_currentDay")).toFixed(1)}kWh | ${await getValue("sourceanalytix.0.sonoff__0__SmartMeter__LK13BE_total.currentYear.costs.01_currentDay")}€`);
                                      
                                              netz.font = Font.boldSystemFont(16);
                                      
                                              netz.centerAlignText();
                                      
                                       
                                      
                                              widget.addSpacer();
                                      
                                       
                                      
                                              const houseHeader = widget.addText("Haus Strom");
                                      
                                              houseHeader.font = Font.boldSystemFont(12);
                                      
                                              houseHeader.centerAlignText();
                                      
                                       
                                      
                                              const house = widget.addText(`${await getValue("0_userdata.0.Energy.CurrentHouseEnergyConsumption")}W | ${await getValue("0_userdata.0.Energy.TotalHouseEnergyToday")}kWh | ${await getValue("0_userdata.0.Energy.EnergyAutakie")}%`);
                                      
                                              house.font = Font.boldSystemFont(16);
                                      
                                              house.centerAlignText();
                                      
                                       
                                      
                                              widget.addSpacer();
                                      
                                       
                                      
                                              const description = widget.addText(`Stand: ${new Date().toLocaleTimeString()} Uhr`);
                                      
                                              description.centerAlignText();
                                      
                                              description.font = Font.mediumSystemFont(9);
                                      
                                       
                                      
                                              return widget;
                                      
                                       
                                      
                                          } catch (err) {
                                      
                                              const errorList = new ListWidget();
                                      
                                              errorList.addText(err);
                                      
                                              return errorList;
                                      
                                          }
                                      
                                      }
                                      
                                       
                                      
                                      async function getValue(point) {
                                      
                                          try {
                                      
                                              const req = new Request(`${host}/v1/state/${point}/plain`)
                                      
                                              const value = await req.loadString()
                                      
                                              return value;
                                      
                                          } catch (err) {
                                      
                                              console.error(err)
                                      
                                              return "n/a"
                                      
                                          }
                                      
                                      }
                                      
                                      IdleBitI Offline
                                      IdleBitI Offline
                                      IdleBit
                                      schrieb am zuletzt editiert von IdleBit
                                      #48

                                      @severendis mein Script ist für den neuen https://github.com/ioBroker/ioBroker.rest-api Adapter, nutzt du den auch?

                                      Hier zu lesen :)

                                      severendisS 1 Antwort Letzte Antwort
                                      0
                                      • IdleBitI IdleBit

                                        @severendis mein Script ist für den neuen https://github.com/ioBroker/ioBroker.rest-api Adapter, nutzt du den auch?

                                        Hier zu lesen :)

                                        severendisS Offline
                                        severendisS Offline
                                        severendis
                                        schrieb am zuletzt editiert von
                                        #49

                                        @idlebit
                                        Ich habe das nicht so für voll genommen, da dort stand "du kannst den benutzen".
                                        Na ja - mein Fehler.

                                        Kann ich den im ioBroker zusätzlich installieren, oder geht dann der Simple API Adapter nicht mehr?

                                        IdleBitI 1 Antwort Letzte Antwort
                                        0
                                        • severendisS severendis

                                          @idlebit
                                          Ich habe das nicht so für voll genommen, da dort stand "du kannst den benutzen".
                                          Na ja - mein Fehler.

                                          Kann ich den im ioBroker zusätzlich installieren, oder geht dann der Simple API Adapter nicht mehr?

                                          IdleBitI Offline
                                          IdleBitI Offline
                                          IdleBit
                                          schrieb am zuletzt editiert von
                                          #50

                                          @severendis Ja das kannst Du, kannst aber auch die 'getValue()' Funktion auf die ursprüngliche Version wieder ändern,
                                          so brauchst du dafür nicht extra den Adapter installieren.

                                          severendisS 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          771

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe