mbed RPC Server - Eclipse SmartHome Variante

Dependencies:   EthernetInterface HttpServer Motor Servo mbed-rtos mbed StepperMotorUni TMP175

Fork of RPCHTTPServerSimple by smd.iotkit2.ch

Das ist der mbed Teil zu Eclipse SmartHome (openHAB2). Compiliert das Programm und lädt es auf das Board.

Installation Eclipse SmartHome

Lädt eine vorbereitete Version des openHAB2 Runtimes von http://images.workshoptage.ch/images/ws4/ herunter und entpackt es auf Eurem PC. Alternativ kann die Entwicklungsumgebung von openHAB2 inkl. Eclipse wie hier beschrieben, installiert werden.

Zusätzlich ist das Addon (Eclipse Plug-In - ch.iotkit.smarthome.binding.mbedRPC*), ebenfalls von http://images.workshoptage.ch/images/ws4/ downzuladen und ins Verzeichnis addons zu kopieren.

Danach kann das openHAB2 Runtime mittels des start Datei gestartet werden und das UI mittels http://localhost:8080 aufrufen werden.

Der Sourcecode zum Eclipse Plug-In befindet sich auf GitHub

Konfiguration

Vorgehen:

  • Konfiguriert die Ethernet Bridge mit der IP Adresse des IoTKit SMD Shield
  • Fügt die Sensoren, Aktoren, LED's etc. vom IoTKit SMD Shield hinzu, aufbauend auf der Bridge

Unterstützte Geräte

  • Sensoren (auf Shield)
    • Poti (Pin A0)
    • Helligkeits Sensor (Pin A1)
    • Hall Sensor (Pin A2)
    • Temperatur Sensor (mittels I2C Bus)
  • Aktoren
    • Motor (Pin D3, D2, D4), verbinden mit DCMOT D2-D7 oben
    • Servo (Pin D9), verbinden mit Servo2 Stecker
    • Stepper (K64F Pins), verbinden mit STEPPER3, rotes Kabel nach unten
  • LED's (auf Shield)
    • LED's rot, gelb, grün, blau (Pin D10 - D13)
  • LED Strip 12 Volt (Pin D5 - D7), verbinden mit FET D5-D7, 12V oben

Der Motor und der LED Strip benötigen ein externes 12 Volt Netzteil.

cURL

Die Funktionen können mittels cURL oder Browser wie folgt getestet werden:

# RGB LED Strip (weiss 0xFFFFFF, rot 0xFF00, grün 0xFF0000, blau, 0xFF)
http://192.168.178.32/rpc/ledstrip/write+16777215
http://192.168.178.32/rpc/ledstrip/write+‭16711680‬
http://192.168.178.32/rpc/ledstrip/write+65280
http://192.168.178.32/rpc/ledstrip/write+255
 
# Motor Up, Down, Stop (Simulation Rollladen)
http://192.168.178.32/rpc/motor1/up
http://192.168.178.32/rpc/motor1/down
http://192.168.178.32/rpc/motor1/stop
 
# Schrittmotor                               
http://192.168.178.32/rpc/stepper1/up
http://192.168.178.32/rpc/stepper1/down
 
# Servo (Positionieren 0 - 1.0 und Position lesen)
http://192.168.178.32/rpc/servo1/write+0.5
http://192.168.178.32/rpc/servo1/read
 
# Temperatur Sensor abfragen                        
http://192.168.178.32/rpc/temp/read

IP-Adresse entsprechend dem Board anpassen.

Committer:
stefan1691
Date:
Wed Apr 08 12:31:41 2015 +0000
Revision:
11:43e28c85fd75
Korrektur AnalogIn laut . https://developer.mbed.org/questions/3897/AnalogIn-not-working-in-rpc/

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 11:43e28c85fd75 1 /* mbed Microcontroller Library
stefan1691 11:43e28c85fd75 2 * Copyright (c) 2006-2013 ARM Limited
stefan1691 11:43e28c85fd75 3 *
stefan1691 11:43e28c85fd75 4 * Licensed under the Apache License, Version 2.0 (the "License");
stefan1691 11:43e28c85fd75 5 * you may not use this file except in compliance with the License.
stefan1691 11:43e28c85fd75 6 * You may obtain a copy of the License at
stefan1691 11:43e28c85fd75 7 *
stefan1691 11:43e28c85fd75 8 * http://www.apache.org/licenses/LICENSE-2.0
stefan1691 11:43e28c85fd75 9 *
stefan1691 11:43e28c85fd75 10 * Unless required by applicable law or agreed to in writing, software
stefan1691 11:43e28c85fd75 11 * distributed under the License is distributed on an "AS IS" BASIS,
stefan1691 11:43e28c85fd75 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
stefan1691 11:43e28c85fd75 13 * See the License for the specific language governing permissions and
stefan1691 11:43e28c85fd75 14 * limitations under the License.
stefan1691 11:43e28c85fd75 15 */
stefan1691 11:43e28c85fd75 16 #ifndef RPCFUNCTION_RPC
stefan1691 11:43e28c85fd75 17 #define RPCFUNCTION_RPC
stefan1691 11:43e28c85fd75 18
stefan1691 11:43e28c85fd75 19 #include "rpc.h"
stefan1691 11:43e28c85fd75 20 #define STR_LEN 64
stefan1691 11:43e28c85fd75 21
stefan1691 11:43e28c85fd75 22 namespace mbed {
stefan1691 11:43e28c85fd75 23
stefan1691 11:43e28c85fd75 24 /**
stefan1691 11:43e28c85fd75 25 *
stefan1691 11:43e28c85fd75 26 *Class to call custom functions over RPC
stefan1691 11:43e28c85fd75 27 *
stefan1691 11:43e28c85fd75 28 */
stefan1691 11:43e28c85fd75 29 class RPCFunction: public RPC {
stefan1691 11:43e28c85fd75 30 public:
stefan1691 11:43e28c85fd75 31 /**
stefan1691 11:43e28c85fd75 32 * Constructor
stefan1691 11:43e28c85fd75 33 *
stefan1691 11:43e28c85fd75 34 *@param f Pointer to the function to call. the function must be of the form void foo(char * input, char * output)
stefan1691 11:43e28c85fd75 35 *@param name The name of this object
stefan1691 11:43e28c85fd75 36 */
stefan1691 11:43e28c85fd75 37 RPCFunction(void (*f)(Arguments*, Reply*), const char* = NULL);
stefan1691 11:43e28c85fd75 38
stefan1691 11:43e28c85fd75 39 /**
stefan1691 11:43e28c85fd75 40 *run
stefan1691 11:43e28c85fd75 41 *
stefan1691 11:43e28c85fd75 42 *Calls the attached function passing the string in but doesn't return the result.
stefan1691 11:43e28c85fd75 43 *@param str The string to be passed into the attached function. This string can consist of any ASCII characters apart from escape codes. The usual limtations on argument content for RPC strings has been removed
stefan1691 11:43e28c85fd75 44 *@return A string output from the function
stefan1691 11:43e28c85fd75 45 */
stefan1691 11:43e28c85fd75 46 void run(Arguments* args, Reply* r);
stefan1691 11:43e28c85fd75 47
stefan1691 11:43e28c85fd75 48 virtual const struct rpc_method *get_rpc_methods();
stefan1691 11:43e28c85fd75 49
stefan1691 11:43e28c85fd75 50 private:
stefan1691 11:43e28c85fd75 51 void (*_ftr)(Arguments*, Reply*);
stefan1691 11:43e28c85fd75 52
stefan1691 11:43e28c85fd75 53 char _input[STR_LEN];
stefan1691 11:43e28c85fd75 54 char _output[STR_LEN];
stefan1691 11:43e28c85fd75 55 };
stefan1691 11:43e28c85fd75 56
stefan1691 11:43e28c85fd75 57 }
stefan1691 11:43e28c85fd75 58
stefan1691 11:43e28c85fd75 59 #endif