Skip to end of metadata
Go to start of metadata

Hier ein Beispiel wie der Status (On/OFF) eines Sony TV´s ausgelesen werden kann.

Beispiele:

  • TV ON und Schalter X wird gedrückt → Es wird das TV-Licht geschaltet
  • TV ON und Schalter X wird gedrückt → Es wird das Licht auf 100% gestellt

fyi: Protokoll wird von euer Suchmaschine gefunden "Simple IP Control Protocol for BRAVIA"

Schritt-für-Schritt-Anleitung

  1. TV auf "Hotelmodus" umschalten - Somit ist er immer via Ehternet verbunden
  2. Gebt euerem TV eine Fixe IP
  3. Pico C Programm erstellen (code unten) → 10.0.0.13 ändern auf eure TV IP
  4. Ausgabe beliebieg weiterverarbeiten

 

////// Hier der PicoC Code

#define BUFF_SIZE 50

#define RD_BLOCK_SIZE 24

#define TIME_OUT_TO_READ 4000


char szBuffer[BUFF_SIZE];

char szTmpBuffer[RD_BLOCK_SIZE];

int nCnt;

int nBytesReceived = 0;


char* pTcpCmd = "*SEPOWR################\n";

STREAM* pTcpStream = NULL;


while(TRUE) {

    // connect to TV

    pTcpStream = stream_create("/dev/tcp/10.0.0.13/20060",0,0); // create Stream

    stream_write(pTcpStream,pTcpCmd,strlen(pTcpCmd)); // write to output buffer

    stream_flush(pTcpStream); // flush output buffer

    

    sleep(500); // wait 500 millisecond

        

    // read stream from TV


    do {

        nCnt = stream_read(pTcpStream, szTmpBuffer, RD_BLOCK_SIZE, TIME_OUT_TO_READ);

        if (nCnt + nBytesReceived > BUFF_SIZE) {

            nBytesReceived = -1;

            setoutput(0,1); // Error

            break; //File is too large

        }

        else if(nCnt > 0) {

            strncpy((char*)szBuffer + nBytesReceived, szTmpBuffer, nCnt);

            nBytesReceived += nCnt;

        }

    } while (nCnt > 0);


    stream_close(pTcpStream); // close Stream


    if (nBytesReceived > 0) {

        if(szBuffer[22] == 48) { // "0"

            setoutput(0,0);

        } else if (szBuffer[22] == 49) { // "1"

            setoutput(0,2);

        } else {

            setoutput(0,1); // Error

        }

    }

    

    nBytesReceived = 0;

    nCnt = 0;

    sleeps(4);        // wait 4 seconds

}


fyi: Protokoll wird von euer Suchmaschine gefunden "Simple IP Control Protocol for BRAVIA"


Freu mich auf euer review...




3 Comments

  1. Warum so Umständlich?

    Sony-TV.Loxone

    Pico-C ist meistens sehr Fehleranfällig...

  2. Hallo Smart-Harry,

    ich bin leider nicht so bewandert mit PicoC und verstehe deshalb das Programm nur unvollständig. Könntest du mir exemplarisch sagen wie ich Zustände des Sony Bravia abfragen kann ohne PicoC. Eine Beispiel config wäre super. Gruss Tobias

    1. Hallo Tobias

      1) Das PicoC ist nicht von mir..

      2) Der TV-Zustand ist eigentlich irrelevant - denn da das Gerät in der Regel mit Fernbedienungen gesteuert wird ist es generell nur unnötig 

          aufwendig alles ab zu fragen.


      3) Beispiel:

           Ping an das TV-Gerät (ist On-/Offline)

           Loxone sagt lediglich Ein- / oder Ausschalten...

           (Ausschalten: zb Zentral-Aus = ist das Gerät sowiso aus, bleibt es aus, und nicht mehr (wink) )

           (Einschalten = wozu?...)

           Lautstärke: einzelne Step-Up/Dn senden... (also egal welche Lautstärke das gerät gerade hat)

           Lautstärke gezielt setzen: zb Weckmodus, Gerät ein, soll-Lautstärke setzen.. (mehr braucht es nicht - und wieder egal was eingestellt ist)

           Ping: Wurde das Gerät als Ein gefunden, setze ich einen Impuls ab.. (zB: Musik aus, Licht-Modus - sofern Dunkel genug, etc)


      Ich hoffe geholfen zu haben..