Komut
RestServer
Açıklama
Bu bağlayıcı “http” istekleri yapılmasına izin verir. Rest bağlayıcısını kullanmak için izlemeniz gereken adımların altında:
- Rest Server bağlayıcısını kurun;
- konektörü etkinleştirin;
- basit bir eskiz yaz;
- taslağı yükleyin ve keyfini çıkarın.
Kurulum konektörü
Rest Server Connector yapılandırma dosyasını aşağıdaki yolda bulabilirsiniz: /usr/lib/python2.7/ciao/connectors/restserver/restserver.json.conf
"name" : "restserver" ,
"description" : "Ciao Core için REST sunucusu konektörü" ,
"yazarlar" : [ "Arduino Takımı <swdev@arduino.org>;" ] ,
"depo" : "https://github.com/arduino-org/Ciao" ,
"sürüm" : "0.0.2" ,
"params" : {
"bağlantı noktası" : 80
} ,
"log" : {
"düzey" : "bilgi"
}
}
Başlangıçtaki parametreler dahili kullanım içindir, ne yaptığınızı tam olarak bilmiyorsanız bunları (ad, açıklama, sürüm, ciao) düzenlemeyin.
Yapılandırılabilir kısım, "params" tuşu ile tanımlanan kısımdır:
- “Port”: iletişim portunu belirtir. Varsayılan bağlantı noktası 80 numaradır, ancak ileri düzey kullanıcılar iletişimi hızlandırmak için onu değiştirebilir
Bağlayıcıyı etkinleştir
Her Ciao bağlayıcısında Ciao Core için bir yapılandırma dosyası bulunmalıdır; bağlayıcıyı etkinleştirmek için bu basit dosya zorunludur.
Rest Server bağlayıcısını etkinleştirmek için lütfen aşağıdaki yolda dosyayı düzenleyin: /usr/lib/python2.7/ciao/conf/restserver.ciao.json.conf
"name" : "restserver" ,
"etkin" : doğru ,
"type" : "yönetilen" ,
[ ... ]
}
Etkinleştirilen anahtar true (boole değeri) olarak ayarlanmalıdır. Bu, Rest Server Bağlayıcısı'nı etkinleştirmek için düzenlemeniz gereken tek parametredir. Tamamlandığında Ciao Core, Rest Server Connector'ı kullanacak şekilde hazır olacak ve yapılandırılacaktır.
Misal
supported boards:Yun,Tian.
Possible commands to send from the xmpp client:
"/arduino/digital/PIN" -> to read a digital PIN
"/arduino/digital/PIN/VALUE"-> to write a digital PIN (VALUE:1/0)
"/arduino/analog/PIN/VALUE" -> to write in a PWM PIN(VALUE rang:0-255);
"/arduino/analog/PIN" -> to read a analog PIN
"/arduino/servo/PIN/VALUE" -> to write angle in a SERVO PIN(VALUE range:0-180);
"/arduino/mode/PIN/VALUE" -> to set the PIN mode (VALUE: input / output)
Example:
"/arduino/mode/13/output"-> pinMode(13, OUTPUT)
"/arduino/digital/13/1" -> digitalWrite(13, HIGH)
*/
#include<Ciao.h>
#include<Servo.h>
Servo servo;
void setup() {
Ciao.begin();
}
void loop() {
CiaoData data = Ciao.read("restserver");
if (!data.isEmpty()) {
String id = data.get(0);
String sender = data.get(1);
String message = data.get(2);
message.toUpperCase();
String command[3];
splitString(message, "/", command, 3);
execute(command, id);
}
}
void execute(String cmd[], String id) {
if (cmd[0] == "DIGITAL") {
digitalCommand(cmd, id);
}
elseif(cmd[0] == "ANALOG") {
analogCommand(cmd, id);
}
elseif(cmd[0] == "SERVO") {
servoCommand(cmd, id);
}
elseif(cmd[0] == "MODE") {
setMode(cmd, id);
}
else
Ciao.writeResponse("restserver", id, "sorry, i don't understand :(");
}
void servoCommand(String cmd[], String id) {
int pin, value;
pin = (cmd[1]).toInt();
if (cmd[2] != "-1") {
value = (cmd[2]).toInt();
if (value <= 180 && value >= 0) {
servo.attach(pin);
servo.write(value);
Ciao.writeResponse("restserver", id, "Servo D" + String(pin) + " set to " + String(value) + " degrees");
}
else
Ciao.writeResponse("restserver", id, "Invalid angle value");
}
else
Ciao.writeResponse("restserver", id, "Invalid command");
}
void digitalCommand(String cmd[], String id) {
int pin, value;
pin = (cmd[1]).toInt();
if (cmd[2] != "-1") {
value = (cmd[2]).toInt();
digitalWrite(pin, value);
if (value == 1)
Ciao.writeResponse("restserver", id, "Pin D" + String(pin) + " ON");
elseif(value == 0)
Ciao.writeResponse("restserver", id, "Pin D" + String(pin) + " OFF");
}
elseif(cmd[2] == "-1") {
value = digitalRead(pin);
Ciao.writeResponse("restserver", id, "D" + String(pin) + " value = " + String(value));
}
}
void analogCommand(String cmd[], String id) {
int pin, value;
pin = (cmd[1]).toInt();
if (cmd[2] != "-1") {
value = (cmd[2]).toInt();
analogWrite(pin, value);
Ciao.writeResponse("restserver", id, "D" + String(pin) + " set to analog");
}
elseif(cmd[2] == "-1") {
value = analogRead(pin);
Ciao.writeResponse("restserver", id, "A" + String(pin) + " value = " + String(value));
}
}
void setMode(String cmd[], String id) {
int pin;
pin = (cmd[1]).toInt();
if (cmd[2] == "INPUT") {
pinMode(pin, INPUT);
Ciao.writeResponse("restserver", id, " pin D" + String(pin) + " set in INPUT mode");
return;
}
if (cmd[2] == "OUTPUT") {
pinMode(pin, OUTPUT);
Ciao.writeResponse("restserver", id, " pin D" + String(pin) + " set in OUTPUT mode");
return;
}
Ciao.writeResponse("restserver", id, "invalid mode");
}