Ankündigung

Einklappen
Keine Ankündigung bisher.

[Misterhouse] Prowl unterstützung - geht noch nicht ganz

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

    [Misterhouse] Prowl unterstützung - geht noch nicht ganz

    Hallo Jungs,

    Mac User kennen sicherlich Growl. Mit Prowl gibt es jetzt einen iPhone Client, der Pushnachrichten empfängt. Zu Info. Die App kostet 2.4€ im Appstore.

    Für prowl gibt es eine API und auch eine Perl Library. Was liegt näher als prowl in Misterhouse zu integrieren. Opensource sei Dank!

    Damit ist es möglich, dass MH Nachrichten auf ein iPhone/iPod touch pushed. Man kann auch an mehrere Geräte gleichzeitig pushen. Ich möchte das nutzen um Nachrichten von Misterhouse auf mein iPhone zu schicken (Wer hat angerufen, es hat jemand an der Tür geklingelt, Bewegung im Garten, ...).

    Es funktioniert soweit, nur kann man nur _eine_ Nachricht schicken, dann hängt sich Misterhouse auf. Scheint ein Speicherproblem zu sein. Nach dem Aufruf zum Versand einer Prowl Nachricht kommt Perl irgendwie nicht mehr "zurueck" um dann Misterhouse weiter laufen zu lassen. Ich hoffe ich habe mich verstaendlich ausgedrueckt.

    Mit meiner Copy&Paste Programmiermethode bin ich jetzt am Ende meiner Weisheit. Hat jemand von den (anderen) Misterhouse/Perl Profies einen Tipp für mich?

    Das wäre sicherlich für mehr als einen Interessant. Damit kann man sich quasi die Visu an der Haustuere sparen um zu sehen, ob noch Fenster offen sind. Es gibt 1000 Möglichkeiten das sinnvoll zu nutzen.

    Hier was ich habe:
    Ich habe die Prowl Library installiert:
    Code:
    # perl -MCPAN -e shell
    > install WebService-Prowl
    Eine Datei prowltest.pl mit folgendem Inhalt ausführbar (nicht im MH code Verzeichnis!) gemacht:
    Code:
    #!/usr/bin/perl -w
    use WebService::Prowl;
    
    my $ws = WebService::Prowl->new(apikey => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX');
    $ws->verify || die $ws-error();
    $ws->add(application => "Misterhouse",
             event       => "Abwesenheit",
             description => "Abwesenheit eingeschaltet");
    Von der Commandozeile kann man damit schon mal Nachrichten an das iPhone schicken.

    Dann folgendes kleines Perl Script im code Verzeichnis zum testen in MH:
    Code:
    # noloop=start
    use WebService::Prowl;
    my $prowl = WebService::Prowl->new(apikey => 'YourProwlKey');
    # den gibts nach Registrierung auf der Prowl-Settings Seite
    # noloop=stop
    
    my $v_prowl = new Voice_Cmd "prowl";
    
    if (said $v_prowl) {
      print_log "##### Hallo test";
      $prowl->add(application => "Misterhouse",
                  event       => "Abwesenheit",
                  description => "Test");
      print_log "##### Hallo test";
    }
    Auf der Commandozeile schickt man dann eine Testnachricht mit
    Code:
    # house prowl
    Klappt sowit, nur kommt das 2te "Hallo Test" nicht im Log. Ergo hängt er nach dem ->add(... Aufruf irgendwo fest.

    Any hints?

    #2
    Hi Ralf,

    Prowl habe ich mir auch kürzlich angeschaut und es für iPhone-Besitzer ist es in der Tat sehr interessant.

    Mit meiner Copy&Paste Programmiermethode bin ich jetzt am Ende meiner Weisheit.
    Oh weh, wie soll ich das bezeichnen, was ich dann mache? Ich brauche immer einen ganzen Abend um einen Zweizeiler von Dir zu verstehen und in mh zu integrieren...

    # den gibts nach Registrierung auf der Prowl-Settings Seite
    Vielleicht willst Du Deinen eigenen ApiKey trotzdem aus dem Skript-Beispiel weiter oben entfernen, damit Du nicht mit Spam geflutet wirst :-)

    Zitat von RaK
    Any hints?
    Habe keine Lösung anzubieten, aber evtl. einen Tipp fürs Debugging:
    Deine Analyse sieht so aus, als ob das Problem im WebService-Perl-Modul liegt (vielleicht bleibt der Request offen oder da ist schlicht ein Bug, so dass der Code hängenbleibt).
    Versuche doch statt dem WebService-Modul den "reinen" Perl-Code, der den HTTP-Request absetzt: http://prowl.weks.net/static/prowl.pl
    Der sollte Dir zumindest die Chance zu noch detaillierterem Logging geben.

    Noch eine Frage an Dich am Rande: Da leider nur meine Frau ein iPhone besitzt , bin ich noch auf der Suche nach einer mh-Push-Notification auf meinen PC im Büro. Benutzt Du irgendwas dergleichen und hast eine Empfehlung? Laut Doku sollte es mit Jabber eigentlich gut funktionieren, aber das habe ich nach Tagen rumprobieren verworfen, weil es einfach nicht funktioniert hat... Und Prowl/Growl scheint sich dafür ja leider nicht zu eignen.

    Viele Grüße,
    Kai

    Kommentar


      #3
      Ich werde es mal weiter debuggen. Danke fuer den Hinweis wegen dem API Key. Ich habe mir auf der Prowl Seite einen neuen API Key generiert. Ergo keine Möglichkeit für Prowl Spam.

      Kommentar


        #4
        So. Habe nativ auf LWP::Agent umgestellt und MH stirbt immer noch.

        Code:
        #!/usr/bin/perl -w
        # noloop=start
        my $Startup = 1;
        # noloop=stop
        
        if ($Startup) {
          print "########## PROWL Start ######################\n";
                use LWP::UserAgent;
        
                my $userAgent = LWP::UserAgent->new;
                my $requestURL = "http://ralfathome.dyndns.org/apache2-default/";
        
        print ">>>>>>>>>> before request\n";
                my $request = HTTP::Request->new(GET => $requestURL);
                my $response = $userAgent->request($request);
        print ">>>>>>>>>> after request\n";
        print ">>>>>>>>>> " . $response->content . "\n";
        print ">>>>>>>>>> end of prowl\n";
          print "########## PROWL End   ######################\n";
        }
        Leg dir das mal in dein Code Verzeichnis. mach es ausführbar und führe es direkt auf der Commandozeile aus. -> Funktioniert!

        Jetzt starte MH und du wirst sehen, dass MH direkt nach dem
        Code:
                my $response = $userAgent->request($request);
        den RAM Tod stirbt. Ich bin echt überfragt!

        Any hints?

        Kommentar


          #5
          Was sagt denn Dein Apache Server Log dazu? Steht der Zugriff da als erfolgreich abgeschlossen drin?

          Ich kann es heute abend mal bei mir testen und Dir Feedback geben - tagsüber im Büro geht leider nicht

          Kommentar


            #6
            Tja, was soll man dazu sagen? Hier ein Auszug aus meiner mh.log:
            Code:
            08/27/09 07:33:52 PM Starting memory check...
            ########## PROWL Start ######################
            >>>>>>>>>> before request
            >>>>>>>>>> after request
            >>>>>>>>>> <html><body><h1>It works!</h1></body></html>
            >>>>>>>>>> end of prowl
            ########## PROWL End   ######################
            Funktioniert wunderbar und auch beliebig oft. Heißt für mich, dass es kein mh-Problem ist, sondern irgendwas mit Deinem Rechner zu tun haben muss - ich weiß, das wird Dir nun leider nicht viel weiterhelfen...

            Grüße,
            Kai

            Kommentar


              #7
              Kurze Rueckfrage. Hast du das Script manuell auf der commandozeile gestartet, oder als ein *.pl in das Code Verzeichnis von MH gelegt und dann MH gestartet?

              Ersteres geht ohne Probleme bei mir. Zweites nicht.

              LG

              Kommentar


                #8
                Da ich geschrieben habe, dass es sich um einen Auszug aus meiner mh.log handelt, dürftest Du die Antwort selbst erraten :-)

                Habe beides ausprobiert, zuerst auf der Kommandozeile und dann eingebunden in mh. Klappt beides einwandfrei.

                Aber ich habe Dir noch eine dritte Methode zum Testen anzubieten, welche ich in einem anderen Skript bereits erfolgreich für HTTP-Requests verwende:

                Code:
                use LWP::Simple;
                
                my $requestURL = "http://...";
                my $response = get($requestURL);
                Vielleicht hast Du damit ja mehr Erfolg?

                Kommentar

                Lädt...
                X