Hallo,
danke für den Hinweis. Ich habe das Plugin aus develop entfernt, solange bis die Rechtslage geklärt ist.
Bis bald
Marcus
Ankündigung
Einklappen
Keine Ankündigung bisher.
Neues Plugin: Whatsapp
Einklappen
X
-
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:
-
Dankeschön, aber wo trage ich meinen groupswrite Befehl rein, bzw wo finde ich die sh.presenz.anwesend?Zitat von buffi Beitrag anzeigenHi
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:
-
@buffi: was hälst Du von meinem Patch für die Pushnames?
Gruß,
der Jan
Einen Kommentar schreiben:
-
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:
-
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:
-
Hallo Marcus,
danke, geht so. Pull-Request für meine CHanges liegt vor.
Gruss,
der Jan
Einen Kommentar schreiben:
-
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:
-
Danke, Marcus.
Wie mache ich denn aus der Liste von vierzehn Zeichen eine Liste mit einem String?
Gruß,
der Jan
Einen Kommentar schreiben:
-
Hi,
dank dem Edit kann ich nun antworten ;-)
Es ist schwierig ohne die komplette Exception und ohne den Code hinter
zu kennen, Deine Frage zu beantworten.Code:self._wa.methodsInterface.call("presence_sendAvailableForChat", (sid))
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:
-
Neues Plugin: Whatsapp
Hallo zusammen,
kann mir mal einer von den Python-Freaks erklären, wieso das so ist:
__init__.py:
und connectionmanager.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))
wirft die Fehler-Meldung "takes excatly 2 positional arguments (15 given). Wenn ich dann aber ein bisschen ändere:Code:def sendAvailableForChat(self, pushname): presenceNode = ProtocolTreeNode("presence",{"name":pushname}) self._writeNode(presenceNode);
__init__.py:
und connectionmanager.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 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?Code:def sendAvailableForChat(self, pushname[COLOR=Red], emptyarg[/COLOR]): presenceNode = ProtocolTreeNode("presence",{"name":pushname}) self._writeNode(presenceNode);
Gruss,
der Jan
Edit: "Freak" ist im Übrigen nicht negativ gemeint.
Einen Kommentar schreiben:
-
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:
-
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:
-
In Python3 und UTF-8 Codierung funktionieren Umlaute bei mir wunderbar.
Einen Kommentar schreiben:
-
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:


Einen Kommentar schreiben: