[32_yowsup.pm] Whatsapp versenden (Mit Handy- oder Festnetznummer)

Begonnen von AHA1805, 01 Oktober 2014, 21:58:55

Vorheriges Thema - Nächstes Thema

piet_pit

#1950
Hallo,

es hätte möglicherweise geklappt, wenn du "nur" die constants.py geändert hättest. Ich hatte vor einiger Zeit auch ein Problem, habe die md5 geändert und bin danach nicht mehr online gekommen, wenn ich mich recht erinnere hatte ich das gleiche Fehlerbild.

Wenn du den letzten Satz der Fehlermeldung googlest...

Exception: readString couldn't match token 247

wird auf das Github von WhatsApp verwiesen. Da war ich dann auch und habe wie wild gelesen und nichts verstanden.

Geholfen hat dann letztlich die Umstellung auf die env_IOS, seit dem klappt es wieder, auch das aktuelle Thema mit diesem DNS hat da nichts geändert.
Beschrieben habe ich diese Vorgehensweise in #1934 in diesem Thread...

Viele Grüße
Pit
FHEM 6.0 auf Raspberry Pi 3, Rasbian-Stretch
FRITZ!Box 7490
HM-Mod-RPI-PCB
JeeLink
CUNO 1.47

bombardi

Danke für deine Antwort.
Ich habe inzwischen nichts mehr gemacht, aber ab und zu wurde ein Teil der Testnachrichten die ich seit dem 20.7.22 geschickt hatte als gelesen markiert und dann mit erheblicher Zeitverzögerung beantwortet.
Seit ca. 12:00 Uhr läuft es wieder flüssig.

Gruss Bombardi

hoppel118

#1952
Hallo in die Runde,

habe mein WhatsApp quasi gerade neu aufgesetzt. Ich hatte mich seit dem letzten Ausfall am 20.07.22 nicht mehr damit auseinandergesetzt.

Was habe ich getan?

1. Meine yowsup/common/constants.py habe ich wie folgt angepasst:

https://github.com/tgalal/yowsup/issues/2992#issuecomment-648039297

Anschließend habe ich FHEM neugestartet, hat aber nichts gebracht.

2. Meine yowsup/env/env_android.py habe ich dann wie folgt angepasst:

_MD5_CLASSES = "XJnX1aI5e1bGaWmv350l+g=="
_VERSION = "2.22.2.73" # 2.20.206.24


Anschließend habe ich FHEM neugestartet, hat aber nichts gebracht:

state offline 2022-07-20 20:39:03

3. Anschließend habe ich mir den Post von @piet_pit nochmal vorgenommen und durchgearbeitet:

https://forum.fhem.de/index.php/topic,27543.msg1222621.html#msg1222621

Am Ende kam ich zur gleichen Problematik im FHEM logfile wie @piet_pit:

Traceback (most recent call last):
  File "/opt/yowsup-master/yowsup-cli", line 722, in <module>
    if not parser.process():
  File "/opt/yowsup-master/yowsup-cli", line 606, in process
    self.startCmdline()
  File "/opt/yowsup-master/yowsup-cli", line 627, in startCmdline
    from yowsup.demos import cli
  File "/opt/yowsup-master/yowsup/demos/cli/__init__.py", line 1, in <module>
    from .stack import YowsupCliStack
  File "/opt/yowsup-master/yowsup/demos/cli/stack.py", line 1, in <module>
    from yowsup.stacks import  YowStackBuilder
  File "/opt/yowsup-master/yowsup/stacks/__init__.py", line 1, in <module>
    from .yowstack import YowStack, YowStackBuilder
  File "/opt/yowsup-master/yowsup/stacks/yowstack.py", line 4, in <module>
    from yowsup.layers.noise.layer import YowNoiseLayer
  File "/opt/yowsup-master/yowsup/layers/noise/layer.py", line 1, in <module>
    from yowsup.layers.noise.workers.handshake import WANoiseProtocolHandshakeWorker
  File "/opt/yowsup-master/yowsup/layers/noise/workers/handshake.py", line 1, in <module>
    from consonance.protocol import WANoiseProtocol
  File "/usr/local/lib/python3.5/dist-packages/consonance-0.1.5-py3.5.egg/consonance/protocol.py", line 2, in <module>
    from .handshake import WAHandshake
  File "/usr/local/lib/python3.5/dist-packages/consonance-0.1.5-py3.5.egg/consonance/handshake.py", line 22, in <module>
    from .proto import wa20_pb2
  File "/usr/local/lib/python3.5/dist-packages/consonance-0.1.5-py3.5.egg/consonance/proto/wa20_pb2.py", line 21, in <module>
    create_key=_descriptor._internal_create_key,
