Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]was bedeutet (obj.oldState ? obj.oldState.val : "") | .state & .newState

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst]was bedeutet (obj.oldState ? obj.oldState.val : "") | .state & .newState

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 5 Kommentatoren 2.6k Aufrufe
  • Ä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.
  • F Offline
    F Offline
    Fitti
    schrieb am zuletzt editiert von
    #1

    Hi,

    1.) Ich bitte mal um eine kurze Erklärung (gerne auch für Dummys :) ) für folgende Syntax:

     if ((obj.oldState ? obj.oldState.val : "") == 0) {
    

    Ich kenne einfache Entweder-Oder Ausdrücke wie

    var Ergebnis = (document.Formular.Eingabe.value == '42') ? 'RICHTIG!' : 'FALSCH!';
    

    Das von oben aber schafft mich. Das erzeugt übrigens Blockly, wenn man "falls vorheriger Wert = 0" abfragt.

    Somit weiß ich nun, was diese Zeile macht => aber warum? Ich möchte also die Syntax an sich verstehen.

    2.) Ähnlich geht es mir beim Skripten mit den .state und .newState Aufrufen.

    Ich mache ja z. B. sowas:

    on({id:"hm-rpc.0.ABC1234567.1.VALUE",
        change: 'any'
        }, function (obj) {
             if (obj.state.val === 0 ) { 
             	...
    

    Jetzt finde ich aber immer wieder auch````
    if (obj.newState.val === 0 ) {

    .oldState ist klar.
    
    ****Aber was ist der Unterschied zwischen obj.state.val und obj.newState.val?****
    
    Den der .newState muss doch eigentlich identisch zum .state sein, oder?
    
    Wäre schön, wenn sich jemand kurz die Zeit nehmen könnte, um mir das genauer zu erklären.
    
    Danke im Voraus.
    
    Fitti

    "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
    Plural von Status ist auch Status!

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      Zu 1.) es bedeutet: wenn State.oldState gesetzt ist nimm den Wert (.val) den Status früher hatte ansonsten einen leeren String. Und das was da rauskommt wird mit 0 verglichen, wobei der leere String in denn auch 0 ist.

      Man kann dieses if-then-Else Konstrukt in Klammern Diele benutzen weil der Wert direkt rauskommt.

      2.) State und newState sind identisch. Steht so in der Doku zum JS Adapter.

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • F Offline
        F Offline
        Fitti
        schrieb am zuletzt editiert von
        #3

        Danke Dir!
        @apollon77:

        Zu 1.) es bedeutet: wenn State.oldState gesetzt ist nimm den Wert (.val) den Status früher hatte ansonsten einen leeren String. Und das was da rauskommt wird mit 0 verglichen, wobei der leere String in denn auch 0 ist.

        Man kann dieses if-then-Else Konstrukt in Klammern Diele benutzen weil der Wert direkt rauskommt. `
        Jetzt ist es mir klar. Super!
        @apollon77:

        2.) State und newState sind identisch. Steht so in der Doku zum JS Adapter. `
        Okay, dann bin ich zufrieden.

        Hatte extra in der "Doku" hier https://github.com/iobroker/ioBroker.ja … /README.md geschaut - aber nichts gefunden.

        Jetzt nochmal etwas weiter gesucht... In den Function steht es. Das ist natürlich auch logisch. Mein Fehler!

        https://github.com/ioBroker/ioBroker.ja ... some-state

        "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
        Plural von Status ist auch Status!

        1 Antwort Letzte Antwort
        0
        • JB_SullivanJ Offline
          JB_SullivanJ Offline
          JB_Sullivan
          schrieb am zuletzt editiert von
          #4

          Juhu - ist zwar schon ein krachen alter Thread, aber da mein englisch bescheiden ist und ich mit googlen nicht weiter komme, versuche ich es hier einmal.

          In einem Skript was ich benutzen möchte, wird der Zustand auf "true" abgefragt - if (obj.newState.val === true || obj.newState.val === "true")

          ist meine Vermutung richtig?

          Was muss man eingeben wenn man auf eine Änderung des Zeitstempel prüfen will? Ich kämpfe schon seit zwei Tagen damit dieses Skript zum laufen zu bringen - aber kenne / finde einfach nicht die passenden Befehle.

          ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

          1 Antwort Letzte Antwort
          0
          • Jey CeeJ Online
            Jey CeeJ Online
            Jey Cee
            Developer
            schrieb am zuletzt editiert von
            #5

            Ja, tue als boolscher wert oder String.

            obj.oldState.ts, obj.newState.ts

            Gesendet von meinem HTC U11 mit Tapatalk

            Persönlicher Support
            Spenden -> paypal.me/J3YC33

            1 Antwort Letzte Antwort
            0
            • JB_SullivanJ Offline
              JB_SullivanJ Offline
              JB_Sullivan
              schrieb am zuletzt editiert von
              #6

              Geht leider auch nicht :(

              Ich möchte doch nur das bei Änderung des Zeitstempel das VIS Bild wechselt. Ich werde noch irre.

              on("rflink.0.channels.Byron_1.SWITCH_05", function (obj){
              if (obj.oldState.ts, obj.newState.ts) {
              setState("vis.0.control.command", '{"instance": "FFFFFFFF", "data": "200_Webcam", "command": "changeView"}');
              setTimeout(function () {
              setState("vis.0.control.command", '{"instance": "FFFFFFFF", "data": "001_Main", "command": "changeView"}');
              }, 120000);
              }
              });
              

              ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

              1 Antwort Letzte Antwort
              0
              • Jey CeeJ Online
                Jey CeeJ Online
                Jey Cee
                Developer
                schrieb am zuletzt editiert von
                #7

                Sorry dachte es wäre klar das in JS === der Vergleich ist und du nur nicht weißt wie du an den Zeitstempel von alt und neu kommst.

                Also Ersatz mal das ',' durch '==='

                Gesendet von meinem HTC U11 mit Tapatalk

                Persönlicher Support
                Spenden -> paypal.me/J3YC33

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @JB_Sullivan:

                  Was muss man eingeben wenn man auf eine Änderung des Zeitstempel prüfen will? `
                  @JB_Sullivan:

                  on("rflink.0.channels.Byron_1.SWITCH_05", function (obj){
                  ```` `  
                  

                  triggert nur bei Wertänderung. Dabei wird auch der Zeitstempel aktualisiert. Die if-Abfrage ist also unnötig !

                  Wenn bei jeder Aktualisierung des Zeitstempels auch ohne Wertänderung getriggert werden soll, dann so:

                  var timer = null;
                  
                  on({id: "rflink.0.channels.Byron_1.SWITCH_05"}, function(obj) {
                     setState("vis.0.control.command", '{"instance": "FFFFFFFF", "data": "200_Webcam", "command": "changeView"}');
                     if(timer) clearTimeout(timer);
                     timer = setTimeout(function () {
                        setState("vis.0.control.command", '{"instance": "FFFFFFFF", "data": "001_Main", "command": "changeView"}');
                     }, 120000);
                  });
                  

                  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 Antwort Letzte Antwort
                  0
                  • JB_SullivanJ Offline
                    JB_SullivanJ Offline
                    JB_Sullivan
                    schrieb am zuletzt editiert von
                    #9

                    DANKE, DANKE, DANKE !!!!! Es funktioniert und ich kämpfe seit 3 Tagen damit :cry:

                    Ich Danke Euch vielmals. Es tut mir sehr leid wenn ich hier wie der Depp vor dem Herrn rum komme, aber ich muss mir alles mühsam erarbeiten, weil ich bis vor ein paar Wochen überhaupt keine Ahnung von all dem Smart Home Zeugs hatte.

                    (Leider) macht es sehr viel Spaß wenn man sieht wie dann alles funktioniert und man will immer mehr und es soll immer noch perfekter werden.

                    Ich habe halt das Problem, das es so gut wie keine Vorbildung in dem Bereich gibt (bin Koch von Beruf) und ich mir alles mühsam ergoogeln und anlesen muss. Das alles in Englisch ist, ist für mich nicht gerade hilfreich. Somit verstehe ich oftmals die ganzen Zusammenhänge nicht.

                    Wie ihr an diesem kleinen Beispiel gesehen habt, breche ich mir echt einen daran ab, weil mir das Hintergrundwissen fehlt. Die Profis unter Euch schütteln das mal eben so aus dem Ärmel.

                    Ich glaube die Schere der unwissenden so wie ich es einer bin und den absoluten Cracks geht in diesem Forum wirklich Megamässig auseinander. Schön das die Profis den Dummis dann immer wieder unter Arme greifen.

                    VIELEN HERZLICHEN DANK NOCHMAL DAFÜR !!!!

                    ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    638

                    Online

                    32.7k

                    Benutzer

                    82.4k

                    Themen

                    1.3m

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