Ankündigung

Einklappen
Keine Ankündigung bisher.

iTunes | Steuerung via Script über WebServer | Edomi

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    DANKE für das Feedback, dann lasse ich es, wie es ist ;-)
    Danke und LG, Dariusz
    GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

    Kommentar


      Soooo, das nächste Thema :-)

      Weitere Funktionen des Bausteins im Bereich ###[LBS]###

      Zitat von coliflower Beitrag anzeigen
      ...
      Wenn am bestimmten Eingang 1/0 ankommt (Play), dann soll diese 1/0 zum bestimmten Ausgang „geroutet“ und diese 1/0 an die Ausgangsbox übergeben werden … Die Ausgangsbox versendet per Befehl den HTTP ...

      Das wäre OK, richtig ?
      Zitat von gaert Beitrag anzeigen
      Das wäre ok - richtig Aber das gehört hier nicht so wirklich hin - lass' uns das lieber in Deinem iTunes-LBS-Thread diskutieren...
      Wenn ich zum jetzigem LBS weitere Eingänge definiere z.B. Play, Pause, Stop, FF, FR, usw. und diesen per KO ein Wert übergebe, dann sollte es RELATIV einfach sein den Wert and einen bestimmten Ausgang zu übergeben ...

      Ist es auch möglich nur einen Ausgang für eine Ausgangsbox zu haben an dem der Name des Eingangs (Computer) und der KO-Wert als {Variable} übergeben wird ?
      Und somit für den Eingangs-Namen „Computer“ und den Eingangs-Wert „40“ (KO-ID {375}) ein HTTP Befehl zusammengebaut und versendet wird ?

      http://10.0.100.150/%7Edariusz/iControl.php?c=apvolume&p1Computer=&p2={375}
      ODER ist das absoluter Quatsch, nicht möglich,träge, usw. …
      UND es wäre schneller, eleganter, usw. jedem Eingang ein Ausgang zu spendieren der wiederum mit einer Ausgangsbox verknüpft ist und die an die richtige HTTP verschickt ?

      Oder wäre das so ein Ansatz für den Ausgang / die Ausgangsbox ?

      Wenn du so etwas benötigst, dann kannst du zusätzliche Ausgänge anlegen, an dem der Name ausgegeben wird. Das kannst du auch direkt durchreichen, wenn du an einem Eingang die Belegungsnamen vorgibst. Eine diekte Änderung der Ausgangsbezeichnungen wird nur durch Änderung des LBS möglich sein.
      Danke vorab für eure Meinung :-) !!
      Danke und LG, Dariusz
      GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

      Kommentar


        Variablen habe ich doch bereits auf Deinen Wunsch hin in den HTTP/UDP-Befehlen eingebaut... (Version 1.11 oder so)
        Du kannst also ganz einfach einen HTTP-"Befehl" absetzen und die HTTP-GET-Parameter per Variable setzen:
        http://...?{100}={200}

        Das KO(100) setzt dann Dein Baustein z.B. auf den WERT "Volume", und das KO(200) auf den Wert "50" - fertig:
        Ergebnis ist dann: http://...?Volume=50
        EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

        Kommentar


          Das KO(100) setzt dann Dein Baustein z.B. auf den WERT "Volume", und das KO(200) auf den Wert "50" - fertig:
          Ergebnis ist dann: http://...?Volume=50
          Genau, so soll es aussehen :-)
          die Variable für den KO-Wert (die 50) sind klar, die nutze ich auch schon :-)

          Um beim Beispiel zu bleiben … für mich laut gedacht :-)

          Für „Play“ iTunes ist am Eingang des LBS das KO mit GA 3/1/20, 1bit, Wert = 1 zuständig, das KO hat die KO-ID:381 somit ist die Variabel {381} mit den Wert 1 … soweit gut.
          Ergebnis für den Wert 1: http://...?Play={381}

          Für den Eingangs-Namen „Play“ eine Variable nach dieser Art, z.B.: {100} mit dem Wert „Play“ ist für mich neu

          Das KO(100) setzt dann Dein Baustein z.B. auf den WERT "Volume"

          Derzeitiger Stand des LBS-Bereichs mit Namen „Play“ am Eingang-3 (E[3]) und Ausgang [a#27]
          Wie verpacke ich jetzt das „Play“ als Wert in eine Variable damit ich es z.B. so {100} verpacken kann ?
          Ergebnis Wäre für den Wert „Play“: http://...?{100}=1

          Gesamtergebnis wie du schreibst wäre dann: http://...?{100}={381}

          PHP-Code:
          ###[LBS]###
          <?php
          function LB_LBSID($id) {
              if (
          getLogicElementVar($id,1)!=1) {
                  
          setLogicElementVar($id,1,1);
                  
          callLogicFunctionExec(LBSID,$id);
              }

              if (
          $E=getLogicEingangDataAll($id)) {
                  if (
          getLogicElementStatus($id)==0) {                   // LBS läuft nicht?
                      
          if ($E[3]['value']!=&& $E[3]['refresh']==1) {
                          
          setLogicLinkAusgang($id,27,1);
                      } else {
                          
          setLogicLinkAusgang($id,27,0);
                      }
                  }
              }
          }
          ?>
          ###[/LBS]###
          Danke und LG, Dariusz
          GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

          Kommentar


            Oder hat z.B. die „Ausgangsbox 43“ die Variablen-Nummer {43} und der Wert ist der den der LBS an sie übergibt, z.B. „Play“ ?
            Danke und LG, Dariusz
            GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

            Kommentar


              Nee... Der LBS setzt ja keine KOs - sondern nur seine Ausgänge.

              Ich dachte das eher so: Der Nutzer(!) des LBS setzt das KO(100) auf den Wert "Volume=50" und legt diesen Wert (bzw. das KO) auf den Eingang. Der LBS gibt (vielleicht nach einer kleinen Validierung) dann auf den Ausgang "HTTP" eine 1. An diesen Ausgang ist dann eine Ausgangsbox angeschlossen, die nun getriggert wird und den HTTP-Request mit dem KO(100) als Variable absetzt.

              Aber wie schon angedeutet: Warum so kompliziert?! Erweitere Dein EXEC-Script doch einfach um die Möglichkeit DIREKT einen HTTP-Request abzusetzen. Dann kannst Du Dir diese ganzen Umwege über KOs/Eingänge/Ausgänge sparen...
              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

              Kommentar


                Hier mal Pseudocode für einen UDP-Listener, der NICHT auf Datenpakte wartet. Die Schleife läuft also ständig durch!

                PHP-Code:
                //Wichtig: PHP-Fehlerbehandlung abschalten, sonst generiert socket_recv() "Warnungen", wenn keine Daten empfangen wurden
                restore_error_handler();
                error_reporting(0);

                if (
                $socket=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP)) {
                    if (
                socket_bind($socket,0,$port) {

                        while (...) {

                            
                $len=socket_recv($socket,$data,1024,MSG_DONTWAIT);    //das MSG_DONTWAIT ist der Trick ;)

                            
                if ($len!==false) {

                                
                //UPD-Paket empfangen: Hier die Auswertung wie gehabt...

                            
                } else {

                                
                //kein UDP-Paket empfangen: Hier könnten z.B. HTTP-Request verarbeitet werden

                            
                }

                            
                usleep(100*1000);

                        }
                    }

                EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                Kommentar


                  Zitat von gaert Beitrag anzeigen
                  Nee... Der LBS setzt ja keine KOs - sondern nur seine Ausgänge.
                  OK, ich habe mir den Kopf zerbrochen wie …. ne, dann nicht diesen Weg ;-)

                  Zitat von gaert Beitrag anzeigen
                  Aber wie schon angedeutet: Warum so kompliziert?! Erweitere Dein EXEC-Script doch einfach um die Möglichkeit DIREKT einen HTTP-Request abzusetzen. Dann kannst Du Dir diese ganzen Umwege über KOs/Eingänge/Ausgänge sparen...
                  ​Ich werde es mir anschauen :-) Und ein Vorschlag zur Diskussion stellen ;-)
                  Danke und LG, Dariusz
                  GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                  Kommentar


                    Hallo Christian,

                    egal wie lange ich mir noch den Kopf zerbreche, ich werde es selbst nicht lösen können - das Wissen halt ;-)

                    Anbei der EXEC-Teil in der Hoffnung zumindest etwas richtig gedeutet zu haben ...

                    Und der neue Teil nach „else“ ist nur eine Andeutung was das Ergebnis sein soll:
                    Am LBS-Eingang-20 wird der Wert z.B.: 45 übergeben - dieser wird and die Variable {385} GA 3/1/20 übergeben und per HTTP an mein MBP übergeben damit am MBP ein Apple-Script gestartet wird welches das Volumen für den Lautsprecher „Computer" auf 45% setzt

                    DANKE



                    PHP-Code:
                    ###[EXEC]###

                    <?php
                    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                    set_time_limit(0);
                    sql_connect();

                    if (
                    $E=getLogicEingangDataAll($id)) {

                    /*
                    Erweitere Dein EXEC-Script doch einfach um die Möglichkeit DIREKT einen HTTP-Request abzusetzen.
                    Dann kannst Du Dir diese ganzen Umwege über KOs/Eingänge/Ausgänge sparen...
                    Hier ein UDP-Listener, der  N I C H T  auf Datenpakte wartet. Die Schleife läuft also ständig durch!
                    WICHTIG: PHP-Fehlerbehandlung abschalten, sonst generiert socket_recv() "Warnungen", wenn keine Daten empfangen wurden
                    */

                        
                    restore_error_handler();
                        
                    error_reporting(0);

                        if (
                    $socket socket_create(AF_INETSOCK_DGRAMSOL_UDP)) {
                            if (
                    socket_bind($socket,0,$E[31]['value'])) {

                                while(
                    getSysInfo(1)>=1) {
                                    
                    $len socket_recv($socket,$data,1024,MSG_DONTWAIT); //das MSG_DONTWAIT ist der Trick ;)
                                    
                                    
                    if ($len!==false) {

                                           
                    // UPD-Paket empfangen: Hier die Auswertung wie gehabt...
                                        
                                        
                    $data preg_replace("/[^A-Za-z0-9&=]/",'',$data);
                                    
                                        
                    parse_str($data$output); //    $output = array();

                                        
                    if (array_key_exists('EA',       $output))    {setLogicLinkAusgang($id,1$output['EA']);}
                                        if (
                    array_key_exists('Play',   $output))    {setLogicLinkAusgang($id,2$output['Play']);}
                                        if (
                    array_key_exists('Pause',  $output))    {setLogicLinkAusgang($id,3$output['Pause']);}
                                        if (
                    array_key_exists('Stop',   $output))    {setLogicLinkAusgang($id,4$output['Stop']);}
                                        if (
                    array_key_exists('FF',     $output))    {setLogicLinkAusgang($id,5$output['FF']);}
                                        if (
                    array_key_exists('FR',     $output))    {setLogicLinkAusgang($id,6$output['FR']);}
                                        if (
                    array_key_exists('MastVol',$output))    {setLogicLinkAusgang($id,7$output['MastVol']);}
                                        if (
                    array_key_exists('LS1',    $output))    {setLogicLinkAusgang($id,10$output['LS1']);}
                                        if (
                    array_key_exists('LS2',    $output))    {setLogicLinkAusgang($id,11$output['LS2']);}
                                        if (
                    array_key_exists('LS3',    $output))    {setLogicLinkAusgang($id,12$output['LS3']);}
                                        if (
                    array_key_exists('LS4',    $output))    {setLogicLinkAusgang($id,13,$output['LS4']);}
                                        if (
                    array_key_exists('LS5',    $output))    {setLogicLinkAusgang($id,14,$output['LS5']);}
                                        if (
                    array_key_exists('LS6',       $output))    {setLogicLinkAusgang($id,15,$output['LS6']);}
                                        if (
                    array_key_exists('LS7',    $output))    {setLogicLinkAusgang($id,16,$output['LS7']);}
                                        if (
                    array_key_exists('LS8',    $output))    {setLogicLinkAusgang($id,17,$output['LS8']);}
                                        if (
                    array_key_exists('LS9',    $output))    {setLogicLinkAusgang($id,18,$output['LS9']);}
                                        if (
                    array_key_exists('LS10',   $output))    {setLogicLinkAusgang($id,19,$output['LS10']);}
                                        if (
                    array_key_exists('LSV1',   $output))    {setLogicLinkAusgang($id,20,$output['LSV1']);}
                                        if (
                    array_key_exists('LSV2',   $output))    {setLogicLinkAusgang($id,21,$output['LSV2']);}
                                        if (
                    array_key_exists('LSV3',   $output))    {setLogicLinkAusgang($id,22,$output['LSV3']);}
                                        if (
                    array_key_exists('LSV4',   $output))    {setLogicLinkAusgang($id,23,$output['LSV4']);}
                                        if (
                    array_key_exists('LSV5',   $output))    {setLogicLinkAusgang($id,24,$output['LSV5']);}
                                        if (
                    array_key_exists('LSV6',   $output))    {setLogicLinkAusgang($id,25,$output['LSV6']);}
                                        if (
                    array_key_exists('LSV7',   $output))    {setLogicLinkAusgang($id,26,$output['LSV7']);}
                                        if (
                    array_key_exists('LSV8',   $output))    {setLogicLinkAusgang($id,27,$output['LSV8']);}
                                        if (
                    array_key_exists('LSV9',   $output))    {setLogicLinkAusgang($id,28,$output['LSV9']);}
                                        if (
                    array_key_exists('LSV10',  $output))    {setLogicLinkAusgang($id,29,$output['LSV10']);}

                                        } else {            

                                        
                    // kein UDP-Paket empfangen: Hier könnten z.B. HTTP-Request verarbeitet werden
                                        
                                        
                    if ($E[20]['value']!=&& $E[20]['refresh']==1) {
                                            
                    http_get("http://10.0.100.150/%7Edariusz/iControl.php?c=apvolume&p1=Computer&p2={385}");  // Wert für VOL1
                                        
                    }
                                    }    
                                }
                            }
                        }
                        
                    usleep(1000*100);
                    }
                    sql_disconnect();
                    ?>

                    ###[/EXEC]###
                    Danke und LG, Dariusz
                    GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                    Kommentar


                      Fast genau so

                      1. den HTTP-Request würde ich eher so machen - aber beides hat Vor- und Nachteile:
                      PHP-Code:
                                  $ctx=stream_context_create(array('http' => array('timeout' => )));    //3 Sekunden Timeout
                                  
                      $r=file_get_contents($URL,0,$ctx);                    //komplette Antwort abwarten 
                      2. Die Eingänge musst Du innerhalb(!) der Schleife einlesen - sonst wird das Array $E ja nur beim Start gefüllt. Also z.B. so:
                      PHP-Code:
                      if ($E=getLogicEingangDataAll($id)) {
                      if (
                      $E[20]['value']!=&& $E[20]['refresh']==1) {
                                  
                      $ctx=stream_context_create(array('http' => array('timeout' => )));    //3 Sekunden Timeout
                                  
                      $r=file_get_contents('...',0,$ctx);                    //komplette Antwort abwarten
                       
                      }

                      3. {385} in der URL ist hier Blödsinn... Du generierst ja nunmehr Deinen eigenen Request - nicht den HTTP-Request von EDOMI. Du musst hier die entsprechenden Eingangswerte nehmen, z.B.:
                      PHP-Code:
                      "http://10.0.100.150/%7Edariusz/iControl.php?c=apvolume&p1=Computer&p2=".$E[1]['value']."&..." 
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        Hallo Chrisitan, "fast genau so" ist nett, danke

                        Ich bin derzeit Extern, somit kann ich das was ich verbrochen haben, nicht direkt in Edomi testen ;-)
                        Deshalb mal "Trockenübung" :-)

                        In der vorherigen Version des LBS war der Punkt $E=getLogicEingangDataAll($id) außerhalb der Schleife - die Werte wurden mit jedem empfangenen Telegramm empfangen und an die LBS-Ausgänge übergeben.

                        Diesen Eintrag brauche ich aber auch für den vor der Schleife um den Befehl (socket_bind($socket,0,$E[31]['value'])) mit dem Wert für das "Port" bedienen zu können

                        Darf ich davon ausgehen, dass ich diese Eintrag nicht nur an einer Stelle, sondern an mehreren plazieren darf ?
                        PHP-Code:
                        if ($E=getLogicEingangDataAll($id)) { 


                        Für den kompletten URL, sei es als Variable oder String ... kann PHP das so verarbeiten (wäre sehr elegant und kurz):
                        PHP-Code:
                        $url "http://".$ip."/%7E".$user."/iControl.php?c=apvolume&ap1=Computer&p2="
                        $r=file_get_contents($URL.$E[20]['value'],0,$ctx); 

                        Oder nur so für jeden String eine eigene Varialble, z.B. $URL20 ?
                        PHP-Code:
                        $url20 "http://".$ip."/%7E".$user."/iControl.php?c=apvolume&ap1=Computer&p2=".$E[20]['value']);
                        $r=file_get_contents($URL20,0,$ctx); 

                        Hier noch den Url einzutragen würde die Zeile sehr lang machen :-(
                        PHP-Code:
                        $r=file_get_contents('...',0,$ctx); 

                        In dieser ###[EXEC]### Variante - dieser Eintrag auch notwendig ?
                        PHP-Code:
                        sql_disconnect(); 


                        {385} in der URL ist hier Blödsinn...
                        Im Nachhinein gesehen, YES ;-)


                        Hier noch die voläufige Errungenschaft in der Hoffnung der EXEC-Teil ist "faster als fast"

                        PHP-Code:
                        ###[HELP]###
                        ###[/HELP]###


                        ###[DEF]###

                        [name = iTunes & AirPlay]

                        [e#1  = Ein/Aus]
                        [e#2  = Play]
                        [e#3  = Pause]
                        [e#4  = Stop]
                        [e#5  = FF]
                        [e#6  = FR]
                        [e#7  = Master VOLUME #init=100]
                        [e#8  = ]
                        [e#9  = ]
                        [e#10 = AirPlay-E/A-01]
                        [e#11 = AirPlay-E/A-02]
                        [e#12 = AirPlay-E/A-03]
                        [e#13 = AirPlay-E/A-04]
                        [e#14 = AirPlay-E/A-05]
                        [e#15 = AirPlay-E/A-06]
                        [e#16 = AirPlay-E/A-07]
                        [e#17 = AirPlay-E/A-08]
                        [e#18 = AirPlay-E/A-09]
                        [e#19 = AirPlay-E/A-10]
                        [e#20 = AirPlay-01-VOL]
                        [e#21 = AirPlay-02-VOL]
                        [e#22 = AirPlay-03-VOL]
                        [e#23 = AirPlay-04-VOL]
                        [e#24 = AirPlay-05-VOL]
                        [e#25 = AirPlay-06-VOL]
                        [e#26 = AirPlay-07-VOL]
                        [e#27 = AirPlay-08-VOL]
                        [e#28 = AirPlay-09-VOL]
                        [e#29 = AirPlay-10-VOL]
                        [e#30 = Autostart #init=1]
                        [e#31 = Port #init=9999]
                        [e#32 = Reset iTunes]
                        [e#33 = MBP-User #init=dariusz]
                        [e#34 = MBP-IP #init='10.0.100.150']

                        [a#1  = Ein/Aus]
                        [a#2  = Play]
                        [a#3  = Pause]
                        [a#4  = Stop]
                        [a#5  = FF]
                        [a#6  = FR]
                        [a#7  = Master VOL]
                        [a#8  = ]
                        [a#9  = ]
                        [a#10 = AirPlay 01]
                        [a#11 = AirPlay 02]
                        [a#12 = AirPlay 03]
                        [a#13 = AirPlay 04]
                        [a#14 = AirPlay 05]
                        [a#15 = AirPlay 06]
                        [a#16 = AirPlay 07]
                        [a#17 = AirPlay 08]
                        [a#18 = AirPlay 09]
                        [a#19 = AirPlay 10]
                        [a#20 = RM-01-VOL]
                        [a#21 = RM-02-VOL]
                        [a#22 = RM-03-VOL]
                        [a#23 = RM-04-VOL]
                        [a#24 = RM-05-VOL]
                        [a#25 = RM-06-VOL]
                        [a#26 = RM-07-VOL]
                        [a#27 = RM-08-VOL]
                        [a#28 = RM-09-VOL]
                        [a#29 = RM-10-VOL]
                        [a#30 = ]
                        [a#31 = ]
                        [a#32 = HTTP]
                        [a#33 = ]
                        [a#34 = ]

                        [v#1 = 0]

                        ###[/DEF]###



                        ###[LBS]###

                        <?php
                        function LB_LBSID($id) {
                            if (
                        getLogicElementVar($id,1)!=1) {
                                
                        setLogicElementVar($id,1,1);
                                
                        callLogicFunctionExec(LBSID,$id);
                            }

                            if (
                        $E=getLogicEingangDataAll($id)) {
                                if (
                        getLogicElementStatus($id)==0) {                        // LBS läuft nicht?
                                    
                        if ($E[32]['value']!=&& $E[32]['refresh']==1) {        // Systemstart {2}
                                        
                        setLogicLinkAusgang($id,32,$E[32]['value']);
                                    }
                                }
                            }
                        }
                        ?>

                        ###[/LBS]###



                        ###[EXEC]###

                        <?php
                        require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                        set_time_limit(0);
                        sql_connect();

                        if (
                        $E=getLogicEingangDataAll($id)) {

                        /*
                        Erweitere Dein EXEC-Script doch einfach um die Möglichkeit DIREKT einen HTTP-Request abzusetzen.
                        Dann kannst Du Dir diese ganzen Umwege über KOs/Eingänge/Ausgänge sparen...
                        Hier ein UDP-Listener, der  N I C H T  auf Datenpakte wartet. Die Schleife läuft also ständig durch!
                        WICHTIG: PHP-Fehlerbehandlung abschalten, sonst generiert socket_recv() "Warnungen", wenn keine Daten empfangen wurden
                        */

                            
                        restore_error_handler();
                            
                        error_reporting(0);

                            if (
                        $socket socket_create(AF_INETSOCK_DGRAMSOL_UDP)) {
                                if (
                        socket_bind($socket,0,$E[31]['value'])) {

                                    while(
                        getSysInfo(1)>=1) {
                                        
                        $len socket_recv($socket,$data,1024,MSG_DONTWAIT);    //das MSG_DONTWAIT ist der Trick ;)
                                        
                                        
                        if ($len!==false) {

                                               
                        // UPD-Paket empfangen: Hier die Auswertung wie gehabt...
                                            
                                            
                        $data preg_replace("/[^A-Za-z0-9&=]/",'',$data);
                                        
                                            
                        parse_str($data$output);  // $output = array();

                                            
                        if (array_key_exists('EA',       $output))    {setLogicLinkAusgang($id,1$output['EA']);}
                                            if (
                        array_key_exists('Play',   $output))    {setLogicLinkAusgang($id,2$output['Play']);}
                                            if (
                        array_key_exists('Pause',  $output))    {setLogicLinkAusgang($id,3$output['Pause']);}
                                            if (
                        array_key_exists('Stop',   $output))    {setLogicLinkAusgang($id,4$output['Stop']);}
                                            if (
                        array_key_exists('FF',     $output))    {setLogicLinkAusgang($id,5$output['FF']);}
                                            if (
                        array_key_exists('FR',     $output))    {setLogicLinkAusgang($id,6$output['FR']);}
                                            if (
                        array_key_exists('MastVol',$output))    {setLogicLinkAusgang($id,7$output['MastVol']);}
                                            if (
                        array_key_exists('LS1',    $output))    {setLogicLinkAusgang($id,10,$output['LS1']);}
                                            if (
                        array_key_exists('LS2',    $output))    {setLogicLinkAusgang($id,11,$output['LS2']);}
                                            if (
                        array_key_exists('LS3',    $output))    {setLogicLinkAusgang($id,12,$output['LS3']);}
                                            if (
                        array_key_exists('LS4',    $output))    {setLogicLinkAusgang($id,13,$output['LS4']);}
                                            if (
                        array_key_exists('LS5',    $output))    {setLogicLinkAusgang($id,14,$output['LS5']);}
                                            if (
                        array_key_exists('LS6',       $output))    {setLogicLinkAusgang($id,15,$output['LS6']);}
                                            if (
                        array_key_exists('LS7',    $output))    {setLogicLinkAusgang($id,16,$output['LS7']);}
                                            if (
                        array_key_exists('LS8',    $output))    {setLogicLinkAusgang($id,17,$output['LS8']);}
                                            if (
                        array_key_exists('LS9',    $output))    {setLogicLinkAusgang($id,18,$output['LS9']);}
                                            if (
                        array_key_exists('LS10',   $output))    {setLogicLinkAusgang($id,19,$output['LS10']);}
                                            if (
                        array_key_exists('LSV1',   $output))    {setLogicLinkAusgang($id,20,$output['LSV1']);}
                                            if (
                        array_key_exists('LSV2',   $output))    {setLogicLinkAusgang($id,21,$output['LSV2']);}
                                            if (
                        array_key_exists('LSV3',   $output))    {setLogicLinkAusgang($id,22,$output['LSV3']);}
                                            if (
                        array_key_exists('LSV4',   $output))    {setLogicLinkAusgang($id,23,$output['LSV4']);}
                                            if (
                        array_key_exists('LSV5',   $output))    {setLogicLinkAusgang($id,24,$output['LSV5']);}
                                            if (
                        array_key_exists('LSV6',   $output))    {setLogicLinkAusgang($id,25,$output['LSV6']);}
                                            if (
                        array_key_exists('LSV7',   $output))    {setLogicLinkAusgang($id,26,$output['LSV7']);}
                                            if (
                        array_key_exists('LSV8',   $output))    {setLogicLinkAusgang($id,27,$output['LSV8']);}
                                            if (
                        array_key_exists('LSV9',   $output))    {setLogicLinkAusgang($id,28,$output['LSV9']);}
                                            if (
                        array_key_exists('LSV10',  $output))    {setLogicLinkAusgang($id,29,$output['LSV10']);}

                                            } else {            

                                            
                        // kein UDP-Paket empfangen: Hier könnten z.B. HTTP-Request verarbeitet werden
                                            
                                         
                                            
                        if ($E=getLogicEingangDataAll($id)) {
                                            
                                                
                        $user $E[33]['value'];
                                                
                        $ip $E[34]['value'];
                                            
                                                
                        $url20 "http://".$ip."/%7E".$user."/iControl.php?c=apvolume&ap1=Computer&p2=".$E[20]['value']);
                                                
                        $url21 "http://".$ip."/%7E".$user."/iControl.php?c=apvolume&ap1=Computer&p2=".$E[21]['value']);
                                                
                                                if (
                        $E[20]['value']!=&& $E[20]['refresh']==1) {
                                                    
                        $ctx=stream_context_create(array('http' => array('timeout' => )));    // 3 Sekunden Timeout
                                                    
                        $r=file_get_contents($URL20,0,$ctx);                                    // komplette Antwort abwarten
                                                
                        }
                                                if (
                        $E[21]['value']!=&& $E[21]['refresh']==1) {
                                                    
                        $ctx=stream_context_create(array('http' => array('timeout' => )));
                                                    
                        $r=file_get_contents($URL21,0,$ctx);
                                                }
                                            }
                                        }    
                                        
                        usleep(1000*100); //z.B. 100ms warten - wichtig, um die CPU-Last zu begrenzen!
                                    
                        }
                                }
                            }
                            
                        socket_close($socket);
                        }
                        sql_disconnect();

                        ?>

                        ###[/EXEC]###
                        DANKE vorab :-) !!
                        Zuletzt geändert von coliflower; 04.02.2016, 10:41.
                        Danke und LG, Dariusz
                        GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                        Kommentar


                          Eine Ergänzung noch ...

                          Kann man anstatt $user und $ip in der $url auch so coden ?

                          PHP-Code:
                          $url20 "http://".$E[33]['value']."/%7E".$E[34]['value']."/iControl.php?c=apvolume&ap1=Computer&p2=".$E[20]['value']);
                          $url21 "http://".$E[33]['value']."/%7E".$E[34]['value']."/iControl.php?c=apvolume&ap1=Computer&p2=".$E[21]['value']); 
                          Danke und LG, Dariusz
                          GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                          Kommentar


                            Klar kann man das so machen - $E[][] ist schließlich nichts weiter als eine Variable (in Form eines Arrays).

                            $E kann selbstverständlich mehrfach "eingelesen" werden - nichts anderes passiert ja auch innerhalb der Schleife...

                            Die Länge einer Zeile ist übrigens vollkommen Wurscht Abgesehen von schlechter Lesbarkeit vielleicht.

                            Diagonal gelesen scheint das Script in Ordnung zu sein - allerdings würde ich noch ein paar mögliche "Fehler" abfangen, z.B. wenn E33/34 leer sind u.d.G.
                            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                            Kommentar


                              Klar kann man das so machen - $E[][] ist schließlich nichts weiter als eine Variable (in Form eines Arrays).
                              Meinst du eh so oder hat sich das auf die andere Frage bezogen ?
                              PHP-Code:
                              $r=file_get_contents($URL.$E[20]['value'],0,$ctx); 
                              Danke und LG, Dariusz
                              GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                              Kommentar


                                Verstehe Deine Frage nicht... $E[][] kannst Du wie jede andere Variable auch einsetzen - egal wo und wie und was...
                                EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                                Kommentar

                                Lädt...
                                X