AttributeError: module 'google.protobuf.descriptor' has no attribute '_internal_create_key'


Also habe ich anschließend noch protobuf aktualisiert:

pip3 list
DEPRECATION: Python 3.5 reached the end of its life on September 13th, 2020. Please upgrade your Python as Python 3.5 is no longer maintained. pip 21.0 will drop support for Python 3.5 in January 2021. pip 21.0 will remove support for this functionality.
Package                   Version
------------------------- -----------
protobuf                  3.8.0


pip3 install --upgrade protobuf
DEPRECATION: Python 3.5 reached the end of its life on September 13th, 2020. Please upgrade your Python as Python 3.5 is no longer maintained. pip 21.0 will drop support for Python 3.5 in January 2021. pip 21.0 will remove support for this functionality.
Requirement already satisfied: protobuf in /usr/local/lib/python3.5/dist-packages (3.8.0)
Collecting protobuf
  Downloading protobuf-3.19.4-py2.py3-none-any.whl (162 kB)
     |████████████████████████████████| 162 kB 9.4 MB/s
Installing collected packages: protobuf
  Attempting uninstall: protobuf
    Found existing installation: protobuf 3.8.0
    Uninstalling protobuf-3.8.0:
      Successfully uninstalled protobuf-3.8.0
Successfully installed protobuf-3.19.4


pip3 list
DEPRECATION: Python 3.5 reached the end of its life on September 13th, 2020. Please upgrade your Python as Python 3.5 is no longer maintained. pip 21.0 will drop support for Python 3.5 in January 2021. pip 21.0 will remove support for this functionality.
Package                   Version
------------------------- -----------
protobuf                  3.19.4


Anschließend nochmal FHEM neugestartet, hat aber immer noch nichts gebracht:

state offline 2022-07-20 20:39:03

Mein Device hat in den Internals den STATE connected, das Reading state bleibt allerdings im state offline.

Für mich sieht das so aus, als ob ich immer noch den falschen "_MD5_CLASSES" bzw. die falsche "_VERSION" verwende.

Gibt es da schon irgendwas neueres bzw. woran kann es noch liegen?

Mein FHEM Log spuckt nun keine Fehlermeldungen mehr aus.

-----------------------

Wenn ich meine yowsup/common/constants.py wie folgt anpasse, geht auch der Internals STATE auf Disconnected:

https://github.com/tgalal/yowsup/issues/3157#issuecomment-1209224775

Gleiches gilt für diese Variante:

https://github.com/tgalal/yowsup/issues/3157#issuecomment-1209234089

Daran liegt es also nicht. Irgendwie bleibt das Gefühl, dass "_MD5_CLASSES" bzw. "_VERSION" schon wieder veraltet sind.

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

hoppel118

OK, ich lag mit meiner Vermutung richtig:

state connected 2022-08-29 19:54:52

Dafür musste ich "yowsup/env/env_android.py" wie folgt anpassen:

_VERSION = "2.22.15"
_MD5_CLASSES = "BwB6r5I7vo6GLR8bPJyJ9A=="


Es läuft nun wieder. :D

By the way... An meiner /etc/hosts habe ich übrigens keine Änderungen vorgenommen. Nur die Anpassungen an der yowsup/common/constants.py die ich im vorherigen Post unter Punkt 1. verlinkt habe.
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

Nighthawk

#1954
ALternativ könnte man auch auf das IOS env wecheln,
wie hier https://github.com/tgalal/yowsup/pull/3127/files beschrieben.
Ist im ersten Moment zwar umständlich, läuft aber schon längere Zeit ohne Probleme.

piet_pit

Hallo,

bin leider aktuell auch offline...

state offline 2022-08-27 18:53:39

Ich nutze schon dieses IOS env, klappt bei mir leider jetzt nicht mehr... :-[

...muss aber jetzt einmal die "Version" checken...

viele Gruesse
Pit
FHEM 6.0 auf Raspberry Pi 3, Rasbian-Stretch
FRITZ!Box 7490
HM-Mod-RPI-PCB
JeeLink
CUNO 1.47

hoppel118

#1956
Zitat von: Nighthawk am 29 August 2022, 20:05:51
ALternativ könnte man auch auf das IOS env wecheln,
wie hier https://github.com/tgalal/yowsup/pull/3127/files beschrieben.
Ist im ersten Moment zwar umständlich, läuft aber schon längere Zeit ohne Probleme.


Hm..., das habe ich gemacht, hat allerdings nicht zum Erfolg geführt. Ich habe alles genauso wie in dem Link angepasst. Das war auch der Link, den piet_pit bereits gepostet hatte.

Es ging dann aber trotzdem erst nachdem ich die "_VERSION" und "_MD5_CLASSES" in der yowsup/env/env_android.py angepasst hatte. Klingt komisch, ist aber so. ;)

