NEWS
[Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.
-
@crunchip diese Fehlermeldung meinte ich ^^
-
@crunchip sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
@pittini weiss nicht ob das schon mal gefragt/gemeldet wurde, bzw ob das nur hin und wieder vorkommt
javascript.0 2021-08-13 10:24:13.351 error FetchError: request to https://de.api.io.mi.com/app/home/device_list failed, reason: getaddrinfo ENOTFOUND de.api.io.mi.com at ClientRequest.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/lib/index.js:1461:11) at ClientRequest.emit (events.js:412:35) at ClientRequest.emit (domain.js:470:12) at TLSSocket.socketErrorListener (_http_client.js:475:9) at TLSSocket.emit (events.js:400:28) at TLSSocket.emit (domain.js:470:12) at emitErrorNT (internal/streams/destroy.js:106:8) at emitErrorCloseNT (internal/streams/destroy.js:74:3) at processTicksAndRejections (internal/process/task_queues.js:82:21) javascript.0 2021-08-13 10:24:13.350 error Error: request to https://de.api.io.mi.com/app/home/device_list failed, reason: getaddrinfo ENOTFOUND de.api.io.mi.com javascript.0 2021-08-13 10:24:13.348 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.
Sollte nur gelegentlich vorkommen, die devicelist wurde in den alten Versionen nur bei Skriptstart abgefragt, dadurch fiel das nich auf, wird jetzt aber alle 10 Sekunden abgefragt um rssi und isOnline aktuell zu halten und deswegen kann das eher mal auftreten. Mal beobachten, wenn da zu viele Fehler kommen muß ich mir was einfallen lassen.
-
Jetzt habe ich leider doch wieder nen Problem.
Diesmal ist es der Smart Standing Fan Pro (dmaker.fan.p15)
Der Datenpunkt on ändert sich zwar in true/false, wenn man im IOT AN/AUS für Alexa eingibt, aber es passiert nichts.
Schalte ich den Ventilator per App aus, dann geht er auch aus, aber der Datenpunkt ändert sich nicht.True obwohl er aus ist.
Mit dem 0.2.23 Script geht es.
-
@haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Mit dem 0.2.23 Script geht es.
Das is aber seltsam, denn daran wurde absolut nix geändert. Der einzige Unterschied von der .23 zur .24 is eine Funktion die rssi und IsOnline refresht. Kannst ja mal guggen obs geht wenn Du die in Zeile 841 auskommentierst, dann wird die Funktion nimmer aufgerufen und Du hast faktisch die .23
-
Dann kann ich ja auch die 23er behalten
Ich hab ja immer 2 Skripte.
Eines Produktiv (23er) und eines als Test (24er).
Ich probier einfach mit der 24er Version mal rum. -
@haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Dann kann ich ja auch die 23er behalten
Ja klar, aber wir würden dann wissen ob die neue Funktion der .24 das Problem auslöst.
-
Habs hin und herprobiert. Auskommentiert und normal. Mit der 24er kann ich den Fan nicht mehr steuern.
Über Alexa nicht und manuell über den Datenpunkt nicht. -
@haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Habs hin und herprobiert. Auskommentiert und normal. Mit der 24er kann ich den Fan nicht mehr steuern.
Über Alexa nicht und manuell über den Datenpunkt nicht.Das is ja noch seltsamer, wenn die .24 auch mit der auskommentierten Funktion den Fan nich mehr steuert (denn dann ist quasi die .23), vorallem weil ich den auch hab und alles läuft wie es soll. Hast schon mal das logging aktiviert und geguggt ob das was kommt?
-
Ich dreh nochmal alles links.
Das Smart Home nimmt langsam Überhand -
Vermelde Erfolg auf ganzer Linie.
Habe hier und da am System bisschen optimiert.
Am Ende Iobroker neu gestartet und zack, ich kann per Stimme wieder den Ventilator steuern.
Die 24er Version kann ich hiermit offiziell abnicken -
@fd said in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
@pittini Danke sehr für die schnelle Anwort.
Ich bin jetzt einen großen Schritt weiter: nachdem ich die Ländereinstellung in der Xiaomi App und im Skript von Deutschland auf Singapur geändert habe (China hat für mich nicht funktioniert, da ich den Ventilator über die App nicht finden konnte) und den Ventilator neu angelernt, klappt der Log-in nun ohne weiteres.
Der Ventilator wird auch in ioBroker unter Objekte / Javascript angelegt und unter Info finde ich viele Daten zu IP Adresse usw. Leider bleiben jedoch die Fan-Einstellungen leer und Eingaben meinerseits über die Dropdowns werden nicht angenommen.
Das Skipt crasht sofort nach dem Start mit dem folgenden Log (ich habe einige spezifische Daten durch XXX ersetzt, sie scheinen aber korrekt zu sein.
10:37:05.651 info javascript.0 (2053) Stop script script.js.AllMyMi 10:37:06.971 info javascript.0 (2053) Start javascript script.js.AllMyMi 10:37:07.027 info javascript.0 (2053) script.js.AllMyMi: Starting AllMyMi V.0.2.23 10:37:07.036 info javascript.0 (2053) script.js.AllMyMi: registered 0 subscriptions and 0 schedules 10:37:07.037 info javascript.0 (2053) script.js.AllMyMi: You are already logged in, login canceled 10:37:07.038 info javascript.0 (2053) script.js.AllMyMi: Retrieving your in sg registered MiHome Devices 10:37:07.846 info javascript.0 (2053) script.js.AllMyMi: Found 1 MiHome Devices, those are: 10:37:07.847 info javascript.0 (2053) script.js.AllMyMi: Mi Smart Standing Fan 2 10:37:07.848 info javascript.0 (2053) script.js.AllMyMi: Now searching for supported Devices... 10:37:07.849 info javascript.0 (2053) script.js.AllMyMi: Device Mi Smart Standing Fan 2 is supported, creating DataPoints 10:37:07.870 info javascript.0 (2053) script.js.AllMyMi: Now creating device for dmaker.fan.p18 / XXXXXXXXXXXXXX / XXXXXXXXX / XXXXXXXXXXXXX / 10000 10:37:07.872 info javascript.0 (2053) script.js.AllMyMi: Created device {"_events":{},"_eventsCount":0,"_maxListeners":100,"id":"XXXXX","address":"XXXX","token":"XXXXX","protocol":"local","refresh":10000,"_properties":{},"_propertiesToMonitor":["fan:on","fan:mode","fan:fan-level","fan:horizontal-swing","fan:horizontal-angle","fan:status","alarm:alarm","motor-controller:motor-control","physical-controls-locked:physical-controls-locked","off-delay-time:off-delay-time"],"_miotSpec":null,"_miotSpecType":"urn:miot-spec-v2:device:fan:0000A005:dmaker-p18:1","model":"dmaker.fan.p18","setter":{},"definition":{"info":[{"id":"localip","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Ip Adress","type":"string","role":"value","def":""}},{"id":"token","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Token","type":"string","role":"value","def":""}},{"id":"did","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Device Id","type":"string","role":"value","def":""}},{"id":"model","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Model","type":"string","role":"value","def":""}},{"id":"rssi","initial":0,"forceCreation":false,"common":{"read":true,"write":false,"name":"rssi","type":"number","role":"value.rssi","def":0}},{"id":"name","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Name","type":"string","role":"value","def":""}},{"id":"isOnline","initial":false,"forceCreation":false,"common":{"read":true,"write":true,"name":"Is online","type":"boolean","role":"value","def":false}}],"model":"dmaker.fan.p18","description":"Mi Smart Standing Fan 2","setter":{},"common":[{"name":"fan.on","type":"boolean","role":"switch","read":true,"write":true},{"name":"fan.mode","type":"number","role":"switch","read":true,"write":true,"min":0,"max":1,"states":{"0":"Straight Wind","1":"Natural Wind"}},{"name":"fan.fan-level","type":"number","role":"switch","read":true,"write":true,"min":1,"max":4,"states":{"1":"Slow","2":"Middle","3":"High","4":"Turbo"}},{"name":"fan.horizontal-swing","type":"boolean","role":"switch","read":true,"write":true},{"name":"fan.horizontal-angle","type":"number","role":"switch","read":true,"write":true,"min":30,"max":140,"unit":"°","states":{"30":"30°","60":"60°","90":"90°","120":"120°","140":"140°"}},{"name":"fan.status","type":"number","role":"indicator","read":true,"write":false,"min":1,"max":100},{"name":"alarm.alarm","type":"boolean","role":"switch","read":true,"write":true},{"name":"motor-controller.motor-control","type":"number","role":"switch","read":false,"write":true,"min":0,"max":2,"states":{"0":"None","1":"Left","2":"Right"}},{"name":"physical-controls-locked.physical-controls-locked","type":"boolean","role":"switch","read":true,"write":true,"min":false,"max":true},{"name":"off-delay-time.off-delay-time","type":"number","role":"switch","read":true,"write":true,"min":0,"max":480,"unit":"m"}]},"firstrun":true} now fetching data 10:37:08.240 error javascript.0 (2053) script.js.AllMyMi: TypeError: Cannot read property 'forEach' of undefined 10:37:08.242 error javascript.0 (2053) at CreateDevices (script.js.AllMyMi:845:17) 10:37:08.243 error javascript.0 (2053) at main (script.js.AllMyMi:765:5)
Der Raspi wurde ein Paar mal neu gestartet um dies als Fehlerquelle auszuschließen. Irgendeine Idee?
Sorry dass ich hier nochmals nachfrage aber hat sonst noch jemand probleme mit 'forEach' of undefined? Ich kenne mich leider mit Javascript nicht gut genug aus, um das selbst zu troubleshooten. Danke.
PS: Ich habe auch Version 0.2.24 probiert, leider gleiches Problem...
-
@fd Du hast aber schon die dmaker.fan.p18.js in Dein node-mihome Devices Verzeichnis kopiert? Und die is da auch noch? Wenn das Skript an der Stelle abkackt, kanns das Device nicht initialisieren, was eigentlich (zumindest bisher) nur bei nicht vorhandener Definitionsdatei passiert.
-
@pittini Danke, ja, habe ich installiert und ist auch noch vorhanden und scheint unbeschädigt (gecheckt via sudo nano auf dem Raspi). Ich habe gerade testweise auch mal die Zugriffsrechte via chmod 777 voll freigegeben, keine Änderung.
Das Device wird auch angelegt im JavaScript Folder und ich erhalte infos zu Token, IP Adresse usw.. Die Datenpunkte fuer die Funktionen werden auch angelegt nur bleiben sie leer.
Wenn ich die Datei dmaker.fan.p18.js übrigens mal testweise wieder rauslösche und den Javascript Adapter neu starte, erhalte ich folgende (abweichende) Fehlermeldung:
12:32:05.768 info javascript.0 (5206) Stop script script.js.AllMyMi 12:32:05.839 info javascript.0 (5206) script.js.AllMyMi: Retrieving your in sg registered MiHome Devices 12:32:06.597 info javascript.0 (5206) script.js.AllMyMi: Found 1 MiHome Devices, those are: 12:32:06.597 info javascript.0 (5206) script.js.AllMyMi: Mi Smart Standing Fan 2 12:32:06.598 info javascript.0 (5206) script.js.AllMyMi: Now searching for supported Devices... 12:32:06.598 info javascript.0 (5206) script.js.AllMyMi: Device Mi Smart Standing Fan 2 is supported, creating DataPoints 12:32:06.610 info javascript.0 (5206) script.js.AllMyMi: Now creating device for dmaker.fan.p18 / xxx / xxx / xxx / 10000 12:32:06.613 error javascript.0 (5206) script.js.AllMyMi: Error: Model dmaker.fan.p18 is not supported 12:32:06.614 error javascript.0 (5206) at CreateDevices (script.js.AllMyMi:801:36) 12:32:06.614 error javascript.0 (5206) at main (script.js.AllMyMi:733:11)
Wenn ich die Datei dmaker.fan.p18.js wieder zurueckkopiere, kommt wieder die gleiche Fehlermeldung wie urspruenglich.
-
@fd Für alle, die ein ähnliches Problem haben, dass sie das Skript leider nicht zum Laufen bekommen: Ich habe das ganze jetzt über den ham adapter gelöst.
Folgendermaßen bin ich vorgegangen:
- Via SSH "homebridge" und "homebridge xiaomi fan" installieren (siehe z.B. https://github.com/merdok/homebridge-xiaomi-fan für weitere Anmerkungen)
- ham Adapter für den iobroker installieren
- Im ham Adapter unter "Main Settings" "Local Mode (...)" wählen
- Unter "Main Settings" "Additional NPM modules" "homebridge-xiaomi-fan" hinzufügen
- Im ham Adapter unter "Configuration File" die in https://github.com/merdok/homebridge-xiaomi-fan beschriebenen Eintragungen vornehmen. Bei mir sieht das zB so aus (mit einigen Dummies und ohne Sonos):
{ "bridge": { "name": "TEST", "username": "00:11:22:33:44:55", "port": 51826, "pin": "000-00-001" }, "platforms": [ { "name": "Config", "port": 8090, "auth": "form", "theme": "dark-mode", "tempUnits": "c", "lang": "auto", "sudo": false, "log": { "method": "file", "path": "/var/log/homebridge_ioB.log" }, "platform": "config" }, { "devices": [ { "name": "Mi Smart Standing Fan 2", "ip": "192.xxx.xxx.xxx", "token": "xxxxx", "model": "dmaker.fan.p18", "pollingInterval": 10, "buzzerControl": true, "ledControl": true, "naturalModeControl": true, "sleepModeControl": true, "moveControl": true, "shutdownTimer": true, "angleButtons": [ 30, 60, 90, 120, 140 ], "ioniserControl": false } ], "platform": "xiaomifan" } ], "accessories": [] }
Diese Config-Datei kann mit anderen Einträgen (bei mir zB für Sonos) kombiniert werden. Den Token, das Modell und die IP Adresse des Ventilators kann einfach über die hier hinterlegte App ausgelesen werden: https://github.com/Maxmudjon/Get_MiHome_devices_token/releases
6. den ham Adapter neu starten (passiert eigentlich automatisch)
7. Unter Objects in ioBroker werden dann unter ham.0 die Ventilatorsettings und Steuermöglichkeiten angezeigtWenn der Ventilator in der Xiaomi App auftaucht, sollte er dann auch in ioBroker verfügbar sein.
Weitere Hinweise:
- Ich hatte den Ventilator testweise im Fritzbox-Gästenetz, dann funktioniert es aber leider nicht, er muss scheinbar lokal im Netz gut erreichbar sein
- Für mein Ventilatormodell sind alle Einstellungen in ioBroker vornehmbar, bis auf die exakte Fan Speed als Prozentangabe. Es gibt aber 4 Stufen, die gewählt werden können
- Der Ventilator erscheint auch ohne weiteres in der Apple Home App und kann dort auch gesteuert werden, dort kann sogar die Fan Speed in Prozent geändert werden. Hierzu muss der ham Adapter mit Apple Home verbunden werden, das müsstet Ihr nochmals googlen (bei mir liefs wegen des Sonos bereits), ist aber recht einfach.
- Wer der China-Cloud nicht vertraut, kann nach der Installtion des Ventilators in der Fritzbox den Internetzugang des Fans kappen. Er erscheint dann in der Xiaomi Home App als "offline"
@Pittini nochmals vielen herzlichen Dank für das Trouble-Shooting mit Deinem Skript, leider musste ich doch den anderen Weg gehen, da die Fehlermeldung nicht wegzubekommen war. Insbesondere die Tatsache, dass der Ventilator über ham ohne China Cloud lauffähig ist, ist m.E. ein Vorteil.
-
Erstmal isses sowieso okay, wenn du nach einer "Ersatzlösung" guckst.
Aber ich denke, in Deinen Einstellungen oder Installationen liegt der Hase im Pfeffer.
Dein Workaround wird vermutlich niemand in Anspruch nehmen, weil es einfach zu @Pittini Script ein mit Kanonen auf Spatzen schiessen ist.
Zusätzlicher Adapter + App auf dem Handy....Das Skript läuft. Der Entwickler und ich stehen fast in ständigem Austausch.
Ich habe auch einen Smart Fan (dmaker.fan.p15)
Wenn Du alles nach Anleitung machst, klappt das auch 100%.
Und zur China Cloud, ich kann den Fan mit @Pittini Script auch ohne Internet steuern.
Um das Argument mal zu schwächen -
Moin, ich hatte doch mal erwähnt das bei mir bei 3H keine Temps aktualisiert werden. Mit Admin 5 habe ich nun folgenden Log gefunden:
Read-only state "javascript.0.MiHomeAll.333271530.environment.temperature" has been written without ack-flag with value "23.7"
Ich habe nun auch das Skript auf Version 2.8 aktualisiert, aber leider ohne Besserung
-
@saibot1981 Eine Version 2.8 gibts nicht, aktuell ist 0.2.24. Lösch mal den Datenpunkt und schau obs weiterhin kommt, ich hab den 3H nämlich auch und keine derartigen Meldungen mehr.
-
@pittini sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
@saibot1981 Eine Version 2.8 gibts nicht, aktuell ist 0.2.24. Lösch mal den Datenpunkt und schau obs weiterhin kommt, ich hab den 3H nämlich auch und keine derartigen Meldungen mehr.
Sorry hatte die 0.2.8 am laufen. habe nun alle datenpunkte gelöscht und das skript auch nochmal neu erstellt mit version 0.2.24
leider wieder diese meldung:Read-only state "javascript.0.MiHomeAll.333271530.environment.temperature" has been written without ack-flag with value "23.7"
Hier auch der Log direkt nach dem Start (Ohne meinen token):
script.js.Heizung.Xiaomi_Luftreiniger_all: Created device {"_events":{},"_eventsCount":0,"_maxListeners":100,"id":"XXXXXXXXX","address":"XXXXXXXXXX","token":"XXXXXXXXXXXXXX","protocol":"local","refresh":10000,"_properties":{},"_propertiesToMonitor":["air-purifier:fault","air-purifier:on","air-purifier:fan-level","air-purifier:mode","environment:pm2.5-density","environment:relative-humidity","environment:temperature","filter:filter-life-level","filter:filter-used-time","alarm:alarm","indicator-light:brightness","indicator-light:on","physical-controls-locked:physical-controls-locked"],"_miotSpec":null,"_miotSpecType":"urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-mb3:2","model":"zhimi.airpurifier.mb3","setter":{},"definition":{"info":[{"id":"localip","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Ip Adress","type":"string","role":"value","def":""}},{"id":"token","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Token","type":"string","role":"value","def":""}},{"id":"did","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Device Id","type":"string","role":"value","def":""}},{"id":"model","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Model","type":"string","role":"value","def":""}},{"id":"rssi","initial":0,"forceCreation":false,"common":{"read":true,"write":false,"name":"rssi","type":"number","role":"value.rssi","def":0}},{"id":"name","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Name","type":"string","role":"value","def":""}},{"id":"isOnline","initial":false,"forceCreation":false,"common":{"read":true,"write":true,"name":"Is online","type":"boolean","role":"value","def":false}}],"model":"zhimi.airpurifier.mb3","description":"Purifier 3H","setter":{},"common":[{"name":"air-purifier.on","type":"boolean","role":"switch","read":true,"write":true,"min":false,"max":true},{"name":"air-purifier.fault","type":"number","read":true,"write":false,"min":0,"max":5,"states":{"0":"No faults","1":"m1_run","2":"m1_stuck","3":"no_sensor","4":"error_hum","5":"error_temp","6":"timer_error1","7":"timer_error2"},"role":"state"},{"name":"air-purifier.mode","type":"number","read":true,"write":true,"min":0,"max":3,"states":{"0":"auto","1":"sleep","2":"favorite","3":"fanset"},"role":"state"},{"name":"air-purifier.fan-level","type":"number","read":true,"write":true,"min":1,"max":3,"role":"state"},{"name":"alarm.alarm","type":"boolean","read":true,"write":true,"role":"state"},{"name":"indicator-light.brightness","type":"number","read":true,"write":true,"min":0,"max":2,"role":"state"},{"name":"indicator-light.on","type":"boolean","role":"switch","read":true,"write":true,"min":false,"max":true},{"name":"environment.temperature","type":"number","role":"value.temperature","read":true,"write":false,"min":-40,"max":125,"unit":"°C"},{"name":"motor-speed.motor-speed","type":"number","read":true,"write":false,"min":0,"max":3000,"unit":"rpm","role":"state"},{"name":"motor-speed.motor-set-speed","type":"number","read":true,"write":false,"min":0,"max":3000,"unit":"rpm","role":"state"},{"name":"motor-speed.favorite-fan-level","type":"number","read":true,"write":true,"min":0,"max":14,"role":"state"},{"name":"use-time.use-time","type":"number","read":true,"write":false,"role":"state"},{"name":"environment.relative-humidity","type":"number","role":"value.humidity","read":true,"write":false,"min":0,"max":100,"unit":"%"},{"name":"environment.pm2_5-density","type":"number","read":true,"write":false,"min":0,"max":600,"unit":"μg/m³","role":"state"},{"name":"filter.filter-life-level","type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"state"},{"name":"filter.filter-used-time","type":"number","read":true,"write":false,"unit":"h","role":"state"},{"name":"physical-controls-locked.physical-controls-locked","type":"boolean","role":"switch","read":true,"write":true,"min":false,"max":true}]},"firstrun":true,"rssi":0,"isOnline":true} now fetching data
-
@saibot1981 Es gibt im ganzen Skript keinen einzigen setstate Befehl mehr welcher nicht das Ack Flag setzt, ich hab keine Ahnung woher das kommt und wie gesagt, bei mir kommts auch nicht. Du kannsts nochmal mit der 0.2.25 versuchen, da gabs paar kleinere Fixes, wenns dann immer noch kommt....müssen wir eruieren woher/warum das bei Dir kommt.
-
@pittini habe seit gestern (heute erst aufgefallen) folgendes Problem:
javascript.0 2021-08-28 21:49:46.262 error at Init (script.js.common.Sonstiges.Xiaomi_Pufifier_3C:795:21) javascript.0 2021-08-28 21:49:46.262 error at MiCloudProtocol.getDevices (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/protocol-micloud.js:121:18) javascript.0 2021-08-28 21:49:46.262 error at processTicksAndRejections (internal/process/task_queues.js:97:5) javascript.0 2021-08-28 21:49:46.261 error at runMicrotasks (<anonymous>) javascript.0 2021-08-28 21:49:46.261 error at MiCloudProtocol.request (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/protocol-micloud.js:107:13) javascript.0 2021-08-28 21:49:46.260 error script.js.common.Sonstiges.Xiaomi_Pufifier_3C: Error: Request error with status Unauthorized
Die Zugangsdaten stimmen aber. Hab mich extra bei MiHome einmal abgemeldet und die Zugangsdaten aus dem Skript abgeschrieben. Hab dafür leider keine Erklärung. Hat vorher ja einwandfrei funktioniert (hab zwischenzeitlich mal auf die neue Sktiptversion geändert)
Hab das ganze Skript auch nochmal neu kopiert, nur die Zugangsdaten eingetragen - selbes Ergebnis