Zum Inhalt springen

Signale ​

Ein Signal ist eine Nachricht, die Sie benannt und aufbewahrt haben: eine OSC-Nachricht, ein rohes UDP-Datagramm, eine HTTP-Anfrage oder eine MQTT-Veröffentlichung, mit ihrem Ziel. Sie bauen es einmal — in der Ansicht Signale oder indem Sie speichern, was Sie gerade von einer anderen Ansicht gesendet haben — und senden es erneut, wann immer Sie es brauchen, Byte für Byte gleich.

Die Bibliothek ist eine JSON-Datei, die Sie lesen, von Hand bearbeiten, auf einen anderen Rechner kopieren oder neben einem Projekt einchecken können. Die Ansicht Signale zeigt sie als Baum von Ordnern links und die Felder des ausgewählten Signals rechts.

Was ein Signal senden kann ​

Wählen Sie die Art in Transport. Jede Art hat ihre eigenen Felder:

TransportFelderWas hinausgeht
OSCZiel Host:Port, OSC-Adresse, ArgumenteEine OSC-Nachricht an ein IP:port oder host:port, von einem frischen UDP-Port. Siehe OSC für die Argumenttypen.
UDP (roh)Ziel Host:Port, Art (Text oder Hex-Bytes), NutzdatenEin Datagramm mit genau diesen Bytes. Text geht so hinaus, wie er geschrieben steht, ohne Abschlusszeichen; Hex sind Ziffernpaare wie de ad be ef (Leerzeichen und ein Präfix 0x sind erlaubt).
HTTPMethode, URL, Timeout (ms), Header, Authentifizierung, BodyEine HTTP-Anfrage. Siehe HTTP.
MQTTBroker Host:Port, Topic, QoS, retain, NutzdatenEine Veröffentlichung. Siehe MQTT.

Jedes Signal hat außerdem einen Name, einen Ordner und eine Notiz — was es bewirken soll und was auf der Gegenseite passen muss.

Die Ziele von OSC- und UDP-Signalen sind IP:port oder host:port (zum Beispiel 127.0.0.1:9000); ein Hostname wird bei jedem Senden des Signals nachgeschlagen. Der Broker eines MQTT-Signals ist host:port; ohne Port ist es 1883.

Wenn Sie die Art eines Signals ändern, beginnt seine Nachricht wieder bei den Standardwerten dieser Art. Nur das Ziel bleibt erhalten, und nur zwischen OSC und UDP (roh), wo das Ziel dasselbe bedeutet.

Ein Signal senden ​

Um ein Signal aus der Ansicht Signale zu senden, tun Sie eines davon:

  • Wählen Sie es aus und drücken Sie Senden.
  • Drücken Sie Ctrl+Enter, während Sie in seinen Feldern arbeiten.
  • Doppelklicken Sie es im Baum.

Jedes Senden schreibt eine Zeile in die Konsole: was wohin ging, die gesendeten Bytes, bei HTTP Status und Dauer. Ein Fehlschlag (eine abgelehnte Verbindung, ein nicht erreichbarer Host) ist eine rote Zeile mit dem Grund. Die Zeit des letzten Sendens steht neben den Schaltflächen.

Ein Signal geht über dieselben Kommandos hinaus wie die Ansichten seines Protokolls, daher führt der Inspektor es unter dem Werkzeug auf, das es gesendet hat, und die Gegenseite kann es nicht von einem selbst getippten unterscheiden.

Wie jede Art gesendet wird:

ArtWie sie hinausgeht
OSCWie die Ansicht OSC eine Nachricht sendet.
UDP (roh)Ein Datagramm an das Ziel.
HTTPWie die Ansicht HTTP eine Anfrage sendet, mit ihrem Cookie-Speicher, solange dort Cookies behalten an ist. Eine abgelehnte Verbindung oder ein Timeout zählt als Fehlschlag, nicht als Status.
MQTTSolange die Ansicht MQTT mit dem Broker des Signals verbunden ist, auf dieser Verbindung, mit ihrer Client-ID und ihren Anmeldedaten. Andernfalls — nicht verbunden oder mit einem anderen Broker verbunden — verbindet sich Signal Lab für diese eine Veröffentlichung mit dem Broker des Signals, mit eigener Client-ID, ohne Benutzernamen und mit einer sauberen Sitzung, und trennt danach.

Eine Verbindung geht zum Broker des Signals, wenn der Host derselbe ist (Groß- und Kleinschreibung egal) und der Port derselbe ist, wobei 1883 für einen ohne Port geschriebenen Broker steht. Namen werden nicht nachgeschlagen: localhost und 127.0.0.1 sind hier zwei verschiedene Broker, daher wird ein Signal, das einen nennt, nicht über eine zum anderen aufgebaute Verbindung gesendet.

TIP

Ein MQTT-Signal speichert kein Passwort. Um an einen Broker zu veröffentlichen, der eines verlangt, verbinden Sie sich zuerst in der Ansicht MQTT mit diesem Broker; das Signal reitet dann auf dieser Verbindung.

Von jeder Ansicht senden ​

Drücken Sie in einer beliebigen Ansicht Ctrl+K, um die Palette zu öffnen, tippen Sie einige Buchstaben des Namens, Ordners, Ziels oder der Nachricht eines Signals und drücken Sie Enter. Die Palette schließt sich und das Signal wird gesendet; Sie bleiben auf der Ansicht, die Sie gerade beobachtet haben.

TasteWas sie tut
Ctrl+KÖffnet die Palette oder schließt sie.
↑ ↓Bewegt die Auswahl.
EnterSendet das gewählte Signal.
EscSchließt die Palette, ohne zu senden.

Die Palette listet höchstens 12 Signale auf: die ersten 12 der Bibliothek, solange Sie nichts getippt haben, danach die ersten 12, die passen. Ein Klick auf eine Zeile sendet es; ein Klick daneben schließt die Palette.

Signale anlegen ​

In der Ansicht Signale ​

  1. Wählen Sie den Ordner, in den das Signal gehört (siehe aktueller Ordner).
  2. Drücken Sie Neues Signal. Ein neues OSC-Signal an 127.0.0.1:9000, Adresse /hello, erscheint in diesem Ordner, ausgewählt.
  3. Ändern Sie Name, Transport und die Felder der Nachricht.

Jede Änderung wird von selbst gespeichert; es gibt keine Schaltfläche zum Speichern in dieser Ansicht. Solange die Bibliotheksdatei nicht gelesen werden kann, wird nichts gespeichert und die Felder sind schreibgeschützt (siehe Die Bibliotheksdatei).

Duplizieren legt eine Kopie direkt nach dem ausgewählten Signal an, sein Name gefolgt von ·. Löschen fragt noch einmal nach (Löschen?): Der zweite Klick entfernt es aus der Datei. Sein Ordner bleibt, auch wenn er nun leer ist.

Von den Ansichten HTTP, OSC und MQTT ​

Der sendende Teil dreier Ansichten — Anfrage in HTTP, Sender in OSC, Veröffentlichen in MQTT — kann das, was er senden würde, als Signal aufbewahren.

  1. Richten Sie die Nachricht ein und senden Sie sie, bis sie tut, was Sie wollen.
  2. Drücken Sie Speichern… (oder Ctrl+S in diesem Teil der Ansicht). Der Dialog In der Bibliothek speichern öffnet sich.
  3. Prüfen Sie Name: Er wird aus dem vorgeschlagen, was gesendet wird.
  4. Wählen oder tippen Sie einen Ordner. Der zuletzt verwendete Ordner ist eingetragen; ein Pfad wie Venue/Stage, den es noch nicht gibt, wird angelegt.
  5. Drücken Sie Speichern.

Von da an ist die Ansicht an dieses Signal gebunden. Ein Chip neben den Schaltflächen sagt, wo es liegt (❖ Folder / Name); klicken Sie darauf, um das Signal in der Ansicht Signale zu sehen.

Sie sehenEs bedeutetWas Sie tun können
✓ Gespeichert (ausgegraut)Die Bibliothek enthält genau das, was die Ansicht senden würde.Nichts zu speichern.
Speichern und geändert am ChipDie Nachricht der Ansicht unterscheidet sich vom Signal.Speichern oder Ctrl+S schreibt die Nachricht der Ansicht in dieses Signal; Name, Ordner und Notiz bleiben.
Speichern unter…—Öffnet den Dialog erneut, gefüllt mit Name und Ordner des Signals, und speichert ein neues Signal. Die Ansicht ist dann an das neue gebunden.

Der Vergleich betrachtet die Nachricht, nicht, wie sie geschrieben ist: Die Reihenfolge der JSON-Schlüssel und die letzten Stellen eines OSC-Floats jenseits der 32-Bit-Präzision zählen nicht als Änderung.

Die Ansichten HTTP und OSC behalten die Bindung, wenn Signal Lab neu startet; die Ansicht MQTT behält sie, bis Sie die App schließen.

WARNING

Ein HTTP-Signal bewahrt seine Authentifizierung — Benutzername und Passwort oder Token — als Klartext in der Bibliotheksdatei auf. Wer die Datei lesen kann, kann sie lesen.

Ein Signal in seiner Ansicht öffnen ​

Ein ausgewähltes HTTP-, OSC- oder MQTT-Signal hat eine Schaltfläche, die es in der Ansicht seines Protokolls öffnet (HTTP, OSC oder MQTT). Die Felder der Ansicht werden aus dem Signal gefüllt und die Ansicht wird an es gebunden, wie oben: dort bearbeiten, senden, dann Speichern. Ein rohes UDP-Signal hat keine eigene Ansicht.

Aus einem Frame oder einem Topic ​

  • Wählen Sie im Inspektor einen Frame aus und drücken Sie Als Signal speichern. Ein Datagramm wird zu einem rohen UDP-Signal mit den exakten Bytes dieses Frames; eine MQTT-Veröffentlichung wird zu einem MQTT-Signal mit demselben Broker, Topic, QoS, Retain-Flag und denselben Nutzdaten. Andere Frames lassen sich nicht speichern.
  • Wählen Sie in der Ansicht MQTT ein Topic aus und drücken Sie Als Signal speichern. Sie erhalten ein MQTT-Signal, das den letzten Wert des Topics, mit seinem QoS und Retain-Flag, an den Broker veröffentlicht, mit dem Sie verbunden sind.

Beide landen im Ordner Mitgeschnitten und werden nach dem benannt, was mitgeschnitten wurde.

In einem Experiment ​

Wenn Sie einem Experiment einen Knoten hinzufügen, listet das Menü Knoten hinzufügen Ihre Signale auch unter Gespeicherte Signale auf. Wählen Sie eines, wird ein OSC-, HTTP-, MQTT- oder UDP-Knoten mit derselben Nachricht hinzugefügt. Ein rohes UDP-Signal mit Hex-Nutzdaten wird nicht angeboten: Der UDP-Knoten sendet Text. Siehe Knoten.

Ordner ​

Ein Ordner ist ein Pfad aus Namen, verbunden durch /: API/Auth ist der Ordner Auth innerhalb von API. Das Feld Ordner eines Signals enthält den Pfad seines Ordners; leer bedeutet die oberste Ebene (oberste Ebene). Namen werden getrimmt und leere Teile verworfen, wenn Sie das Feld verlassen, sodass aus API / Auth/ API/Auth wird.

Ordner werden nach Namen sortiert, Zahlen in numerischer Reihenfolge (Cue 2 vor Cue 10); Signale bleiben in der Reihenfolge der Datei. Jeder Ordner zeigt, wie viele Signale er enthält, seine Unterordner eingeschlossen. Ein leerer Ordner bleibt, bis Sie ihn entfernen.

Der aktuelle Ordner ​

Der zuletzt angeklickte Ordner oder der Ordner des ausgewählten Signals ist der aktuelle: Neues Signal und Neuer Ordner legen Dinge dort ab. Ein Chip über dem Baum nennt ihn; klicken Sie auf den Chip, um zur obersten Ebene zurückzukehren.

Mit Ordnern arbeiten ​

UmTun Sie dies
Einen Ordner anlegenDrücken Sie + Neuer Ordner. Er wird im aktuellen Ordner angelegt, heißt Neuer Ordner (mit einer Zahl dahinter, wenn der Name vergeben ist), und Sie benennen ihn sofort um.
Einen Ordner öffnen oder schließenKlicken Sie ihn an oder drücken Sie → / ←, während er den Fokus hat. Signal Lab merkt sich, welche Ordner geschlossen sind.
Alle öffnen oder schließenDie Schaltflächen ⊞ und ⊟ über dem Baum (Alle Ordner öffnen, Alle Ordner schließen).
Einen Ordner umbenennenDrücken Sie ✎ (Ordner umbenennen) oder F2 darauf, tippen Sie, dann Enter; Esc bricht ab.
Ein Signal oder einen Ordner verschiebenZiehen Sie es auf einen Ordner oder auf leeren Raum im Baum für die oberste Ebene.
Ein Signal durch Tippen verschiebenÄndern Sie sein Feld Ordner.
Einen Ordner entfernenDrücken Sie × (Ordner entfernen) und dann Entfernen?, oder drücken Sie zweimal Delete darauf.

Ein Umbenennen führt niemals zwei Ordner zusammen: Ein Name mit / darin oder einer, den ein benachbarter Ordner bereits hat, wird abgelehnt, und die Konsole sagt es. Ein Ordner kann nicht in sich selbst oder in einen Ordner innerhalb seiner gezogen werden. Wird ein Ordner in einen Ordner gezogen, der bereits einen mit demselben Namen enthält, werden die beiden zusammengeführt.

Das Entfernen eines Ordners entfernt nur den Ordner: Seine Signale und Unterordner rücken eine Ebene nach oben. Nichts wird gelöscht.

Ein Signal finden ​

Tippen Sie in Nach Name, Ordner oder Ziel filtern über dem Baum. Es passt auf Name, Ordner, Notiz, Ziel und Nachricht. Während Sie filtern, ist jeder Ordner mit einem Treffer geöffnet und die anderen sind ausgeblendet.

Die Beispielsammlung ​

Findet Signal Lab zum ersten Mal keine Bibliotheksdatei, schreibt es neun Beispiele, jedes über etwas, das leicht falsch zu machen ist. Ihre Namen und Notizen werden in der Sprache geschrieben, die die Oberfläche in diesem Moment hat; danach sind sie Ihre zum Ändern. Alle zeigen auf diesen Computer.

OrdnerSignalSendet
OSCFader-Wert/fader/1 mit dem Float 0.75 an 127.0.0.1:9000
OSCJeder Argumenttyp/types mit int -7, float 1.5, string hi, bool true, int64 4294967296, double 0.125 und nil
OSCKennung und Wert/tag mit den Strings reader-1 und 04a1b2c3
OSCAuslöser ohne Argumente/cue/go ohne Argumente
MQTTEinen Wert veröffentlichen1 an lab/example/value auf 127.0.0.1:1883, QoS 0
MQTTEinen Retained-Wert setzennight an lab/example/config, QoS 1, retained
MQTTEinen Retained-Wert löschenLeere Retained-Nutzdaten an lab/example/config, QoS 1
HTTPLäuft der Dienst?GET http://127.0.0.1:8080/, Timeout 4000 ms
RohRohe UDP-BytesDie Bytes de ad be ef an 127.0.0.1:9000

Um die Beispielsammlung zurückzubekommen, verschieben oder benennen Sie signals.json um und drücken Sie Datei neu laden: Ohne Datei dort wird sie erneut geschrieben.

Die Bibliotheksdatei ​

Die Bibliothek ist signals.json im Datenordner: Documents/SignalLab in Ihrem Benutzerordner auf einem Desktop oder der Datenordner des Servers (siehe Dateien). Fahren Sie mit der Maus über die Signalanzahl unter dem Baum, um den ganzen Pfad zu sehen.

  • Von selbst gespeichert. Jede Änderung wird 0,7 s nach der letzten geschrieben, die ganze Datei auf einmal, über eine temporäre Datei im selben Ordner, die dann den Platz der Datei einnimmt — ein abgebrochener Schreibvorgang hinterlässt die vorherige Datei. Während ein Schreibvorgang wartet, sagt der Fuß des Baums wird gespeichert…; dann gespeichert. Ein noch wartender Schreibvorgang wird vor einem Neustart der App durch ein Update ausgeführt.
  • Von Hand bearbeitet. Signal Lab bemerkt nicht, wenn sich die Datei unter ihm ändert. Nachdem Sie sie bearbeitet oder durch eine von einem anderen Rechner ersetzt haben, drücken Sie Datei neu laden. Ein Neuladen liest die Datei erneut und verwirft eine Änderung, die noch auf das Schreiben wartete.
  • Niemals ersetzt, solange sie kaputt ist. Ist die Datei kein gültiges JSON oder keine Signalbibliothek, zeigt der Baum den Fehler mit Pfad, Zeile und Spalte der Datei, und die Konsole sagt dasselbe. Die Datei bleibt, wie sie ist, und nichts schreibt die Bibliothek, bis sie wieder liest: Neues Signal, das Umbenennen, Verschieben und Entfernen von Signalen und Ordnern, das Ziehen, die Felder eines Signals, Speichern…, Speichern und Speichern unter… in den Ansichten HTTP, OSC und MQTT sowie Als Signal speichern im Inspektor und in der Ansicht MQTT sind alle aus, und ihr Hinweis sagt, was falsch ist. Korrigieren Sie die Datei oder entfernen Sie sie und drücken Sie Datei neu laden: Sobald sie liest, funktioniert alles wieder.
  • Eine Datei, die kaputtgeht, während die App läuft. Wenn Sie die Datei in etwas Unlesbares bearbeiten und die App dann eine Änderung speichert, wird das Speichern mit demselben Fehler abgelehnt, die Datei bleibt, wie Sie sie gemacht haben, und die App hört auf zu schreiben, bis Sie sie korrigieren und Datei neu laden drücken. Eine Datei, die Sie bearbeitet und gültig gelassen haben, wird bei ihrem nächsten Speichern durch die Liste der App ersetzt, wie oben: zuerst neu laden.

Ein kurzes Beispiel der Datei:

json
{
  "version": 2,
  "signals": [
    {
      "id": "fader-value",
      "name": "Fader value",
      "group": "Venue/Stage",
      "note": "Main fader of desk A.",
      "body": {
        "transport": "osc",
        "target": "127.0.0.1:9000",
        "address": "/fader/1",
        "args": [{ "type": "float", "value": 0.75 }]
      }
    }
  ],
  "folders": ["Venue/Stage", "Venue/Empty for now"]
}
SchlüsselWas
version2. Eine Datei der Version 1 (vor den Ordnern) liest sich genauso, ohne leere Ordner.
signals[].idWird beim Anlegen des Signals aus dem Namen gemacht (fader-value, fader-value-2, …) und von einem Umbenennen nie geändert. signallab fire findet ein Signal darüber.
signals[].groupDer Ordnerpfad; "" ist die oberste Ebene.
signals[].bodyDie Nachricht. transport ist osc, udp, http oder mqtt; die anderen Schlüssel sind die Felder dieser Art.
foldersJeder Ordner, damit ein leerer erhalten bleibt. Entfällt, wenn es keine gibt. Eine group, die kein Eintrag listet, ist ebenfalls ein Ordner.

Von der Kommandozeile ​

signallab fire sendet ein Signal einer Bibliothek, über dieselben Kommandos wie die App:

bash
signallab fire "Fader value"
signallab fire fader-value --library ./show/signals.json

Es findet das Signal zuerst über seine id, dann über seinen Namen, Groß- und Kleinschreibung egal. Wenn mehrere Signale diesen Namen haben, nennt es ihre ids und sendet nichts. Ohne --library liest es die eigene signals.json der App; es schreibt die Datei nie. Siehe Die Kommandozeile.

  • Inspektor — beobachten, was ein Signal sendet, und einen mitgeschnittenen Frame als Signal aufbewahren.
  • Tastaturkürzel
  • Dateien — wo der Datenordner liegt.