Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Gelöst] Script um JSON erzeugen funktioniert nicht

    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

    [Gelöst] Script um JSON erzeugen funktioniert nicht

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

      Hi,

      versuche mit folgendem Script ein JSON zu erzeugen. Als trigger soll der DP "ecovacs-deebot.0.status.device" dienen.

      Wenn ich das script starte bekomme ich folgende Warnung angezeigt:

      16:53:42.813	info	javascript.0 (2842511) Start javascript script.js.common.JSON.Deebot
      16:53:42.828	warn	javascript.0 (2842511) at script.js.common.JSON.Deebot:9:4
      16:53:42.828	warn	javascript.0 (2842511) at script.js.common.JSON.Deebot:31:3
      16:53:42.828	info	javascript.0 (2842511) script.js.common.JSON.Deebot: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      
      const idTable = '0_userdata.0.JSON.Deebot'; 
      const idRaum =  'ecovacs-deebot.0.map.lastCleanedSpotArea.spotAreaName';
      const idDatumEnde ='ecovacs-deebot.0.map.lastCleanedSpotArea.dateTime';
      const idFlaeche = 'ecovacs-deebot.0.cleaninglog.current.cleanedArea';
      const idDauer = 'ecovacs-deebot.0.map.lastCleanedSpotArea.totalTime';
      const idAktiv = 'ecovacs-deebot.0.status.device';
      
      var table = [];
      if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
      var obj = {};
      var startDate = new Date();
      
      on(idAktiv, function(dp) {
          if(dp.state.val) {
              obj = {};
              obj.Start = formatDate(new Date(), 'MM.DD.YY hh:mm');
              obj.StartUhr = formatDate(new Date(), 'hh:mm');
      
          } else {
              obj.Ende = idDatumEnde;
              obj.Dauer = idDauer;
              obj.Flaeche = idFlaeche;
              obj.Raum = idRaum;
              log(table);
              table.push(obj);
              if(table.length > 50) table.shift();
              setState(idTable, JSON.stringify(table), true);
              log(table);
          }
      }); 
      

      Kann mir hier jemand auf die sprünge helfen?

      Danke

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

        @chris76e
        Im Tab "Protokolle" stehen mehr Informationen zur Warnung.
        Welchen Wert enthält "0_userdata.0.JSON.Deebot"?

        Außerdem Zeilen 20 bis 23:

                obj.Ende = getState(idDatumEnde).val;
                obj.Dauer = getState(idDauer).val;
                obj.Flaeche = getState(idFlaeche).val;
                obj.Raum = getState(idRaum).val;
        
        Chris76e 1 Reply Last reply Reply Quote 0
        • Chris76e
          Chris76e @paul53 last edited by

          @paul53

          "0_userdata.0.JSON.Deebot" da stand "null" drin, habe jetzt [] reingeschrieben, keine Warnung mehr.

          Habe auch das andere geändert, aber es wird nichts geschrieben.

          der DP "ecovacs-deebot.0.status.device" kann die werte "charging", "cleaning" und "returing" annehmen. Vermute da wird nochwas faul sein. Mit dem Wert "cleanig" soll JSON anfangen und mit "charging" beenden....

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

            @chris76e sagte: Mit dem Wert "cleanig" soll JSON anfangen und mit "charging" beenden....

                if(dp.state.val == 'cleaning') {
                    obj = {};
                    obj.Start = formatDate(new Date(), 'MM.DD.YY hh:mm');
                    obj.StartUhr = formatDate(new Date(), 'hh:mm');
                } else if(dp.state.val == 'charging') {
            
            Chris76e 1 Reply Last reply Reply Quote 1
            • Chris76e
              Chris76e @paul53 last edited by

              @paul53

              Danke, funktioniert jetzt 👍 👍 👍 😀

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              830
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              2
              5
              137
              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