MQTT2 für Worx Landroid Mähroboter

Begonnen von Otto123, 09 Juni 2020, 13:55:43

Vorheriges Thema - Nächstes Thema

frober

#390
Die Landroid DeskApp V0.0.28 ist gefixt und funktioniert.

https://www.roboter-forum.com/threads/entwicklungsprojekt-worx-landroid-kress-mission-desktop-app.22795/


Edit:
Zitat aus 2.183 "Positec stellt auf custom authorisation via wss um"

Weiter habe ich noch nicht geschaut...

Edit2:
Hmm, das Anmelden in der App scheint zu funktionieren, beim Verbindung wirds dann wieder abgelehnt..

Edit3:
Neuer Broker: iot.eu-west-1.worxlandroid.com
evtl. habe ich mich durch die vielen Versuche gesperrt, probiere es in 24h noch einmal
Falls es jemand probieren sollte, nicht die Config + Cert aus der vorherigen Version übernehmen, da sich der Broker etc. geändert hat. Dadurch habe ich mich wahrscheinlich gesperrt.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

 ;D
Im MQTT2_Client die Def geändert in iot.eu-west-1.worxlandroid.com:8883

und tada:


setstate Mower 2023-01-13 18:41:26 batteryChargeCycle 358
setstate Mower 2023-01-13 18:41:26 batteryCharging 0
setstate Mower 2023-01-13 18:41:26 batteryPercent 100
setstate Mower 2023-01-13 18:41:26 batteryTemperature 16.5
setstate Mower 2023-01-13 18:41:26 batteryVoltage 19.36
setstate Mower 2023-01-13 18:41:26 borderLength 118
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

gramels

Zitat von: frober am 13 Januar 2023, 17:51:43
Die Landroid DeskApp V0.0.28 ist gefixt und funktioniert.

https://www.roboter-forum.com/threads/entwicklungsprojekt-worx-landroid-kress-mission-desktop-app.22795/

mhh, bei mir kommt mit der 0.28 immer noch nen 404.
Vll. mal auf Windows probieren und nicht mit wine


frober

Zitat von: gramels am 13 Januar 2023, 19:08:02
mhh, bei mir kommt mit der 0.28 immer noch nen 404.
Vll. mal auf Windows probieren und nicht mit wine

Die App scheint noch nicht zu funktionieren, auch wenn die Anmeldung klappt.
Ich bin auf Windows. Anmeldung funktioniert, Verbindung wird dann mit 404 abgelehnt.
Wieso in Fhem die Verbindung funktioniert, k.A.
Das Cert ist weiterhin das gleiche.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

gramels

ja, habs auch grad auf Windows probiert: 404

bearer token und json Daten kommen

habe mal Eisha angeschrieben

Ralli

Bei mir hat's jetzt leider auch die Verbindung zerlegt.

Mit der DeskApp kann ich keine Verbindung herstellen, gleichwohl zeigt er mir im Trace Oauth-Token und Product-Items an. Das Interessante ist, dass mit ioBroker die Verbindung zur Worx-/Amazon-Cloud einwandfrei hergestellt werden kann und auch stabil bleibt. ioBroker verwendet iot.eu-west-1.worxlandroid.com als Broker-Adresse, diese habe ich wie frober im FHEM ebenfalls eingetragen, allerdings kann keine Verbindung hergestellt werden.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

frober

Da würde anscheinend nochmal etwas geändert  :o
Bei mir geht es auch nicht mehr und in der App musste ich mich schon wieder neu anmelden.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Ralli

Der Unterschied dürfte darin liegen, dass ioBroker mittlerweile nicht mehr mit Zertifikaten die Authentifizierung durchführt sondern über wss-custom-auth.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

frober

Ja, das wurde, anscheinend mit Hilfe von Worx, umgestellt und die DeskApp scheint auch kurz vor der Lösung zu stehen.

Mir ist auch aufgefallen, dass die MobilApp immer noch den alten Link auf AWS benutzt.

Stellt sich die Frage, ob das mit MQTT2_CLIENT auf funktioniert...
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Ralli

Aufgrund der anderen Authentifizierung durch den Client wird diese Frage fundiert nur Rudolf beantworten können.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

rudolfkoenig

ZitatAufgrund der anderen Authentifizierung durch den Client wird diese Frage fundiert nur Rudolf beantworten können.
Kann mir bitte jemand die Frage konkret ausformuliert stellen?
Ich habe zwar die letzten 20 Beitraege durchgeflogen, bin aber nicht sicher, die Frage richtig verstanden zu haben.

frober

#401
Hallo Rudi,

ich kann dir nur ein Zitat aus dem Roboterform liefern:
ZitatBei einem neuen Account kommt auch oder eben nicht ein neues Zertifikat zum Einsatz.
Bei ioBroker haben wohl die Positec Entwickler mitgeholfen auf AWS custom authentication umzustellen. War da auch einfach, weil Amazon für node.js und Javascript ein iot device sdk bereitstellt.

