Le MBED est une carte microcontrolleur facilement connectable sur Internet. On propose la commande d'une lampe LED du module avec PLCLink.
La programmation du MBED est en C++, les commandes RPC permettent la lecture et l'écriture d'une variable avec un url simple. On ajoute donc un switch avec une entrée par <url> et une commande par <link>.
Ce code est à compléter avec l'IP de votre MBED sur le réseau à la place de "IP_MBED".
Placer ce code dans l'iPhone avec les divers méthodes citées dans ce site, DropBox par exemple.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wagoml PUBLIC "-//wagoml org//DTD WAGOML 1.0//EN" "http://pautex.fr/wago/DTD/WagoML-1.0.dtd">
<wagoml version="1.0" xmlns="http://pautex.fr/wago/">
<title>MBED</title>
<items>
<item id="0">
<title>Intern</title>
<name>MBED</name>
<url/>
<user/>
<password/>
</item>
</items>
<rooms>
<setting>
<title>Intern</title>
<name>MBED</name>
</setting>
<room id="0">
<title>MBED</title>
<refresh>2000</refresh>
<items>
<item id="0">
<title>Test</title>
<name>MBED</name>
<description>RPC command</description>
<affichage>switch</affichage>
<url>http://IP_MBED/rpc/i/read</url>
<link>http://IP_MBED/rpc/i/write%20%d</link>
</item>
</items>
</room>
</rooms>
</wagoml>
Installation d'un switch et deux url : lecture de la variable "i" et écriture par la méthode RPC. Le blanc "%20" est nécessaire dans le link pour être conforme avec la syntaxe RPC. Voir le site MBED pour des détails.
Le programme du MBED tiré des exemples pour l'installation de la partie réseau.
- voir le site du MBED.
// Exemple avec PLCLINK remontage complet serveur et ethernet du site MBED #include "mbed.h" #include "EthernetNetIf.h" #include "HTTPServer.h" #include "SerialRPCInterface.h" EthernetNetIf eth; HTTPServer svr; DigitalOut led1(LED1, "led1"); // life cycle LocalFileSystem fs("webfs"); int main() { EthernetErr ethErr = eth.setup(); if (ethErr) { printf("Error %d in setup.\n", ethErr); return -1; } printf("Reglages OK\n"); FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path svr.addHandler<SimpleHandler>("/"); //Default handler svr.addHandler<RPCHandler>("/rpc"); svr.bind(80); Base::add_rpc_class<DigitalOut>(); int i = 12; RPCVariable<int> rpc_i(&i, "i"); // /rpc/i/read printf("Listening...\n"); Timer tm; tm.start(); while (1) { Net::poll(); // lis le reseau if (tm.read()>.5) { tm.start(); led1 = i & 0x01; // i vers la led1 } } }
La variable i est commandée par RPC, deux adresses url sont utiles.
- Lecture de i : http://IP_MBED/rpc/i/read
- Ecriture de i : http://IP_MBED/rpc/i/write%20x
x est la valeur, remplacée dans wagoML par %d pour prendre la valeur 0 ou 1 du switch.
IP_MBED est l'IP définie en DHCP mais qu'il faudra connaitre.