########
Node-RED
########
`Node-RED `_ ist ein Editor für visuelle Programmierung von Geräten, Schnittstellen und internen sowie öffentlichen Internetdiensten.
Es stellt einen Browser basierten Editor bereit, mit dem Funktionionen einfach zusammen gestellt werden können.
Dazu ist eine breite Palette an Erweiterungen für alle möglichen Anwendungsfälle verfügbar.
Eine `Dokumentation `_ und eine Übersicht von Nutzern hinzugefügten ``Flows`` und ``Nodes`` findet sich in der `Node-RED Library `_.
.. figure:: ./nodered-start.png
:align: center
:scale: 90%
Node Red ist vorkonfiguriert auf die Benutzung von ``zwei SIP Accounts``, die jeweils den ``Buzzer`` und ``LED`` schalten.
Importieren via Copy n Paste und Import rechts oben.
SIP Input
=========
.. figure:: ./nodered-sip-in.png
:align: center
:scale: 90%
Die ``SIP Input Node`` stellt über ``MQTT`` die Verbindung zu einem ebenfalls über MQTT angebundenen ``SIP Container`` dar.
Mit der Node werden die ``SIP Zugangsdaten`` konfiguriert und an den Container geschickt.
Statusmeldungen und Anrufzustände werden an den ``Ausgängen`` der Node bereit gestellt.
* Ausgang 1: Alle ``JSON`` Nachrichten des SIP Containers
* Ausgang 2: ``Integer`` bei Änderungenn die Anzahl an aktuellen, ``ringing`` Anrufen
* Ausgang 3: ``boolean`` ob es gerade eingehend klingelt oder nicht
* Ausgang 4: der Registrierungeszustand des SIP Accounts als ``String``
.. figure:: ./nodered-sip1.png
:align: center
:scale: 90%
Hilfstexte und Beschreibungen finden sich in Node-RED im Info Tab, wenn die entsprechende Node selektiert ist.
.. figure:: ./nodered-sip2.png
:align: center
:scale: 90%
SIP Output
==========
Diese ``SIP Output`` Node stellt eine Verbindung zu den SIP Accounts in den Containern dar.
Über die ``Call Control Topics`` können ausgehende Anrufe angenommen, ``Audio Files`` abgespiet werden und Anrufe ``transferiert`` werden.
.. figure:: ./nodered-sip-out.png
:align: center
:scale: 90%
Die Funktionalität ist gegeben, allerdings noch im Entwicklungsstatium.
GPIO
====
Die ``GPIO Node`` stellt die Verbindung über ``MQTT`` zu den GPIO Pins über MQTT und ihre zuständigen Container her.
Hiermit lassen sich GPIO Pins steuern.
.. note:: derzeit limitiert auf LED und Buzzer
.. figure:: ./nodered-gpio.png
:align: center
:scale: 90%
Wenn an dem Eingang eine Nachricht èingeht und ``msg.payload`` größer ``0`` ist, wird die entprechende Aktion geschaltet.
Wenn ``msg.payload`` gleich ``0`` ist, wird die entprechende Aktion aus geschaltet.
Außer die Node ist deaktiviert worden, in diesem Fall werdenalle eingehende Nachrichten und die Aktionen ausgesetzt.
Erfolgt auf das Einschalten innerhalb von ``60 Sekunden`` kein Ausschalten, wird der PIN ausgeschaltet.
Ein/Aus
-------
Wenn ``Mode`` auf ``Òn/Off`` gestellt ist, werden die PIN bei Eingang einer Nachricht ``1`` ein und bei ``0`` ausgeschaltet.
Es wird eine MQTT Nachricht mit dem Payload ``digital write 0`` oder ``digital write 1`` gesendet.
RTTTL Klingeltöne
-----------------
Wenn ``Mode`` auf ``RTTTL Ringtone`` konfiguirt ist, werden auf dem Buzzer diese abgespielt.
Der Tone kann in der Node konfiguriert werden oder als zusätzlicher Parameter ``m̀sg.rtttl`` in der Eingangs Nachricht übergeben werden.
RTTTL Klingeltöne sind via`Google