Die Anmeldung in der MobilApp erfolgt nicht mehr mit Passwort, sondern über einen per Mail gesendeten Link (Token)

Nachtrag:
Vermutlich betrifft es dies
https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-controlling-access-to-apis-lambda-authorizer.html
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

rudolfkoenig

Reicht mir leider nicht als Frage, ich versuche zu raten..

wss-custom-auth suggeriert MQTT ueber wss (aka WebSocket + SSL). Das sollte mit MQTT2_CLIENT funktionieren, wenn man die Adresse als wss:hostname:port definiert, ich habe das aber nie getestet.
Zusaetzliche HTTP Header fuer wss zu definieren ist zZt. noch umstaendlich, beim Verbindugsaufbau muss ein header Internal vorhanden sein.
Ein Weg dafuer waere in der FHEM Kommandozeile
{ $defs{IODev}{header} =  { Hdr1=>"Val1", Hdr2=>"Val2"} }

gefolgt vom Verbindungsaufbau (z.Bsp. mit set IODev disconnect; set IODev connect)
Ich kann gerne ein httpHeader Attribut einbauen, falls das oben geschriebene funktioniert.

Die Seite https://docs.aws.amazon.com/iot/latest/developerguide/custom-auth.html meint aber, dass custom authentication auch ohne wss moeglich ist.

frober

Danke Rudi, ich denke das ist der richtige Ansatz. Zumindest war wss auch im Gespräch.

Ich werde das später zu testen...
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

#404
Hallo Rudi,

einen ersten Test habe ich durchgeführt. Aber es ist möglich, dass ich durch die vielen auto Fehlversuche seit gestern für 24h gesperrt bin.

Ist es möglich, das Autoreconnet zu verhindern? Aktuell habe ich mal attr MQTT2_Worx disconnectAfter 5 eingetragen. Edit: Hilft nicht



in der Kommandozeile:
{ $defs{MQTT2_Worx}{header} =  { Hdr1=>"Val1", Hdr2=>"Val2"} }; set MQTT2_Worx disconnect; set MQTT2_Worx connect

damit bekomme ich
HASH(0x8048080)
der Client bleibt disconnect


mit verbose 5 im Log (ich habe beide Domains getestet):
2023.02.18 17:53:02 5: HttpUtils url=https://iot.eu-west-1.worxlandroid.com:8883/ NonBlocking via https
2023.02.18 17:53:02 4: IP: iot.eu-west-1.worxlandroid.com -> 34.241.102.83
2023.02.18 17:53:03 5: HttpUtils request header:
GET / HTTP/1.1
Host: iot.eu-west-1.worxlandroid.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Hdr1: Val1
Connection: Upgrade
Sec-WebSocket-Key: XhxEjAOEdbCfW5FFNGuMAA==
Sec-WebSocket-Version: 13
Hdr2: Val2
Upgrade: websocket

2023.02.18 17:53:08 5: HttpUtils url=https://iot.eu-west-1.worxlandroid.com:8883/ NonBlocking via https
2023.02.18 17:53:08 4: IP: iot.eu-west-1.worxlandroid.com -> 34.241.102.83
2023.02.18 17:53:08 5: HttpUtils request header:
GET / HTTP/1.1
Host: iot.eu-west-1.worxlandroid.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Upgrade: websocket
Hdr2: Val2
Hdr1: Val1
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: knRUEaoFx0cWBDevEq9Ljg==
Connection: Upgrade

2023.02.18 17:53:13 5: HttpUtils url=https://iot.eu-west-1.worxlandroid.com:8883/ NonBlocking via https
2023.02.18 17:53:13 4: IP: iot.eu-west-1.worxlandroid.com -> 34.241.102.83
2023.02.18 17:53:13 5: HttpUtils request header:
GET / HTTP/1.1
Host: iot.eu-west-1.worxlandroid.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Hdr1: Val1
Connection: Upgrade
Sec-WebSocket-Key: FFK4U/gzoeFogrKKBqUskg==
Sec-WebSocket-Version: 13
Hdr2: Val2
Upgrade: websocket

2023.02.18 17:53:18 5: HttpUtils url=https://iot.eu-west-1.worxlandroid.com:8883/ NonBlocking via https
2023.02.18 17:53:18 4: IP: iot.eu-west-1.worxlandroid.com -> 34.241.102.83
2023.02.18 17:53:19 5: HttpUtils request header:
GET / HTTP/1.1
Host: iot.eu-west-1.worxlandroid.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Hdr1: Val1
Sec-WebSocket-Version: 13
Connection: Upgrade
Sec-WebSocket-Key: Mp0sHT32DDla/+nY1Y9xLQ==
Upgrade: websocket
Hdr2: Val2

