Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Skripten / Logik
  4. Blockly
  5. Daten mit Blockly erheben und im Json Format speichern

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    2.7k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    4.7k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    4.0k

Daten mit Blockly erheben und im Json Format speichern

Geplant Angeheftet Gesperrt Verschoben Blockly
6 Beiträge 2 Kommentatoren 576 Aufrufe 1 Beobachtet
  • Ä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.
  • ? Offline
    ? Offline
    Ein ehemaliger Benutzer
    schrieb am zuletzt editiert von Ein ehemaliger Benutzer
    #1

    Hallo zusammen,
    Ich bin dabei mir ein Blockly zu schreiben, das Adapter findet die offline sind. Dafür nutze ich den Daten-Punkt .alive . wenn dieser false ist, wird der Adapter vom Blockly als Json Datensatz in einem Datenpunkt hinterlegt. Nun kann ich mir mit Vis alle Daten in der Tabelle anzeigen lassen.

    Bis dahin funktioniert das Blockly einwandfrei.

    Nun der Teil der mich verzweifeln lässt:
    Sobald der Adapter wieder online ist und der Wert auf true steht, wird der Eintrag nicht wie von mir beabsichtigt entfernt. Dies klappt nur sporadisch.
    Das Problem wird die Angabe des Zeitstempels sein. Wie könnte ich das besser lösen? Jemand einen Tipp?

    Screenshot_2022-07-07-14-20-49-05_40deb401b9ffe8e1df2f1cc5ba480b12.jpg

    Screenshot_2022-07-07-14-39-48-67_200b0a05dbc45b1de60d6a2da09c9fd1.jpg

    Screenshot_2022-07-07-14-41-32-84_40deb401b9ffe8e1df2f1cc5ba480b12.jpg

    haus-automatisierungH 1 Antwort Letzte Antwort
    0
    • ? Ein ehemaliger Benutzer

      Hallo zusammen,
      Ich bin dabei mir ein Blockly zu schreiben, das Adapter findet die offline sind. Dafür nutze ich den Daten-Punkt .alive . wenn dieser false ist, wird der Adapter vom Blockly als Json Datensatz in einem Datenpunkt hinterlegt. Nun kann ich mir mit Vis alle Daten in der Tabelle anzeigen lassen.

      Bis dahin funktioniert das Blockly einwandfrei.

      Nun der Teil der mich verzweifeln lässt:
      Sobald der Adapter wieder online ist und der Wert auf true steht, wird der Eintrag nicht wie von mir beabsichtigt entfernt. Dies klappt nur sporadisch.
      Das Problem wird die Angabe des Zeitstempels sein. Wie könnte ich das besser lösen? Jemand einen Tipp?

      Screenshot_2022-07-07-14-20-49-05_40deb401b9ffe8e1df2f1cc5ba480b12.jpg

      Screenshot_2022-07-07-14-39-48-67_200b0a05dbc45b1de60d6a2da09c9fd1.jpg

      Screenshot_2022-07-07-14-41-32-84_40deb401b9ffe8e1df2f1cc5ba480b12.jpg

      haus-automatisierungH Offline
      haus-automatisierungH Offline
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @david83 Also JSON manuell zusammen bauen würde ich eher nicht empfehlen. Du kannst ja scheinbar auch JavaScript - damit wäre das deutlich einfacher machbar. Brauchst Du dazu Input?

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      1 Antwort Letzte Antwort
      0
      • ? Offline
        ? Offline
        Ein ehemaliger Benutzer
        schrieb am zuletzt editiert von
        #3

        @haus-automatisierung

        Ganz ehrlich gesagt bin ich grade dabei mir Javascript etwas genauer anzuschauen. Aber können... da bin ich Meilen von entfernt.
        Ich würde das gerne mit Blockly lösen, falls du einen Vorschlag in Js hast, schaue ich ihn mir sehr gerne an.

        haus-automatisierungH 2 Antworten Letzte Antwort
        0
        • ? Ein ehemaliger Benutzer

          @haus-automatisierung

          Ganz ehrlich gesagt bin ich grade dabei mir Javascript etwas genauer anzuschauen. Aber können... da bin ich Meilen von entfernt.
          Ich würde das gerne mit Blockly lösen, falls du einen Vorschlag in Js hast, schaue ich ihn mir sehr gerne an.

          haus-automatisierungH Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von haus-automatisierung
          #4

          @david83 Ich bin mir nicht ganz sicher, wie das Ergebnis aussehen soll. Aber eventuell hilft Dir das ja als Basis:

          const aliveIds = Array.prototype.slice.apply($('system.adapter.*.*.alive'));
          
          function refreshList() {
              const resultList = [];
          
              for (var i in aliveIds) {
                  const aliveState = getState(aliveIds[i]);
          
                  // Offline instance
                  if (!aliveState.val) {
                      resultList.push({
                          'Adapter': aliveIds[i],
                          'Last-Contact': formatDate(aliveState.ts, 'TT.MM.JJJJ SS:mm:ss')
                      });
                  }
          
                  console.log(aliveState);
              }
          
              setState('0_userdata.0.test.myString', JSON.stringify(resultList), true);
          }
          
          on({id: aliveIds, change: 'ne'}, async (obj) => {
              refreshList();
          });
          
          // Initialisieren bei Script-Start
          refreshList();
          
          

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          1 Antwort Letzte Antwort
          0
          • ? Ein ehemaliger Benutzer

            @haus-automatisierung

            Ganz ehrlich gesagt bin ich grade dabei mir Javascript etwas genauer anzuschauen. Aber können... da bin ich Meilen von entfernt.
            Ich würde das gerne mit Blockly lösen, falls du einen Vorschlag in Js hast, schaue ich ihn mir sehr gerne an.

            haus-automatisierungH Offline
            haus-automatisierungH Offline
            haus-automatisierung
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @david83 Oder Du holst Dir noch den richtigen Namen des Adapters und packst den in die Tabelle:

            const aliveIds = Array.prototype.slice.apply($('system.adapter.*.*.alive'));
            
            function getAdapterName(obj) {
                if (typeof obj.common.titleLang === 'object') {
                    if (Object.prototype.hasOwnProperty.call(obj.common.titleLang, 'de')) {
                        return obj.common.titleLang.de;
                    } else {
                        return obj.common.titleLang.en;
                    }
                }
            
                return obj.common.title;
            }
            
            function refreshList() {
                const resultList = [];
            
                for (var i in aliveIds) {
                    const aliveStateId = aliveIds[i];
                    const aliveState = getState(aliveStateId);
            
                    // Offline adapters
                    if (!aliveState.val) {
                        const instanceObj = getObject(aliveStateId.replace('.alive', ''));
            
                        resultList.push({
                            'Adapter': getAdapterName(instanceObj),
                            'Last-Contact': formatDate(aliveState.ts, 'TT.MM.JJJJ SS:mm:ss')
                        });
                    }
            
                    console.log(aliveState);
                }
            
                setState('0_userdata.0.test.myString', JSON.stringify(resultList), true);
            }
            
            on({id: aliveIds, change: 'ne'}, async (obj) => {
                refreshList();
            });
            
            // Initialisieren bei Script-Start
            refreshList();
            
            

            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
            📚 Meine inoffizielle ioBroker Dokumentation

            ? 1 Antwort Letzte Antwort
            0
            • haus-automatisierungH haus-automatisierung

              @david83 Oder Du holst Dir noch den richtigen Namen des Adapters und packst den in die Tabelle:

              const aliveIds = Array.prototype.slice.apply($('system.adapter.*.*.alive'));
              
              function getAdapterName(obj) {
                  if (typeof obj.common.titleLang === 'object') {
                      if (Object.prototype.hasOwnProperty.call(obj.common.titleLang, 'de')) {
                          return obj.common.titleLang.de;
                      } else {
                          return obj.common.titleLang.en;
                      }
                  }
              
                  return obj.common.title;
              }
              
              function refreshList() {
                  const resultList = [];
              
                  for (var i in aliveIds) {
                      const aliveStateId = aliveIds[i];
                      const aliveState = getState(aliveStateId);
              
                      // Offline adapters
                      if (!aliveState.val) {
                          const instanceObj = getObject(aliveStateId.replace('.alive', ''));
              
                          resultList.push({
                              'Adapter': getAdapterName(instanceObj),
                              'Last-Contact': formatDate(aliveState.ts, 'TT.MM.JJJJ SS:mm:ss')
                          });
                      }
              
                      console.log(aliveState);
                  }
              
                  setState('0_userdata.0.test.myString', JSON.stringify(resultList), true);
              }
              
              on({id: aliveIds, change: 'ne'}, async (obj) => {
                  refreshList();
              });
              
              // Initialisieren bei Script-Start
              refreshList();
              
              
              ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #6

              @haus-automatisierung

              funktioniert! Danke!

              [
                {
                  "Adapter": "Alexa2 (Amazon Echo)",
                  "Last-Contact": "07.07.2022 09:59:48"
                },
                {
                  "Adapter": "Device-Watcher",
                  "Last-Contact": "07.07.2022 18:45:01"
                },
                {
                  "Adapter": "Deutsche Feiertage",
                  "Last-Contact": "07.07.2022 10:36:11"
                },
                {
                  "Adapter": "iCal Kalender",
                  "Last-Contact": "07.07.2022 18:30:12"
                },
                {
                  "Adapter": "Tankerkönig Spritpreise",
                  "Last-Contact": "10.07.2021 15:24:51"
                },
                {
                  "Adapter": "Visualisierung",
                  "Last-Contact": "07.07.2022 10:35:52"
                },
                {
                  "Adapter": "Vorhersage Weatherunderground",
                  "Last-Contact": "07.07.2022 18:06:33"
                }
              ]
              
              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              499

              Online

              33.0k

              Benutzer

              83.4k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              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