NEWS

gelöst js: wie felxible "states" in werteliste



  • könnte mir bitte jmd erklären, wie man die states in einem werteliste-datenpunkt flexible hält bzw schreibt

    im raw sieht der datenpunkt so aus:

    {
      "from": "system.adapter.javascript.2",
      "user": "system.user.admin",
      "ts": 1568636996464,
      "common": {
        "name": "Unifi Wifi Vouchers_ValueCodeList",
        "role": "state",
        "type": "string",
        "states": "CODE01:123456;CODE02:654321",
        "read": true,
        "write": true
      },
      "native": {},
      "acl": {
        "object": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator",
        "state": 1636
      },
      "_id": "javascript.2.WLANUnifi.Wifi_Vouchers_ValueCodeList",
      "type": "state"
    }
    

    so sehen die daten aus, welche sich ändern: "CODE01:5d7f846397578401a0612dc6;CODE02:5d7f846397578401a0612dc5;CODE03:5d7ce0c197578401cf117f25"

    so versuche ich es - bekomme aber eine syntax warnung

    Image 4.png

    im log steht zwar das richtige
    Image 5.png

    aber irgendwie traue ich der sache nicht - im raw des datenpunktes stehen die daten aber nicht drin - da sind immer noch die alten drin, die beim anlegen genommen wurden

    fehlt das

      setObject(dpPrefix + "WLANUnifi.Wifi_Vouchers_ValueCodeList", obj);
    

    dann steht auch im raw alles richtig drin : frage bleibt - ist das richtig obwohl es "bemängelt" wird



  • @liv-in-sky sagte:

    im raw sieht der datenpunkt so aus:

    Wertelisten (multistate) sind normalerweise Datenpunkte vom Typ "number" mit den Zahlenwerten zugeordneten Zustandstexten (states).

    Das statische Objekt sollte per Skript nur in Ausnahmefällen geändert werden. Für dynamische Werte ist setState() und getState() zu verwenden; Datenpunkt-Typ "object" oder für JSON Typ "string".



  • @paul53 danke dir, dass du die zeit nimmst - aber ich glaube, ich versteh das nicht ganz

    mein problem ist , dass ich diese datenpunkt genau so brauche - ich möchte ihn in iqontrol nutzen , um etwas auszuführen - in iqontrol kann ich nur so, aus verschiedenen möglichkeiten auswählen - anschliessend ist in meinem script noch ein trigger auf den val dieses datenpunktes- wird der also ausgewählt (einer der states) ändert sich der val und mein script kann sofort an die arbeit gehen

    also die datenunkte kann auf "number" ändern - sieht dann so aus

    {
      "common": {
        "name": "Unifi Wifi Vouchers_ValueCodeList",
        "role": "state",
        "type": "number",
        "states": "1:5d7fa5ab97578401a0612f6e;2:5d7fa5ab97578401a0612f6b;",
        "read": true,
        "write": true
      },
      "native": {},
      "type": "state",
      "from": "system.adapter.javascript.2",
      "user": "system.user.admin",
      "ts": 1568645584287,
      "_id": "javascript.2.WLANUnifi.Wifi_Vouchers_ValueCodeList",
      "acl": {
        "object": 1636,
        "state": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator"
      }
    }
    

    leider funktioniert dann die werteliste in iqontrol nicht mehr mit number (muss ich mal in dessen threat nachfragen) - funktioniert aber mit mit datentyp "string" - so wie es es vorher hatte

    wie soll ich dieses problem lösen - mit getState oder setState kann ich das zwar umsetzen , und dies kann ich auch mit für die vis gebrauchen - aber eben nicht für iqontrol - was passiert, wenn ich es mit string nutze - kann es zu fehlern kommen?

    ist den das mit dem ändern des statischen objects ein problem - es wird nicht oft verwendet

    die erklärung für die werteliste in iqontrol sieht so aus https://github.com/sbormann/ioBroker.iqontrol :
    hilft das irgendwie, um es anders zu lösen
    Image 8.png



  • @liv-in-sky sagte:

    funktioniert aber mit mit datentyp "string"

    Wenn iqontrol es so haben will, dann mache es so.

    @liv-in-sky sagte in js: wie felxible "states" in einer werteliste:

    ist das richtig obwohl es "bemängelt" wird

    Der Javascript-Editor bemängelt alles, was er nicht kennt, wie z.B. common.states. Man sollte es ignorieren.



  • @paul53 danke


Log in to reply
 

Suggested Topics

1.7k
Online

32.4k
Users

39.0k
Topics

528.7k
Posts