Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gelöst: Obejtktdaten ändern

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Gelöst: Obejtktdaten ändern

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

      Hallo ich möchte gerne per Script Objektdaten ändern.


      {
      "_id": "hm-rega.0.22357",
      "type": "state",
      "common": {
      "name": "VarCam",
      "type": "number",
      "read": true,
      "write": true,
      "role": "state",
      "min": 1,
      "max": 10
      },
      "native": {
      "Name": "VarCam",
      "TypeName": "VARDP",
      "DPInfo": "",
      "ValueMin": 1,
      "ValueMax": 10,
      "ValueUnit": "",
      "ValueType": 4,
      "ValueSubType": 0,
      "ValueList": ""
      },
      "from": "system.adapter.hm-rega.0",
      "user": "system.user.admin",
      "ts": 1689559580418,
      "acl": {
      "object": 1636,
      "state": 1636,
      "owner": "system.user.admin",
      "ownerGroup": "system.group.administrator"
      }
      }

      const idrega ="hm-rega.0.22357";
      
      
      on({ id: idrega, change: "any" }, function (dp) {
          dp.common.write
          log("Auslöser: " + dp.common.write)
        
             //setState(dp.common.write, false) 
          });
      
      

      Ich möchte gerne die Eigenschaft"write" auf false setzen, so wie im Script, klappt es nicht
      Michael

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

        @michihorn sagte: Eigenschaft"write" auf false setzen

        const idrega ="hm-rega.0.22357";
          
        on({id: idrega}, function (dp) {
            const obj = getObject(dp.id);
            if(obj.common.write) {
               obj.common.write = false;
               setObject(dp.id, obj);
            }
        });
        
        T M 2 Replies Last reply Reply Quote 0
        • T
          TT-Tom @paul53 last edited by

          @paul53

          würde das auch funktionieren ?

          extendObject(idrega, {common: {write: false}});
          
          paul53 1 Reply Last reply Reply Quote 1
          • paul53
            paul53 @TT-Tom last edited by

            @tt-tom sagte: würde das auch funktionieren ?

            Ja.

            1 Reply Last reply Reply Quote 1
            • M
              michihorn @paul53 last edited by michihorn

              @paul53 Leider ändern sich die Objektdaten nicht. Zumindest in UI unter Objekt bearbeiten, steht immer noch true
              Screenshot 2023-07-17 182634.png

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

                @michihorn sagte: Leider ändern sich die Objektdaten nicht.

                Wurde denn seitdem getriggert?

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

                  @paul53 Ja

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

                    @michihorn
                    In der Konfiguration der Javascript-Instanz ist "setObject" freigegeben?

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

                      @paul53 Das war der Fehler. Danke

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        michihorn @michihorn last edited by

                        @michihorn sagte in Gelöst: Obejtktdaten ändern:

                        @paul53 Das war der Fehler. Danke

                        Hätte da noch ne Frage zum Thema. Ich habe keine Benutzer angelegt arbeite also als Admin.
                        Den Datenpunkt den ich nun "write= false" setzen kann, wird aber wider erwarten beschrieben. Das passiert per Motioneye wie folgt:

                        http://192.168.178.1xxx:80xx/set/hm-rega.0.22357?value=1&prettyPrint
                        

                        ich hätte angenommen das für die Zeit in der "write= false" ist , dort auch keine Änderungen geschrieben werden

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          TT-Tom @michihorn last edited by

                          @michihorn

                          wer hat den da reingeschrieben, kannst du erkennen wenn der Mauszeiger drüber steht

                          28042b3e-9d9b-43ad-acd2-fcf49f9210e5-image.png

                          Adapter können in ihr eignen DP schreiben, nur andere können nicht.

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            michihorn @TT-Tom last edited by

                            @tt-tom Unbenannt.jpg

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              TT-Tom @michihorn last edited by TT-Tom

                              @michihorn

                              da wirst du keine Chance haben, wie gesagt der Adapter schreibt in seine eigenen DP. Readolnly heisst nur für andere lesen.

                              Was ist eigentlich das Grundproblem? Mach ein neuen Thread auf vielleicht gibt es dafür eine Lösung.

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                michihorn @TT-Tom last edited by

                                @tt-tom Ich habe im um mein Haus Kameras Installiert, die Kameras laufen über Motioneye und schicken je nach Bewegungserkennung eine Nummer auf den Datenpunkt. Von dort aus wird im einem basic -iframe8 das Bild der entsprechenden Kamera angezeigt. Wenn nun eine Bewegung an der Haustür erkannt wird, wird Bild 3 gezeigt, sollte nun auch eine Bewegung im Garten erkannt werden, wird die "4" gesendet und Bild 4 wird angezeigt. Ich möchte bei Bewegungserkennung an der Haustür alle anderen möglichen Umschaltungen irgnorieren , zumindest für 1 Minute oder so. Daher der Gedanke den DP temporär "schreib zu schützen"

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  TT-Tom @michihorn last edited by

                                  @michihorn

                                  spontan würde ich einen eigenen DP erstellen und die Zahlen mittels Script weiterreichen und bei 3 halt ein timeout von x.sek da zwischen, das die nächste Änderung erst dann weitergereicht wird.

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    michihorn @TT-Tom last edited by

                                    @tt-tom Ja das war jetzt auch meine Idee, bin gerade dabei das um zu setzen

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      TT-Tom @michihorn last edited by

                                      @michihorn viel Erfolg 👍

                                      M 1 Reply Last reply Reply Quote 1
                                      • M
                                        michihorn @TT-Tom last edited by michihorn

                                        @tt-tom sagte in Gelöst: Obejtktdaten ändern:

                                        @michihorn viel Erfolg 👍

                                        So klappt es:
                                        CamNr wird von Motioneye beschrieben
                                        CamView ist zur Stuerung des basis-Iframe8
                                        sperre ist meine Krücke zum zeitlichen Verriegeln

                                        const idCamView = "0_userdata.0.System.CamView";
                                        const idCamNr = "0_userdata.0.System.CamNr";
                                        const idsperre = "0_userdata.0.System.Sperre"
                                        
                                        on({ id: idCamNr, change: "any" }, function (dp) {
                                            if ((dp.state.val) == 3) {
                                                setState(idsperre, true)
                                                setState(idCamView, 3)
                                                setTimeout(function () { setState(idsperre, false) }, 20000);
                                            } else if ((getState(idsperre).val == false) && (dp.state.val != 3)) {
                                                setState(idCamView, dp.state.val)
                                            }
                                        });
                                        
                                        on({ id: idsperre, val: false }, function (dp) {
                                            setState(idCamView, getState(idCamNr).val)
                                        });
                                        

                                        Geht sicher auch eleganter. 😉

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        878
                                        Online

                                        31.7k
                                        Users

                                        79.8k
                                        Topics

                                        1.3m
                                        Posts

                                        javascript
                                        3
                                        18
                                        301
                                        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