Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. Scripting für ioBroker: Wenn dies, dann das best practicse?

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.7k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    685

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

Scripting für ioBroker: Wenn dies, dann das best practicse?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
scripting
14 Beiträge 4 Kommentatoren 1.1k Aufrufe 2 Beobachtet
  • Ä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.
  • BravestarrB Bravestarr

    Hallo liebes Forum,

    ich habe bislang mein Heim viel über IFTTT ohne iobroker konfiguriert. Nun bin wegen Alexa für Gira dank https://marc.tv/synology-iobroker-dank-node-red-mit-alexa-steuern/ bei ioBroker gelandet und würde gerne mehr direkt über den ioBroker machen.

    Was ist hier die best practice für Aufgaben wie "Wenn die Luftfeuchtigkeit über den Meross Sensor bei > 90% liegt, mach bitte das Licht des Hue Adapters im Badezimmer rot und mache die Heizung von Homatic IP für 10 min auf max.

    Ich kann programmieren (Javascript und PHP), ich kenne NodeRed aber wie bilde ich solche Dinge ab? Gibt es da etwas eingebautes oder einen Scripting Adapeter im Kern von iObroker?

    da_WoodyD Online
    da_WoodyD Online
    da_Woody
    Most Active
    schrieb am zuletzt editiert von
    #4

    @Bravestarr oder du siehst dir mal den smartcontrol adapter an.

    gruß vom Woody
    HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

    BravestarrB 1 Antwort Letzte Antwort
    0
    • da_WoodyD da_Woody

      @Bravestarr oder du siehst dir mal den smartcontrol adapter an.

      BravestarrB Offline
      BravestarrB Offline
      Bravestarr
      schrieb am zuletzt editiert von
      #5

      Danke!

      Ich habe nun ein ganz simples Script geschrieben welches einen Wert eines Objektes überwacht um einen anderen zu setzen. Denn ich habe ja nicht automatisch ein event wie "Wert ist größer als X" was geworfen wird. Anders als bei einem Button.

      Das versuche ich nun alle 30 Sek auszuführen. Ich weiß nicht, ob es so klappt. Ich hätte erwartet, dass der Value alle 30 sekunden im iobroker log steht. Tut es nämlich nicht. Macht man das so oder kann/sollte ich das eleganter über "on" machen?

      '*/30 * * * * *'
      getState('meross.0.1912184550583426280548e1e913c738.120027D1B3B3.latestHumidity', function (error, state) {
          console.log(state.val);
          if(state.val > 90) {
              setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',35);
          } else {
              setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',5);
          }
      });
      
      HomoranH BravestarrB 2 Antworten Letzte Antwort
      0
      • BravestarrB Bravestarr

        Danke!

        Ich habe nun ein ganz simples Script geschrieben welches einen Wert eines Objektes überwacht um einen anderen zu setzen. Denn ich habe ja nicht automatisch ein event wie "Wert ist größer als X" was geworfen wird. Anders als bei einem Button.

        Das versuche ich nun alle 30 Sek auszuführen. Ich weiß nicht, ob es so klappt. Ich hätte erwartet, dass der Value alle 30 sekunden im iobroker log steht. Tut es nämlich nicht. Macht man das so oder kann/sollte ich das eleganter über "on" machen?

        '*/30 * * * * *'
        getState('meross.0.1912184550583426280548e1e913c738.120027D1B3B3.latestHumidity', function (error, state) {
            console.log(state.val);
            if(state.val > 90) {
                setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',35);
            } else {
                setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',5);
            }
        });
        
        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #6

        @Bravestarr sagte in Scripting für ioBroker: Wenn dies, dann das best practicse?:

        Denn ich habe ja nicht automatisch ein event wie "Wert ist größer als X" was geworfen wird

        nicht direkt, aber dass bei dem Datenpunkt etwas geändert wird.
        Dann prüfen ob die Änderung im Vergleich zum alten Wert >60 ist und gut ist

        kein Support per PN! - Fragen im Forum stellen -
        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        BravestarrB 1 Antwort Letzte Antwort
        0
        • BravestarrB Bravestarr

          Danke!

          Ich habe nun ein ganz simples Script geschrieben welches einen Wert eines Objektes überwacht um einen anderen zu setzen. Denn ich habe ja nicht automatisch ein event wie "Wert ist größer als X" was geworfen wird. Anders als bei einem Button.

          Das versuche ich nun alle 30 Sek auszuführen. Ich weiß nicht, ob es so klappt. Ich hätte erwartet, dass der Value alle 30 sekunden im iobroker log steht. Tut es nämlich nicht. Macht man das so oder kann/sollte ich das eleganter über "on" machen?

          '*/30 * * * * *'
          getState('meross.0.1912184550583426280548e1e913c738.120027D1B3B3.latestHumidity', function (error, state) {
              console.log(state.val);
              if(state.val > 90) {
                  setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',35);
              } else {
                  setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',5);
              }
          });
          
          BravestarrB Offline
          BravestarrB Offline
          Bravestarr
          schrieb am zuletzt editiert von
          #7

          Ich war dumm. So geht das, oder?

          schedule('*/30 * * * * *', function () {
            getState('meross.0.1912184550583426280548e1e913c738.120027D1B3B3.latestHumidity', function (error, state) {
              log(state.val);
              if(state.val > 90) {
                  setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',35);
              } else {
                  setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',5);
              }
          });
          });
          
          HomoranH 1 Antwort Letzte Antwort
          0
          • BravestarrB Bravestarr

            Ich war dumm. So geht das, oder?

            schedule('*/30 * * * * *', function () {
              getState('meross.0.1912184550583426280548e1e913c738.120027D1B3B3.latestHumidity', function (error, state) {
                log(state.val);
                if(state.val > 90) {
                    setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',35);
                } else {
                    setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',5);
                }
            });
            });
            
            HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #8

            @Bravestarr sagte in Scripting für ioBroker: Wenn dies, dann das best practicse?:

            So geht das, oder?

            ich kann nur Blöcke schieben ;-)

            Du brauchst keinen schedule, in js gibt es etwas wie on....
            damit prüfst du den Datenpunkt ob er sich ändert

            kein Support per PN! - Fragen im Forum stellen -
            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            1 Antwort Letzte Antwort
            0
            • HomoranH Homoran

              @Bravestarr sagte in Scripting für ioBroker: Wenn dies, dann das best practicse?:

              Denn ich habe ja nicht automatisch ein event wie "Wert ist größer als X" was geworfen wird

              nicht direkt, aber dass bei dem Datenpunkt etwas geändert wird.
              Dann prüfen ob die Änderung im Vergleich zum alten Wert >60 ist und gut ist

              BravestarrB Offline
              BravestarrB Offline
              Bravestarr
              schrieb am zuletzt editiert von
              #9

              @Homoran Brauche ich dann keinen cron mehr? Also wenn ich so was mache wie das hier wäre besser und nix mehr mit dem scheduler?

              on('meross.0.1912184550583426280548e1e913c738.120027D1B3B3.latestHumidity', function (obj) {
                  
                  if(obj.val > 90) {
                      setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',35);
                  } else {
                      setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',5);
                  }
              });
              
              paul53P 1 Antwort Letzte Antwort
              0
              • BravestarrB Bravestarr

                @Homoran Brauche ich dann keinen cron mehr? Also wenn ich so was mache wie das hier wäre besser und nix mehr mit dem scheduler?

                on('meross.0.1912184550583426280548e1e913c738.120027D1B3B3.latestHumidity', function (obj) {
                    
                    if(obj.val > 90) {
                        setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',35);
                    } else {
                        setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',5);
                    }
                });
                
                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #10

                @Bravestarr sagte:

                if(obj.val > 90) {

                Ändere in

                    if(obj.state.val > 90) {
                

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                BravestarrB 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @Bravestarr sagte:

                  if(obj.val > 90) {

                  Ändere in

                      if(obj.state.val > 90) {
                  
                  BravestarrB Offline
                  BravestarrB Offline
                  Bravestarr
                  schrieb am zuletzt editiert von Bravestarr
                  #11

                  @paul53
                  Geht leider nicht mit obj.state.val nicht. Ich habe ein Mini-Beispiel das ja gehen müsste. Wenn ich die rechte Lampe am Bett per Hue App oder Alexa ein- oder auzsschalte, muss doch das event feuern. Tut es aber nicht. Das log bleibt leer.

                  on('hue.0.Bett_rechts.on', function (obj) {
                    log(obj.state.val);
                    log("Lichtstatus hat sich geändert!");
                  });
                  
                  paul53P 1 Antwort Letzte Antwort
                  0
                  • BravestarrB Bravestarr

                    @paul53
                    Geht leider nicht mit obj.state.val nicht. Ich habe ein Mini-Beispiel das ja gehen müsste. Wenn ich die rechte Lampe am Bett per Hue App oder Alexa ein- oder auzsschalte, muss doch das event feuern. Tut es aber nicht. Das log bleibt leer.

                    on('hue.0.Bett_rechts.on', function (obj) {
                      log(obj.state.val);
                      log("Lichtstatus hat sich geändert!");
                    });
                    
                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #12

                    @Bravestarr
                    Der Wert des Datenpunktes mit der ID 'hue.0.Bett_rechts.on' muss sich erst ändern, damit getriggert wird.

                    @Bravestarr sagte in Scripting für ioBroker: Wenn dies, dann das best practicse?:

                    Das log bleibt leer.

                    Hast Du auch mal im Tab "Log" nachgeschaut ?
                    Das Script hast Du aktiviert und hoffentlich nicht in der Gruppe "global" erstellt ?

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                    BravestarrB 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @Bravestarr
                      Der Wert des Datenpunktes mit der ID 'hue.0.Bett_rechts.on' muss sich erst ändern, damit getriggert wird.

                      @Bravestarr sagte in Scripting für ioBroker: Wenn dies, dann das best practicse?:

                      Das log bleibt leer.

                      Hast Du auch mal im Tab "Log" nachgeschaut ?
                      Das Script hast Du aktiviert und hoffentlich nicht in der Gruppe "global" erstellt ?

                      BravestarrB Offline
                      BravestarrB Offline
                      Bravestarr
                      schrieb am zuletzt editiert von Bravestarr
                      #13

                      @paul53

                      ist in "common". Und ja, es ist aktiv. Und ich habe das Licht doch an und aus gemacht. Also müsste es sich doch verändern. Zumindest tut es das im Object Tree

                      BravestarrB 1 Antwort Letzte Antwort
                      0
                      • BravestarrB Bravestarr

                        @paul53

                        ist in "common". Und ja, es ist aktiv. Und ich habe das Licht doch an und aus gemacht. Also müsste es sich doch verändern. Zumindest tut es das im Object Tree

                        BravestarrB Offline
                        BravestarrB Offline
                        Bravestarr
                        schrieb am zuletzt editiert von Bravestarr
                        #14

                        @Bravestarr ok, geht doch. Nur ist da eine Verzögerung. Aber danke für die Hilfe! =) Ihr habt mir sehr geholfen!

                        Hier das finale Script falls es jemand braucht. Wenn die Luftfeuchtigkeit im Bad über 90% ist (jemand duscht), Handtuchwärme an. Sonst aus.

                        on('meross.0.1912184550583426280548e1e913c738.120027D1B3B3.latestHumidity', function (obj) {
                            log(obj.state.val);
                            if(obj.state.val > 90) {
                                setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',35);
                            } else {
                                setState('meross.0.1912184550583426280548e1e913c738.01009500.custom',5);
                            }
                        });
                        
                        1 Antwort Letzte Antwort
                        0

                        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                        Registrieren Anmelden
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        383

                        Online

                        32.9k

                        Benutzer

                        83.0k

                        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