Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: Whatsapp

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

    #31
    Das ist immer ein Gewürge. Eclipse behauptet das File-Encoding wäre UTF-8 und bei mir gehts nicht.
    Tut es denn weh, wenn man das macht?

    Gruß,

    der Jan
    KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

    Kommentar


      #32
      https://github.com/mknx/smarthome/co...543f121588a57f

      Nur encode reichte aber nicht, da das Whatsapp Plugin keine Bytestrings mag. Es sendet dann zwar gibt aber zwei Warnungen/Fehlermeldungen aus. Daher benötigen wir eine Rückwandlung in einen Unicodestring mit decode für Latin-1.

      Code:
       message.encode('utf8').decode('iso-8859-1')

      Kommentar


        #33
        Neues Plugin: Whatsapp

        Hallo zusammen,

        kann mir mal einer von den Python-Freaks erklären, wieso das so ist:

        __init__.py:
        Code:
            def __call__(self, message, phoneNumber = None):
                if phoneNumber == None:
                    if self._wa._absender == None:
                        phoneNumber = self._trusted[0]
                    else:
                        phoneNumber = self._wa._absender
        
                jid = "%s@s.whatsapp.net" % phoneNumber
                sid = "Janessa Castle"
                self._wa.methodsInterface.call("presence_sendAvailableForChat", (sid))
                self._wa.methodsInterface.call("message_send", (jid, message))
        und connectionmanager.py:
        Code:
            def sendAvailableForChat(self, pushname):
                presenceNode = ProtocolTreeNode("presence",{"name":pushname})
                self._writeNode(presenceNode);
        wirft die Fehler-Meldung "takes excatly 2 positional arguments (15 given). Wenn ich dann aber ein bisschen ändere:

        __init__.py:
        Code:
            def __call__(self, message, phoneNumber = None):
                if phoneNumber == None:
                    if self._wa._absender == None:
                        phoneNumber = self._trusted[0]
                    else:
                        phoneNumber = self._wa._absender
        
                jid = "%s@s.whatsapp.net" % phoneNumber
                sid = "Janessa Castle"
                self._wa.methodsInterface.call("presence_sendAvailableForChat", (sid[COLOR=Red], 0[/COLOR]))
                self._wa.methodsInterface.call("message_send", (jid, message))
        und connectionmanager.py:
        Code:
            def sendAvailableForChat(self, pushname[COLOR=Red], emptyarg[/COLOR]):
                presenceNode = ProtocolTreeNode("presence",{"name":pushname})
                self._writeNode(presenceNode);
        und das geht dann einwandfrei. Wie sorge ich dafür, dass ein einzelner String nicht als (Zeichenzahl) Argumente erfasst wird, sondern als ein Argument der Länge (Zeichenzahl)? Und wieso geht das, wenn ich ein Fake-Argument erfinde?

        Gruss,

        der Jan

        Edit: "Freak" ist im Übrigen nicht negativ gemeint.
        KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

        Kommentar


          #34
          Hi,

          dank dem Edit kann ich nun antworten ;-)

          Es ist schwierig ohne die komplette Exception und ohne den Code hinter
          Code:
          self._wa.methodsInterface.call("presence_sendAvailableForChat", (sid))
          zu kennen, Deine Frage zu beantworten.

          Ich vermute, es wird eine Liste von Argumenten erwartet und Du übergibst nur einen String. Ein String ist, aus Python-Sicht, eine Liste mit Zeichen.
          Da die sid nur aus 14 Zeichen besteht wird wahrscheinlich noch etwas hinzugefügt.

          Bis bald

          Marcus

          Kommentar


            #35
            Danke, Marcus.

            Wie mache ich denn aus der Liste von vierzehn Zeichen eine Liste mit einem String?

            Gruß,

            der Jan
            KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

            Kommentar


              #36
              Hi,

              wie gesagt ohne den Code zu kennen ist das schwierig zu beantworten.

              Du kannst aber auch eine Verschachtelung probieren:

              self._wa.methodsInterface.call("presence_sendAvail ableForChat", ([sid]))

              Bis bald

              Marcus

              Kommentar


                #37
                Hallo Marcus,

                danke, geht so. Pull-Request für meine CHanges liegt vor.

                Gruss,

                der Jan
                KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                Kommentar


                  #38
                  bitte nicht schlagen, bin ein absoluter Neuling und habe ein kleines problemchen bezüglich dieser app.

                  whatsapp registriert und so läuft alles. kann auch über den yowsup befehl nachrichten verschicken.
                  habe das whatsapp plugin ins Verzeichnis plugins kopiert. unter smarthome/etc/ hab ich auch die plugin.conf und logic.conf angepasst. Ich verstehe das mit der whatsapp.py datei nicht, wo muss ich diese erstellen? Ich möchte über whatsapp eine nachricht an den raspi schicken und dieser soll mir über die eibd groupswrite eine knx adresse schalten. könntest du mir bitte helfen, ich weiss nicht mehr weiter. viele grüße felix

                  Kommentar


                    #39
                    Hi

                    Code:
                    admin@smarthome:/usr/smarthome/logics$ cat whatsapp.py
                    #!/usr/bin/env python
                     
                    msg = trigger['value']
                    absender = trigger['source']
                     
                    logger.info(str(msg)+"@"+str(absender))
                     
                    if msg == "Zuhause?":
                       antwort = "Ja" if sh.presenz.anwesend() else "Nein"
                       sh.whatsapp(antwort)

                    Kommentar


                      #40
                      @buffi: was hälst Du von meinem Patch für die Pushnames?

                      Gruß,

                      der Jan
                      KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                      Kommentar


                        #41
                        Zitat von buffi Beitrag anzeigen
                        Hi

                        Code:
                        admin@smarthome:/usr/smarthome/logics$ cat whatsapp.py
                        #!/usr/bin/env python
                         
                        msg = trigger['value']
                        absender = trigger['source']
                         
                        logger.info(str(msg)+"@"+str(absender))
                         
                        if msg == "Zuhause?":
                           antwort = "Ja" if sh.presenz.anwesend() else "Nein"
                           sh.whatsapp(antwort)
                        Dankeschön, aber wo trage ich meinen groupswrite Befehl rein, bzw wo finde ich die sh.presenz.anwesend?

                        Kommentar


                          #42
                          Die Presenz.anwesend musst du in deinen Items in einer CONF-Datei anlegen, behaupte ich.

                          Zur Info: Die Whatsapp Python-Sache ist inzwischen aus Copyright-Gründen vom Netz genommen: https://github.com/tgalal/yowsup

                          Kommentar


                            #43
                            Hallo,

                            danke für den Hinweis. Ich habe das Plugin aus develop entfernt, solange bis die Rechtslage geklärt ist.

                            Bis bald

                            Marcus

                            Kommentar


                              #44
                              Hallo,

                              kann mir jemand evtl. helfen, nachdem einige das Plugin am Laufen haben?
                              whatsapp entpackt in /usr/smarthome/plugins

                              unter /usr/smarthome/etc/plugin.conf

                              folgendes eingetragen:

                              [whatsapp]
                              class_name = Whatsapp
                              class_path = plugins.whatsapp
                              account = '4915121771111'
                              password = 'Iavhbbrd2QgDhUEYG0cPDpJPgcM='
                              trusted = 491721881234 | 491721881234
                              logic = 'Logi_Whatsapp'

                              desweiteren unter /usr/smarthome/etc/logi.conf

                              folgendes eingetragen:

                              [Logi_Whatsapp]
                              filename = whatsapp.py

                              unter /usr/smarthome/logics

                              die Datei whatsapp.py

                              mit folgendem Inhalt erstellt:

                              #!/usr/bin/env python

                              msg = trigger['value']
                              absender = trigger['source']

                              logger.info(str(msg)+"@"+str(absender))

                              if msg == "Zuhause?":
                              antwort = "Ja" if sh.presenz.anwesend() else "Nein"
                              sh.whatsapp(antwort)

                              Leider funktioniert der empfang und versand nicht.

                              wo werden die sh.whatsapp Sachen aufgerufen?
                              Was fehlt. Die Registrierung und so läuft alles da ich dies mit yowsup getestet habe.

                              Danke schon im Voraus.

                              Kommentar


                                #45
                                was kommt den im Log beim starten von sh.py?
                                sowas in der art müsste erscheinen:
                                2014-02-13 10:18:04 INFO Thread-8 Whatsapp: Authed xxxxxx
                                dann mach mal ne Logik test.py

                                mit dem inhalt:

                                sh.whatsapp("hallo Welt", "Tel-Nr")


                                und triggere dann die Test-Logik via CLI

                                Kommentar

                                Lädt...
                                X