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. Subscribe/on Optimierung

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Subscribe/on Optimierung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 4 Kommentatoren 1.3k 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

    Ich frage immer mehr Statusänderungen ab. Z. B. so:

    /*Alarm extern EIN execute*/
    on({
        id:"hm-rega.0.1234.ProgramExecute",
        change: 'any'
    }, function () {
        setState("VIS.ExternAlarmZustandsanzeige", 1); 
        log ("Setze EAZA auf 1", 'info');
        setState (idSayIt, "Der externe Alarm wurde aktiviert!");
    });
    
    /*externer_alarm_an*/
    on({
        id:"hm-rega.0.11111",
        change: 'gt'
    }, function () {
        setState("VIS.ExternAlarmZustandsanzeige", 2); 
        log ("Setze EAZA auf 2", 'info');
        setState (idSayIt, "Der externe Alarm ist nun scharf!");
    });
    
    /*externer_alarm_aus*/
    on({
        id:"hm-rega.0.11111",
        change: 'lt'
    }, function () {
        setState("VIS.ExternAlarmZustandsanzeige", 0); 
        log ("Setze EAZA auf 0", 'info');
        setState (idSayIt, "Der externe Alarm wurde deaktiviert!");
    });
    
    

    Ich frage mich, ob ich das nicht eleganter - und vor allem auch Ressourcenschonender machen kann?

    Z. B. die letzten beiden on's greifen ja auf die selbe CCU Variable zurück.

    Denn irgendwann, befürchte ich, habe ich 100 von den On's

    Was sagen die Profis?

    Viele Grüße,

    Fitti
    3435_screenshot__21_.png

    "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
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #2

      Hallo Fitti,
      @Fitti:

      Ich frage mich, ob ich das nicht eleganter - und vor allem auch Ressourcenschonender machen kann?

      Z. B. die letzten beiden on's greifen ja auf die selbe CCU Variable zurück. `
      ich kann dir nicht sagen, wieviel CPU-Last das so braucht. Ich habe ziemlich viele davon und merke keinen Geschweindigkeitsverlust verglichen mit Zeiten, als ich noch wenige hatte.

      Die Abfrage von Rega Daten ist nicht optimal. Der Rega Adapter aktualisisert nicht permanent, sondern in einem (einstellbaren) Intervall. Daher kommen die Daten eher schubweise.

      Langfristig solltest du darüber nachdenken, die gesamte Logik in ioBroker zu portieren und die CCU nur noch als Hardwareschnittstelle zu den Homematic-Komponenten und Wartungszugang (zB für Direktverknüpfungen) sehen.

      Ich habe das im ersten Quartal 2015 auch Schritt für Schritt, Programm für Programm gemacht. Ich habe CCU-Programme zuerst in ioBroker nachgebaut und dann erstmal deaktiviert. Als ich völlig sicher war, dass alles lief, habe ich sie gelöscht. Ich muss meine CCU nicht mehr neustarten. Nur bei FW-Updates und gelegentlich nach dem Anlernen von Komponenten. Das war früher leider nicht so. IoBroker bietet die Möglichkeit, durch einen weitere Javascript-Instanz eine Testumgebung für neue Skripte zu nutzen. Das macht das ganze System so stabil, auch wenn man viel probiert und entwickelt. Versuch das mal auf einer CCU :lol:

      Also versuch mal, deine Alarmanlage in ioBroker Javascript nachzubauen. Wir helfen gern weiter.

      Grüße,

      Pix

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

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

        @Fitti:

        Ich frage mich, ob ich das nicht eleganter - und vor allem auch Ressourcenschonender machen kann? `
        Was die CPU-Last betrifft, ist Deine Lösung sicherlich optimal; bezüglich des Speicherverbrauchs eher nicht, aber Speicher ist heutzutage meist ausreichend vorhanden, denn er kostet fast nichts mehr.
        @pix:

        Langfristig solltest du darüber nachdenken, die gesamte Logik in ioBroker zu portieren und die CCU nur noch als Hardwareschnittstelle zu den Homematic-Komponenten und Wartungszugang (zB für Direktverknüpfungen) sehen. `
        So sehe ich das auch. Programmerweiterungen für die RegaHss per ioBroker sehe ich nicht als sinnvoll an.

        Nach und nach kann man die CCU-Programme nach ioBroker portieren. Per ioBroker-Javascript sollte besser nur auf die HM-RPC-Schnittstelle(n) zugegriffen werden.
        @Fitty:

        …die letzten beiden on's greifen ja auf die selbe CCU Variable zurück. `
        Ob man das sinnvoll mit einem Auslöser machen kann, hängt vom Datenpunkttyp ab ("boolean" oder "number") und falls "number" davon, wie welche Werte verändert werden.

        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
        • F Offline
          F Offline
          Fitti
          schrieb am zuletzt editiert von
          #4

          Danke erst einmal für die Antworten! ~~![](</s><URL url=)<link_text text="http://www.smiliesuche.de/smileys/grins ... s-0016.gif">http://www.smiliesuche.de/smileys/grinsende/grinsende-smilies-0016.gif</link_text>" />

          Habe "nur" 1GB auf der Banane - nach längerer Laufzeit ist dann nur noch 340MB frei. Mir ist nicht bewusst, ob man hier RAM erweitern kann? Ne, denke nicht.

          Welche Hardware nutzt ihr denn so? Im Moment läuft die CCU2 sehr gut. Trotz der knapp 80 Skripte und 170 Aktoren.

          Mit ioBroker hatte ich mal hier und da schon ein Problem. Ich schiebe es dann auf die Banane. Netzteil war auch schon ein Sorgenkind. Ich glaube aber, dass der Speicher irgendwann raus rennt. Dann ist das System einfach nicht mehr erreichbar.

          @paul53:

          Ob man das sinnvoll mit einem Auslöser machen kann, hängt vom Datenpunkttyp ab ("boolean" oder "number") und falls "number" davon, wie welche Werte verändert werden. `
          In diesem Fall ist es boolean.

          Dann wäre der Code so ungefähr? (ist von unterwegs mal zusammengeschrieben, wie ich es mir denke. Kann gerade nicht testen - geht aber um das prinzipielle)

          /*externer_alarm_an/aus*/
          on({
              id:"hm-rega.0.11111",
              change: 'any'
          }, function (extern_alarm_wert) {
              if (extern_alarm_wert === true ) {
                  setState("VIS.ExternAlarmZustandsanzeige", 2); 
                  log ("Setze EAZA auf 2", 'info');
                  setState (idSayIt, "Der externe Alarm ist nun scharf!");
              } else {
                  setState("VIS.ExternAlarmZustandsanzeige", 0); 
                  log ("Setze EAZA auf 0", 'info');
                  setState (idSayIt, "Der externe Alarm wurde deaktiviert!");
             }
          });
          
          

          Viele Grüße,

          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
          • HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #5

            Hallo Fitti,

            die meisten werden den RasPi2 nutzen. Der hat auch nur 1GB RAM. Ich habe bei Cubietruck und Cubox i4 mit je 2GB RAM den subjektiven Eindruck, dass es dort runder läuft, auch wenn die nur eine dualcore CPU besitzen.

            Das RAM könnte also tatsächlich eine Rolle spielen. Erweitern kann man es IMHO bei keinem einplatinencomputer. Wenn dann das swappen anfängt, hängt alles an der Geschwindigkeit und Qualität der swap Partition.

            Gruß

            Rainer

            Gesendet von meinem LIFETAB_S785X mit Tapatalk

            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 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @Fitti:

              In diesem Fall ist es boolean.

              Dann wäre der Code so ungefähr? `
              Nicht ganz., sondern:

              /*externer_alarm_an/aus*/
              on("hm-rega.0.11111", function (dp) {
                  if (dp.newState.val) {
                      setState("VIS.ExternAlarmZustandsanzeige", 2);
                      log ("Setze EAZA auf 2", 'info');
                      setState (idSayIt, "Der externe Alarm ist nun scharf!");
                  } else {
                      setState("VIS.ExternAlarmZustandsanzeige", 0);
                      log ("Setze EAZA auf 0", 'info');
                      setState (idSayIt, "Der externe Alarm wurde deaktiviert!");
                 }
              });
              

              Wenn das Programm bezüglich Speicherverbrauch optimiert werden soll, dann etwa so:

              var wert;
              var text;
              
              function ausgabe() {
                  setState("VIS.ExternAlarmZustandsanzeige", wert);
                  log ("Setze EAZA auf " + wert, 'info');
                  setState (idSayIt, "Der externe Alarm " + text);
              }
              
              /*Alarm extern EIN execute*/
              on({id:"hm-rega.0.1234.ProgramExecute",
                    change: 'any'
                  }, function () {
                  wert = 1;
                  text = "wurde aktiviert!";
                  ausgabe();
              });
              
              /*externer_alarm_an/aus*/
              on("hm-rega.0.11111", function (dp) {
                  if (dp.newState.val) {
                      wert = 2;
                      text = "ist nun scharf!";
                  } else {
                      wert = 0;
                      text = "wurde deaktiviert!";
                  }
                  ausgabe();
              });
              
              

              Eine echte Speicherersparnis hat man aber wohl nur, wenn die Scripte compiliert werden.

              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
              • F Offline
                F Offline
                Fitti
                schrieb am zuletzt editiert von
                #7

                @paul53:

                Nicht ganz., sondern:

                … `

                Danke. Werde das heute Abend mal ausprobieren. ~~![](</s><URL url=)<link_text text="http://www.smiliesuche.de/smileys/zwink ... s-0022.gif">http://www.smiliesuche.de/smileys/zwinkernde/zwinkernde-smilies-0022.gif</link_text>" />

                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
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                660

                Online

                32.6k

                Benutzer

                82.1k

                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