Somfy RTS in IP Symcon über RTS485 Gateway einbinden

Najo, er kann ja die Fernbedienung nicht an den IP-Symcon Rechner anstecken :rolleyes:

Spass bei seite…es gibt mittlerweile kostengünstige Alternativen zum 500 € Somfy RTS Gateway.
z.b. von RFXcom… RFXtrx433E USB HA controller

Da bist mit 100 € dabei.

Wie wird das gute Stück denn in IPS angebunden?

Jan

via USB an den IPS Rechner

Also ich habe ihn im Einsatz und steuere damit meine Markisen - funzt!

Och, ich meinte doch wie „IM“ IPS und nicht wie „AM“ Rechner :rolleyes:

Jan

Man muss einen Seriellen Port zu dem Teil etablieren und dann entsprechende Befehle senden.

Ich kopier mal was aus meinem Script(Header) hier rein, vielleicht hilft das beim Verständnis, ansonsten einfach fragen.


# SerialPort.BAUD_38400, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE
#
# PREFIX    = 0C1A
# DEV_TYPE  = 00 (RFY) | 01 (RFY-EXT)
# SEQ-NUM	= XY (01)
# UNIT-ID   = 000000-FFFFFF (021501 | 022501)
# UNIT-CODE = 01-04 (00 ALL)
# COMMAND   = 00 = STOP | 01 = UP(REIN) | 03 = DOWN(RAUS) | 07 = PROGRAM
# DATA      = 0000000000
#
# Examples
# Set mode command for controller (optional)
# 0D000000035300000C2F00000000
#
# Command UP
# 0C1A000102250101010000000000
# $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
#
# SPRT_SendText(<serial port id> , $str);
#

Sieht nicht ganz so schön aus, aber man muss halt Befehlsketten zusammenbauen und dann an den seriellen Port senden!

VG Heiko

Hi,

was kommt dann nach dem Skript?
Ich will von Openhab wechseln, da klappt die Steuerung über RFXCOM sehr gut. Device-ID habe ich also.
Ist das Präfix frei wählbar?
Wie bekomme ich den seriellen Port am Raspi raus, gebe ich da einfach /dev/ttyUSB1 z.B. an?

Ich hatte den Kopf meines Scriptes eingestellt um die wichtigsten Infos wie man den RFXCOM ansteuert darzulegen.
Da ich nur 3 Markisen damit steuere, habe ich dann im „nachfolgenden“ Script meine persönliche Ansteuerung codiert.
Diese ist aber wirklich auf die schnelle hingerotzt und wollte mir nicht die Blöße geben es hier zu veröffentlichen.
Wenn Du mit den Infos aus dem Script-Kopf nicht zurechtkommst, melde Dich einfach nochmal.

HINWEIS: In der Zwischenzeit muss man SPRT_SendText(xxxx /[RFXCOM]/ , $str); verwenden anstatt ComPort_SendText!!!

Meinst Du mit Präfix die „0C1A“ Zeichenfolge - nein - die ist fest vorgegeben!

Gute Frage, das hängt davon ab was sonst noch alles an Deinem Raspi hängt und wie er die Reihenfolge festlegt.
Bei mir ist es /dev/ttyUSB0.

Viel Erfolg!

Hallo Peter,

ich schreib jetzt mal meine Lösung hier ins Forum (nicht per PN) - dann haben alle was davon.

Was habe ich an Markisen?

  • Ich habe 2 Markisen
  • Eine Markise hat noch ein Volant (via Solar-Motor)

Wie steuere ich es?

  • alle Markisen werden mit einem einzigen Script gesteuert
  • pro Markise gibt es eine Integer-Variable mit einem speziellen Profil (siehe Anhang)
  • über die Profilwerte werden die Befehle (0 = My/Stop, 1 = Rein, 3 = Raus) gesteuert (siehe Anhang)
  • Jede Variable hat in der Beschreibung per Doppelpunk den eigenen Code hinterlegt [Floor:Id:Nummer:Code] (siehe Anhang)
  • Im Webfront sind dann die Variablen einfach eingebunden

Wie sieht nun das Script dazu aus (Achtung: kann man besser machen :wink:


<?
# SerialPort.BAUD_38400, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE
#
# PREFIX    = 0C1A
# DEV_TYPE  = 00 (RFY) | 01 (RFY-EXT)
# SEQ-NUM	= XY (01)
# UNIT-ID   = 000000-FFFFFF (021501 | 022501)
# UNIT-CODE = 01-04 (00 ALL)
# COMMAND   = 00 = STOP | 01 = UP(REIN) | 03 = DOWN(RAUS) | 07 = PROGRAM
# DATA      = 0000000000
#
# Examples
# Set mode command for controller (optional)
# 0D000000035300000C2F00000000
#
# Command UP
# 0C1A000102250101010000000000
# $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
#

if ($_IPS['SENDER'] == "WebFront" || $_IPS['SENDER'] == "RunScript") {
	SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
	$array = IPS_GetObject($_IPS['VARIABLE']);

	$UNIT_OK = true;
	$UNIT_CMD = $_IPS['VALUE'];
	list ($UNIT_FLOOR, $UNIT_ID, $UNIT_NUM, $UNIT_CODE) = explode(":", $array['ObjectInfo']);
	//echo $UNIT_FLOOR.":".$UNIT_ID.":".$UNIT_NUM.":".$UNIT_CODE;

	if ($UNIT_ID == 25) {
		# WOHNZIMMER
		if ($UNIT_CODE == 1) {
			# WOHNZIMMER 01
			if ($UNIT_CMD == 0) {
				# 02250101 STOP
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else if ($UNIT_CMD == 1) {
				# 02250101 - REIN
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else if ($UNIT_CMD == 3) {
				# 02250101 - RAUS
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x01).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else {
				$UNIT_OK = false;
			}
		}
		else if ($UNIT_CODE == 2) {
			# WOHNZIMMER 02
			if ($UNIT_CMD == 0) {
				# 02250102 STOP
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x02).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else if ($UNIT_CMD == 1) {
				# 02250102 - REIN
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x02).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else if ($UNIT_CMD == 3) {
				# 02250102 - RAUS
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x02).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else {
				$UNIT_OK = false;
			}
		}
		else {
			$UNIT_OK = false;
		}
	}
	else if ($UNIT_ID == 15) {
		# KUECHE
		if ($UNIT_CODE == 1) {
			# KUECHE 01
			if ($UNIT_CMD == 0) {
				# 02250101 STOP
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x15).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else if ($UNIT_CMD == 1) {
				# 02250101 - REIN
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x15).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else if ($UNIT_CMD == 3) {
				# 02250101 - RAUS
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x15).chr(0x01).chr(0x01).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			}
			else {
				$UNIT_OK = false;
			}
		}
		else {
			$UNIT_OK = false;
		}
	}
	else {
		$UNIT_OK = false;
	}

	if ($UNIT_OK == true) {
		# SEND DATA - SPRT_SendText
		SPRT_SendText(55611 /*[RFXCOM]*/ , $str);
		IPS_Sleep(200);
	}
}
?>

Soo, hoffe das hilft bei der eigenen Ansteuerung :loveips:

Ciao Heiko

Variable-Markisen.PNG

Hi Heiko,

danke für dein Skript. Was ich nicht verstehe:

Die Unit-ID ist ja 6-stellig - im Script fragst du zuerst ab, ob die Unit-ID 25 ist. Wie kommst du darauf? Liest das dein Script aus der Beschreibung aus, die du an der Variablen hinterlegt hast?

Danke!

Hallo Peter,

ja, es wird aus der Beschreibung gelesen!

Ich habe mein Haus nach einem numerischen System aufgebaut. Die Etagen sind von 0 bis 4 durchnummeriert (0=Aussengelände bis 4=Dachgeschoss). Die Zimmer haben alle eine Nummer, also die Küche die 1 und das Wohnzimmer die 2. Markisen haben bei mir die Systemnummer 5.

Das ergibt dann:

02:15:xx:xx für Küche im Erdgeschoss
02:25:xx:xx für Wohnzimmer im Erdgeschoss

Meine Markise im Wohnzimmer hat noch einen Volant, darum zwei mal die 25 und dann Code 01 für Markise und 02 für Volant.

Das ergibt dann: <ETAGE>:<ZIMMERCODE>:<GERÄTENUMMER>:<CODE>

02:15:01:01 für Markise Küche
02:25:01:01 für Markise Wohnzimmer
02:25:01:02 für Volant Markise Wohnzimmer

Verständlich?

Ciao Heiko

Ja, soweit klar.

Ich habe 2 meiner Raffstores zum Testen per RFXCOM Manager angelernt, fahren hoch und runter.

Device-ID 010101
Unit 1 (also 01 für das Skript)
Sequenze 4 (also 04 für das Skript)

Wenn ich jetzt den Befehl für My / Stop senden will, müsste das doch so aussehen:

 

if ($UNIT_ID == 01) { 
        if ($UNIT_CODE == 01) { 
            if ($UNIT_CMD == 0) { 
                # My / STOP 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x04).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 

Ich habe den Skript-Teil

    //echo $UNIT_FLOOR.":".$UNIT_ID.":".$UNIT_NUM.":".$UNIT_CODE; 

Wieder aktiviert, sehe aber im Ablauf des Skriptes nichts. Ich denke hier steckt schon vorher ein Fehler, da ich ja zumindest 01:01:01:01 sehen müsste.

Wenn ich den Befehl für My im Webfrontend abschicke, erhalte ich Fehler 01:01:01:01 (so steht es auch in der Beschreibung der entsprechenden Variable…

Hi Peter,

wenn Du zwei Rollos hast brauchste ja auch 2 IDs, z.B. 01010101 und 02010101?!?

Poste doch mal dein komplettes Script und welcher Fehler kommt (Meldungsfenster)?

Ciao Heiko

Du kannst es Dir auch ganz einfach machen …

2 Scripte - für jedes Rollo eins und da hard codiert die Zeichenfolgen rein. Damit kannst Du schnell die Fehler im Script elemenieren.

Man muss das ja nicht so machen wie ich :wink:

Ciao Heiko

Hier das angepasste Script (dein Wohnen 2 habe ich jetzt erstmal so gelassen, ich will jetzt erstmal 2 Raffstore zum Fahren bringen).

Im Anhang die Screenshots aus dem RFXCOM Manager.
Danke schon mal für deine Hilfe!

<? 
# SerialPort.BAUD_38400, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE 
# 
# PREFIX    = 0C1A 
# DEV_TYPE  = 00 (RFY) | 01 (RFY-EXT) 
# SEQ-NUM    = XY (01) 
# UNIT-ID   = 000000-FFFFFF (021501 | 022501) 
# UNIT-CODE = 01-04 (00 ALL) 
# COMMAND   = 00 = STOP | 01 = UP(REIN) | 03 = DOWN(RAUS) | 07 = PROGRAM 
# DATA      = 0000000000 
# 
# Examples 
# Set mode command for controller (optional) 
# 0D000000035300000C2F00000000 
# 
# Command UP 
# 0C1A000102250101010000000000 
# $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
# $str=chr(0x0C).chr(0x1A).chr(0xDEV_TYPE).chr(SEQ-NUM).chr(UNIT-ID Part1).chr(UNIT-ID Part2).chr(UNIT-ID Part3).chr(UNIT-CODE).chr(COMMAND).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);

if ($_IPS['SENDER'] == "WebFront" || $_IPS['SENDER'] == "RunScript") { 
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']); 
    $array = IPS_GetObject($_IPS['VARIABLE']); 

    $UNIT_OK = true; 
    $UNIT_CMD = $_IPS['VALUE']; 
    list ($UNIT_FLOOR, $UNIT_ID, $UNIT_NUM, $UNIT_CODE) = explode(":", $array['ObjectInfo']); 
    echo $UNIT_FLOOR.":".$UNIT_ID.":".$UNIT_NUM.":".$UNIT_CODE; 

    if ($UNIT_ID == 01) { 
        # WOHNZIMMER 
        if ($UNIT_CODE == 01) { 
            # WOHNZIMMER 01 
            if ($UNIT_CMD == 0) { 
            	# 01010101 STOP 
                # $str=chr(0x0C).chr(0x1A).chr(0xDEV_TYPE).chr(SEQ-NUM).chr(UNIT-ID Part1).chr(UNIT-ID Part2).chr(UNIT-ID Part3).chr(UNIT-CODE).chr(COMMAND).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
				$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x04).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else if ($UNIT_CMD == 1) { 
                # 01010101 - REIN 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x04).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else if ($UNIT_CMD == 3) { 
                # 01010101 - RAUS 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x04).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else { 
                $UNIT_OK = false; 
            } 
        } 
        else if ($UNIT_CODE == 2) { 
            # WOHNZIMMER 02 
            if ($UNIT_CMD == 0) { 
                # 01010102 STOP 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x02).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else if ($UNIT_CMD == 1) { 
                # 01010102 - REIN 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x02).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else if ($UNIT_CMD == 3) { 
                # 01010 - RAUS 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x02).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else { 
                $UNIT_OK = false; 
            } 
        } 
        else { 
            $UNIT_OK = false; 
        } 
    } 
    else if ($UNIT_ID == 01) { 
        # Wohnzimmer Seite 
        if ($UNIT_CODE == 1) { 
            # KUECHE 01 
            if ($UNIT_CMD == 0) { 
                # 02250101 STOP 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x07).chr(0x01).chr(0x01).chr(0x02).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else if ($UNIT_CMD == 1) { 
                # 02250101 - REIN 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x15).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else if ($UNIT_CMD == 3) { 
                # 02250101 - RAUS 
                $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x15).chr(0x01).chr(0x01).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            } 
            else { 
                $UNIT_OK = false; 
            } 
        } 
        else { 
            $UNIT_OK = false; 
        } 
    } 
    else { 
        $UNIT_OK = false; 
    } 

    if ($UNIT_OK == true) { 
        # SEND DATA - SPRT_SendText 
        SPRT_SendText(29127 /*[RFXCOM433E]*/, $str); 
        IPS_Sleep(200); 
    } 
} 
?> 

Anhänge :slight_smile:

010101_65793 Wohnen Seite.png

010102_65794 Wohnen Hinten.png

Bildschirmfoto 2018-01-06 um 21.35.10.png

Gib doch bitte nochmal die Codierung für Deine 2 Rollos durch?

Raffstore 1 = aabbccdd

Raffstore 2 = eeffgghh

Der Anhang fehlt!

Hi Peter,

ich habe das jetzt mal für Deine 2 Raffstores bei mir nachprogrammiert (01010101 & 01010201). Bei der Sequenznummer handelt es sich um eine fortlaufende Nummer die der Manager immer hochzählt. Ich nutze immer eine 01 - damit funktioniert es bei mir :wink:

<?  
# SerialPort.BAUD_38400, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE  
#  
# PREFIX    = 0C1A  
# DEV_TYPE  = 00 (RFY) | 01 (RFY-EXT)  
# SEQ-NUM    = XY (01)  
# UNIT-ID   = 000000-FFFFFF (021501 | 022501)  
# UNIT-CODE = 01-04 (00 ALL)  
# COMMAND   = 00 = STOP | 01 = UP(REIN) | 03 = DOWN(RAUS) | 07 = PROGRAM  
# DATA      = 0000000000  
#  
# Examples  
# Set mode command for controller (optional)  
# 0D000000035300000C2F00000000  
#  
# Command UP  
# 0C1A000102250101010000000000  
# $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x02).chr(0x25).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);  
# $str=chr(0x0C).chr(0x1A).chr(0xDEV_TYPE).chr(SEQ-NUM).chr(UNIT-ID Part1).chr(UNIT-ID Part2).chr(UNIT-ID Part3).chr(UNIT-CODE).chr(COMMAND).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 

if ($_IPS['SENDER'] == "WebFront" || $_IPS['SENDER'] == "RunScript") {  
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);  
    $array = IPS_GetObject($_IPS['VARIABLE']);  

    $UNIT_OK = true;  
    $UNIT_CMD = $_IPS['VALUE'];  
    list ($UNIT_FLOOR, $UNIT_ID, $UNIT_NUM, $UNIT_CODE) = explode(":", $array['ObjectInfo']);  
    //echo $UNIT_FLOOR.":".$UNIT_ID.":".$UNIT_NUM.":".$UNIT_CODE;  

    if ($UNIT_NUM == 01) {  
        # Raffstore 01  
        if ($UNIT_CMD == 0) {  
            # 01010101 STOP  
            # $str=chr(0x0C).chr(0x1A).chr(0xDEV_TYPE).chr(SEQ-NUM).chr(UNIT-ID Part1).chr(UNIT-ID Part2).chr(UNIT-ID Part3).chr(UNIT-CODE).chr(COMMAND).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00); 
            $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
			echo "Raffstore 01 - STOP".PHP_EOL;  
        }  
        else if ($UNIT_CMD == 1) {  
            # 01010101 - REIN  
            $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);  
			echo "Raffstore 01 - REIN".PHP_EOL;  
        }  
        else if ($UNIT_CMD == 3) {  
            # 01010101 - RAUS  
            $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);  
			echo "Raffstore 01 - RAUS".PHP_EOL;  
        }  
        else {  
            $UNIT_OK = false;  
        }  
    }  
    else if ($UNIT_NUM == 02) {  
        # Raffstore 02
        if ($UNIT_CMD == 0) {  
            # 01010201 STOP  
            $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x01).chr(0x02).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);  
			echo "Raffstore 02 - STOP".PHP_EOL;  
        }  
        else if ($UNIT_CMD == 1) {  
            # 01010201 - REIN  
            $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x01).chr(0x02).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);  
			echo "Raffstore 02 - REIN".PHP_EOL;  
        }  
        else if ($UNIT_CMD == 3) {  
            # 01010201 - RAUS  
            $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x01).chr(0x02).chr(0x01).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);  
			echo "Raffstore 02 - RAUS".PHP_EOL;  
        }  
        else {  
            $UNIT_OK = false;  
        }  
    }  
    else {  
        $UNIT_OK = false;  
    }  

    if ($UNIT_OK == true) {  
        # SEND DATA - SPRT_SendText  
        //SPRT_SendText(29127 /*[RFXCOM433E]*/, $str);
		$hex = bin2hex($str);
		echo $hex;
        IPS_Sleep(200);  
    }  
}  
?>

Bei mir hat es ohne Fehler funktioniert, also die richtige Meldung bei der ausgewählten Aktion im WebFront.

Ansonsten müssen wir mal telefonieren.

Ciao Heiko

Nachtrag, hast Du Dich mit dem Manager disconnected? Sonnst funktioniert das alles nicht!

Ja, habe die Programmierung auf nem anderen Rechner gemacht. Ich schaue mir das morgen nochmal an und gebe dann Rückmeldung. Danke!