Ankündigung

Einklappen
Keine Ankündigung bisher.

Konzeptfrage IRRemote

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Konzeptfrage IRRemote

    Hi, ich möchte per smartVisu meinen Fernseher und Amp bedienen. Die haben keine sinnvolle API, daher muss es über IR sein.

    Ich habe einen IR Receiver mit Tuya so umgebaut, dass ich per MQTT IRSend Kommandos schicken kann. Ich benutze smarthomeng als backend.

    Was wäre ein sinnvolles vorgehen? Per Table Buttons in smartvisu anlegen, je ein item dahinter. Bei click dann über logik mqtt topics absetzen?

    Gruß
    aldaris
    Zuletzt geändert von aldaris; 24.02.2025, 23:26.

    #2
    Moin aldaris,

    im example1.smarthome ist ein Beispiel für eine Fernbedienung. Das Beispiel kannst Du anstelle Deiner eigenen Seiten in der config auswählen. Die Datei für die Fernbedienung ist .\pages\example1.smarthome\TV\tvremote.html.

    Auch in der Kurzanleitung (auf www.smartvisu.de oder als inline-Version, die Du hier in Deinen .\pages Ordner herunter laden kannst) ist im Menüpunkt "SmartHomeNG" ein Reiter "Samsung TV", mit Beispielen für die Visu und zugehörigen item-Konfigurationen für das Samsung-Plugin).

    Die Beispiele nutzen das Widget "multimedia.station". Das ist nur ein stateswitch, der noch in ein <div> mit der Klasse "station" gesetzt ist. In den Beispielen hat jeder Sender sein eigenes item , auf das beim Klicken eine "1" gesendet wird. Alternativ kann man auch ein gemeinsames item (z.B. "tv.sender") nehmen, auf das man mit den jeweiligen Widgets eine Kanalnummer sendet. Auch die MQTT payload als Text wäre als Wert denkbar. Das ist eine Frage der Zweckmäßigkeit für Deine Umsetzung in shNG.

    Aus Copyright-Gründen liefert smartVISU die Senderlogos nicht mit. Die muss man sich im Netz selbst besorgen.

    Gruß
    Wolfram

    Kommentar


      #3
      Hallo,

      Ich habe es tatsächlich damit hinbekommen. Ein Item für das MQTT senden und dann je einen StateSwitch für jeden Button der als value den String übertragt.

      Screenshot_20250219_194041_Samsung Internet.jpg

      Wie kriege ich das jetzt so schön als Eintrag oben in die Leiste?

      Das Item für MQTT lasse ich bestimmt in der items.yaml, oder?

      Kommentar


        #4
        Um einen Menüpunkt für die FB in die Menüleiste zu setzen, musst Du die Datei menu.html erweitern. Wenn die Datei nicht im Ordner Deiner eigenen Seiten ist, kopiere sie aus dem Ordner ./pages/base dorthin und editiere diese Kopie. Der Twig-Loader sucht Templates mit Priorität im Ordner der konfigurierten Seiten und verwendet die dort gefundene Version.

        Je nach Mobilgerät kann ein zusätzliches Icon gerade noch in die Menüleiste passen. Sonst musst Du ein bestehendes Symbol opfern.

        Wo das item für MQTT definiert ist, spielt keine Rolle, solange die Datei im Ordner /usr/local/smarthome/items ist und die Endung .yaml hat.

        Gruß
        Wolfram

        Kommentar


          #5
          Hi, jawohl, funktioniert genau so. Ich habe den "App" Reiter abgeändert, da ich den eh nicht brauche.

          Letzte Frage (wohl wieder eher smartvisu):
          Die Files dürfen in dem pages/smarthome Ordner liegen, oder werden die beim Neustart gelöscht?

          Gruß
          Aldaris
          Wenn es jemanden interessiert, sieht jetzt so aus:

          tv.html
          HTML-Code:
          {% extends "base.html" %}
          
          {% block content %}
          <div class="block">
              <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                  <div data-role="collapsible" data-collapsed="false">
                      <h3>Verstärker</h3>
                      <table width='100%'>
                          <tr>
                              <td>{{ multimedia.station('ampPower', 'ir.Test', 'control_on_off', 'RC5 0x10 0x32 3', 'midi') }}</td>
                              <td>{{ multimedia.station('ampMinus', 'ir.Test', 'control_minus', 'RC5 0x10 0x34 3', 'midi') }}</td>
                              <td>{{ multimedia.station('ampMute', 'ir.Test', 'audio_volume_mute', 'RC5 0x10 0x35 3', 'midi') }}</td>
                              <td>{{ multimedia.station('ampPlus', 'ir.Test', 'control_plus', 'RC5 0x10 0x33 3', 'midi') }}</td>
                          </tr>
                      </table>
                  </div>
              </div>
          </div>
          <div class="block">
              <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                  <div data-role="collapsible" data-collapsed="false">
                      <h3>TV</h3>
                      <table width='100%'>
                          <tr>
                              <td>{{ multimedia.station('tvPower', 'ir.Test', 'control_on_off', 'Samsung 0x707 0x2 3', 'midi') }}</td>
                              <td></td>
                              <td>{{ multimedia.station('tvUp', 'ir.Test', 'control_arrow_up', 'Samsung 0x707 0x60 3', 'midi') }}</td>
                              <td></td>
                          </tr>
                          <tr>
                              <td></td>
                              <td>{{ multimedia.station('tvLeft', 'ir.Test', 'control_arrow_left', 'Samsung 0x707 0x65 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tvCheck', 'ir.Test', 'check', 'Samsung 0x707 0x68 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tvRight', 'ir.Test', 'control_arrow_right', 'Samsung 0x707 0x62 3', 'midi') }}</td>
                          </tr>
                          <tr>
                              <td></td>
                              <td>{{ multimedia.station('tvBack', 'ir.Test', 'jquery_back', 'Samsung 0x707 0x58 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tvDown', 'ir.Test', 'control_arrow_down', 'Samsung 0x707 0x61 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tvHome', 'ir.Test', 'jquery_home', 'Samsung 0x707 0x79 3', 'midi') }}</td>
                          </tr>
                          <tr>
                              <td>{{ multimedia.station('tvUp', 'ir.Test', 'jquery_carat-u', 'Samsung 0x707 0x12 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tv7', 'ir.Test', 'edit_numeric_7', 'Samsung 0x707 0xC 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tv8', 'ir.Test', 'edit_numeric_8', 'Samsung 0x707 0xD 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tv9', 'ir.Test', 'edit_numeric_9', 'Samsung 0x707 0xE 3', 'midi') }}</td>
                          </tr>
                          <tr>
                              <td>{{ multimedia.station('tvDown', 'ir.Test', 'jquery_carat-d', 'Samsung 0x707 0x10 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tv4', 'ir.Test', 'edit_numeric_4', 'Samsung 0x707 0x8 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tv5', 'ir.Test', 'edit_numeric_5', 'Samsung 0x707 0x9 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tv6', 'ir.Test', 'edit_numeric_6', 'Samsung 0x707 0xA 3', 'midi') }}</td>
                          </tr>
                          <tr>
                              <td></td>
                              <td>{{ multimedia.station('tv1', 'ir.Test', 'edit_numeric_1', 'Samsung 0x707 0x4 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tv2', 'ir.Test', 'edit_numeric_2', 'Samsung 0x707 0x5 3', 'midi') }}</td>
                              <td>{{ multimedia.station('tv3', 'ir.Test', 'edit_numeric_3', 'Samsung 0x707 0x6 3', 'midi') }}</td>
                          </tr>
                          <tr>
                              <td></td>
                              <td></td>
                              <td>{{ multimedia.station('tv0', 'ir.Test', 'edit_numeric_0', 'Samsung 0x707 0x11 3', 'midi') }}</td>
                              <td></td>
                          </tr>
                      </table>
                  </div>
              </div>
          </div>
          
          
          {% endblock %}
          
          ​
          ir.yaml
          Code:
          ir:
            Test:
              type: str
              mqtt_topic_out: cmnd/auvisio/IRSend
              enforce_updates: true

          Kommentar


            #6
            Moin,

            beim Neustart von shNG und aktivierter Seitengenerierung im smartvisu-Plugin wird der Ordner ./pages/smarthome geleert. Um die Dateien zu schützen, legst Du sie am besten in einen Ordner für Deine eigenen Seiten, z.B. ./pages/meineHuette und wählst diesen in der config-Seite aus.

            smartVISU verwendet die Seiten aus diesem Ordner mit Priorität und sucht die dort nicht vorhandenen Dateien im Ordner ./pages/smarthome. So kann man eigene Inhalte mit den von shNG generierten Inhalten kombinieren.

            Gruß
            Wolfram

            Kommentar

            Lädt...
            X