Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Starthilfe ? Create state aus JSON, update state (name) + read value = action

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    5
    1
    40

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Starthilfe ? Create state aus JSON, update state (name) + read value = action

Scheduled Pinned Locked Moved Skripten / Logik
5 Posts 3 Posters 3.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • DutchmanD Offline
    DutchmanD Offline
    Dutchman
    Developer Most Active Administrators
    wrote on last edited by
    #1

    Hi there,

    Ich brauechte da ein bischschen hilfe um werte aus zu lesen und dem entprechend eine actions aus zu loesen.

    Use Case:

    Per MQTT werden mir ID's, gerate name und stats uebermitteld. Mit diesem input erstellen ich mir variablen middels create state:

    ! ````
    //Read value at update on MQTT trigger
    on({id: 'mqtt.0.domoticz.out', change: "any"}, function (obj) {
    var value = obj.state.val;
    ! //Get Value & translate to data point
    var state;
    var device;
    var channel;

    //JSON values to memory
    try {
    obj = JSON.parse(getState('mqtt.0.domoticz.out').val);
    } catch (e) {
    console.error('Cannot parse: ' + getState('mqtt.0.domoticz.out').val);
    return;
    }
    channel = obj.idx;
    state = obj.nvalue;
    device = obj.name;

    ! //Log values
    log(channel);
    log(device);
    log(state);

    //Create states
    createState('domoticz.' +  channel, {
        name: 'Domoticz ' + device,
        type: 'number',
        role: 'switch',
    });
    

    ! ````

    979_read_stats.jpg

    Darunter schreibe ich dan de state weg (kommt aus de JSON tabellen)

    ! //Update state with value from MQTT setState('domoticz.' + channel, state, true); !

    Das klappt auch so weit ganz gut, jedoch 2 problemen:

    1. Wen der state noch nicht da war wird kein wert weggeschrieben, beim 2ten read klappt das dan. Wie kan man den fehler umgehen ?

    2. Die unique ID bleibt immer gleich aber "name" kan sich aendern. Ich habe keine routine gefunden wie ich den "name" des states aendern kann auser state loeschen und neu erstellen. Wie kan man einen namen updaten ?

    Jetzt kommt die naeste frage. Ich moechte alle werte ueberwachten und wen ein status dieser variablen sich aendert ein HTML commando uerbermitteln.

    Dazu brauche ich die ID + wert damit ich das HTML commando bauwen kan.

    Also, ich habe diese werte

    | ID | Name | Value |

    | 3 | Name 1 | 0 |

    | 5 | Name 2 | 0 |

    usw

    Jetzt wird ID 3 von 0 auf 1 geschalted, diesen event muss ich erkennen und dan brauche ich die ID + Value zum aufbauen des schalt commandos.

    Das gleiche wen eine andere ID sich aendert. Ich brauche immer nur den wert der geaender wurden und nicht alle variable in dieser gruppe.

    Zudem sollte es nur getriggerd werden wen der wert aus iobroker geupdated wird (variable kan durch MQTT oder iObroker aendern, trigger nur wen source iObroker)

    Kan mir jemand auf die sprunge helfen ?

    1 Reply Last reply
    0
    • DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      wrote on last edited by
      #2

      ok problem 1 habe ich geloest, wen trigger kommt dan will ich die ID vom geraet wissen welches ihn verursacht hat.

      var value = obj.id;
      

      Damit schreibe ich die ID in eine variable um sie spaeter in einer funtion nutzen zu koennen, 2 offenen sachen noch:

      1. Wie kan ich nach einen create state den namen wieder aendern

      2. Wie kan ich auf alle werte unnerhalb einer structur triggern lassen

      Waere toll wen jemand ne antwort hat, inzwischen suche/probieren ich mal weiter

      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #3

        @Dutchman:

        1. Wie kan ich nach einen create state den namen wieder aendern `
        var obj = getObject(id);
        obj.common.name = "neuer_name";
        setObject(obj);
        

        @Dutchman:

        1. Wie kan ich auf alle werte unnerhalb einer structur triggern lassen `
          Mit https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp in on().

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Reply Last reply
        0
        • HomoranH Do not disturb
          HomoranH Do not disturb
          Homoran
          Global Moderator Administrators
          wrote on last edited by
          #4

          @Dutchman:

          Waere toll wen jemand ne antwort hat, `
          Ich meine das war vor gar nicht so langer Zeit eine vergleichbare frage.

          Trigger mit mehreren on () oder so ähnlich.

          Ich meine damals hätte @Bluefox und noch jemand geantwortet.

          @pix, @ruhr70 oder @paul53

          Ihr Skriptprofis seid gefragt!

          Edit: paul53 ist schon da!

          Gruß

          Rainer

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Reply Last reply
          0
          • DutchmanD Offline
            DutchmanD Offline
            Dutchman
            Developer Most Active Administrators
            wrote on last edited by
            #5

            @paul53:

            @Dutchman:

            1. Wie kan ich nach einen create state den namen wieder aendern `
            var obj = getObject(id);
            obj.common.name = "neuer_name";
            setObject(obj);
            

            @Dutchman:

            1. Wie kan ich auf alle werte unnerhalb einer structur triggern lassen Mit [https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp) in on().

            danke dir Paul das hilft weiter auf jeden fall habe ich das mit dem namen hinbekommen.

            Regexp verstehe ich wie im beispiel ;

            on(/^ping\.0\.Iobroker-Server\.(192.xxx.xxx.xx1|192.xxx.xxx.xx2)
            

            Nur hierin sind ja auch werte definiert, bei mir sollte er triggern auf alles in dem baum (in die variabelen werden dynamisch erzeugt, kan diese also nicht vorab festlegen.)

            oder verstehe ich das jetzt falsch ?

            Kanst du mir eventueel auf die sprunge helfen diesen ON richtig um zu stellen ? (der RegExp ist bestimmt falsch da war ein versuch)

            on({id: "javascript.0.domoticz.7", change: "any", RegExp}, function (obj) {
                var value = obj.id;
                log (value);
            

            anstatt der ID 7 sollte er halt auf alle ID in dieser structur triggeren.

            Mit denm obj.id sehe ich ja welche ID getriggerd hat um dan das URL commando zu bauen

            Edit: Geschafft ! Die loesung war:

            on({id: RegExp("javascript.0.domoticz."), change: "any"}, function (obj) {
                var value = obj.id;
                log (value);
            });
            
            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            590

            Online

            32.5k

            Users

            81.7k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Home
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe