Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| intern:json_api [2012/08/17 14:03] – Externe Bearbeitung 127.0.0.1 | intern:json_api [2025/06/11 20:35] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ~~DISCUSSION: | ~~DISCUSSION: | ||
| + | |||
| + | |||
| ======= JSON-API ======= | ======= JSON-API ======= | ||
| + | |||
| + | |||
| + | |||
| ====== Übersicht über unterstützte Befehle: ====== | ====== Übersicht über unterstützte Befehle: ====== | ||
| + | |||
| + | |||
| * GPIO-Befehle, | * GPIO-Befehle, | ||
| + | |||
| + | |||
| ====== Designziele ====== | ====== Designziele ====== | ||
| + | |||
| * einfach zu parsen, v.a. sollte die Bedeutung gelesener Zeichen nicht von noch nicht gelesenen Zeichen abhängen | * einfach zu parsen, v.a. sollte die Bedeutung gelesener Zeichen nicht von noch nicht gelesenen Zeichen abhängen | ||
| + | |||
| * Kompatibilität zu alten GPIO-Befehlen | * Kompatibilität zu alten GPIO-Befehlen | ||
| + | |||
| * Buchstaben a bis m dürfen nicht am Anfang eines Befehls stehen, sonst Widerspruch zum einfachen Parsen | * Buchstaben a bis m dürfen nicht am Anfang eines Befehls stehen, sonst Widerspruch zum einfachen Parsen | ||
| + | |||
| * Problem bei Erhöhung der Anzahl der IO-Pins: entweder alte GPIO-Syntax wird inkonsistent (z.B. Verwendung von Zahlen statt Buchstaben für neue Pins) oder es wird kompliziert zu Parsen (z.B. wenn ein Befehl der JSON-API mit n beginnt wäre nicht sofort klar, ob damit der Befehl oder der PIN mit der Bezeichnung n gemeint ist) → Lösungsvorschlag: | * Problem bei Erhöhung der Anzahl der IO-Pins: entweder alte GPIO-Syntax wird inkonsistent (z.B. Verwendung von Zahlen statt Buchstaben für neue Pins) oder es wird kompliziert zu Parsen (z.B. wenn ein Befehl der JSON-API mit n beginnt wäre nicht sofort klar, ob damit der Befehl oder der PIN mit der Bezeichnung n gemeint ist) → Lösungsvorschlag: | ||
| + | |||
| //Comment by svesch:// Ist ok, 16 Bit ([a-p] + [x] als Joker) werden im Alphabet reserviert. Bei zukünftigen Implementierungen kann die Belegung ggf. dynamisch geändert werden oder auf - wie in Deinem Vorschlag - Doppelkombinationen erweitert werden. | //Comment by svesch:// Ist ok, 16 Bit ([a-p] + [x] als Joker) werden im Alphabet reserviert. Bei zukünftigen Implementierungen kann die Belegung ggf. dynamisch geändert werden oder auf - wie in Deinem Vorschlag - Doppelkombinationen erweitert werden. | ||
| + | |||
| * Kompatibilität zu Action-Script → kompatibel zu URL (Erlaubte Zeichen: [A-Z, a-z, 0-9, -, _, ., ~]) | * Kompatibilität zu Action-Script → kompatibel zu URL (Erlaubte Zeichen: [A-Z, a-z, 0-9, -, _, ., ~]) | ||
| + | |||
| * nicht case sensitive | * nicht case sensitive | ||
| + | |||
| * möglichst keine Sonderzeichen | * möglichst keine Sonderzeichen | ||
| + | |||
| * Text basiert, möglichst ASCII | * Text basiert, möglichst ASCII | ||
| + | |||
| + | |||
| ====== Vorschläge ====== | ====== Vorschläge ====== | ||
| + | |||
| * Befehle dürfen nur mit q bis w, y oder z beginnen | * Befehle dürfen nur mit q bis w, y oder z beginnen | ||
| + | |||
| * hierarchischer Aufbau der Befehle: erster Buchstabe gibt Gruppe der Befehle an, weitere die Untergruppen bis schließlich ein Befehl ausgewählt wird (z.B. sb = 5000 heißt Baudrate des Serial Servers auf 5000 setzen; s → Befehl hinsichtlich des Serial Servers, b → Baudrate) | * hierarchischer Aufbau der Befehle: erster Buchstabe gibt Gruppe der Befehle an, weitere die Untergruppen bis schließlich ein Befehl ausgewählt wird (z.B. sb = 5000 heißt Baudrate des Serial Servers auf 5000 setzen; s → Befehl hinsichtlich des Serial Servers, b → Baudrate) | ||
| + | |||
| + | |||
| ^ Partition (erster Buchstabe) ^ Untergruppe ^ | ^ Partition (erster Buchstabe) ^ Untergruppe ^ | ||
| Line 29: | Line 53: | ||
| | t | Event trigger Einstellungen | | | t | Event trigger Einstellungen | | ||
| | ... | ... | | | ... | ... | | ||
| + | |||
| + | |||
| Zwischenstand: | Zwischenstand: | ||
| + | |||
| ^ Command Name ^ Type ^ Description ^ | ^ Command Name ^ Type ^ Description ^ | ||
| | q | submenu | | q | submenu | ||
| + | | qi | submenu | ||
| + | | qiv | submenu | ||
| + | | qivX | WORD | Value of single process input register | ||
| + | | qif | submenu | ||
| + | | qifX | BOOL | Flag of single process input register | ||
| | qs | WORD | indicates if the process is running; setting to 1 starts the process; setting to 0 stops the process; 2 indicates an error and is no valid value to be written | | qs | WORD | indicates if the process is running; setting to 1 starts the process; setting to 0 stops the process; 2 indicates an error and is no valid value to be written | ||
| + | | qm | ENUM:" | ||
| + | | qo | submenu | ||
| + | | qov | submenu | ||
| + | | qovX | WORD | Value of single process output register | ||
| + | | qof | submenu | ||
| + | | qofX | BOOL | Flag of single process output register | ||
| | y | submenu | | y | submenu | ||
| | yX | submenu | | yX | submenu | ||
| Line 43: | Line 81: | ||
| | sub | ENUM | UART-Bitrate | | sub | ENUM | UART-Bitrate | ||
| | u | submenu | | u | submenu | ||
| - | | ue | submenu | + | | ue | submenu |
| | uev | submenu | | uev | submenu | ||
| - | | uevX | WORD | Value of single edge counter; only 0 may be assigned (i.e. counter reset) | + | | uevX | WORD | Value of single edge counter |
| | ut | submenu | | ut | submenu | ||
| | utX | ENUM:" | | utX | ENUM:" | ||
| | uv | submenu | | uv | submenu | ||
| | uvX | WORD | Value of single GPIO port | | | uvX | WORD | Value of single GPIO port | | ||
| + | |||
| + | |||
| + | |||
| ====== Event trigger Einstellungen (Gruppe t) ====== | ====== Event trigger Einstellungen (Gruppe t) ====== | ||
| + | |||
| + | |||
| Für die aktuelle Session werden die Event trigger eingestellt. | Für die aktuelle Session werden die Event trigger eingestellt. | ||
| + | |||
| Diese Kommandogruppe hat für JSON-Zugriff keine Bedeutung, da diese Kommunikation nur durch den Client initiiert werden kann. | Diese Kommandogruppe hat für JSON-Zugriff keine Bedeutung, da diese Kommunikation nur durch den Client initiiert werden kann. | ||
| + | |||
| + | |||
| Die Kommandos aktivieren oder deaktivieren Events (d.h. Flanken). | Die Kommandos aktivieren oder deaktivieren Events (d.h. Flanken). | ||
| + | |||
| Für digitale Eingänge wird ' | Für digitale Eingänge wird ' | ||
| + | |||
| Ggf. kann das Prinzip auf digitale Ausgänge erweitert werden, wenn lokale Änderungen mitgeschnitten werden sollen. | Ggf. kann das Prinzip auf digitale Ausgänge erweitert werden, wenn lokale Änderungen mitgeschnitten werden sollen. | ||
| + | |||
| Dem kann einer der folgenden Werte zugewiesen werden: | Dem kann einer der folgenden Werte zugewiesen werden: | ||
| + | |||
| + | |||
| ^ Wert ^ Bedeutung ^ | ^ Wert ^ Bedeutung ^ | ||
| Line 66: | Line 117: | ||
| | 2 | Fallende Flanken | | | 2 | Fallende Flanken | | ||
| | 3 | Alle Flanken | | | 3 | Alle Flanken | | ||
| + | |||
| Events generieren Zustandstelegramme der Form ' | Events generieren Zustandstelegramme der Form ' | ||
| + | |||
| Für analoge Eingänge oder PWM-Ausgänge hat diese Einstellung keinen Effekt. | Für analoge Eingänge oder PWM-Ausgänge hat diese Einstellung keinen Effekt. | ||
| + | |||
| + | |||
| Trigger für den Prozesspeicher können mittels tq=value erfolgen. | Trigger für den Prozesspeicher können mittels tq=value erfolgen. | ||
| + | |||
| value ist eine der 16 Adressen, die aboniert werden sollen. | value ist eine der 16 Adressen, die aboniert werden sollen. | ||
| + | |||
| + | |||
| + | |||