Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. sts85

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 21
    • Best 1
    • Groups 1

    sts85

    @sts85

    Starter

    1
    Reputation
    7
    Profile views
    21
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    sts85 Follow
    Starter

    Best posts made by sts85

    • RE: Admin Adapter 3.7.3 - keine Adapter mehr

      Hallo zusammen,

      japp, die 3.7.5 funktioniert wieder einwandfrei!

      posted in Error/Bug
      sts85
      sts85

    Latest posts made by sts85

    • RE: Szenen DP manipulieren mit extendObject

      @paul53 said in Szenen DP manipulieren mit extendObject:

      @sts85 sagte: Das ist dabei rausgekommen:

      Die letzten beiden Befehle sollten nur bedingt ausgeführt werden:

      if(index > -1) {
      

      Japp, das war mein Minimalbeispiel. Bedingung ist schon umgesetzt.

      posted in JavaScript
      sts85
      sts85
    • RE: Szenen DP manipulieren mit extendObject

      @paul53 Mega, danke für den Ansatz. Eigentlich logisch. Das ist dabei rausgekommen:

      var SceneName = 'scene.0.TEST'
      
      var SceneObject = getObject('scene.0.TEST')
      var SceneID = "alias.0.Buttons.Button-WZ-Bilderrahmen";
      
      var SceneData = SceneObject.native.members
      
      var index = SceneData.findIndex(obj => obj.id==SceneID);
      //console.log(index);
      
      SceneObject.native.members[index].disabled = true;
      //console.log(SceneObject.native.members);
      
      setObject(SceneName, SceneObject)
      
      posted in JavaScript
      sts85
      sts85
    • Szenen DP manipulieren mit extendObject

      Hallo zusammen,

      ich möchte gerne in einer Szene (iobroker Scenes Adapter) einzelne Zustände inaktiv machen:
      29cc9caf-8f39-43c6-93fc-173577729d2c-image.png

      Dies würde ich gern über Blockly oder JavaScript lösen.

      Dazu habe ich den Ansatz über extendObject genutzt:

      extendObject('scene.0.TEST', {native: {members: [{disabled: true}]}});
      

      So lange die Szene nur aus einem Zustand besteht, funktioniert das so. Ich habe aber mehrere Zustände und weiß nicht, wie ich nur das "disabled" einer bestimmten ID manipulieren kann, da sie ja hintereinander in members stehen. Wie bekomme ich Zugriff auf das "disabled" der jeweiligen ID?

      {
        "common": {
          "name": "TEST",
          "type": "mixed",
          "role": "scene.state",
          "desc": "",
          "enabled": true,
          "read": true,
          "write": true,
          "def": false,
          "engine": "system.adapter.scenes.0"
        },
        "native": {
          "onTrue": {
            "trigger": {},
            "cron": null,
            "astro": null
          },
          "onFalse": {
            "enabled": true,
            "trigger": {},
            "cron": null,
            "astro": null
          },
          "easy": true,
          "burstInterval": 0,
          "members": [
            {
              "id": "alias.0.Buttons.Button-WZ-St-Weinregal",
              "setIfTrue": true,
              "setIfFalse": false,
              "stopAllDelays": true,
              "desc": null,
              "disabled": true,
              "delay": 0
            },
            {
              "id": "alias.0.Buttons.Button-WZ-Bilderrahmen",
              "setIfTrue": true,
              "setIfFalse": false,
              "stopAllDelays": true,
              "desc": null,
              "disabled": false,
              "delay": 0
            }
          ]
        },
        "type": "state",
        "_id": "scene.0.TEST",
        "from": "system.adapter.admin.0",
        "user": "system.user.admin",
        "ts": 1715248145422,
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      Danke euch,
      viele Grüße

      posted in JavaScript
      sts85
      sts85
    • RE: Test Adapter Awtrix-Light (Awtrix 3)

      @haus-automatisierung said in Test Adapter Awtrix-Light:

      Tip-top, genau so funktioniert es nun. Danke.

      posted in Tester
      sts85
      sts85
    • RE: Test Adapter Awtrix-Light (Awtrix 3)

      @haus-automatisierung

      😄😄
      Ich verstehe das schon, dass es alles nicht so komplex werden soll. Ich habe tatsächlich auch auf das Format mit dem Punkt als Dezimaltrenner umgestellt und die Anzahl der Nachkommastellen limitiert.
      Es sieht halt komisch aus, wenn nun das ",0" bei schwankenden Werten verschwindet und nur die nakte Zahl da steht. Natürlich ist das Geschmacksache.

      Würde es funktionieren, wenn ich das in Blockly vorher in einen String umwandele und die Zahl dann als String mit dem Komma übergebe?

      posted in Tester
      sts85
      sts85
    • RE: Test Adapter Awtrix-Light (Awtrix 3)

      Hallo zusammen,

      habe das schöne Teil auch vor zwei Tagen bekommen und den Adapter schon eingerichtet. Eigentlich funktioniert alles super.

      Eine Sache stört mich aber noch:
      Ich würde gerne die Anzahl der Nachkommastellen pro Wert fix einstellen. Zwar kann ich die Anzahl bequem über den Adapter auf eine Nachkommastelle limitieren, aber wenn jetzt ein Wert, z. B. Temperatur = 20 °C rein kommt, steht auf der Anzeige "20". Wenn dann der Wert steigt, steht dort z. B. "20.1".
      Kann ich aus der "20" eine "20.0" machen? Super bequem wäre ein Häkchen "Anzahl Nachkommastellen fest" oder so. In der vis geht das problemlos.

      Habe ich was übersehen bzw. wie lässt sich das einfach umsetzen?

      Danke & Grüße

      posted in Tester
      sts85
      sts85
    • RE: Watchdog für Alter der Datenpunkte

      @paul53 said in Watchdog für Alter der Datenpunkte:

      @sts85 sagte: Ich darf hier natürlich nur einen Intervall nutzen.

      Ja, etwa so:

      Blockly_temp.JPG

      Perfekt, super, läuft 1A.

      Hatte eben auch schon was gebastelt, aber dies ist hier noch ein wenig eleganter. Nur deine Zähl-Schleife habe ich durch eine "für jeden Wert" Schleife ersetzt.

      b5806609-9133-4f58-b2b4-6efbeb8e91fb-image.png

      Einiges gelernt...
      Nochmals vielen Dank euch allen! 🥳🎉

      posted in Blockly
      sts85
      sts85
    • RE: Watchdog für Alter der Datenpunkte

      @ticaki

      Haha, siehe edit. Hab ich auch gerade gemerkt. Ich darf hier natürlich nur einen Intervall nutzen.

      posted in Blockly
      sts85
      sts85
    • RE: Watchdog für Alter der Datenpunkte

      Ob es elegant ist, sei dahingestellt, aber so geht es:

      d389ad63-dcbe-4be5-bb50-4f5fc0794db6-image.png

      var ids, id, intervalle, messages, idx, Intervall, msg, i, idm, message_there;
      
      function listsRepeat(value, n) {
        var array = [];
        for (var i = 0; i < n; i++) {
          array[i] = value;
        }
        return array;
      }
      
      // Beschreibe diese Funktion …
      async function getName(id) {
          return getObject(id).common.name;
      }
      
      
      ids = Array.prototype.slice.apply($("state[id=*](functions=watchdog)"));
      intervalle = listsRepeat(null, ids.length);
      messages = listsRepeat(null, ids.length);
      schedule("*/2 * * * * *", async function () {
        for (var id_index in ids) {
          id = ids[id_index];
          idx = ids.indexOf(id) + 1;
          Intervall = intervalle[(idx - 1)];
          messages[(idx - 1)] = 'Sensorwert zu alt: ' + String(await getName(id));
          msg = messages[(idx - 1)];
          if (parseFloat((new Date().getTime())) - getState(id).ts <= 900000) {
            (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
            messages[(idx - 1)] = null;
          } else if (!Intervall) {
            console.log(msg);
            Intervall = setInterval(async function () {
              for (var i_index in ids) {
                i = ids[i_index];
                idm = ids.indexOf(i) + 1;
                message_there = intervalle[(idm - 1)];
                if (message_there != null) {
                  console.log(('Sensorwert zu alt: ' + String(await getName(i))));
                }
              }
            }, 6000);
          }
          intervalle[(idx - 1)] = Intervall;
        }
      });
      

      Danke euch nochmals!

      Edit: Kleiner Denkfehler, jetzt werden natürlich nich mehrere Intervalle ausgelöst...

      posted in Blockly
      sts85
      sts85
    • RE: Watchdog für Alter der Datenpunkte

      @ticaki said in Watchdog für Alter der Datenpunkte:

      @paul53
      Statt der Intervall reference die Nachricht im Array speichern mit nur einem Intervall der das Array überprüft und die Nachricht verschickt?

      Den Ansatz hatte ich auch eben, hab es aber in Blockly noch nicht so schnell umgesetzt bekommen.
      Dann kommen alle betroffenen Meldungen immer gemeinsam, das wäre aber vollkommen OK.

      posted in Blockly
      sts85
      sts85
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo