Ankündigung

Einklappen
Keine Ankündigung bisher.

Eib PC und Mac Mini

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

    #46
    So hab ichs versucht:

    Code:
    ServerPortMac = MacPort^u16
    ServerIPMac = MacIP
    IP = 0u32
    Port = 0u16
    CheckSender = (IP==MacIP) and (Port==MacPort^u16)
    MacData = $$
    
    if event(GA) then {
            sendtcp(ServerPortMac,ServerIPMac, $GET /~MrKNX/Versuch.php HTTP/1.0$,0x0D,0x0A,0x0D,0x0A);
            closetcp(ServerPortMac,ServerIPMac)
    } endif
    if event(readtcp(Port,IP,MacData)) and CheckSender then {       pdisplay(iTunesLiedID,MacData,TEMPERATURE,DISPLAY,GREEN,InformationSideID)
    } endif
    Stimmt der Datentyp nicht? Weis nicht was ich mit dieser Rückmeldung anfangen soll! Fakt ist, es wird was in die MacData geschrieben, sonst wäre es ja leer, oder?
    Angehängte Dateien
    MfG MrKnx

    Kommentar


      #47
      Zitat von MrKNX Beitrag anzeigen
      Weis nicht was ich mit dieser Rückmeldung anfangen soll! Fakt ist, es wird was in die MacData geschrieben, sonst wäre es ja leer, oder?
      Du bekommst was zurück, aber Du wolltest das doch auf eine Anfrage machen. Also musste Du die Verbindung öffnen, dann abfragen, dann die Rückantwort und dann die Verbindung wieder schließen. Was du da siehst ist irgendeine Rückantwort - Datentyp ist gültig. Am besten mal wireshark anwerfen.
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #48
        Zitat von MrKNX Beitrag anzeigen

        Webserver auf dem Mac aktivieren



        1. In Systemeinstellungen unter Freigaben den Webserver aktivieren

        2. Bearbeiten von /etc/apache2/httpd.conf in terminal mit :

        sudo pico /etc/apache2/httpd.conf
        • uncommented LoadModule php5_module libexec/apache2/libphp5.so (uncommented heißt einfach vorne das # entfernen)



        • Folgenden Eintrag suchen:
          • User _www
          • Group _www

        • abändern in: (Der Username muss der gleiche sein wie der Benutzername des Macs!!)
          • User MrKNX
          • Group staff




        • anschließend diesen Eintrag suchen:

        <IfModule dir_module>
        DirectoryIndex index.html
        </IfModule>
        • abändern in:

        <IfModule dir_module>
        DirectoryIndex index.html index.php
        </IfModule>
        • Speichern mit Control o
        • Beenden mit Control X

        3. Schliesslich webserver neu starten, dazu in terminal absetzen: sudo apachectl graceful
        php-Script auf dem Mac anlegen

        Ebenfalls gemäß o.g. Implementation-Guide Datei angelegt: /Users/MrKNX/Sites/control.php
        (Programm um eine php Script Datei auf dem Mac zu erstellen: TextMate (Mac) - Download)


        Die folgende Script Datei einfach in die control.php Datei kopieren und sichern!

        Code:
        <head>
        </head>
        <body>
        <?
        $q = $_GET['q'];
        
        switch ($q)
            {
            case "":
                echo "You need to send me a command, then I shall execute it";
                break;
            
            case "play":
                exec("osascript -e 'tell app \"iTunes\" to play'");
                echo "Playing";
                break;
            
            case "pause":
                exec("osascript -e 'tell app \"iTunes\" to pause'");
                echo "Pausing";
                break;
            
            case "playpause":
                exec("osascript -e 'tell app \"iTunes\" to playpause'");
                echo "Toggling Play";
                break;
            
            case "next":
                exec("osascript -e 'tell app \"iTunes\" to next track'");
                echo "Next Track";
                break;
            
            case "prev":
                exec("osascript -e 'tell app \"iTunes\" to previous track'");
                echo "Previous Track";
                break;
            
            case "louder":
                exec("osascript -e 'tell app \"iTunes\" to set sound volume to sound volume + 5'");
                echo "Turning Up the Volume";
                break;
            
            case "quieter":
                exec("osascript -e 'tell app \"iTunes\" to set sound volume to sound volume - 5'");
                echo "Turning Down the Volume";
                break;
        
                case "shutdown":
                        exec("osascript -e 'tell app \"System Events\"' -e 'shut down' -e 'end tell'");
                        echo "Shutting down...";
                        break;
        
                case "sleep":
                        exec("osascript -e 'tell app \"System Events\"' -e 'sleep' -e 'end tell'");                            
                        echo "Sending to sleep...";
                        break;
        
            }
        ?>
        </body>
        Zum Testen einfach von irgendeinem Rechner im Heimnetzwerk versuchen, das script zu triggern. Dazu im Browser des Rechners (nicht des Mac) eine URL nach folgendem Schema eingeben:

        http://<mac-ip>:<port>/~<mac-username>/control.php?q=<command>

        also zB
        http://192.168.178.30:80/~MrKNX/control.php?q=playpause

        EDIT:


        Ich muss das hier nochmal ergänzen, da ich es gerade neu eingerichtet habe und jetzt OSX Mavericks benutze!!
        In Mavericks gibt es unter den Freigaben in den systemeinstellungen den Punkt Websharing nicht mehr!!
        Dazu einfach die angehängte Datei ausführen und für alle Benutzer installieren!!
        Danach findet man einen eigenen Punkt in den Systemeinstellungen!

        Falls jetzt eine Fehlermeldung kommt beim Aufruf der Webseite
        http://192.168.178.30:80/~MrKNX/control.php?q=playpause
        mit den Worten
        "403 FORBIDDEN you don't have permission to access"
        dann fehlt eine User-spezifische Konfigurationsdatei für das betreffende Benutzerkonto im Ordner /etc/apache2/users/

        Die legen wir einfach übers Terminal an mit:

        sudo pico /etc/apache2/users/MrKNX.conf (Natürlich statt MrKNX euren Benutzernamen eintragen)

        und der Inhalt sieht dann so aus:

        <Directory "/Users/MrKNX/Sites/">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
        </Directory>


        Das ganze dann mit CTRL-X abspeichern und mit "Y" quittieren!!

        Jetzt den Webserver neu starten und freuen!!!!
        Angehängte Dateien
        MfG MrKnx

        Kommentar


          #49
          Hi Leute, brauche mal kurz eure Hilfe.
          Hab auf Yosemite upgedatet und hatte einige Schwierigkeiten das Ganze wieder zum Laufen zu bekommen, da der Apache in OSX auch upgedatet wurde...
          Schlussendlich funktioniert es wieder, nun ja zumindest halbwegs. Vom Webbrowser aus kann ich die Befehle schon wieder absetzen mit

          zB
          http://192.168.178.30:80/~MrKNX/control.php?q=play

          jedoch vom EbPC funktioniert es nicht, obwohl sich weder vom Befehl noch von der IP Adresse etwas geändert hat???

          vorher funktionierte es mit

          Code:
          if event(GAplay) and (GAplay == EIN) then {
                  connecttcp(MacMiniPort,MacMiniIP)
              } endif
               
              if (after(event(GAplay),MacMiniLagTime)) then {
                  sendtcp(MacMiniPort,MacMiniIP, $GET /~Martin/control.php?q=play HTTP/1.0$,0x0D,0x0A,0x0D,0x0A);  
                  closetcp(MacMiniPort,MacMiniIP)
          }endif
          Vielleicht fällt euch was ein!?
          MfG MrKnx

          Kommentar


            #50
            Habe jetzt mit Wireshark mitgesnift und folgendes entdeckt.
            Wenn ich aus dem Webbrowser den Befehl absetze http://192.168.178.30:80/~MrKNX/control.php?q=play dann funktioniert es,

            aber vom EibPC will es einfach nicht

            der Code im EbPC sieht so aus
            Code:
            if event(GAplay) and (GAplay == EIN) then {
                    connecttcp(MacMiniPort,MacMiniIP)
                } endif
                
                if (after(event(GAplay),MacMiniLagTime)) then {
                    sendtcp(MacMiniPort,MacMiniIP, $GET /~MrKNX/control.php?q=play HTTP/1.1$,0x0D,0x0A,0x0D,0x0A);  
                    closetcp(MacMiniPort,MacMiniIP)
            }endif
            Was muss ich ändern?
            Angehängte Dateien
            You do not have permission to view this gallery.
            This gallery has 2 photos.
            Zuletzt geändert von MrKNX; 17.04.2015, 18:37.
            MfG MrKnx

            Kommentar


              #51
              Wenn ich das recht deute, will der nun eine \0 am Ende des Strings und die CRs stören.
              lass mal 0x0D,0x0A,0x0D,0x0A am Ende von sendtcp weg.
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #52
                Danke für die Rückmeldung.
                Hab ich schon versucht, dass ist es aber leider nicht.
                Wireshark spuckt dann Folgendes aus Bildschirmfoto 2015-04-18 um 22.38.44.png
                Angehängte Dateien
                Zuletzt geändert von MrKNX; 18.04.2015, 21:43.
                MfG MrKnx

                Kommentar


                  #53
                  Schreib mal explizit eine 0 am Ende von sendtcp. Hilft das?
                  EDIT: Was genau sind denn die Binärwerte von dem obigen Beispiel mit dem 0xD,0xa ... v.a. die Unterschiede?
                  Zuletzt geändert von enertegus; 19.04.2015, 15:55.
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #54
                    Nur die 0 am Ende hilft leider nichts.

                    Ich hab damals einfach den von Code hier übernommen und angepasst
                    https://knx-user-forum.de/forum/suppo...e-senden/page2

                    Bitte mal so probieren:
                    [highlight=epc]
                    sendtcp(80u16,192.168.1.2,$GET /cgi-bin/message?DieseNachrichtisteinTest HTTP/1.1$,0x0Du08,0x0Au08,0x0Du08,0x0Au08)
                    [/highlight]

                    Das CR LF muss als Zahl übertragen werden und keinesfalls als $\r\n$. Außerdem muss es doppelt gesendet werden. Das erste mal als Abschluss des GET-Kommandos, das zweite ist der Abschluss der HTTP-Anfrage.
                    MfG MrKnx

                    Kommentar


                      #55
                      Hier ist die Lösung
                      Code:
                      MacMiniPort      = 80u16
                      MacMiniIP        = xx.xx.xx.xx
                      MacMiniLagTime   = 100u64
                      
                      iTunes_Command_CRLF = $$
                      iTunes_Command_GET_1 = $$
                      iTunes_Command_GET_2 = $$
                      iTunes_Command_GET_3 = $$
                      iTunes_Command_GET_4 = $$
                      iTunes_Command_String = $$
                      
                      if event(GA) and (GA == EIN) then {
                              connecttcp(MacMiniPort,MacMiniIP)
                          } endif
                          
                      if (after(event(GA),MacMiniLagTime)) then {
                              stringset(iTunes_Command_CRLF,0x0A0Du16,0u16); \\
                              iTunes_Command_GET_1 = $GET /~MrKNX/control$; \\
                              iTunes_Command_GET_2 = $.php?q=$ + iTunesCommand + $ HTTP/1.1$ + iTunes_Command_CRLF; \\
                              iTunes_Command_GET_3 = $Host: xx.xx.xx.xx$ + iTunes_Command_CRLF; \\
                              iTunes_Command_GET_4 = $Connection: Keep-Alive$ + iTunes_Command_CRLF + iTunes_Command_CRLF; \\
                              iTunes_Command_String = iTunes_Command_GET_1 + iTunes_Command_GET_2 + iTunes_Command_GET_3 + iTunes_Command_GET_4; \\
                              sendtcparray(MacMiniPort, MacMiniIP, iTunes_Command_String, size(iTunes_Command_String));
                              closetcp(MacMiniPort,MacMiniIP)
                      }endif
                      Natürlich bei xx.xx.xx.xx eure IP-Adresse angeben
                      MfG MrKnx

                      Kommentar

                      Lädt...
                      X