Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [erledigt] JS zum anlegen eines DP unter 0_userdata

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [erledigt] JS zum anlegen eines DP unter 0_userdata

    This topic has been deleted. Only users with topic management privileges can see it.
    • da_Woody
      da_Woody last edited by da_Woody

      besagtes script hatte früher funktioniert. allerdings seit langem nicht mehr benutzt.

      function listeWerte() {
       
          // Liste
          let werte = getObject("enum.functions.power_consumption").common.members;
       
          // Startwert 0
          let wert = 0;
       
          // Schleife, um die Werte abzufragen
          for (var i = 0; i < werte.length; i++) {
              wert += getState(werte[i]).val;
          }
          setState("0_userdata.0.Heizen.Heizen", wert);
      }
      // Funktionsaufruf fuer das Abonnieren der Datenpunkte
      $('state(functions=power_consumption)').on(function (obj) {
          listeWerte();
      });
      
      

      hab jetzt in enum was geändert. 3 werte rausgenommen.
      60c468a8-4c65-4264-a5cc-84cb022b5c36-grafik.png
      wenn ich das script starte, wird nichts angelegt, und eine fehlermeldung ausgegeben.

      19:08:55.050	info	javascript.0 (545) Start javascript script.js.common.Heizen.Heizen
      19:08:55.389	info	javascript.0 (545) script.js.common.Heizen.Heizen: registered 7 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      19:08:57.933	warn	javascript.0 (545) at listeWerte (script.js.common.Heizen.Heizen:13:5)
      19:08:57.933	warn	javascript.0 (545) at Object.<anonymous> (script.js.common.Heizen.Heizen:17:5)
      19:09:00.695	info	javascript.0 (545) Stop script script.js.common.Heizen.Heizen
      

      den alten DP habe ich vorher gelöscht.
      d30707a8-a6c2-4ee9-814b-5f086822bf18-grafik.png
      ich nehme an, daß da im script ein fehler durch eventuelle änderungen bei JS ist.
      kann mich da wer hilfreich sein?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @da_Woody last edited by

        @da_woody sagte: wird nichts angelegt, und eine fehlermeldung ausgegeben.

        Das Skript erzeugt keinen Datenpunkt, sondern schreibt in den Datenpunkt "0_userdata.0.Heizen.Heizen", der bereits existieren muss.

        da_Woody 2 Replies Last reply Reply Quote 0
        • da_Woody
          da_Woody @paul53 last edited by da_Woody

          @paul53 autsch, wie löse ich das am besten?
          k, hab mal einen folder Heizen angelegt...

          1 Reply Last reply Reply Quote 0
          • da_Woody
            da_Woody @paul53 last edited by da_Woody

            @paul53 kommando retour!
            bißchen logisches denken klappt doch noch manchmal...
            ist in iQontrol wieder da...
            5c87f375-82f2-423b-b9f7-8b60146e5b46-grafik.png
            72d4b8b1-1690-438b-ad9e-d3b85dfc98d4-grafik.png

            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer @da_Woody last edited by ticaki

              @da_woody

              Naja jeztt hab ich schon gemacht 🙂

              async function listeWerte() {
               
                  // Liste
                   let werte = getObject("enum.functions.power_consumption").common.members;
                
                   // Startwert 0
                   let wert = 0;
                
                   // Schleife, um die Werte abzufragen
                   for (var i = 0; i < werte.length; i++) {
                       wert += getState(werte[i]).val;
                   }
                  if (existsState("0_userdata.0.Heizen.Heizen")) setState("0_userdata.0.Heizen.Heizen", wert);
                  else await createStateAsync("0_userdata.0.Heizen.Heizen", wert, false, 
                  {
                      type: "number", 
                      role: "value", 
                      name: "user state", // da rein schreiben wie der State heißen soll in der name spalte
                      unit: "W",  
                      read: true, 
                      write: true
                      }
                  )
              }
               // Funktionsaufruf fuer das Abonnieren der Datenpunkte
               $('state(functions=power_consumption)').on(function (obj) {
                  listeWerte();
               });
              
              da_Woody bahnuhr 2 Replies Last reply Reply Quote 2
              • da_Woody
                da_Woody @ticaki last edited by

                @ticaki hehe, thnx tropsdem! prost.gif
                kann man ja immer brauchen! soweit komm ich mit eventuellem umschreiben zurecht...

                1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active @ticaki last edited by

                  @ticaki
                  Ich finde es gut, wie ihr immer mit diesem await, async zeug rum handiert.

                  Ich tue mich da immer noch sehr schwer damit.

                  Danke für das Beispiel.

                  da_Woody T 2 Replies Last reply Reply Quote 0
                  • da_Woody
                    da_Woody @bahnuhr last edited by

                    @bahnuhr vor allem auch in der geschwindigkeit... meinung.gif

                    1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @bahnuhr last edited by ticaki

                      @bahnuhr sagte in JS zum anlegen eines DP unter 0_userdata:

                      @ticaki
                      Ich finde es gut, wie ihr immer mit diesem await, async zeug rum handiert.

                      Ich tue mich da immer noch sehr schwer damit.

                      Danke für das Beispiel.

                      Dann mache ich es aber auch richtig :). Wenn du ein await benutz ist ein try {} catch(){} zwingend... vergesse ich in Forenbeispielen laufend.

                      Wenn der fehlt beendet der JS-Controller/nodejs im Fehlerfall den ausführenden Prozess, was heißt der Javascript-Adapter wird abgeschaltet.

                      
                      async function listeWerte() {
                       
                          // Liste
                           let werte = getObject("enum.functions.power_consumption").common.members;
                        
                           // Startwert 0
                           let wert = 0;
                        
                           // Schleife, um die Werte abzufragen
                           for (var i = 0; i < werte.length; i++) {
                               wert += getState(werte[i]).val;
                           }
                          try {
                              if (existsState("0_userdata.0.Heizen.Heizen")) setState("0_userdata.0.Heizen.Heizen", wert);
                              else await createStateAsync("0_userdata.0.Heizen.Heizen", wert, false, 
                              {
                                  type: "number", 
                                  role: "value", 
                                  name: "user state",
                                  unit: "", 
                                  read: true, 
                                  write: true
                                  }
                              )
                          } catch (e) {
                              log(e.message);
                          }
                      }
                       // Funktionsaufruf fuer das Abonnieren der Datenpunkte
                       $('state(functions=power_consumption)').on(function (obj) {
                          listeWerte();
                       });
                        
                      
                      
                      1 Reply Last reply Reply Quote 2
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      920
                      Online

                      31.8k
                      Users

                      80.0k
                      Topics

                      1.3m
                      Posts

                      heating javascript
                      4
                      9
                      294
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo