Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. MPD-Client steuern mit Telegram

    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

    MPD-Client steuern mit Telegram

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

      Hallo,
      ich möchte den MPD-Clienten über Telegram steuern:
      Dazu habe ich folgendes Skript angelegt:

      sendTo('telegram.0', {
          text:   'Welche Aktion des MPD-Clienten soll ausgeführt werden?',
          reply_markup: {
              keyboard: [
                  ['Lautstärke ' + getState("mpd.0.volume").val],
                  ['Starte Lied ' + getState("mpd.0.play").val],
                  ['Stoppe Lied ' + getState("mpd.0.stop").val],
                  ['Pausiere Lied ' + getState("mpd.0.pause").val],
                  ['Vorheriges Lied ' + getState("mpd.0.previous").val],            
                  ['Nächstes Lied ' + getState("mpd.0.next").val],            
                  ['Menü', ''],
              ],
              resize_keyboard:   true,
              one_time_keyboard: true
          }
      });
      

      Das ganze habe ich dann mit text2command verknüpft.
      Die Lautstärke funktioniert ohne Probleme. Kann direkt die Prozentzahl eingeben und er schreibt auch den Wert rein.
      Bei den anderen Befehlen habe ich aber das Problem, dass hinter z.B. "Starte Lied true" oder "Starte Lied null" steht anstatt "Starte Lied".
      Kann mir diesbezüglich jemand helfen?
      Gäbe es noch die Möglichkeit, die aktuelle Playlist anzuzeigen und ein Lied direkt daraus zu starten?
      Vielen Dank für eure Hilfe.

      T 1 Reply Last reply Reply Quote 0
      • J
        jwerlsdf last edited by

        Ich muss noch einmal nachfragen: Hat keiner einer Idee?

        1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer @jwerlsdf last edited by ticaki

          @jwerlsdf
          getState("mpd.0.play").val wird wohl immer "true", "false", oder "null" sein.

          Du baust in deinem Code eine Zeichenkette zusammen und es macht keinen Sinn den Status eines "Knopfes" da anzuhängen.

          sendTo('telegram.0', {
              text:   'Welche Aktion des MPD-Clienten soll ausgeführt werden?',
              reply_markup: {
                  keyboard: [
                      ['Lautstärke ' + getState("mpd.0.volume").val],
                      [getState("mpd.0.play").val ? 'Stoppe Lied' :  'Starte Lied' ],
                      ['Pausiere Lied'],
                      ['Vorheriges Lied'],            
                      ['Nächstes Lied'],            
                      ['Menü', ''],
                  ],
                  resize_keyboard:   true,
                  one_time_keyboard: true
              }
          });
          

          Das hier könnte eher praktikabel sein. Playlist hab ich keine Ahnung von 🙂

          Ich gehe davon aus, das "mpd.0.play" true ist, wenn ein lied läuft und false wenn nicht.
          EDIT: ich muß mir wohl mal den Adapter text2command installieren, wird das skript jedesmal ausgelöst wenn der adapter einen Befehl ausgeführt hat?

          J 1 Reply Last reply Reply Quote 0
          • J
            jwerlsdf @ticaki last edited by jwerlsdf

            @ticaki
            vielen Dank. Damit werden schon einmal keine "null", "False" oder "true" angezeigt. Ich habe noch eine Frage zu folgender Zeile um den code verstehen zu können:

                    [getState("mpd.0.play").val ? 'Stoppe Lied' :  'Starte Lied' ],
            
            1. Warum kommt da ein Fragezeichen rein?
            2. bezieht sich getState dann auch auf Stoppe Lied, Starte Lied? Ist der Doppelpunkt dann eine Aufzählung?

            Ich habe noch ein Problem: "Pausiere Lied" hat keine Funktion. Habe mal ein screenshot von t2c und den Objekten eingefügt.
            1113d83a-229c-422c-b24d-a5e2c6d25118-grafik.png
            b8f2e46a-57a3-4cb8-9f64-3aff9429b682-grafik.png

            Folgender Fehler wird angezeigt:

            (2754) client.sendCommand {"pause": ""} ERROR - Error: [2@0] {} Boolean (0/1) expected:

            1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer last edited by ticaki

              Wie schon geschrieben, ich benutzen den Adapter nicht, ich baue mir das bisher immer selbst, wenn ich es denn brauche.

              [getState("mpd.0.play").val ? 'Stoppe Lied' : 'Starte Lied' ],
              

              Das ? ist wie eine If funktion.

              Also falls getState("play").val wahr ist, nutze 'Stoppe Lied' :(sonst) 'Starte Lied'.
              Ich bin davon ausgegangen das dieses Script nach jeder Nutzung aufgerufen wird und mpd.0.play anzeigt ob gerade ein Lied läuft. Bei einem Button siehst du das nicht. Wenn es nicht funktioniert nutze

              ['Starte Lied'],
              ['Stoppe Lied'],
              

              zu dem 2. Punkt: ersetzt das %s in Pause mal durch true oder 1 eines von beiden sollte funktionieren. Im ersten Bild wären die Überschriften für mich hilfreich gewesen. 🙂

              J 1 Reply Last reply Reply Quote 0
              • J
                jwerlsdf @ticaki last edited by

                @ticaki
                konnte erst jetzt testen. Leider bringt keiner der Eingaben Abhilfe. Telegram sagt: "Ich verstehe 'pausiere Lied' nicht"... Noch eine Idee, was ich anders einstellen könnte?

                T 1 Reply Last reply Reply Quote 0
                • T
                  ticaki Developer @jwerlsdf last edited by ticaki

                  @jwerlsdf
                  Ja.

                  Volumen geht ja, das liegt daran das du einen Wert schreibst. Bei allem anderen Schreibst du aber keine "string" sondern schaltest etwas an oder aus. Versuche mal im text2command adapter play auf "schalte an/aus" und anstatt %s verwendest du true.

                  J 1 Reply Last reply Reply Quote 0
                  • J
                    jwerlsdf @ticaki last edited by

                    @ticaki
                    Pausiere Lied geht. Aber das Problem besteht, dass ich dann die Pause wieder aufheben muss. Wenn ich auf Play drücke, fängt er in der Playliste von vorne an. Wie kann ich also die Pause wieder aufheben?

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @jwerlsdf last edited by

                      @jwerlsdf
                      Was passiert wenn du Pause in der Objektübersicht nochmal klickst, beendet das vielleicht die Pause?

                      J 1 Reply Last reply Reply Quote 0
                      • J
                        jwerlsdf @ticaki last edited by

                        @ticaki
                        Kam jetzt erst zum testen.
                        Habe noch mal ein bisschen rumgespielt.
                        Wenn ich das Lied pausieren will muss ich folgende Einstellungen im t2c vornehmen:
                        Pausiere Lied: schalte Zustand (true)
                        Lied weiter: Schalte Zustand (false)
                        Geräte ID bei beiden: mpd.0.pause

                        Kann ich im t2c auch true/ false in einem Befehl unterbringen oder muss ich so wie oben beschrieben die Werte in 2 Befehle trennen?

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          ticaki Developer @jwerlsdf last edited by

                          @jwerlsdf
                          Soweit ich weiß nicht direkt, dafür mußt du einen eigenen Datenpunkt erstellen und ein Blockly bauen das auf diesen Datenpunkt triggert und den Pause Datenpunkt umschaltet.

                          1 Reply Last reply Reply Quote 1
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          677
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          2
                          11
                          438
                          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