+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11
  1. #1
    Registriert seit
    Jan 2008
    Ort
    Tangstedt/Pinneberg
    Beiträge
    42

    Standard Einbindung Multimedia Anlage in IPS (Auslesen vom COM PORT)

    Hallo ihr wissenden,

    also nun hab ich folgendes: Einige haben vielleicht mitbekommen, ich habe in meinem Haus eine Russound Multiroom anlage. Soweit funktioniert alles Super, läßt sich über Comport_sendtext auch wunderbar steuern! Alle Funktionen in allen Räumen. Aber ich bin damit noch nicht zufrieden, ich möchte natürlich auch Rückmeldungen über welcher Raum an ist, welche Lautstärke und welche Quelle dort an ist. Über das Roussund RNET Protokoll soll das auch funktionieren, ich sende einen Befehl hin (wie ist dein Status), und bekomme über den COM auch eine Antwort. Das alles aber nun in HEX daten. Könnte mir einer mal ein wenig mehr auf die Sprünge helfen, was nun zu tun ist? Wie kann ich das, was die anlage sendet verarbeiten? Es gibt ja dann zich zustände, Raum 1-6 an/aus, Lautstärke 0-100, Quelle 1-6 gewählt (das sind die Info´s die mir reichen)

    Hab auch noch mal aus der RNET Beschreibung den Teil angehängt, der relevant sein müsste. Falls ihr noch mehr wissen müsst, in dem Dokument steht noch sehr viel mehr drin :-)

    Get All Zone info
    As stated previously, a message can be used to request all of a particular Zone's parameter values at once. This can be very useful for updating panel displays. The following is an example of how to request Zone information for a particular Zone and what the return message would look like.
    7.8.7 Get State
    This is the Request message for the parameter values of the selected Zone.

    Value F0/cc/00/7F/00/00/70/01/04/02/00/zz/07/00/00/xx/F7

    cc = controller number -1
    zz = zone number -1
    xx = checksum

    The return message would look like the following.

    Value F0/00/00/70/cc/00/7F/00/00/04/02/00/zz/07/00/00/01/00/0C/00/##/##/##/##/##/##/##/##/##/##/##/00/xx/F7

    cc = controller number -1
    zz = zone number -1
    xx = checksum

    The parameter values are depicted in bytes 21 – 31. These values will change depending on the state of the selected Zone. The above example shows the parameter values for a Zone configured and being used as follows:
    Byte #21 = Current Zone On/Off state (0x00 = OFF or 0x01 = ON)
    Byte #22 = Current Source selected -1
    Byte #23 = Current Volume level (0x00 - 0x32, 0x00 = 0 Displayed … 0x32 = 100 Displayed)
    Byte #24 = Current Bass level (0x00 = -10 … 0x0A = Flat … 0x14 = +10)
    Byte #25 = Current Treble level (0x00 = -10 … 0x0A = Flat … 0x14 = +10)
    Byte #26 = Current Loudness (0x00 = OFF, 0x01 = ON )
    Byte #27 = Current Balance level (0x00 = More Left … 0x0A = Center … 0x14 = More Right)
    Byte #28 = Current System On state (0x00 = All Zones Off, 0x01 = Any Zone is On)
    Byte #29 = Current Shared Source (0x00 = Not Shared 0x01 = Shared with another Zone)
    Byte #30 = Current Party Mode state (0x00 = OFF, 0x01 = ON, 0x02 = Master)*
    Byte #31 = Current Do Not Disturb state (0x00 = OFF, 0x01 = ON )*

    *NOTE: Unsupported Features, information not available for CAS44 and CAA66 controllers



    Hier nochmal eine Abfrage für den Status der Zone, EIN ODER AUS:

    7.1.2 Get State
    This is the Request message for the On/Off State of the selected Zone.
    Value F0 cc 00 7F 00 00 70 01 04 02 00 zz 06 00 00 xx F7
    cc = controller number -1
    zz = zone number -1
    xx = checksum

    The return message would look like the following.

    Value F0 00 00 70 cc 00 7F 00 00 04 02 00 zz 06 00 00 01 00 01 00 ## xx F7
    cc = controller number -1
    zz = zone number -1
    xx = checksum
    Byte #21 = 0x00 (off) or 0x01(on)

    Zur Checksum, die muss man aus der gesamtsumme der BYTES mit einer Formel ausrechnen, damit die Meldung auch vom Controller angenommen wird


    Vielen DANK, ich hoffe einer von euch kann mir helfen

    Gruß
    Benny
    Geändert von overkill0815 (24.03.08 um 18:25 Uhr) Grund: Erweitert

  2. #2
    Registriert seit
    May 2005
    Ort
    Leipzig
    Beiträge
    3,964

    Hallo Benny,

    wie sind denn Deine PHP Kenntnisse? Klar kann man Dir jetzt das ganze Protokoll implementieren, aber das ist eigentlich nicht Sache des Forums, das musst Du entweder selbst machen oder es hat schon jemand gemacht. Das ist nicht mal in fuenf Minuten programmiert, wenn man es richtig machen moechte. Da steckt schon einiges an Aufwand dahinter. Suche einfach mal im Forum, Du wirst da schon einige Ansaetze dazu finden, bspw. unter den Begriffen DENON und ONKYO und ich glaube auch Beamer.
    Gruss Uwe

  3. #3
    Registriert seit
    Jan 2008
    Ort
    Tangstedt/Pinneberg
    Beiträge
    42

    Das das nicht so mal eben geht war mir klar, aber vielleicht kann mir jemand die Schritte zeigen die notwendig sein müssten, etc. Mein PHP ist noch nicht so gut, aber so eine Aufgabe wird das ganze sicherlich verbessern, wenn ich nicht dran verzweifel...

    DAnke

  4. #4
    Registriert seit
    Feb 2008
    Ort
    127.0.0.1
    Beiträge
    455

    Zitat Zitat von overkill0815 Beitrag anzeigen
    Zur Checksum, die muss man aus der gesamtsumme der BYTES mit einer Formel ausrechnen, damit die Meldung auch vom Controller angenommen wird
    Steht in der Anleitung wie die Checksumme berechnet wird? Das wäre noch nötig.

    Gruß

  5. #5
    Registriert seit
    Jan 2008
    Ort
    Tangstedt/Pinneberg
    Beiträge
    42

    Berechnung der Checksum

    4.3.1 Checksum
    All messages include a Checksum that helps protect the integrity of the message. The
    Checksum is a single byte that can be calculated using the following formula (see example
    below):
    Checksum Calculation Example:
    Value (Hex)


    F0 Start of Message Character
    00
    67
    7C
    F1
    0F
    59 Checksum
    F7 End of Message Character


    Step #1 - Add the HEX value of every byte in the message that precedes the Checksum:
    Example - 0xF0 + 0x00 + 0x67 + 0x7C + 0xF1 + 0x0F = 0x02D3

    Step #2 - Count the number of bytes which precede the Checksum and convert that value from
    DEC to HEX (byte count). Add the byte count in HEX to the previously calculated sum of
    bytes:
    Example - 0x02D3 + 6 (6 = Decimal value byte count) = 0x02D9

    Step #3 - This value is then AND-ed with the HEX value 0x007F (7F is the highest BIN value
    for 7 bits = 1111111). The Checksum itself and the End of Message Character are not
    included in the calculation. Only the low 7 bits are used so overflow is discarded:
    Example - 0x02D9 AND 0x007F = 0x59 = Checksum



    Ich hoffe ihr könnt mir helfen, danke

  6. #6
    Registriert seit
    May 2005
    Ort
    Leipzig
    Beiträge
    3,964

    Hallo,

    ich koennte Dir helfen, aber so eine komplette Protokollumsetzung braucht einiges an Zeit und die habe ich fuer OSS leider nicht.
    Gruss Uwe

  7. #7
    Registriert seit
    Feb 2008
    Ort
    127.0.0.1
    Beiträge
    455

    Hallo Overkill,

    ich hab mich mal am ersten Beispiel versucht.


    Mit dem Script wird der Status angefordert.
    PHP-Code:
    <?
    /*
    *******************************
     IP-SYMCON Event Scripting
    *******************************
    File     : ComPortAbfrage.ips.php
    Trigger  : 
    Interval : 
    */

    $array explode(" ""F0 cc 00 7F 00 00 70 01 04 02 00 zz 07 00 00 cs F7");
    $ID 12345//ComPort ID  in IPS
    $array[1] = "02"//controller number -1
    $array[11] = "02"//zone number -1

    $cs 0;
    $ComString ="";

    for (
    $i=0$i<=count($array) - 3$i++, $cs++ ){  //Step #2 - Count the number of bytes which precede the Checksum
      
    $array[$i] = hexdec($array[$i]);
      
    $cs += $array[$i];         //Step #1 - Add the HEX value of every byte in the message that precedes the Checksum:
      
    $ComString .= chr($array[$i]); //String zusammenfgen
    }
    $cs &= 0x7F;              //This value is then AND-ed with the HEX value 0x007F
    $ComString.=chr($cs).chr(end($array));        //String zusammenfgen

    ComPort_SendText($ID$ComString);      //String ausgeben
    ?>
    Mit dem Script wird die Antwort empfangen:
    PHP-Code:
    <?
    /*
    *******************************
     IP-SYMCON Event Scripting
    *******************************
    File     : ComPortEmpfang.ips.php
    Trigger  : 
    Interval : 
    */
    //F0 00 00 70 cc 00 7F 00 00 04 02 00 zz 06 00 00 01 00 01 00 ## ## ## ## ## ## ## ## ## ## xx F7
    $ComString GetValueString("Com.Port"); //"Com.Port" ist z.b. die Register Variable in IPS
    If ($ComString != ""){
      
    SetValueString("Com.Port","");      // Register Variable lschen
      
    SetValueInteger("Status",ord($ComString{19}));   // übergabe Status an IPS
      
    SetValueInteger("Volume",ord($ComString{21}));   // übergabe Lautstärke an IPS
      // u.s.w.
    }
    ?>
    Ich konnte es in Ermangelung der entsprechenden Hardware nicht testen. Du mußt nur noch die entprechenden Variablen in IPS anlegen.

    Mfg
    A

    Edit: 28.03.08 Verbesserungen von HJH eingepflegt
    Geändert von Attain (28.03.08 um 19:08 Uhr)

  8. #8
    Registriert seit
    Dec 2005
    Beiträge
    917

    Hallo Overkill0815 und Attain,

    die Berechnung der Checksumme ist wesentlich einfacher, als die Beschreibung vermuten lässt.
    PHP-Code:
    // die zu übertragende Byte-Sequenz steht in der String-Variablen $Msg
    $ChkSum 0;                         // Checksumme initialisieren
    for($i=0$i<strlen($Msg); $i++)     // alle Bytes aufsummieren
      
    $ChkSum += ord($Msg[$i]);
    $ChkSum += strlen($Msg);             // zusätzlich die Anzahl der Bytes aufaddieren
    $ChkSum &= 0x7f;                     // nur die unteren 7 Bit verwenden
    $Msg .= chr($ChkSum). "\xF7";        // Byte-Sequenz um Checksumme und Endezeichen ergänzen 
    Der String $Msg kann dann auf den ComPort ausgegeben werden.


    Gruß
    HJH

  9. #9
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    21,890

  10. #10
    Registriert seit
    Sep 2010
    Beiträge
    1

    Standard Problem Telegramm-Aufbau

    Hallo,
    bin bei der PHP-Programmierung ganz am Anfang, habe nur aktuelle wenig Zeit mich genauer damit zu befassen! Müsste vor der genaueren Einarbeitung ein Pflichtprogramm erfüllen (Musik im Esszimmer und in der Küche!).

    Zu Problem:
    Habe den Programmvorschlag von Attain genommen.
    Die Checksumme wird auch richtig berechnet, aber beim Zusammensetzen des
    $ComString wird an der letzten Stelle ein 00 statt der F7 gesendet.

    PHP-Code:
    PHP-Code:
    $array explode(" ""F0 cc 00 7F 00 zz 70 05 02 02 00 00 F1 23 00 00 00 00 00 01 cs F7");
    $ID 53006 /*[Serial Port]*///ComPort ID  in IPS
    $array[1] = "00"//controller number -1
    $array[5] = "01"//zone number -1

    $cs 0;
    $ComString ="";

    for (
    $i=0$i<=count($array) - 3$i++, $cs++ ){  //Step #2 - Count the number of bytes which precede the Checksum
      
    $array[$i] = hexdec($array[$i]);
      
    $cs += $array[$i];         //Step #1 - Add the HEX value of every byte in the message that precedes the Checksum:
      
    $ComString .= chr($array[$i]); //String zusammenfgen
    }
    $cs &= 0x7F;              //This value is then AND-ed with the HEX value 0x007F
    $ComString .= chr($cs).chr(end($array));        //String zusammenfgen
    ComPort_SendText($ID$ComString);      //String ausgeben
    ?> 
    Das gesendete Telegramm sieht so aus:
    F0 00 00 7F 00 01 70 05 02 02 00 00 F1 23 00 00 00 00 00 01 12 00
    Anstelle der 00 am Ende sollte die F7 stehen.

    Was bedeutet der Punkt vor dem = z. B. .= chr

    Danke für eure Hilfe!

    Gruß Franz

Ähnliche Themen

  1. Conrad 8-fach seriell Relaisplatine mit COM Port Modul ansteuern.
    Von bastelwasti im Forum Skripte, PHP, SQL
    Antworten: 5
    Letzter Beitrag: 15.04.09, 12:11
  2. Fritzbox an ips macht probleme mit dem Com port
    Von hmpf99 im Forum Allgemeine Diskussion
    Antworten: 49
    Letzter Beitrag: 12.10.08, 12:57
  3. Bessere AVISARO Unterstützung
    Von chrisu im Forum Ideen & Anregungen
    Antworten: 13
    Letzter Beitrag: 05.11.06, 23:17
  4. Einbindung der 1300 WLAN in IPS
    Von coolice im Forum Allgemeine Diskussion
    Antworten: 10
    Letzter Beitrag: 26.07.06, 07:47
  5. 1-Wire COM Port Adapter an c't-COM-auf-LAN-Adapter
    Von babba im Forum 1-Wire, M-BUS
    Antworten: 9
    Letzter Beitrag: 31.12.05, 17:50