Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Variablen erzeugen und Pushbullet

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Variablen erzeugen und Pushbullet

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jhuebner1 last edited by jhuebner1

      Hallo,

      als blutjunger JS und iobroker Anfänger kämpfe ich mich durch die Untiefen der Systeme.
      So einiges an Scripten verstehe ich, aber das Thema Variablen und Datenpunkte kapiere ich gar nicht.

      Dazu 3 konkrete Fragen:
      1.) Wie erzeuge ich Variablen im iobroker?

      2.) Meine Xiaomi Temperatursensoren zeigen 2 Nachkommastellen an, ich will aber nur 1 zeigen.
      Da ich nicht glaube, das ich das im VIS einstellen kann (oder doch?) wäre meine Lösung jetzt, das ich mir Variablen erzeuge, diese mit den Werten der Sensoren verbinde und diese dann nur 1 Nachkommastelle hat. Nur wie geht das?

      3.) Ich möchte mir mit PushBullet eine Nachricht schicken lassen zB über die aktuelle Temperatur. Den Pushbullet Adapter bekomme ich ans Laufen, die Nachricht wird auch gesendet. Nur wie kann ich denn im Text einen Wert/Inhalt der Variablen mitsenden?

      const idTemp = 'mihome.0.devices.weather_v1_158d0003217238.temperature';
      var level = getState(idTemp).val;
      
       sendTo("pushbullet.0", "send", {
             "message": 'von iobroker',
             "title": 'Die DG-Sauna ist ready2'&level,
             "type": 'note1234',
             "receiver": 'hier meine ID'
          });
      

      DANKE!

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @jhuebner1 last edited by

        @jhuebner1 sagte:

        1.) Wie erzeuge ich Variablen im iobroker?

        Mit der folgenden Deklaration hast Du die Variable mit dem Bezeichner level erzeugt:

        var level = getState(idTemp).val;
        

        Sie wird mit dem Wert des Datenpunktes mit der ID "mihome.0.devices.weather_v1_158d0003217238.temperature" initialisiert.
        Datenpunkte erzeugt man mit createState(id, init, common):

        @jhuebner1 sagte in Datenpunkte erzeugen, mit Variablen arbeiten:

        2 Nachkommastellen an, ich will aber nur 1 zeigen.

        var level = Math.round(getState(idTemp).val * 10) / 10; // Runden auf 1 Nachkommastelle
        

        @jhuebner1 sagte in Datenpunkte erzeugen, mit Variablen arbeiten:

        wie kann ich denn im Text einen Wert/Inhalt der Variablen mitsenden?

        Durch Verkettung von Zeichenketten.

               "title": 'Die DG-Sauna ist ready2 ' + level,
        
        J 2 Replies Last reply Reply Quote 0
        • J
          jhuebner1 @paul53 last edited by

          @paul53
          Klappt jetzt, top!
          DANKE!!!!!

          1 Reply Last reply Reply Quote 0
          • J
            jhuebner1 @paul53 last edited by

            @paul53

            Und wenn ich noch mal unverschämt nachfragen darf:
            Wie erstelle ich denn ein Script, mit dem ich mir den Text des DWD als Pushbullet schicken lassne kann?
            Und zwar ja nur dann, wenn der DWD was meldet.

            Ich dachte an sowas, aber das klappt nicht:

            //const DWD = 'dwd.0.warning.text';
            //var DWD_text = DWD;
            
             on({id: 'dwd.0.warning.description', change: "ne"}, function (obj) {
              var value = obj.state.val;
              var oldValue = obj.oldState.val;
              sendTo("pushbullet.0", "send", {
                 "title": dwd.0.warning.description
                 "type": 'note1234',
                 "receiver": 'meine ID'
              });
            });
            
            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @jhuebner1 last edited by

              @jhuebner1

                   "title": value,
              
              J 1 Reply Last reply Reply Quote 0
              • J
                jhuebner1 @paul53 last edited by jhuebner1

                @paul53
                Noch ne doofe Frage zum Runden:
                Funktion / Formel hab ich verstanden.

                Aber wie bekomme ich das denn als eigene / Neue Variable in VIS?
                Damit im Script arbeiten ok, aber ich will es ja im Editor haben, sozusagen als eigene Variable (statt mihome.0.devices.weather_v1_158d0003217238.temperature)

                das hier klappt nicht:

                //Temperatur Büro
                const idTemp1 = 'mihome.0.devices.weather_v1_158d0003217238.temperature';
                var temp_buero = Math.round(getState(idTemp1).val * 10) / 10; // Runden auf 1 Nachkommastelle 
                

                Oder muss ich das über eigenen Datenpunkte lösen

                createState("Eigene_Datenpunkte.Temperatur.Buero", {
                    name: 'Temperatur Buero', 
                    role: 'switch',
                    type: 'boolean', 
                    read:  true, 
                    write: true, 
                    def:   true,
                });
                

                Und das dann in eine Schleife packen, die alle 5 min läuft?

                paul53 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @jhuebner1 last edited by paul53

                  @jhuebner1 sagte:

                  eigene / Neue Variable in VIS?

                  //Temperatur Büro
                  const idTemp1 = 'mihome.0.devices.weather_v1_158d0003217238.temperature';
                  var temp_buero = Math.round(getState(idTemp1).val * 10) / 10; // Runden auf 1 Nachkommastelle 
                  const idVis = 'Eigene_Datenpunkte.Temperatur.Buero';
                  
                  createState(idVis, temp_buero, {type: 'number', name: 'Temperatur Buero', unit: '°C', role: 'value'}); // neuen Datenpunkt erzeugen
                  
                  on(idTemp1, function(dp) { // triggert bei Wertänderung
                     setState(idVis, Math.round(dp.state.val * 10) / 10, true);
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @jhuebner1 last edited by

                    @jhuebner1 sagte:

                    Oder muss ich das über eigenen Datenpunkte lösen

                    Ja, aber nicht mit

                        role: 'switch',
                        type: 'boolean', 
                        write: true, 
                        def:   true,
                    
                    J 1 Reply Last reply Reply Quote 0
                    • J
                      jhuebner1 @paul53 last edited by

                      @paul53
                      Das klappt, ich werd bekloppt!
                      DANKE!

                      1 Reply Last reply Reply Quote 0
                      • J
                        jhuebner1 last edited by

                        @paul53
                        Ich brauch jetzt nochmal Hilfe....
                        Und zwar will ich mir im VIS 2 verschiedene Icons anzeigen lassen, wenn das Fenster offen und zu ist.
                        Das geht ganz gut über das Basic Image8, allerdings zeigt der die beiden Grafiken nur bei den Bedingungen 0 und 1 an.

                        Vom Fenstersensor kommt aber true und false zurück....

                        Also brauche ich entweder ein anderes Widget (was true und false kann) oder ich brauch ein JS, was mir aus dem true ->1 und aus dem false -> 0 macht.

                        Habe es analog zu den Temperaturen mal so probiert, aber das klappt gar nicht...

                        //Fenster Küche2
                        const idFenster2 = 'mihome.0.devices.magnet_158d000325fa4c.state';
                        var fenster_kueche2 = idFenster2.state
                        const idVis12 = 'Eigene_Datenpunkte.Fenster.Kueche';
                        
                        createState(idVis12, fenster_kueche2, {type: 'number', name: 'Fenster Küche', role: 'value'}); // neuen Datenpunkt erzeugen
                        on(idFenster2, function(dp) { // triggert bei Wertänderung
                           if (fenster_kueche2 = true)
                              Set (fenster_kueche2 = 1)
                        else
                            Set (fenster_kueche2 = 0)
                        
                           setState(idVis12, true);
                        });
                        
                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @jhuebner1 last edited by

                          @jhuebner1

                          //Fenster Küche2
                          const idFenster2 = 'mihome.0.devices.magnet_158d000325fa4c.state';
                          const idVis12 = 'Eigene_Datenpunkte.Fenster.Kueche';
                           
                          createState(idVis12, 0, {type: 'number', name: 'Fenster Küche', role: 'value'}); // neuen Datenpunkt erzeugen
                          
                          on(idFenster2, function(dp) { // triggert bei Wertänderung
                             var fenster_kueche2 = 0;
                             if(dp.state.val) fenster_kueche2 = 1;
                             setState(idVis12, fenster_kueche2, true);
                          });
                          
                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          679
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          communication javascript
                          2
                          11
                          596
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo