# [Codesys Wago] SMS Versenden/Empfangen



## linsenpago (5 März 2013)

Hallo!

Ich habe meine Steuerung per SMS soweit fertig, dass ich mein Licht, die Beschattung, Alarmanlage usw. per SMS steuern kann und auch die richtige Rückmeldung auf die jeweilige Aktion zurück erhalte.

Nun würde ich das gerne noch ein wenig erweitern, dass ich z.b. "Status" an die Steuerung schicke und ich dann als Antwort den Zustand verschiedener Variablen zurück bekomme.



So in etwa hätte ich mir das vorgestellt:

SMS an die Steuerung -> "Status"
Rückmeldung von der Steuerung <- Alarm=True, Vorzimmerlicht=false, Wohnzimmerlicht=true, Beschattung=true usw.

Hat jemand eine Idee wie ich das am besten angehe? Mir fehlt da komplett der Ansatz, da ich nicht weiß wie man den SMS Text so variabel  gestalten kann?
Vorzugsweise in ST?

LG
Alex


----------



## Oberchefe (5 März 2013)

Text programmgesteuert:
http://www.sps-forum.de/showthread....-SMS-Text-abhängig-von-Zustand-einer-Variable

zusammenbauen geht über concat


----------



## linsenpago (6 März 2013)

Ja wie ich das übergebe und dann per sms Versende ist mir klar, das klappt ja auch, aber wie ich mir den String zusammenbastle, da fehlt mir noch das KnowHow.

Ich habe mehrere boolsche Globale Variablen wie z.b. "Wohnzimmer_Status" od. "Vorzimmer_Status", "Alarm_Status", "Beschattung_Status" die alle entweder True oder False sind.

Wie müsste ich das CONCAT dann aufbauen, damit das in einen String zusammengesetzt wird?

Wenn ich das Richtig verstehe müsste dieser String dann so in das SMS Programm übergeben werden:


```
IF Message.Parameter[2] = '1' THEN (* STATUS Abfragen *)


   		SEND_SMS.Msg 		:= Status_String;


	END_IF
```


----------



## Oberchefe (6 März 2013)

für jede Boolsche Variable einen eigenen String abhängig vom Zustand beschreiben, dann mit Concat zusammenbauen, am besten über eine temporäre Stringvariable, E-Mail Versand könnte asynchron zum Programm laufen.

Deklaration:

```
Wohnzimmer_Status: BOOL;
    Vorzimmer_Status: BOOL;
    Alarm_Status: BOOL;
    Beschattung_Status: BOOL;

    Wohnzimmer_String: STRING;
    Vorzimmer_String: STRING;
    Alarm_String: STRING;
    Beschattung_String: STRING;

    StringTemp: STRING;
```

Code:


```
IF Wohnzimmer_Status THEN
    Wohnzimmer_String:= 'Im Wohnzimmer ist es hell, ';
ELSE
    Wohnzimmer_String:= 'Im Wohnzimmer ist es dunkel, ';
END_IF

IF Vorzimmer_Status THEN
    Vorzimmer_String:= 'Im Vorzimmer leuchtet was, ';
ELSE
    Vorzimmer_String:= 'Im Vorzimmer leuchtet nichts, ';
END_IF

IF Alarm_Status THEN
    Alarm_String:='Alarm liegt an, ';
ELSE
    Alarm_String:='kein Alarm, ';
END_IF

IF Beschattung_Status THEN
    Beschattung_String:= 'die Sonne brennt';
ELSE
    Beschattung_String:= 'wolkig';
END_IF

StringTemp:=CONCAT(Wohnzimmer_String, Vorzimmer_String);
StringTemp:=CONCAT(StringTemp, Alarm_String);
StringTemp:=CONCAT(StringTemp, Beschattung_String);
SEND_SMS.Msg:=StringTemp;
```


----------



## linsenpago (8 März 2013)

Sehr gut! Das funktioniert wunderbar! 

Vielen Dank!


----------

