node-red und Benachrichtigungen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Christian Fenzl
    Lebende Foren Legende
    • 31.08.2015
    • 11244

    #1

    node-red und Benachrichtigungen

    Hallo pmayer (und die anderen mit node-red Erfahrung wie ThatRed und @Holger_kausch),

    ich habe einen neuen Thread hier im LB-Bereich erstellt, weil das irgendwie dazu passt.
    Mich würde ein konzeptioneller Weg mit node-red interessieren.

    Wir haben auf der LoxBerry-Wunschliste ganz oben die Sprachausgabe. Bei mir steht das zu integrieren auf dem Plan, aber in flexibler/generischer Weise, also nicht statisch lauter einzelne Plugins Lox->Sonos, Lox->LMS usw., sondern flexibel mit einer Art Plugin-Konzept (ein zentraler Handler, und Plugins für die Empfänger). Es soll sich auch nicht auf Sprachausgabe alleine beziehen (also nicht TTS), sondern eher TTx (alle möglichen Ziele wie Kodi, E-Mail, von mir aus auch SMS oder Sprachanruf sollen integrierbar sein.

    Wenn ich von der Umwandlung TTS jetzt mal wegsehe, und nur das Senden an die genannten Ziele betrachte, würde ich die Entwicklung am LoxBerry so aufbauen:
    - Es gibt ein "zentrales Modul" zum Empfang und der Verteilung der Nachrichten
    - Es gibt einen dezidierten Eingangs-Weg (z.B. TCP oder HTTP)
    - Für den Eingangsweg gibt es eine Spezifikation, welche Input-Daten es geben muss (z.B. den Text, das oder die Ziele, usw.)
    - Dann gäbe es einen dezidierten Ausgangs-Weg (z.B. auch TCP, HTTP oder über das Dateisystem) zu einem flexibel angebundenen Plugin. Dieses Plugin erledigt das Übermitteln an den jeweiligen Dienst.
    - Auch hier gibt es eine Spezifikation, welche Daten vom zentralen Modul übermittelt werden.
    - Ein Entwickler kann dann z.B. ein TTx-Modul bauen, das Daten an Kodi sendet. Ein anderer könnte ein TTx-Modul bauen, das die Daten an LMS als Sprachausgabe sendet. Alle Module müssen sich an die Ausgangsspezifikation halten.

    Die gesamte Konfiguration des zentralen Moduls (z.B. Ziele zu definieren) und der TTx-Module würde zentral über ein Webinterface laufen. Ein Benutzer darf keine Zeile Code benötigen oder ändern müssen.

    Wenn ich diesen recht konkreten (aber dennoch flexiblen) Use-Case in node-red abbilden wollte, um mir die Implementierung der TTx-Module zu vereinfachen, wie würde die Entwicklung aussehen?

    Ich kann mir noch nicht vorstellen, wie das aussehen würde. Ich kann wohl nicht einfach eine Linie von node-red-contrib-loxone zu z.B. node-red-contrib-kodi ziehen und schon werden Loxone-Nachrichten am Kodi ausgegeben? Oder geht das doch? Muss man als Benutzer beim Zusammenklicken dann trotdem js-Code verwenden?

    Danke und lg,
    Christian
    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine
  • pmayer
    LoxBus Spammer
    • 26.02.2017
    • 382

    #2
    Hi,

    ich muss mir unbedingt mal einen Loxberry installieren um zu verstehen was der alles kann.

    So wie ich es sehe, lassen sich deine Anforderung durchaus mit node-red abbilden, also im Grund "zusammen klicken":

    Loxone-In -> direktausgabe TTS am Pi auf dem node-red läuft über verschiedene Wege (play wav, TTS, Ivona-TTS, etc.)
    Loxone-In -> Kodi
    Loxone-In -> Ausgabe Sonos
    LMS müsste ich testen. Es funktionieren sogar Cloud-Services zum erzeugen von Sprachnachrichten. node-red-dashboard erlaubt sogar das abspielen von Audio am Gerät, dass das Dashboard geöffnet hat.

    http://flows.nodered.org/ -> TTS eingeben
    Node-RED nodes for communicating with a Kodi (former XBMC).


    Die angesprochene Portierbarkeit halte ich für einen sehr wichtigen Punkt. Entweder kann man den Teil des flows also JSON über die Zwischenablage ex-/importieren oder man nutzt subflows, die man auch teilen kann: https://github.com/node-red/node-red...sign:-subflows
    Das heißt also, man könnte einen subflow zur Verfügung stellen, der dann wirklich nur dazwischen "geklickt" wird um das entsprechende zu erreichen.

    Ich sehe aber völlig ein, dass für node-red schon ein wenig Erfahrung benötigt wird - wobei die Lernhürde bei node-red nicht so sonderlich hoch ist.

    Wenn ich euch irgendwie unterstützen kann, sagt gerne bescheid.

    so long,
    Patrik
    https://allgeek.de/

    https://twitter.com/pregopm, https://github.com/codmpm/
    https://github.com/codmpm/node-red-contrib-loxone
    https://github.com/codm/wled-controller

    Kommentar

    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11244

      #3
      Sorry, versteh ich nicht (dass man Linien ziehen kann, soweit hab ich es schon kapiert ;-) )

      Sagen wir http://flows.nodered.org/node/node-red-contrib-kodi.

      Wo definiere ich da, dass ich GUI.Notification aufrufen will, und nicht etwa eine Playlist laden, oder Stop drücken.
      Woher weiß node-red-contrib-loxone, dass es in node-red-contrib-kodi den Call GUI.Notification aufrufen soll, wenn ein gewisser Eingang getriggert wird?

      Ich werde aus dem node-red Konzept nicht schlau...

      Kann man vom Miniserver aus node-red-contrib-kodi direkt aufrufen, wenn ich pushen will und nicht pullen?
      Zuletzt geändert von Christian Fenzl; 10.03.2017, 11:35.
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • pmayer
        LoxBus Spammer
        • 26.02.2017
        • 382

        #4
        Da müsste ich mir jetzt den Kodi Node angucken und schauen was der erwartet um das gewünschte zu tun. Habe leider keinen Kodi bei mir am Laufen.

        Grundliegend das Konzept (vereinfacht):
        In node-red bearbeitet man den message flow. Aus Loxone-In kommt bei erzeugtem Ereignis ein msg-Objekt (Beispiel siehe github node-red-contrib-loxone) das eine Payload enthält. Diese kann man verarbeiten oder einfach nur auf das Ereignis reagieren. Man hängt an den In-Node dann node's die entsprechend dieses msg-Objekt ver-/bearbeiten. Das Ergebnis, wieder ein msg-Objekt, gibt man dann an einen out-Node.

        Man müsste also jetzt schauen in welcher Form der Kodi-Node die gewünschte GUI.Notification übergeben bekommen möchte, typischerweise in msg.payload mit einem passenden Topic oder Auswahl im Out-Node selbst. Meist steht das rechts in der Info, wenn man den Node anklickt.
        Zuletzt geändert von pmayer; 10.03.2017, 14:16.
        https://allgeek.de/

        https://twitter.com/pregopm, https://github.com/codmpm/
        https://github.com/codmpm/node-red-contrib-loxone
        https://github.com/codm/wled-controller

        Kommentar

        • Christian Fenzl
          Lebende Foren Legende
          • 31.08.2015
          • 11244

          #5
          Ok, die einzelnen Nodes erklären sich wahrscheinlich nur "live", nicht über die Doku.

          So wie ich es verstehe, muss ich mir dann zum Beispiel den Kodi-Node ansehen, und davor Code programmieren, um den Input ins Format des Kodi-Nodes umzuwandeln.
          Will ich nun auch an VDR senden, muss ich wieder Code programmieren, um den Input ins Format des VDR-Nodes zu bringen.

          Und das ist das, wo ich die Zielgruppe nicht erkenne.
          Wenn ich Entwickler bin, brauche ich eigentlich kein GUI, um zwei Schnittstellen zu verbinden, weil ich ja sowieso wieder für jede Schnittstelle individuell den Input in ein Output-Format bringen muss, und das in Form von Quellcode.
          Wenn ich allerdings Benutzer bin, kann ich zwar im GUI zwei Nodes verbinden, habe aber keine Skills, um per Javascript individuell Formatumwandlungen zu programmieren.
          Erzeuge ich als Entwickler fertige Flows, müssen diese wieder individuell für jeden In-Node und jeden Out-Node programmiert werden.

          Ich muss das einfach mal installieren, vielleicht kommt dann mein Aha-Erlebnis. ;-)
          Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

          Kommentar


          • pmayer
            pmayer kommentierte
            Kommentar bearbeiten
            Genau. Ich denke, dann ergibt es sich schnell.

            Schlussendlich hast du aber vielleicht recht was den "Endnutzer" angeht. Die Einstiegshürde ist aber auf jeden Fall niedrieger als ein Shell- oder PHP-Script zu schreiben, da man die meisten Dinge mit nodes bewerkstelligen kann.

            Ich kann dir anbieten, dass wir - wenn du mal einen Testaufbau hast - gerne skypen können um uns das mal zusammen anzusehen.

          • Christian Fenzl
            Christian Fenzl kommentierte
            Kommentar bearbeiten
            Danke für das Angebot! Das wird noch ein wenig dauern, aber bei Bedarf greife ich auf dein Angebot zurück!
            lg, Christian

          • pmayer
            pmayer kommentierte
            Kommentar bearbeiten
            Erzeuge ich als Entwickler fertige Flows, müssen diese wieder individuell für jeden In-Node und jeden Out-Node programmiert werden.
            Das noch: Nicht ganz. Man kann sie ja exportieren, in seiner eigenen Bilbiothek speichern oder eben als SubFlows nutzen.
        Lädt...