2023.02.18 17:53:24 5: HttpUtils url=https://iot.eu-west-1.worxlandroid.com:8883/ NonBlocking via https
2023.02.18 17:53:24 4: IP: iot.eu-west-1.worxlandroid.com -> 34.241.102.83
2023.02.18 17:53:24 5: HttpUtils request header:
GET / HTTP/1.1
Host: iot.eu-west-1.worxlandroid.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Sec-WebSocket-Version: 13
Connection: Upgrade
Sec-WebSocket-Key: 0zV1yyxAdF0vGZG7xseLOQ==
Hdr1: Val1
Hdr2: Val2
Upgrade: websocket



2023.02.18 17:56:19 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/ NonBlocking via https
2023.02.18 17:56:19 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 54.247.51.198
2023.02.18 17:56:19 5: HttpUtils request header:
GET / HTTP/1.1
Host: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Sec-WebSocket-Key: KUj0xhxtF1mQ7scdpzKfrA==
Connection: Upgrade
Sec-WebSocket-Version: 13
Hdr1: Val1
Hdr2: Val2
Upgrade: websocket

2023.02.18 17:56:24 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/ NonBlocking via https
2023.02.18 17:56:24 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 54.247.51.198
2023.02.18 17:56:25 5: HttpUtils request header:
GET / HTTP/1.1
Host: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Hdr2: Val2
Upgrade: websocket
Sec-WebSocket-Key: bcyGlNl+/BrxIIFpCMHQog==
Connection: Upgrade
Sec-WebSocket-Version: 13
Hdr1: Val1

2023.02.18 17:56:30 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/ NonBlocking via https
2023.02.18 17:56:30 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 54.247.51.198
2023.02.18 17:56:30 5: HttpUtils request header:
GET / HTTP/1.1
Host: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Hdr2: Val2
Upgrade: websocket
Hdr1: Val1
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: qXzM1G1dfGKs8ZJbAV9qqw==
Connection: Upgrade

2023.02.18 17:56:35 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/ NonBlocking via https
2023.02.18 17:56:35 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 54.247.51.198
2023.02.18 17:56:35 5: HttpUtils request header:
GET / HTTP/1.1
Host: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Hdr2: Val2
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: WqAD8cZ92iU8KhKBht7V6A==
Connection: Upgrade
Hdr1: Val1

2023.02.18 17:56:41 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/ NonBlocking via https
2023.02.18 17:56:41 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 34.241.250.157
2023.02.18 17:56:41 5: HttpUtils request header:
GET / HTTP/1.1
Host: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Hdr2: Val2
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: IV/ry7/nWetm6lIwu+Ur1Q==
Connection: Upgrade
Hdr1: Val1

2023.02.18 17:56:46 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/ NonBlocking via https
2023.02.18 17:56:46 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 34.241.250.157
2023.02.18 17:56:46 5: HttpUtils request header:
GET / HTTP/1.1
Host: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Hdr2: Val2
Upgrade: websocket
Hdr1: Val1
Connection: Upgrade
Sec-WebSocket-Key: WujlCNQiQGcmF6Kl4S0gMg==
Sec-WebSocket-Version: 13

2023.02.18 17:56:52 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/ NonBlocking via https
2023.02.18 17:56:52 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 34.241.250.157
2023.02.18 17:56:52 5: HttpUtils request header:
GET / HTTP/1.1
Host: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Upgrade
Sec-WebSocket-Key: Jr3WBGv1ImerghVrpeH3ww==
Sec-WebSocket-Version: 13
Hdr1: Val1
Hdr2: Val2
Upgrade: websocket


Ich habe mir den Code vom ioBroker angesehen, da wird ein  "oauth/token?" mit der Url gesendet.
https://github.com/iobroker-community-adapters/ioBroker.worx/blob/master/main.js

async refreshToken() {
        this.log.debug("Refresh token");
        await this.requestClient({
            url: this.clouds[this.config.server].loginUrl + "oauth/token?",
            method: "post",
            headers: {
                accept: "application/json",
                "content-type": "application/json",
                "user-agent": this.userAgent,
                "accept-language": "de-de",
            },
            data: JSON.stringify({
                client_id: this.clouds[this.config.server].clientId,
                scope: "user:profile mower:firmware mower:view mower:pair user:manage mower:update mower:activity_log user:certificate data:products mower:unpair mower:warranty mobile:notifications mower:lawn",
                refresh_token: this.session.refresh_token,
                grant_type: "refresh_token",
            }),
        })
            .then((response) => {
                this.log.debug(JSON.stringify(response.data));
                this.session = response.data;
                if (this.mqttC) {
                    this.mqttC.updateCustomAuthHeaders(this.createWebsocketHeader());
                } else {
                    this.log.debug("Cannot update token for MQTT connection. MQTT Offline!");
                }
            })
            .catch((error) => {
                this.log.error(error);
                error.response && this.log.error(JSON.stringify(error.response.data));
            });
    }
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...