Wenn jemand eine Idee hat, wo mein Fehler liegt, immer her damit. Hier sind meine angepassten Dateien:

yowsup/env/__init__.py

from .env import YowsupEnv
from .env_ios import iOsYowsupEnv
from .env_android import AndroidYowsupEn


yowsup/env/env.py

...

logger = logging.getLogger(__name__)

DEFAULT = "ios"


class YowsupEnvType(abc.ABCMeta):

...

            logger.debug("Env not set, setting it to %s" % env)
            cls.setEnv(env)
        return cls.__CURR

    @classmethod
    def getAndroidEnv(cls):
        env = "android"
        envs = cls.getRegisteredEnvs()
        if env not in envs:
            env = envs[0]
        logger.debug("Env not set, setting it to %s" % env)
        cls.setEnv(env)
        return cls.__CURR

    @abc.abstractmethod
    def getToken(self, phoneNumber):

...


yowsup/env/env_android.py

...
    _MD5_CLASSES = "BwB6r5I7vo6GLR8bPJyJ9A=="
    _KEY = "eQV5aq/Cg63Gsq1sshN9T3gh+UUp0wIw0xgHYT1bnCjEqOJQKCRrWxdAe2yvsDeCJL+Y4G3PRD2HUF7oUgiGo8vGlNJOaux26k+A2F3hj8A="

    _VERSION = "2.22.15"
    _OS_NAME = "Android"
    _OS_VERSION = "8.0.0"
    _DEVICE_NAME = "star2lte"
...


yowsup/env/env_ios.py

from .env import YowsupEnv
import base64
import hashlib


class iOsYowsupEnv(YowsupEnv):
    _VERSION = "2.22.16.77" # 2.20.206.24
    _OS_NAME = "iOS"
    _OS_VERSION = "15.3.1"
    _DEVICE_NAME = "iPhone 7"
    _MANUFACTURER = "Apple"
    _BUILD_VERSION = "19D52"
    _AXOLOTL = True
    _TOKEN = "0a1mLfGUIBVrMKF1RdvLI5lkRBvof6vn0fD2QRSM785a343e772d0c64ec999e7505ffdeaf{phone}"

    def getVersion(self):
        return self.__class__._VERSION

    def getOSName(self):
        return self.__class__._OS_NAME

    def getOSVersion(self):
        return self.__class__._OS_VERSION

    def getDeviceName(self):
        return self.__class__._DEVICE_NAME

    def getBuildVersion(self):
        return self.__class__._BUILD_VERSION

    def getManufacturer(self):
        return self.__class__._MANUFACTURER

    def isAxolotlEnabled(self):
        return self.__class__._AXOLOTL

    def getToken(self, phoneNumber):
        result = hashlib.md5(self.__class__._TOKEN.format(phone = phoneNumber).encode()).hexdigest()
        return result


