Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Javascript zur Temperaturüberwachung [gelöst]

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Javascript zur Temperaturüberwachung [gelöst]

Scheduled Pinned Locked Moved JavaScript
18 Posts 3 Posters 1.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    tomily
    wrote on last edited by
    #5

    Ja, das wäre vollkommen ausreichend.

    Am elegantesten wäre es natürlich, wenn man oben die Datenpunkte in Variabeln schreiben könnte, die überwacht werden sollen. Ich habe aber keine Ahnung, wie ich diese dann weiter verarbeiten kann/soll.

    Sorry für die plumpe Fragen, bin wirklich ein Scripting-Anfänger!

    Beispiel:

    var idTemp1 = "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
    var idTemp2 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
    var idTemp3 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
    
    paul53P 1 Reply Last reply
    0
    • T tomily

      Ja, das wäre vollkommen ausreichend.

      Am elegantesten wäre es natürlich, wenn man oben die Datenpunkte in Variabeln schreiben könnte, die überwacht werden sollen. Ich habe aber keine Ahnung, wie ich diese dann weiter verarbeiten kann/soll.

      Sorry für die plumpe Fragen, bin wirklich ein Scripting-Anfänger!

      Beispiel:

      var idTemp1 = "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
      var idTemp2 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
      var idTemp3 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
      
      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #6

      @tomily
      Das geht mit einem Array im on().

      on([idTemp1, idTemp2, idTemp3], function(dp) {
      

      Wenn Du die ID an die Mail übergeben willst, dann verwende anstelle von idTemp dp.id oder den Namen dp.common.name. Den Wert enthält dp.state.val.

      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 Reply Last reply
      0
      • T Offline
        T Offline
        tomily
        wrote on last edited by
        #7

        Geil! Danke! Bin begeistert von der schnellen und kompetenten Hilfe.
        Klappt super. Bin trotzdem frech und frage auch noch nach meiner dritten Frage:

        Hast du noch eine Idee, wie ich den Emailinhalt mehrzeilig und mit Betreff gestalten kann?

        Beim ausprobieren ist mir noch folgendes eingefallen:

        Von dp.id kommt nun natürlich "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature" zurück.
        Ich kann das lesen, da ich weiß was es bedeutet. Schöner wäre aber eine Beschriftung. Könnte ich der Variable auch einen Namen mit geben, der dann in die Email übergeben wird?
        Bespiel:

        var temp1 = "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
        var temp1-label = "HDD1"
        var temp2 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
        var temp2-label = "HDD2"
        
        // Beispiel "dp.id.label" .... stimmt natürlich nicht :=()
        msg = "Temperatur (" + dp.id.label + ") über Treshold (" + treshold + " °C)! Aktueller Wert: " + (dp.state.val) + " °C";
        
        
        paul53P AlCalzoneA 2 Replies Last reply
        0
        • T tomily

          Geil! Danke! Bin begeistert von der schnellen und kompetenten Hilfe.
          Klappt super. Bin trotzdem frech und frage auch noch nach meiner dritten Frage:

          Hast du noch eine Idee, wie ich den Emailinhalt mehrzeilig und mit Betreff gestalten kann?

          Beim ausprobieren ist mir noch folgendes eingefallen:

          Von dp.id kommt nun natürlich "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature" zurück.
          Ich kann das lesen, da ich weiß was es bedeutet. Schöner wäre aber eine Beschriftung. Könnte ich der Variable auch einen Namen mit geben, der dann in die Email übergeben wird?
          Bespiel:

          var temp1 = "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
          var temp1-label = "HDD1"
          var temp2 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
          var temp2-label = "HDD2"
          
          // Beispiel "dp.id.label" .... stimmt natürlich nicht :=()
          msg = "Temperatur (" + dp.id.label + ") über Treshold (" + treshold + " °C)! Aktueller Wert: " + (dp.state.val) + " °C";
          
          
          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #8

          @tomily sagte:

          mehrzeilig

          Zeilenschaltung macht man gewöhnlich mit "\n".

          @tomily sagte in Javascript zur Temperaturüberwachung:

          mit Betreff

          sendTo('email.0', {
              subject: 'mein Betreff',
              text:    msg
          });
          

          @tomily sagte in Javascript zur Temperaturüberwachung:

          Könnte ich der Variable auch einen Namen mit geben, der dann in die Email übergeben wird?

          Der Name des Datenpunktes "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature" kann im Tab "Objekte" beliebig geändert werden, z.B. in "Temperatur HDD1".

          msg = dp.common.name + " über Treshold (" + treshold + " °C)!\nAktueller Wert: " + dp.state.val + " °C";
          

          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

          T 1 Reply Last reply
          0
          • T tomily

            Geil! Danke! Bin begeistert von der schnellen und kompetenten Hilfe.
            Klappt super. Bin trotzdem frech und frage auch noch nach meiner dritten Frage:

            Hast du noch eine Idee, wie ich den Emailinhalt mehrzeilig und mit Betreff gestalten kann?

            Beim ausprobieren ist mir noch folgendes eingefallen:

            Von dp.id kommt nun natürlich "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature" zurück.
            Ich kann das lesen, da ich weiß was es bedeutet. Schöner wäre aber eine Beschriftung. Könnte ich der Variable auch einen Namen mit geben, der dann in die Email übergeben wird?
            Bespiel:

            var temp1 = "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
            var temp1-label = "HDD1"
            var temp2 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
            var temp2-label = "HDD2"
            
            // Beispiel "dp.id.label" .... stimmt natürlich nicht :=()
            msg = "Temperatur (" + dp.id.label + ") über Treshold (" + treshold + " °C)! Aktueller Wert: " + (dp.state.val) + " °C";
            
            
            AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            wrote on last edited by
            #9

            @tomily sagte in Javascript zur Temperaturüberwachung:

            mehrzeilig

            z.B. mit Backticks, die können auch wunderbar Variablen enthalten:

            const wert = 25;
            const foo = `Dies
            ist
            ein mehrzeiliger
            String!
            Der Wert ist ${wert}.`;
            

            foo enthält den folgenden Text:

            Dies
            ist
            ein mehrzeiliger
            String!
            Der Wert ist 25.
            

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Reply Last reply
            0
            • paul53P paul53

              @tomily sagte:

              mehrzeilig

              Zeilenschaltung macht man gewöhnlich mit "\n".

              @tomily sagte in Javascript zur Temperaturüberwachung:

              mit Betreff

              sendTo('email.0', {
                  subject: 'mein Betreff',
                  text:    msg
              });
              

              @tomily sagte in Javascript zur Temperaturüberwachung:

              Könnte ich der Variable auch einen Namen mit geben, der dann in die Email übergeben wird?

              Der Name des Datenpunktes "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature" kann im Tab "Objekte" beliebig geändert werden, z.B. in "Temperatur HDD1".

              msg = dp.common.name + " über Treshold (" + treshold + " °C)!\nAktueller Wert: " + dp.state.val + " °C";
              
              T Offline
              T Offline
              tomily
              wrote on last edited by
              #10

              @paul53

              Da hätte ich auch selbst drauf kommen können. Das funktioniert und wäre eine gute Lösund.
              Leider wird das Feld vom ioBroker-Adapter nach dem neu Laden wieder überschreiben mit einem default.
              Die Anpassung der Namensfelder und das verwenden von dp.common.name wäre super. Bekomme ich den Adapter dazu, das Feld nicht wieder zu überschreiben?

              Dafür ist "\n" perfekt für den Zeilenumbruch.

              @AlCalzone
              Danke auch für deinen Hinweis. Das wirkt als Skripting-Anfänger für mich recht mächtig, werde es aber auch ausprobieren :-)

              Mercie

              paul53P 1 Reply Last reply
              0
              • T tomily

                @paul53

                Da hätte ich auch selbst drauf kommen können. Das funktioniert und wäre eine gute Lösund.
                Leider wird das Feld vom ioBroker-Adapter nach dem neu Laden wieder überschreiben mit einem default.
                Die Anpassung der Namensfelder und das verwenden von dp.common.name wäre super. Bekomme ich den Adapter dazu, das Feld nicht wieder zu überschreiben?

                Dafür ist "\n" perfekt für den Zeilenumbruch.

                @AlCalzone
                Danke auch für deinen Hinweis. Das wirkt als Skripting-Anfänger für mich recht mächtig, werde es aber auch ausprobieren :-)

                Mercie

                paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #11

                @tomily sagte:

                Leider wird das Feld vom ioBroker-Adapter nach dem neu Laden wieder überschreiben

                Vom Adapter ioBroker.synology ?
                Dann verwende common.desc (Beschreibung). Oder wird das auch überschrieben ?

                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 Reply Last reply
                0
                • T Offline
                  T Offline
                  tomily
                  wrote on last edited by
                  #12

                  So ein Mist. Leider wird das Feld genau so auf Default zurück gesetzt wie der Name :-/

                  paul53P 1 Reply Last reply
                  0
                  • T tomily

                    So ein Mist. Leider wird das Feld genau so auf Default zurück gesetzt wie der Name :-/

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #13

                    @tomily sagte:

                    Leider wird das Feld genau so auf Default zurück gesetzt wie der Name

                    Dann probiere mal native.name.

                    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 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      tomily
                      wrote on last edited by tomily
                      #14

                      DANKE! Ich danke euch vielmals. Habe viel dazu gelernt und nun funktioniert es genau so wie ich es wollte.
                      Den native.name kannte ich noch nicht. Mir war nicht bewusst, dass man dort noch Felder hinzufügen kann. Diese werden nicht überschrieben und können verwendet werden.

                      Hier mein Ergebnis:

                      var temp1 = "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
                      var temp2 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
                      var temp3 = "synology.1.DiskStationManager.hdd_info.laufwerk_1.temperature";
                      var temp4 = "synology.1.DiskStationManager.hdd_info.laufwerk_2.temperature";
                      var temp5 = "synology.1.DiskStationManager.hdd_info.laufwerk_3.temperature";
                      var temp6 = "synology.1.DiskStationManager.hdd_info.laufwerk_4.temperature";
                      
                      var threshold = 33;
                      
                      on([temp1, temp2, temp3, temp4, temp5, temp6], function(dp) {
                           if (dp.state.val >= threshold && dp.oldState.val < threshold) {
                                  //Email Temperatur ÜBER Threshold
                                  sendTo("email", {
                                          subject: ("Temperatur " + dp.native.name + " " + dp.state.val + " °C"),
                                          text: dp.native.name + " ÜBER Threshold!\nThreshold: " + threshold + " °C\nAktueller Wert: " + (dp.state.val) + " °C"
                                          })
                              } else if ( dp.state.val <= threshold - 0.5 && dp.oldState.val > threshold - 0.5) {
                                  //Email Temperatur UNTER Threshold
                                  sendTo("email", {
                                          subject: ("Temperatur " + dp.native.name + " " + dp.state.val + " °C"),
                                          text: dp.native.name + " UNTER Threshold!\nThreshold: " + threshold + " °C\nAktueller Wert: " + (dp.state.val) + " °C"
                                          })
                              }   
                          });
                      
                      paul53P 1 Reply Last reply
                      0
                      • T tomily

                        DANKE! Ich danke euch vielmals. Habe viel dazu gelernt und nun funktioniert es genau so wie ich es wollte.
                        Den native.name kannte ich noch nicht. Mir war nicht bewusst, dass man dort noch Felder hinzufügen kann. Diese werden nicht überschrieben und können verwendet werden.

                        Hier mein Ergebnis:

                        var temp1 = "synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
                        var temp2 = "synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature";
                        var temp3 = "synology.1.DiskStationManager.hdd_info.laufwerk_1.temperature";
                        var temp4 = "synology.1.DiskStationManager.hdd_info.laufwerk_2.temperature";
                        var temp5 = "synology.1.DiskStationManager.hdd_info.laufwerk_3.temperature";
                        var temp6 = "synology.1.DiskStationManager.hdd_info.laufwerk_4.temperature";
                        
                        var threshold = 33;
                        
                        on([temp1, temp2, temp3, temp4, temp5, temp6], function(dp) {
                             if (dp.state.val >= threshold && dp.oldState.val < threshold) {
                                    //Email Temperatur ÜBER Threshold
                                    sendTo("email", {
                                            subject: ("Temperatur " + dp.native.name + " " + dp.state.val + " °C"),
                                            text: dp.native.name + " ÜBER Threshold!\nThreshold: " + threshold + " °C\nAktueller Wert: " + (dp.state.val) + " °C"
                                            })
                                } else if ( dp.state.val <= threshold - 0.5 && dp.oldState.val > threshold - 0.5) {
                                    //Email Temperatur UNTER Threshold
                                    sendTo("email", {
                                            subject: ("Temperatur " + dp.native.name + " " + dp.state.val + " °C"),
                                            text: dp.native.name + " UNTER Threshold!\nThreshold: " + threshold + " °C\nAktueller Wert: " + (dp.state.val) + " °C"
                                            })
                                }   
                            });
                        
                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #15

                        @tomily sagte:

                        Den native.name kannte ich noch nicht.

                        Den gibt es normalerweise auch nicht. Wenn aber common immer wieder vollständig überschrieben wird, kann man dahin ausweichen.
                        Bitte das Thema in der Überschrift des ersten Beitrags als [gelöst] markieren.

                        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 Reply Last reply
                        0
                        • T Offline
                          T Offline
                          tomily
                          wrote on last edited by
                          #16

                          Besten Dank und vorab ein schönes Wochenende.

                          Kann den Betreff leider nicht mehr ändern. Wie macht Ihr das normal?

                          paul53P 1 Reply Last reply
                          0
                          • T tomily

                            Besten Dank und vorab ein schönes Wochenende.

                            Kann den Betreff leider nicht mehr ändern. Wie macht Ihr das normal?

                            paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #17

                            @tomily sagte:

                            Kann den Betreff leider nicht mehr ändern.

                            Im ersten Beitrag auf die 3 Punkte rechts unten: Bearbeiten auswählen. Dann die Überschrift editieren.

                            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 Reply Last reply
                            0
                            • T Offline
                              T Offline
                              tomily
                              wrote on last edited by tomily
                              #18

                              Versteck gefunden :-)
                              Mercie und schönes Wochenende!

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              369

                              Online

                              32.7k

                              Users

                              82.3k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Home
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe