Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Nudging - Nur einen Wert in eine Variable für Sayit

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    7.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Nudging - Nur einen Wert in eine Variable für Sayit

Nudging - Nur einen Wert in eine Variable für Sayit

Scheduled Pinned Locked Moved Skripten / Logik
60 Posts 8 Posters 7.9k Views
  • 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.
  • F Offline
    F Offline
    Fitti
    wrote on last edited by
    #1

    Hallo zusammen,

    auch ich versuche mich mehr schlecht als recht in JS einzuarbeiten.

    Im Moment spiele ich etwas mit sayit rum.

    Dieses Skript läuft ja - beim Speichern wird es einmal ausgeführt (mehr will ich gar nicht im Moment - es geht primär um das Lernen):

    var idSayIt = "sayit.0.tts.text"  /*Text to speech*/
    var d = new Date ();
    setState (idSayIt, "Es ist jetzt " + d.getHours() + " Uhr und " + d.getMinutes() + " Minuten.");
    

    Ich schaffe es aber nicht, z. B. eine Temperatur in eine Variable zu speichern und diese ansagen zu lassen.

    Ich habe es mir so gedacht:

    var Temperatursensor = "hm-rpc.0.LEQ0190666666.1.TEMPERATURE"   /*Temperatur:1.TEMPERATURE*/
    var temperatur = Temperatursensor. ***ja und hier kommt was hin? ****
    
    setState (idSayIt, "Die Temperatur ist " + temperatur + " Grad Celsius");
    

    Ich weiß nicht einmal ob ich hier noch einen convert2string benötige, noch wie überhaupt die Objekte zu handeln sind.

    Danke für den "Anschubser".

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

      Versuche es mal so:

      var Temperatursensor = getState("hm-rpc.0.LEQ0190666666.1.TEMPERATURE");   /*Temperatur:1.TEMPERATURE*/
      var temperatur = Temperatursensor.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
      • F Offline
        F Offline
        Fitti
        wrote on last edited by
        #3

        Prima. Das geht. Danke.

        Auch wieder nur zum Lernen:

        Nun sagt er "Es sind 17 Punkt 2 Grad." Da wäre doch schöner, wenn der "Punkt" ein "Komma" wäre.

        Also wollte ich Testweise die Variabel splitten (wie gesagt - alles nur um zu lernen) - beim Suchen hier fand ich den xxx.split(.) Befehl.

        var idSayIt = "sayit.0.tts.text"  /*Text to speech*/
        var Temperatursensor = getState("hm-rpc.0.LEQ0099999.1.TEMPERATURE"); /*Garten Terrasse Temperatur und Feuchte:1.TEMPERATURE*/
        var temperatur = Temperatursensor.val.toString();
        var temp_array = [];
        var d = new Date ();
        // Zerlege Wert
        temp_array = temperatur.split(".");
        
        setState (idSayIt, "Es ist jetzt " + d.getHours() + " Uhr und " + d.getMinutes() + "Die Temperatur beträgt " + temp_array[0] + "," + temp_array[1] + " Grad.");
        
        

        Jetzt sagt er aber: Es ist jetzt 23 Uhr und 55Die Temperatur beträgt 17,undefined Grad.

        Warum ist also das Array temp_array[1] nicht gesetzt?

        Mit einem````
        temperatur = temperatur.replace('.', ',');

        
        Wie gesagt, es geht um's lernen und verstehen. Eigentlich müsste doch beim Splitten in temp_array[1] die "2" stehen, oder?

        "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 Reply Last reply
        0
        • P Offline
          P Offline
          pix
          wrote on last edited by
          #4

          Hallo,

          @Fitti:

          var idSayIt = "sayit.0.tts.text"  /*Text to speech*/
          var Temperatursensor = getState("hm-rpc.0.LEQ0099999.1.TEMPERATURE"); /*Garten Terrasse Temperatur und Feuchte:1.TEMPERATURE*/
          var temperatur = Temperatursensor.val.toString();
          var temp_array = [];
          var d = new Date ();
          // Zerlege Wert
          temp_array = temperatur.split(".");
          
          setState (idSayIt, "Es ist jetzt " + d.getHours() + " Uhr und " + d.getMinutes() + "Die Temperatur beträgt " + temp_array[0] + "," + temp_array[1] + " Grad.");
          
          

          Es ist kein Fehler zu finden (abgesehen, von dem fehlenden Semikolon nach der ersten Zeile). Die Zeile var temp_array =[][/i] _kannst du evtl weglassen.

          Was geben denn````
          log(temperatur);
          log(temp_array[1]);

          
          Gruß
          
          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 Reply Last reply
          0
          • F Offline
            F Offline
            Fitti
            wrote on last edited by
            #5

            interessant - jetzt geht es.

            Vorher sagte aber auch das log "undefined". Den Text hatte ich aus dem log kopiert.

            Dafür bekomme ich kein Log nach 0.00h. Die letzten Einträge sind von 23:59:49 …

            Ein reload brachte auch nichts. 😞

            Was muss man denn machen?

            "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 Reply Last reply
            0
            • htreckslerH Offline
              htreckslerH Offline
              htrecksler
              Forum Testing
              wrote on last edited by
              #6

              liegt es vielleicht daran, dass es für jeden Tag ein eigenes log gibt?

              Gruss Hermann

              ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

              1 Reply Last reply
              0
              • F Offline
                F Offline
                Fitti
                wrote on last edited by
                #7

                Ich frage mich schon die ganze Zeit, wie das mit dem Logging gelöst ist. Ich finde keine Auswahl für ein altes logging , noch eine Stelle, wo man die Größe der Logs einstellen kann.

                Ich hab' gerade eben herausgefunden woran das "undefined" liegt. Der HM Sensor speichert zwar 16.0 als Wert, bei ,0 Zahlen werden diese aber als 16 gespeichert. Somit gibt es kein Split und das Array[1] ist undefined.

                Warum aber die ,0 verschwinden ist mit schleierhaft.

                "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 Reply Last reply
                0
                • HomoranH Do not disturb
                  HomoranH Do not disturb
                  Homoran
                  Global Moderator Administrators
                  wrote on last edited by
                  #8

                  das gesamte log findest du auf der banane

                  Gesendet von meinem Cynus T7 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 Reply Last reply
                  0
                  • htreckslerH Offline
                    htreckslerH Offline
                    htrecksler
                    Forum Testing
                    wrote on last edited by
                    #9

                    Bis vor einigen Wochen/Monaten?? gab es nur eine einzige log Datei. Da gab es an der ein oder anderen Stelle Probleme mit der Größe der log-files.

                    Bluefox hat das dann so gelöst, das das log immer für die letzten 3 Tage abgespeichert wird.

                    Du findest die 3 log-Dateien im Verzeichnis ioBroker/log.

                    Ich bin mir nicht ganz sicher, aber im Moment ist das logging (Größe, Anzahl der Logfiles…) (noch) nicht einstellbar.
                    305_manadjustments.txt

                    Gruss Hermann

                    ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

                    1 Reply Last reply
                    0
                    • F Offline
                      F Offline
                      Fitti
                      wrote on last edited by
                      #10

                      Danke.

                      Das mit der 0 habe ich jetzt abgefangen.

                      // Einfache Temperaturansage mit SayIt.
                      // Variante 1 mittels splitten der Temperatur, damit die Ansage nicht
                      // "Es sind 18 Punkt 2 Grad " sagt.
                      
                      var idSayIt = "sayit.0.tts.text";  /*Text to speech*/
                      var Temperatursensor = getState("hm-rpc.0.LEQ00xxxxx.1.TEMPERATURE"); /*Temperatursensor:1.TEMPERATURE*/
                      var temperatur = Temperatursensor.val.toString();
                      var temp_array = [];
                      
                      temp_array = temperatur.split(".");
                      
                      // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist.
                      // Es wird dann nur "18" gelesen.
                      if (!temp_array[1]) {
                          temp_array[1] = "0";
                          log("Die Nach-Kommastelle in temp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt.");
                      }
                      setState (idSayIt, "Die Temperatur beträgt " + temp_array[0] + "," + temp_array[1] + " Grad.");
                      
                      
                      // Einfache Temperaturansage mit SayIt.
                      // Variante 2 mittels ersetzen des Punktes in ein Komma, damit die Ausgabe nicht
                      // "Es sind 18 Punkt 2 Grad " sagt.
                      
                      var idSayIt = "sayit.0.tts.text";  /*Text to speech*/
                      var Temperatursensor = getState("hm-rpc.0.LEQ00xxxxx.1.TEMPERATURE"); /*Temperatursensor:1.TEMPERATURE*/
                      var temperatur = Temperatursensor.val.toString();
                      
                      temperatur = temperatur.replace('\.', '\,');
                      
                      setState (idSayIt, "Die Temperatur beträgt " + temperatur + " Grad.");
                      

                      Vielleicht hat ja jemand auch mal das Problem.

                      "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 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        skorpil
                        wrote on last edited by
                        #11

                        Ich bin mit dem JS Script noch ein Dummy. Wo wird das hingeschrieben und wie wird es aufgerufen? Danke für Hilfe.

                        1 Reply Last reply
                        0
                        • HomoranH Do not disturb
                          HomoranH Do not disturb
                          Homoran
                          Global Moderator Administrators
                          wrote on last edited by
                          #12

                          @skorpil:

                          Wo wird das hingeschrieben `
                          siehe:

                          http://www.iobroker.net/docu/?page_id=156&lang=de

                          Gruß

                          Rainer

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

                            Rainer,

                            Jetzt weiß ich, wie und wo ich Scripte anlege. Fehlt nur noch, wie ich sie aufrufe? Da ich kein Profi bin, verzeih mir meine vlt. dumme Frage. Und danke für die Hilfe.

                            Bernd

                            1 Reply Last reply
                            0
                            • P Offline
                              P Offline
                              pix
                              wrote on last edited by
                              #14

                              @skorpil:

                              Fehlt nur noch, wie ich sie aufrufe? ` eigentlich solltest du sie nicht manuell aufrufen. Sie starten sich selbst beim Speichern. Wenn dann eine, der überwachten Bedingungen eintritt (Schedule, Aktorstatus, etc.), dann wird nach Skript abgearbeitet.

                              Gruß

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

                                Pix,

                                Ich danke Dir. Bedeutet "eigentlich ",' dass ein Aufruf resp. einAauslösen des Scripts über den Browser zu Testzwecken gar nicht geht? Denn bei CCU.io war das ja möglich…

                                Liebe Grüße

                                Bernd

                                1 Reply Last reply
                                0
                                • BluefoxB Offline
                                  BluefoxB Offline
                                  Bluefox
                                  wrote on last edited by
                                  #16

                                  @skorpil:

                                  Pix,

                                  Ich danke Dir. Bedeutet "eigentlich ",' dass ein Aufruf resp. einAauslösen des Scripts über den Browser zu Testzwecken gar nicht geht? Denn bei CCU.io war das ja möglich…

                                  Liebe Grüße

                                  Bernd `
                                  Du rufst dem auf, wenn du denn speicherst.

                                  1 Reply Last reply
                                  0
                                  • F Offline
                                    F Offline
                                    Fitti
                                    wrote on last edited by
                                    #17

                                    Oder wenn du auf den Reload Button klickst 8-) :
                                    578_say_reload.png

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

                                      Danke, Fitti
                                      6305_hm_sv_tuer.png

                                      1 Reply Last reply
                                      0
                                      • S Offline
                                        S Offline
                                        skorpil
                                        wrote on last edited by
                                        #19

                                        So, erster Test mit dem ersten Script von Fitti auch hier bei mir erfolgreich. Jetzt brauche ich noch Hilfe zum triggern. Kann mir jemand sagen, wie ich in JS programmiere, z. B. : Türe auf (Tür/Fenster Kontakt vorhanden), Durchsage auslösen?

                                        Danke für die Hilfe!

                                        1 Reply Last reply
                                        0
                                        • P Offline
                                          P Offline
                                          pix
                                          wrote on last edited by
                                          #20

                                          @skorpil:

                                          Kann mir jemand sagen, wie ich in JS programmiere, z. B. : Türe auf (Tür/Fenster Kontakt vorhanden), Durchsage auslösen? `

                                          var status_zustand_tfk = ['geschlossen','geöffnet'];
                                          on("hm-rpc.0.SERIENNUNMERTFK.1.STATE"/*Fenster links Wohnzimmer.STATE*/, function (data) {
                                              var status_geraet = 'Wohnzimmer Fenster links';         // Klartextname des Gerätes // alternativ: status_geraet = data.name;
                                              var ansage = status_geraet + ' ' + status_zustand_tfk[data.newState.val]
                                              log(ansage, 'info');
                                              setState("sayit.0.tts.text"/*Text to speech*/, ansage);
                                          });
                                          
                                          

                                          Seriennummer und Name des Gerätes noch anpassen. Sayit-Adapter sollte natürlich installiert und aktiviert sein.

                                          Gruß,

                                          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 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

                                          99

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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