ECMD-Befehle absetzen
Wozu?
Bei der Arbeit mit Ethersex kann es manchmal ganz nützlich sein ECMD befehle per Netzwerk versenden zu können, zum Beispiel wenn man ein zweites Ethersex Board fernsteuern möchte oder um ECMD-Commands zusammen mit Control6 nutzen zu können. Dies ist mit Ethersex kein Problem da alle nötigen Elemente schon vorhanden sind und man sie nur noch aktivieren brauch.
Was muss aktiviert werden?
make menuconfig Protokolle ---> [*] ECMD (Etherrape Control Interface) Protokolle ---> ECMD (Etherrape Control Interface) ---> │ │ [*] TCP/Telnet │ │ │ │ [*] SEND via TCP │ │
Das war es auch schon. Durch diese Einstellungen ist euer Ethersex in der Lage ECMD Kommandos per TCP zu senden und zu Empfangen.
Verwendung
Möchte man nun innerhalb eines Control6 Skriptes ein ECMD Kommando verwenden muss man leider den Umweg über das Netzwerk gehen und den Befehl an das eigene Board senden, dies stellt nun aber kein Problem mehr da.
In meinem Beipiel verwende ich dazu das Kommando ESEND um Befehle an mein Board zu senden um je nach empfangenen RC5 Code ein Relais ein oder aus zu schalten.
CONTROL_START uint16_t rc5 = RC5_GET(); ON rc5 == 0x0a0f DO PIN_TOGGLE(Fan); END ON rc5 == 0x0a0c DO ESEND(192.168.1.101, "all_off\n"); END ON rc5 == 0x0a0d DO ESEND(192.168.1.101, "all_on\n"); END ON rc5 == 0x0a01 DO ESEND(192.168.1.101, "A1\n"); END ON rc5 == 0x0a04 DO ESEND(192.168.1.101, "A0\n"); END ON rc5 == 0x0a02 DO ESEND(192.168.1.101, "B1\n"); END ON rc5 == 0x0a05 DO ESEND(192.168.1.101, "B0\n"); END ON rc5 == 0x0a03 DO ESEND(192.168.1.101, "C1\n"); END ON rc5 == 0x0a06 DO ESEND(192.168.1.101, "C0\n"); END CONTROL_END
Dabei steht der erste Operator beim ESEND Aufruf für die IP Adresse des Boards welches das Kommando empfangen soll(im Beispiel mein eigenes Board) und der zweite gibt das eigentliche Kommando gefolgt von einem "\n" an.Das Kommando muss und das Escape Zeichen müssen dabei in "" stehen.
Dadurch bin ich der Lage ECMD Kommandos auch in Control6 zu verwenden.