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
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
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
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
<?
# 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!
Hallo Heiko,
ich habe gerade zu allererst dein Raumschema übernommen und mein Haus in Geschosse, Räume und Art (05 Markise äh Raffstore :)) aufgeteilt. Dadurch ergibt sich z.B. für den Raffstore im Wohnzimmer hinten: 02:04:05:01.
Und siehe da, es geht
In der GUI wirft mir IPS noch einfach „FEHLER“ aus, ohne weitere Angaben. Ich denke, das bekomme ich aber noch weg. Ich lerne jetzt erstmal einen weiteren Raffstore ein, ggf. ist der Fehler dann ja auch weg…
Danke für deine Hilfe!
Ach ja, bekommst du über den RFXCOM auch hin, das du den Status deiner Markise siehst, wenn du mit der Fernbedienung oder dem Taster die Markise rein und rausfährst? Ich habe alle meine Raffstores mit Fernbedienungen ausgestattet, die natürlich auch benutzt werden. Daher wäre es natürlich super, den Status dennoch in IPS zu sehen.
Nachtrag: Nach einem Neustart von IPS geht es nicht mehr
Serielle Schnittstelle okay?
Gesendet von iPhone mit Tapatalk
Ich würde sagen, ja - daran hat sich ja nichts geändert. Vll können wir doch mal telefonieren oder per Teamviewer draufschauen?
Hallo,
ich muss sagen ich bin echt begeistert. Ich möchte mich hier bedanken! Das ist echt ein tolles Teil.
Das RFXtrx433E funktioniert bei mir perfekt und kostet im Vergleich zu den von SOMFY angebotenen „Lösungen“ einen bruchteil.
Hier noch mein Script welches ich bei Variablenänderung (ausgelöst durch Telegramme am KNX Bus) ausführe…
<?
# 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
# 0x04 -> Alle SOMFY Motoren
# STOP
# $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x00).chr(0x04).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
# UP
$str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x00).chr(0x04).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
# DOWN
# $str=chr(0x0C).chr(0x1A).chr(0x00).chr(0x01).chr(0x01).chr(0x00).chr(0x04).chr(0x01).chr(0x03).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
$UNIT_OK = true;
//echo $UNIT_FLOOR.":".$UNIT_ID.":".$UNIT_NUM.":".$UNIT_CODE;
if ($UNIT_OK == true) {
# SEND DATA - SPRT_SendText
SPRT_SendText(53825 /*[Serial Port]*/ , $str);
IPS_Sleep(200);
}
?>