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. JavaScript
  5. [Gelöst] Änderung von Statusberichten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Gelöst] Änderung von Statusberichten

Geplant Angeheftet Gesperrt Verschoben JavaScript
14 Beiträge 2 Kommentatoren 831 Aufrufe 2 Watching
  • Ä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.
  • D Offline
    D Offline
    DocGame
    schrieb am zuletzt editiert von
    #5

    Danke erstmal,
    ich habe den Wert mal auf <99 geändert, da ich ja eine Liste aller Sensoren will.
    Fehler zeigt er keine an. Ich warte mal gespannt bis 20.00Uhr.
    Wenn das funktioniert wäre mein nächstes Nahziel nicht die Zeitgesteuerte Erstellung sondern bei Ausführung.

    paul53P 1 Antwort Letzte Antwort
    0
    • D DocGame

      Danke erstmal,
      ich habe den Wert mal auf <99 geändert, da ich ja eine Liste aller Sensoren will.
      Fehler zeigt er keine an. Ich warte mal gespannt bis 20.00Uhr.
      Wenn das funktioniert wäre mein nächstes Nahziel nicht die Zeitgesteuerte Erstellung sondern bei Ausführung.

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #6

      @DocGame sagte:

      nicht die Zeitgesteuerte Erstellung sondern bei Ausführung

      on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt);
      

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

        Hab mich schon gefreut, dass um 20.00 Uhr Telegram angesprungen ist. War aber nur das Script vom ersten Post (Wird auch um 20.00 Uhr verschickt).
        Unter deinem Script kommt im Status unten nur:
        19:11:29.266 info javascript.0 Start javascript script.js.Bot-Scripts.BatterieListe_Telegram
        19:11:29.266 info javascript.0 script.js.Bot-Scripts.BatterieListe_Telegram: registered 0 subscriptions and 1 schedule
        20:00:00.041 error javascript.0 at script.js.Bot-Scripts.BatterieListe_Telegram:23:10
        20:00:00.041 error javascript.0 at Object.<anonymous> (script.js.Bot-Scripts.BatterieListe_Telegram:13:12)

        Mit der einzelnen Scriptzeile kann ich leider nichts anfangen, da ich gar nicht weiss wo ich sie rein kopieren soll.
        Mit Blockly komme ich ja einigermassen klar aber JS ist mir leider noch zu fremd, bei meinen Wünschen hier aber sicherlich die erste Wahl..

        Ich befürchte, das ich so leider nicht zum Ziel komme.
        Danke für deine Programmzeilen. Da fehlt wohl doch noch einiges bei meinem Verständniss.

        paul53P 1 Antwort Letzte Antwort
        0
        • D DocGame

          Hab mich schon gefreut, dass um 20.00 Uhr Telegram angesprungen ist. War aber nur das Script vom ersten Post (Wird auch um 20.00 Uhr verschickt).
          Unter deinem Script kommt im Status unten nur:
          19:11:29.266 info javascript.0 Start javascript script.js.Bot-Scripts.BatterieListe_Telegram
          19:11:29.266 info javascript.0 script.js.Bot-Scripts.BatterieListe_Telegram: registered 0 subscriptions and 1 schedule
          20:00:00.041 error javascript.0 at script.js.Bot-Scripts.BatterieListe_Telegram:23:10
          20:00:00.041 error javascript.0 at Object.<anonymous> (script.js.Bot-Scripts.BatterieListe_Telegram:13:12)

          Mit der einzelnen Scriptzeile kann ich leider nichts anfangen, da ich gar nicht weiss wo ich sie rein kopieren soll.
          Mit Blockly komme ich ja einigermassen klar aber JS ist mir leider noch zu fremd, bei meinen Wünschen hier aber sicherlich die erste Wahl..

          Ich befürchte, das ich so leider nicht zum Ziel komme.
          Danke für deine Programmzeilen. Da fehlt wohl doch noch einiges bei meinem Verständniss.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #8

          @DocGame sagte:

          20:00:00.041 error javascript.0 at script.js.Bot-Scripts.BatterieListe_Telegram:23:10
          20:00:00.041 error javascript.0 at Object.<anonymous> (script.js.Bot-Scripts.BatterieListe_Telegram:13:12)

          Damit kann ich auch nichts anfangen, denn Zeilen 13 und 23 in meinem Skript können keine Fehlermeldungen erzeugen. Zeile 4 enthält einen Fehler (habe ich oben korrigiert): Ändere bitte Info in Infos.

          @DocGame sagte in Änderung von Statusberichten:

          Mit der einzelnen Scriptzeile kann ich leider nichts anfangen, da ich gar nicht weiss wo ich sie rein kopieren soll.

          Sie ersetzt die letzte Zeile (22) anstelle von schedule().

          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

          D 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @DocGame sagte:

            20:00:00.041 error javascript.0 at script.js.Bot-Scripts.BatterieListe_Telegram:23:10
            20:00:00.041 error javascript.0 at Object.<anonymous> (script.js.Bot-Scripts.BatterieListe_Telegram:13:12)

            Damit kann ich auch nichts anfangen, denn Zeilen 13 und 23 in meinem Skript können keine Fehlermeldungen erzeugen. Zeile 4 enthält einen Fehler (habe ich oben korrigiert): Ändere bitte Info in Infos.

            @DocGame sagte in Änderung von Statusberichten:

            Mit der einzelnen Scriptzeile kann ich leider nichts anfangen, da ich gar nicht weiss wo ich sie rein kopieren soll.

            Sie ersetzt die letzte Zeile (22) anstelle von schedule().

            D Offline
            D Offline
            DocGame
            schrieb am zuletzt editiert von DocGame
            #9

            @paul53
            Hier der Code:

            const sensors = $('channel[state.id=mihome.0.devices.*.percent]');
            
             function lowBatt() {
               var Info = [];       
               var InfoMessage = 'Batterien zu tauschen:\n';
               sensors.each(function(id, i) {
                  if(getState(id).val < 99) {
                     var pathname = id.substring(0, id.indexOf(".percent"));
                     var wholeName = getObject(pathname).common.name;
                     var name = wholeName.substring(wholeName.indexOf("- ") + 1, wholeName.length); 
                     Infos.push(name);
                  }
               });
               if(Infos.length) {
                  for(let i = 0; i < Infos.length; i++) {
                     InfoMessage = InfoMessage + Infos[i] + '\n';
                  }  
                  sendTo("telegram", "send", {user: 'Ralf', text: InfoMessage});
               }
            }
            
            schedule('32 22 * * *', lowBatt); 
            

            und hier die Fehlermeldung:

            22:30:04.357 info javascript.0 Start javascript script.js.Bot-Scripts.BatterieListe_Telegram
            22:30:04.358 info javascript.0 script.js.Bot-Scripts.BatterieListe_Telegram: registered 0 subscriptions and 1 schedule
            22:32:00.036 error javascript.0 at script.js.Bot-Scripts.BatterieListe_Telegram:11:10
            22:32:00.036 error javascript.0 at Object.lowBatt (script.js.Bot-Scripts.BatterieListe_Telegram:6:12)

            Beim ersetzen der Zeile 22 durch

            on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); 
            

            tut sich beim Ausführen des Scripts leider gar nichts. Ich stehe etwas auf dem Schlauch..

            Werde jetzt aber mal ins Bett gehen (der Wecker droht :smiley: )

            paul53P 1 Antwort Letzte Antwort
            0
            • D DocGame

              @paul53
              Hier der Code:

              const sensors = $('channel[state.id=mihome.0.devices.*.percent]');
              
               function lowBatt() {
                 var Info = [];       
                 var InfoMessage = 'Batterien zu tauschen:\n';
                 sensors.each(function(id, i) {
                    if(getState(id).val < 99) {
                       var pathname = id.substring(0, id.indexOf(".percent"));
                       var wholeName = getObject(pathname).common.name;
                       var name = wholeName.substring(wholeName.indexOf("- ") + 1, wholeName.length); 
                       Infos.push(name);
                    }
                 });
                 if(Infos.length) {
                    for(let i = 0; i < Infos.length; i++) {
                       InfoMessage = InfoMessage + Infos[i] + '\n';
                    }  
                    sendTo("telegram", "send", {user: 'Ralf', text: InfoMessage});
                 }
              }
              
              schedule('32 22 * * *', lowBatt); 
              

              und hier die Fehlermeldung:

              22:30:04.357 info javascript.0 Start javascript script.js.Bot-Scripts.BatterieListe_Telegram
              22:30:04.358 info javascript.0 script.js.Bot-Scripts.BatterieListe_Telegram: registered 0 subscriptions and 1 schedule
              22:32:00.036 error javascript.0 at script.js.Bot-Scripts.BatterieListe_Telegram:11:10
              22:32:00.036 error javascript.0 at Object.lowBatt (script.js.Bot-Scripts.BatterieListe_Telegram:6:12)

              Beim ersetzen der Zeile 22 durch

              on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); 
              

              tut sich beim Ausführen des Scripts leider gar nichts. Ich stehe etwas auf dem Schlauch..

              Werde jetzt aber mal ins Bett gehen (der Wecker droht :smiley: )

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #10

              @DocGame sagte:

              Hier der Code:

              Enthält noch den Fehler in Zeile 4 (siehe vorheriger Post). Bitte ändern in

                 var Infos = [];
              

              @DocGame sagte in Änderung von Statusberichten:

              tut sich beim Ausführen des Scripts leider gar nichts.

              Damit tut sich auch nur was, wenn sich ein Batterie-Wert von >= 30 % auf < 30 % ändert. Um die Funktion lowBatt() bei Skriptstart zu testen, rufe die Funktion bei Skriptstart auf:

              on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); // Triggert bei Erreichen des Grenzwertes
              lowBatt(); // Aufruf bei Skriptstart für Test
              

              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

              D 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @DocGame sagte:

                Hier der Code:

                Enthält noch den Fehler in Zeile 4 (siehe vorheriger Post). Bitte ändern in

                   var Infos = [];
                

                @DocGame sagte in Änderung von Statusberichten:

                tut sich beim Ausführen des Scripts leider gar nichts.

                Damit tut sich auch nur was, wenn sich ein Batterie-Wert von >= 30 % auf < 30 % ändert. Um die Funktion lowBatt() bei Skriptstart zu testen, rufe die Funktion bei Skriptstart auf:

                on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); // Triggert bei Erreichen des Grenzwertes
                lowBatt(); // Aufruf bei Skriptstart für Test
                
                D Offline
                D Offline
                DocGame
                schrieb am zuletzt editiert von
                #11

                @paul53
                Mit den Änderungen hat es jetzt geklappt. wenn ich oben 99 reinschreibe kommen alle Sensoren wie gewünscht. Ich habe etwas gebastelt, bekomme aber die Prozentzahl nicht rein. Es soll ja nur eine Übersichtsliste generiert werden mit allen Sensoren und den aktuellen Batteriewerten. Das pushen bei unterschreiten wäre nur ein "Nice to have", da mein altes Script ja läuft und in diesem Fall einspringen würde. Wenn man diesen Part rausnehmen würde wäre das ganze ja deutlich schlanker. Irgendwie bin ich mit meinen %-Werten allerdings auf dem Holzweg. Hier einmal der geänderte Code(Zeile 16):

                const sensors = $('channel[state.id=mihome.0.devices.*.percent]');
                
                 function lowBatt() {
                   var Infos = [];       
                   var InfoMessage = 'Batterien zu tauschen:\n';
                   sensors.each(function(id, i) {
                      if(getState(id).val < 80) {
                         var pathname = id.substring(0, id.indexOf(".percent"));
                         var wholeName = getObject(pathname).common.name;
                         var name = wholeName.substring(wholeName.indexOf("- ") + 1, wholeName.length); 
                         Infos.push(name);
                      }
                   });
                   if(Infos.length) {
                      for(let i = 0; i < Infos.length; i++) {
                         InfoMessage = InfoMessage + Infos[i] + value + '% \n';
                      }  
                      sendTo("telegram", "send", {user: 'Ralf', text: InfoMessage});
                   }
                }
                
                on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); // Triggert bei Erreichen des Grenzwertes
                lowBatt(); // Aufruf bei Skriptstart für Test
                
                paul53P 1 Antwort Letzte Antwort
                0
                • D DocGame

                  @paul53
                  Mit den Änderungen hat es jetzt geklappt. wenn ich oben 99 reinschreibe kommen alle Sensoren wie gewünscht. Ich habe etwas gebastelt, bekomme aber die Prozentzahl nicht rein. Es soll ja nur eine Übersichtsliste generiert werden mit allen Sensoren und den aktuellen Batteriewerten. Das pushen bei unterschreiten wäre nur ein "Nice to have", da mein altes Script ja läuft und in diesem Fall einspringen würde. Wenn man diesen Part rausnehmen würde wäre das ganze ja deutlich schlanker. Irgendwie bin ich mit meinen %-Werten allerdings auf dem Holzweg. Hier einmal der geänderte Code(Zeile 16):

                  const sensors = $('channel[state.id=mihome.0.devices.*.percent]');
                  
                   function lowBatt() {
                     var Infos = [];       
                     var InfoMessage = 'Batterien zu tauschen:\n';
                     sensors.each(function(id, i) {
                        if(getState(id).val < 80) {
                           var pathname = id.substring(0, id.indexOf(".percent"));
                           var wholeName = getObject(pathname).common.name;
                           var name = wholeName.substring(wholeName.indexOf("- ") + 1, wholeName.length); 
                           Infos.push(name);
                        }
                     });
                     if(Infos.length) {
                        for(let i = 0; i < Infos.length; i++) {
                           InfoMessage = InfoMessage + Infos[i] + value + '% \n';
                        }  
                        sendTo("telegram", "send", {user: 'Ralf', text: InfoMessage});
                     }
                  }
                  
                  on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); // Triggert bei Erreichen des Grenzwertes
                  lowBatt(); // Aufruf bei Skriptstart für Test
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #12

                  @DocGame sagte:

                  bin ich mit meinen %-Werten allerdings auf dem Holzweg. Hier einmal der geänderte Code(Zeile 16):

                  Ja, an der Stelle ist es zu spät. Ausserdem ist die Variable value nicht deklariert und gefüllt. Ersetze Zeile 7 durch:

                        var value = getState(id).val;
                        if(value < 30) {
                  

                  und ergänze Infos.push()

                           Infos.push(name + ': ' + value + ' %');
                  

                  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

                  D 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @DocGame sagte:

                    bin ich mit meinen %-Werten allerdings auf dem Holzweg. Hier einmal der geänderte Code(Zeile 16):

                    Ja, an der Stelle ist es zu spät. Ausserdem ist die Variable value nicht deklariert und gefüllt. Ersetze Zeile 7 durch:

                          var value = getState(id).val;
                          if(value < 30) {
                    

                    und ergänze Infos.push()

                             Infos.push(name + ': ' + value + ' %');
                    
                    D Offline
                    D Offline
                    DocGame
                    schrieb am zuletzt editiert von DocGame
                    #13

                    @paul53
                    Perfekt...Funktioniert Prima. Vielen Dank
                    Ich denke, das ich das ganze auch auf Temperatur ändern kann.
                    Nur mir den Fenstern (Boolsche Werte) wird es so vermutlich nicht hinhauen.

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • D DocGame

                      @paul53
                      Perfekt...Funktioniert Prima. Vielen Dank
                      Ich denke, das ich das ganze auch auf Temperatur ändern kann.
                      Nur mir den Fenstern (Boolsche Werte) wird es so vermutlich nicht hinhauen.

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von paul53
                      #14

                      @DocGame sagte:

                      Funktioniert Prima.

                      Dann markiere bitte das Thema in der Überschrift als [gelöst].

                      Ich denke, das ich das ganze auch auf Temperatur ändern kann.

                      Ja, sicher.

                      @DocGame sagte in Änderung von Statusberichten:

                      Nur mir den Fenstern (Boolsche Werte) wird es so vermutlich nicht hinhauen.

                      Es unterscheidet sich nur in der Abfrage:

                            if(value) { // Fenster offen
                      

                      (push() natürlich ohne %) und im Trigger.

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


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      715

                      Online

                      32.6k

                      Benutzer

                      82.2k

                      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