Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: Whatsapp

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

  • callidomus
    antwortet
    Hallo,

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

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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

    Einen Kommentar schreiben:


  • Nighthawk777
    antwortet
    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?

    Einen Kommentar schreiben:


  • JNK
    antwortet
    @buffi: was hälst Du von meinem Patch für die Pushnames?

    Gruß,

    der Jan

    Einen Kommentar schreiben:


  • buffi
    antwortet
    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)

    Einen Kommentar schreiben:


  • Nighthawk777
    antwortet
    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

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Hallo Marcus,

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

    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Danke, Marcus.

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

    Gruß,

    der Jan

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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

    Einen Kommentar schreiben:


  • JNK
    antwortet
    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.

    Einen Kommentar schreiben:


  • mode
    antwortet
    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')

    Einen Kommentar schreiben:


  • JNK
    antwortet
    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

    Einen Kommentar schreiben:


  • mode
    antwortet
    In Python3 und UTF-8 Codierung funktionieren Umlaute bei mir wunderbar.

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Die aktuelle develop funktioniert bei mir nur ohne Umlaute. Mit Umlauten kommt auf dem iPhone nur eine leere Nachricht an.

    Gelöst habe ich das jetzt mit

    sh.whatsapp(content.encode('utf_8'), nummer)

    Macht es Sinn, das direkt im Plugin zu machen?

    Gruß,

    der Jan

    Einen Kommentar schreiben:

Lädt...
X