yowsup/layers/noise/layer.py

            remote_static = config.server_static_public

            self._rs = remote_static
            yowsupenv = YowsupEnv.getAndroidEnv()

            ##prepare os version
            version_str = yowsupenv.getVersion()
            version_list = version_str.split('.')
            if len(version_list) > 3:
                version_str = "%s.%s.%s" % (version_list[0], version_list[1], version_list[2])         

            client_config = ClientConfig(
                username=username,
                passive=passive,
                useragent=UserAgentConfig(
                    platform=0,
                    app_version=version_str,
                    mcc=config.mcc or "000",
                    mnc=config.mnc or "000",
                    os_version=yowsupenv.getOSVersion(),


Das sind jetzt wirkliche Extrakte aus meinen Dateien. Vielleicht siehst du da ja einen Unterschied.
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

hoppel118

Zitat von: piet_pit am 29 August 2022, 20:17:54
Hallo,

bin leider aktuell auch offline...

state offline 2022-08-27 18:53:39

Ich nutze schon dieses IOS env, klappt bei mir leider jetzt nicht mehr... :-[

...muss aber jetzt einmal die "Version" checken...

viele Gruesse
Pit

Na, dann bin ich ja mal gespannt, ob es bei dir auch mit der folgenden Änderung in yowsup/env/env_android.py klappt, obwohl du jetzt eigentlich env_ios verwendest:

_VERSION = "2.22.15"
_MD5_CLASSES = "BwB6r5I7vo6GLR8bPJyJ9A=="


Viele Grüße Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

piet_pit

Hallo,

ja, ich bin selber gespannt, will es morgen mal angehen...

Wobei ich die Systematik so noch nicht verstanden habe. Ich habe gedacht, ich benötige diese env_android.py so nicht mehr, an die Stelle tritt diese "env_ios.py und simuliert bei WhatsApp die Einwahl eines IOS-Handys....

Und in dieser env_ios.py wird ja auch nach der Version gefragt...
Bin leider kein Python-Programmierer und verstehe die Dateien so nicht...

Viele Grüße
Pit
FHEM 6.0 auf Raspberry Pi 3, Rasbian-Stretch
FRITZ!Box 7490
HM-Mod-RPI-PCB
JeeLink
CUNO 1.47

piet_pit

Hallo,

habe gerade gesehen, dass vor 3 Tagen die Env_IOS.py angepasst wurde, das will ich dann mal als erstes versuchen...
Seit 3 Tagen klappt ja mein WhatsApp nicht mehr 8)

https://github.com/tgalal/yowsup/pull/3127/commits/3ade9011ce713fcfb05480c03cb97cb1ac215ed1

Viele Grüße
Pit
FHEM 6.0 auf Raspberry Pi 3, Rasbian-Stretch
FRITZ!Box 7490
HM-Mod-RPI-PCB
JeeLink
CUNO 1.47

piet_pit

Hallo Zusammen,

bei mir klappt es auch wieder, aber erst nachdem ich auch in der yowsup/env/env_android.py Version und Classes aktualisiert habe.

_VERSION = "2.22.15"
_MD5_CLASSES = "BwB6r5I7vo6GLR8bPJyJ9A=="


Habe dann auch direkt diese Endpunkte in der constants.py überarbeitet/ entschlackt...

ENDPOINTS     = (
        ("chat.cdn.whatsapp.net", 443),
        ("g.whatsapp.net", 443),
        )


siehe u.a. Link:

https://github.com/tgalal/yowsup/pull/3161/commits/1b4574a0647c0032542d8faeb2c342c3f46248d6

Leider habe ich immer noch nicht diese Systematik mit den Dateien env_android.py und env_ios.py durchblickt, aber Hauptsache es klappt jetzt erst einmal!
Viele Grüße
Pit
FHEM 6.0 auf Raspberry Pi 3, Rasbian-Stretch
FRITZ!Box 7490
HM-Mod-RPI-PCB
JeeLink
CUNO 1.47

steffen83

Guten Morgen,

ich habe das nun auch alles hier noch mal umgesetzt und auch per IOS versucht. Nun sieht mein LOG wie folgt aus:
pi@raspi4:/opt/yowsup-master $ python3 yowsup-cli registration --requestcode voice --config-phone 4920412345 --config-cc 49
E 2022-09-19 10:10:19,434 yowsup.config.manager - Could not find a config for profile=4920412345, paths checked: 4920412345:/home/pi/.config/yowsup/4920412345/config.yo:/home/pi/.config/yowsup/4920412345/config.json
yowsup-cli  v3.2.1
yowsup      v3.3.0


Copyright (c) 2012-2019 Tarek Galal
http://www.openwhatsapp.org

This software is provided free of charge. Copying and redistribution is
encouraged.

If you appreciate this software and you would like to support future
development please consider donating:
http://openwhatsapp.org/yowsup/donate


W 2022-09-19 10:10:19,639 yowsup.common.http.warequest - Passing Config to WARequest is deprecated, pass a YowProfile instead
I 2022-09-19 10:10:20,438 yowsup.common.http.warequest - b'{"flash_type":0,"length":6,"login":"4920412345","method":"voice","notify_after":86400,"retry_after":125,"sms_wait":65,"status":"sent","voice_wait":125}\n'
status: b'sent'
length: 6
method: b'voice'
retry_after: 125
login: b'4920412345'
sms_wait: 65
voice_wait: 125
pi@raspi4:/opt/yowsup-master $ python3 yowsup-cli registration  --config-phone 4920412345 -R 940138
yowsup-cli  v3.2.1
yowsup      v3.3.0


Copyright (c) 2012-2019 Tarek Galal
http://www.openwhatsapp.org

This software is provided free of charge. Copying and redistribution is
encouraged.

If you appreciate this software and you would like to support future
development please consider donating:
http://openwhatsapp.org/yowsup/donate


W 2022-09-19 10:10:48,050 yowsup.common.http.warequest - Passing Config to WARequest is deprecated, pass a YowProfile instead
I 2022-09-19 10:10:49,364 yowsup.common.http.warequest - b'{"login":"4920412345","security_code_set":false,"status":"ok","type":"existing"}\n'
{
    "__version__": 1,
    "cc": "49",
    "client_static_keypair": "xxx",
    "expid": "xxx",
    "fdid": "xxx",
    "id": "xxx",
    "login": "4920412345",
    "mcc": "000",
    "mnc": "000",
    "phone": "4920412345",
    "sim_mcc": "000",
    "sim_mnc": "000"
}
status: b'ok'
login: b'4920412345'
type: b'existing'
pi@raspi4:/opt/yowsup-master $ python3 yowsup-cli demos --config-phone 4920412345 -s 49177712345 "Das ist ein Test"
yowsup-cli  v3.2.1
yowsup      v3.3.0


Copyright (c) 2012-2019 Tarek Galal
http://www.openwhatsapp.org

This software is provided free of charge. Copying and redistribution is
encouraged.

If you appreciate this software and you would like to support future
development please consider donating:
http://openwhatsapp.org/yowsup/donate


I 2022-09-19 10:10:56,158 yowsup.layers.network.layer - Connecting to chat.cdn.whatsapp.net:443
I 2022-09-19 10:10:56,177 yowsup.axolotl.manager - Generating 812 prekeys, current max_prekey_id=0
I 2022-09-19 10:10:56,967 yowsup.axolotl.manager - Storing 812 prekeys
I 2022-09-19 10:11:10,875 yowsup.axolotl.manager - Loaded 812 unsent prekeys


Mehr passiert jedoch nicht :-( und am Ende bricht der ab. Hat jemand ne "schnelle" Hilfe für mich?
Gruß
Steffen
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

piet_pit

Hallo,

schnell ist gut... :)
wenn ich mir deinen Code anschaue, kommt zu Anfang ja folgende Fehlermeldung...

E 2022-09-19 10:10:19,434 yowsup.config.manager - [b]Could not find a config for profile=[/b]4920412345, paths checked: 4920412345:/home/pi/.config/yowsup/4920412345/config.yo:/home/pi/.config/yowsup/4920412345/config.json

Da würde ich mal ansetzen, die wegzubekommen. Evtl. ein Problem mit Rechten oder Verzeichnissen...

Ich würde alles Yowsup löschen (sichern) und nochmal installieren (und dabei auf die richtigen Verzeichnisse achten), das FHEM-Wiki zu Yowsup ist hier sehr hilfreich...
viele Gruesse
Pit
FHEM 6.0 auf Raspberry Pi 3, Rasbian-Stretch
FRITZ!Box 7490
HM-Mod-RPI-PCB
JeeLink
CUNO 1.47

hoppel118

Zitat von: piet_pit am 31 August 2022, 15:25:25
Hallo Zusammen,

bei mir klappt es auch wieder, aber erst nachdem ich auch in der yowsup/env/env_android.py Version und Classes aktualisiert habe.

_VERSION = "2.22.15"
_MD5_CLASSES = "BwB6r5I7vo6GLR8bPJyJ9A=="


Habe dann auch direkt diese Endpunkte in der constants.py überarbeitet/ entschlackt...

ENDPOINTS     = (
        ("chat.cdn.whatsapp.net", 443),
        ("g.whatsapp.net", 443),
        )


siehe u.a. Link:

https://github.com/tgalal/yowsup/pull/3161/commits/1b4574a0647c0032542d8faeb2c342c3f46248d6

Leider habe ich immer noch nicht diese Systematik mit den Dateien env_android.py und env_ios.py durchblickt, aber Hauptsache es klappt jetzt erst einmal!
Viele Grüße
Pit

Spannend, aber ganz ehrlich... Ich habe das auch nicht verstanden. Sehe es momentan auch so, hauptsache läuft.

Ja, das Wiki ist wirklich super. Wenn man sich daran hält und die letzten Posts hier beachtet, kann man das zum Laufen bekommen. ;)

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

JoWiemann

Hallo,

falls ihr Probleme mit WhatsApp habt, dann haben bei mir die angehängten Dateien geholfen.

Grüße Jörg

- die layer.py kommt nach /pfad/yowsup/yowsup/layers/noise
- die env_android.py nach /pfad/yowsup/yowsup/env
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM