Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Object.<anonymous> finden?

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Object.<anonymous> finden?

    This topic has been deleted. Only users with topic management privileges can see it.
    • haus-automatisierung
      haus-automatisierung Developer Most Active @SMS last edited by haus-automatisierung

      Kannst Du mal bitte das komplette Script zeigen? Da fehlt ja definitiv noch Code. Im Screenshot erkennt man ja einen weiteren Trigger usw.

      @sms sagte in Object.<anonymous> finden?:

      @codierknecht Ich habe das Objekt deshalb extra auf "gemischt" gestellt, dachte das funktioniert so.

      Das kann man schon so machen, aber schön/sauber ist das nicht. Ist zumindest nicht das Problem hier für die Fehlermeldung.

      SMS Codierknecht 2 Replies Last reply Reply Quote 0
      • SMS
        SMS @haus-automatisierung last edited by

        var Uhrzeit, Auto_Ein_bei, Steckdose_Dauerein, Hand, Wartezeit_Verbindungsaufbau, Wartezeit, Wartezeit3, Wartezeit2;
        
        
        on({ id: [].concat(['homeconnect.0.013060393307000289.programs.active.options.BSH_Common_Option_StartInRelative']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          setState('0_userdata.0.Küche.Siemens_Spülmaschine_Startzeit_Stunden' /* Siemens Spülmaschine Startzeit Stunden */, (getState('homeconnect.0.013060393307000289.programs.active.options.BSH_Common_Option_StartInRelative').val / 3600), true);
          setState('0_userdata.0.Küche.Siemens_Spülmaschine_Startzeit_Minuten' /* Siemens Spülmaschine Startzeit Minuten */, (getState('homeconnect.0.013060393307000289.programs.active.options.BSH_Common_Option_StartInRelative').val / 60), true);
        });
        on({ id: [].concat(['sonoff.0.Spülmaschine.alive']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : '') == false) {
            setState('0_userdata.0.Küche.SD_Spülmaschine_am_Leben' /* SD Spülmaschine am Leben */, false, true);
          } else {
            setState('0_userdata.0.Küche.SD_Spülmaschine_am_Leben' /* SD Spülmaschine am Leben */, true, true);
          }
        });
        schedule("0,30 * * * *", async () => {
          setState('0_userdata.0.Küche.Siemens_Spülmaschine_Verbrauch' /* Siemens_Spülmaschine_Verbrauch */, (getState('sonoff.0.Spülmaschine.ENERGY_Total').val - 405.155), true);
        });
        on({ id: [].concat(['homeconnect.0.013060393307000289.status.BSH_Common_Status_OperationState']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : '') == 'BSH.Common.EnumType.OperationState.Run') {
            setState('0_userdata.0.Küche.Spülgänge' /* Spülgänge */, (getState('0_userdata.0.Küche.Spülgänge').val + 1), true);
          }
        });
        on({ id: [].concat(['homeconnect.0.013060393307000289.status.BSH_Common_Status_OperationState']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : '') == 'BSH.Common.EnumType.OperationState.Ready') {
            setStateDelayed('0_userdata.0.Küche.Siemens_Spülmaschine_Durchnittskosten' /* Siemens Spülmaschine Durchnittskosten */, (getState('0_userdata.0.Küche.Spülmaschine_Verbrauchskosten').val / getState('0_userdata.0.Küche.Spülgänge').val), true, 60000, false);
          }
        });
        schedule("0,30 * * * *", async () => {
          setState('0_userdata.0.Küche.Spülmaschine_Verbrauchskosten' /* Spülmaschine Verbrauchskosten */, (getState('0_userdata.0.Küche.Siemens_Spülmaschine_Verbrauch').val * getState('javascript.0.Meine_Datenpunkte.Strom.Kosten.Arbeitspreis_/kWh_Bezug_Energieversorger').val), true);
        });
        on({ id: [].concat(['homeconnect.0.013060393307000289.programs.active.options.BSH_Common_Option_RemainingProgramTime']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          setState('0_userdata.0.Küche.Siemens_Spülmaschine_Restlaufzeit' /* Siemens Spülmaschine Restlaufzeit */, (getState('homeconnect.0.013060393307000289.programs.active.options.BSH_Common_Option_RemainingProgramTime').val / 60), true);
        });
        scheduleById('0_userdata.0.Haushaltsgeraete.01_Uhrzeit_Spuelmaschine' /* 01_Uhrzeit Spuelmaschine */, async () => {
          if (Uhrzeit) {
            setState('alias.0.Küche.Spülmaschine.SET' /* Set-Spülmaschine */, true);
          }
        });
        on({ id: [].concat(['0_userdata.0.Küche.Siemens_Spülmaschine_Auto_ein_bei']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : '') == 1) {
            Auto_Ein_bei = 1500;
          } else if ((obj.state ? obj.state.val : '') == 2) {
            Auto_Ein_bei = 2000;
          } else if ((obj.state ? obj.state.val : '') == 3) {
            Auto_Ein_bei = 3000;
          } else if ((obj.state ? obj.state.val : '') == 4) {
            Auto_Ein_bei = 4000;
          } else if ((obj.state ? obj.state.val : '') == 0) {
            Auto_Ein_bei = false;
          }
          setState('0_userdata.0.Küche.Auto_ein_bei' /* Auto ein bei */, Auto_Ein_bei, true);
        });
        on({ id: [].concat(['0_userdata.0.Küche.Spülmaschine_Ein/Aus']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          Uhrzeit = false;
          setState('0_userdata.0.Küche.Siemens_Spülmaschine_Auto' /* Siemens Spülmaschine Auto */, false, true);
          Hand = false;
          if ((obj.state ? obj.state.val : '') == 3) {
            Uhrzeit = true;
          } else if ((obj.state ? obj.state.val : '') == 2) {
            setState('0_userdata.0.Küche.Siemens_Spülmaschine_Auto' /* Siemens Spülmaschine Auto */, true, true);
          } else if ((obj.state ? obj.state.val : '') == 1) {
            Hand = true;
            (() => { if (Auto_Ein_bei) { clearInterval(Auto_Ein_bei); Auto_Ein_bei = null; }})();
            setState('alias.0.Küche.Spülmaschine.SET' /* Set-Spülmaschine */, true);
          } else if ((obj.state ? obj.state.val : '') == 0) {
            setState('alias.0.Küche.Spülmaschine.SET' /* Set-Spülmaschine */, false);
          }
        });
        on({ id: [].concat(['0_userdata.0.Küche.Spülmaschine_Ein/Aus']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          Steckdose_Dauerein = false;
          if ((obj.state ? obj.state.val : '') == 4) {
            Steckdose_Dauerein = true;
            setState('alias.0.Küche.Spülmaschine.SET' /* Set-Spülmaschine */, true);
          }
        });
        on({ id: '0_userdata.0.Strom.Stromerzeugung_gesamt' /* Stromerzeugung gesamt */, change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if (getState('0_userdata.0.Küche.Siemens_Spülmaschine_Auto').val == true) {
            if ((obj.state ? obj.state.val : '') >= getState('0_userdata.0.Küche.Auto_ein_bei').val && getState('0_userdata.0.Strom.Batterie.Batterie___60%').val == true) {
              setState('alias.0.Küche.Spülmaschine.SET' /* Set-Spülmaschine */, true);
              setStateDelayed('0_userdata.0.Küche.Siemens_Spülmaschine_Auto_ein_bei' /* Siemens Spülmaschine Auto ein bei */, false, true, 120000, false);
            }
          }
        });
        on({ id: [].concat(['alias.0.Küche.Spülmaschine.SET']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : '') && getState('0_userdata.0.Küche.Spülmaschine_Ein/Aus').val != 1 && getState('0_userdata.0.Küche.Spülmaschine_Ein/Aus').val != 4) {
            (() => { if (Wartezeit) { clearInterval(Wartezeit); Wartezeit = null; }})();
            Wartezeit_Verbindungsaufbau = 90;
            setState('0_userdata.0.Küche.Siemens_Spülmaschine_Verbindungszeit' /* Siemens Spülmaschine Verbindungszeit */, Wartezeit_Verbindungsaufbau, true);
            Wartezeit = setInterval(async () => {
              Wartezeit_Verbindungsaufbau = (typeof Wartezeit_Verbindungsaufbau === 'number' ? Wartezeit_Verbindungsaufbau : 0) + -1;
              setState('0_userdata.0.Küche.Siemens_Spülmaschine_Verbindungszeit' /* Siemens Spülmaschine Verbindungszeit */, Wartezeit_Verbindungsaufbau, true);
              if (Wartezeit_Verbindungsaufbau <= 0 && getState('alias.0.Küche.Spülmaschine.SET').val == true) {
                (() => { if (Wartezeit) { clearInterval(Wartezeit); Wartezeit = null; }})();
                setState('homeconnect.0.013060393307000289.programs.active.BSH_Common_Root_ActiveProgram' /* BSH_Common_Root_ActiveProgram */, 'Dishcare.Dishwasher.Program.Eco50');
                setState('homeconnect.0.013060393307000289.settings.BSH_Common_Setting_PowerState' /* Energiezustand */, 'BSH.Common.EnumType.OperationState.On');
                if (obj.id && obj?.state && !obj.state.ack) {
                  await setStateAsync(obj.id, { val: obj.state.val, ack: true });
                }
              }
            }, 1000);
          }
          if ((obj.state ? obj.state.val : '') && getState('0_userdata.0.Küche.Spülmaschine_Ein/Aus').val == 1) {
            (() => { if (Wartezeit3) { clearInterval(Wartezeit3); Wartezeit3 = null; }})();
            Wartezeit_Verbindungsaufbau = 90;
            setState('0_userdata.0.Küche.Siemens_Spülmaschine_Verbindungszeit' /* Siemens Spülmaschine Verbindungszeit */, Wartezeit_Verbindungsaufbau, true);
            Wartezeit3 = setInterval(async () => {
              Wartezeit_Verbindungsaufbau = (typeof Wartezeit_Verbindungsaufbau === 'number' ? Wartezeit_Verbindungsaufbau : 0) + -1;
              setState('0_userdata.0.Küche.Siemens_Spülmaschine_Verbindungszeit' /* Siemens Spülmaschine Verbindungszeit */, Wartezeit_Verbindungsaufbau, true);
              if (Wartezeit_Verbindungsaufbau <= 0) {
                (() => { if (Wartezeit3) { clearInterval(Wartezeit3); Wartezeit3 = null; }})();
              }
            }, 1000);
          }
          if ((obj.state ? obj.state.val : '') && getState('0_userdata.0.Küche.Spülmaschine_Ein/Aus').val == 4) {
            (() => { if (Wartezeit2) { clearInterval(Wartezeit2); Wartezeit2 = null; }})();
            Wartezeit_Verbindungsaufbau = 90;
            setState('0_userdata.0.Küche.Siemens_Spülmaschine_Verbindungszeit' /* Siemens Spülmaschine Verbindungszeit */, Wartezeit_Verbindungsaufbau, true);
            Wartezeit2 = setInterval(async () => {
              Wartezeit_Verbindungsaufbau = (typeof Wartezeit_Verbindungsaufbau === 'number' ? Wartezeit_Verbindungsaufbau : 0) + -1;
              setState('0_userdata.0.Küche.Siemens_Spülmaschine_Verbindungszeit' /* Siemens Spülmaschine Verbindungszeit */, Wartezeit_Verbindungsaufbau, true);
              if (Wartezeit_Verbindungsaufbau <= 0) {
                (() => { if (Wartezeit2) { clearInterval(Wartezeit2); Wartezeit2 = null; }})();
              }
            }, 1000);
          }
        });
        on({ id: [].concat(['homeconnect.0.013060393307000289.status.BSH_Common_Status_OperationState']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : '') == 'BSH.Common.EnumType.OperationState.Run' || (obj.state ? obj.state.val : '') == 'BSH.Common.EnumType.OperationState.Ready') {
            setStateDelayed('0_userdata.0.Küche.Siemens_Spülmaschine_läuft' /* Siemens_Spülmaschine_läuft */, true, true, 30000, false);
          }
        });
        on({ id: [].concat(['0_userdata.0.Küche.Siemens_Spülmaschine_Restlaufzeit']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : '') <= 0 && getState('0_userdata.0.Küche.Siemens_Spülmaschine_läuft').val == true && getState('0_userdata.0.Küche.Siemens_Spülmaschine_Restlaufzeit').val <= 0) {
            setState('0_userdata.0.Küche.Siemens_Spülmaschine_läuft' /* Siemens_Spülmaschine_läuft */, false, true);
            setState('0_userdata.0.Küche.Spülmaschine_Ein/Aus' /* Spülmaschine Ein/Aus */, 0, true);
            setStateDelayed('alias.0.Küche.Spülmaschine.SET' /* Set-Spülmaschine */, false, 300000, false);
          }
        });
        
        1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @haus-automatisierung last edited by

          @haus-automatisierung sagte in Object.<anonymous> finden?:

          Das kann man schon so machen

          OT: Ich hatte mal einen Kollegen, der seinen Code eher so "hingerotzt" hat.
          Für den hatte ich mir Spezialkleidung besorgt:
          f88760af-bf71-4e22-a264-66f008ebb0be-image.png
          Was soll ich sagen ... der war nicht mehr lange "Kollege" 😁

          SMS 1 Reply Last reply Reply Quote 0
          • SMS
            SMS @Codierknecht last edited by

            @codierknecht Ich habe ja nicht gesagt das es perfekt ist. Das war für mich die Lösung damit da nicht 0 steht. Ich könnte natürlich auch einen Zahlenwert reinschreiben, den ich eh nie erreichen werde.

            paul53 Codierknecht 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @SMS last edited by

              @sms sagte: Das war für mich die Lösung damit da nicht 0 steht.

              Wie wäre es mit Strings?

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

                @paul53 Wie müsste es dann aussehen? Trotzdem Zahlenwerte und true und false gemischt?

                paul53 1 Reply Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @SMS last edited by

                  @sms sagte in Object.<anonymous> finden?:

                  Ich habe ja nicht gesagt das es perfekt ist

                  Deswegen ja auch "OT". War nicht an Dich adressiert.

                  Ich könnte natürlich auch einen Zahlenwert reinschreiben, den ich eh nie erreichen werde.

                  Wäre eine Möglichkeit.
                  Das Problem ist ja hier, dass eine rein Logische Aussage zusammen mit quantitativen Aussagen in einem einzigen DP zusammen abgebildet werden sollen.

                  @paul53 sagte in Object.<anonymous> finden?:

                  Wie wäre es mit Strings?

                  Fände ich fast noch unschöner.
                  Ich würde einen bestimmten - unter normalen Umständen niemals erreichbaren - Zahlenwert bevorzugen.

                  Oder aber z.B. -1 und diesen Sonderfall nochmal explizit prüfen, bevor da etwas losgetreten wird.
                  Alternative wäre ein Objekt. Mit "On/Off" als Bool und den Zahlenwerten als Number. Fände ich am saubersten.

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

                    @sms sagte: Wie müsste es dann aussehen?

                    Blockly_temp.JPG

                    Datenpunkt-Typ: "string".

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

                      @paul53 werde ich mal ausprobieren

                      1 Reply Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @Codierknecht last edited by

                        @codierknecht sagte in Object.<anonymous> finden?:

                        Alternative wäre ein Objekt

                        In etwa so:

                        7437b5c3-672e-45b2-b181-e34d0bcc7c50-image.png
                        Da hätte man Bool'sche und Zahlenwerte sauber getrennt.
                        Kann man jetzt noch weiter optimieren, so dass das Objekt zur Laufzeit nur noch im RAM existiert und man das nicht ständig neu einlesen muss.

                        SMS 1 Reply Last reply Reply Quote 0
                        • SMS
                          SMS @Codierknecht last edited by

                          @codierknecht Guten Morgen,

                          ich habe mal die Variablen rausgemacht und etwas umprogrammiert, jetzt kommt die Meldung nicht mehr.

                          Du hast zwar eine schöne Anleitung geschrieben, nur leider finde ich den Fall nicht den ich brauche:

                          Funktioniert das hier so:
                          52ecbabc-b937-4591-b584-624b517fda6c-grafik.png

                          Ich möchte, wenn alle Stufen aus sind, das die Meldung "Heizstab eingeschaltet" weg geht.

                          Oder ist es so besser:
                          d8ae21eb-f363-4301-8a17-f8220da780ed-grafik.png

                          Oder eine der beiden Varianten und bei "wurde geändert" "ist unwahr" auswählen und das "nicht" weg machen?

                          Danke!

                          Codierknecht 1 Reply Last reply Reply Quote 0
                          • Codierknecht
                            Codierknecht Developer Most Active @SMS last edited by

                            @sms
                            Variante 1 auf keinen Fall.
                            An einen Trigger kommen Objekt-ID's - kein bool'scher Ausdruck!

                            Wir sind hier aber jetzt plötzlich bei einer völlig anderen Anwendung, oder?
                            Was willst Du erreichen?

                            SMS 1 Reply Last reply Reply Quote 0
                            • SMS
                              SMS @Codierknecht last edited by SMS

                              @codierknecht Ja andere Anwendung. Da ich aber gesehen habe das du eine Anleitung https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps geschrieben hast und man dort nicht antworten soll, dachte ich ich schreibe hier bevor ich ein neues Thema aufmache.

                              Hier soll, sobald ein Heizstab angeht die Meldung "Heizstab eingeschaltet" ausgegeben werden:
                              f848c27b-fac4-4c80-9e8b-ca3ba57e4523-grafik.png

                              Sind alle Stufen aus, soll die Meldung wieder weg gehen.

                              haus-automatisierung Homoran Codierknecht 3 Replies Last reply Reply Quote 0
                              • haus-automatisierung
                                haus-automatisierung Developer Most Active @SMS last edited by

                                @sms sagte in Object.<anonymous> finden?:

                                Hier soll, sobald ein Heizstab angeht die Meldung "Heizstab eingeschaltet" ausgegeben werden:

                                Dann musst Du auf das Zahnrad vor "Falls Objekte" klicken und mehr Trigger auf die andere Seite ziehen. Dann dort mehrere Objekt IDs angeben. Der Oder-Baustein hat dort nichts zu suchen.

                                Homoran SMS 2 Replies Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @SMS last edited by Homoran

                                  @sms im Trigger niemals Logik!
                                  nur IDs

                                  der Block WERT bezieht sich auf den Wert des Triggernden Datenpunkts.

                                  was genau willst du mit dem Wert?

                                  1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @haus-automatisierung last edited by Homoran

                                    @haus-automatisierung aber

                                    @sms sagte in Object.<anonymous> finden?:

                                    Sind alle Stufen aus, soll die Meldung wieder weg gehen.

                                    wird damit doch nie abgefangen!
                                    Dazu braucht's eine komplexere Logik

                                    1 Reply Last reply Reply Quote 0
                                    • SMS
                                      SMS @haus-automatisierung last edited by SMS

                                      @haus-automatisierung Das hier ist dann eine ODER Verknüpfung?

                                      7f07ecc3-7f3f-4412-b5e7-cda0f9f773af-grafik.png

                                      Sprich, sobald ein Objekt ID den Wert "true" sendet wird das Ergebnis ebenfalls "true" (in meinem Fall)

                                      Aber wie bekomme ich eine UND Verknüpfung hin?

                                      Homoran paul53 2 Replies Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @SMS last edited by

                                        @sms sagte in Object.<anonymous> finden?:

                                        Aber wie bekomme ich eine UND Verknüpfung hin?

                                        nicht im Trigger!

                                        @homoran sagte in Object.<anonymous> finden?:

                                        Dazu braucht's eine komplexere Logik

                                        zusätzlich auch ein "sonst" oder "sonst falls" um

                                        @sms sagte in Object.<anonymous> finden?:

                                        Sind alle Stufen aus, soll die Meldung wieder weg gehen.

                                        zu realisieren

                                        SMS 1 Reply Last reply Reply Quote 0
                                        • SMS
                                          SMS @Homoran last edited by

                                          @homoran Ich probiere es mal so:

                                          27be1f58-d765-40e3-a6a9-37e398bfb0c9-grafik.png

                                          Homoran 1 Reply Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @SMS last edited by

                                            @sms sagte in Object.<anonymous> finden?:

                                            @homoran Ich probiere es mal so:

                                            27be1f58-d765-40e3-a6a9-37e398bfb0c9-grafik.png

                                            fast!

                                            jetzt noch statt WERT, dieses Konstrukt
                                            Screenshot_20250425-092512_Firefox.jpg

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            501
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            51
                                            593
                                            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