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. | ||
+ | |||
+ | |||
+ | |||