Roomba Staubsaugerroboter

Begonnen von Prof. Dr. Peter Henning, 10 September 2020, 16:40:34

Vorheriges Thema - Nächstes Thema

gestein

Zitat von: gestein am 08 März 2021, 09:40:34
Eines ist mir noch aufgefallen:
Beim myRoombaMQTTClient wird normalerweise das "disconnectAfter" auf 300s gesetzt.

In Zeile 725 wird es aber nun auf 7s gesetzt: main::fhem("attr $iodev disconnectAfter 7");

Stimmt das so?

lg, Gerhard

Prof. Dr. Peter Henning

#286
@gestein: Ja, nach Ablauf der Mission.

Zu dem Fehler: Ähem, man schaue bitte auf die Uhrzeit des Posts. Ich sollte nicht vor 5:00 solche Änderungen einfügen. Etwas Geduld, bitte.

LG

pah

Edit: OK, die Anlage sollte jetzt ohne Fehler laufen.

gestein

Hallo Pah,

Die Zeit des Posting ist mir aufgefallen ;-)

Das mit den 7sec beisst sich dann etwas mit einem Update, wenn man es so macht wie ich.
Oder kann man ein Update per MQTT auslösen?
Aber das probieren ich mal, wenn die Utils wieder laufen.

Eine Frage noch:
Das mit dem Setzen des Attributes "disconnectAfter" beim MQTT2_CLIENT-Device ist etwas unschön, weil fhem dann jedesmal annimmt, dass man die Konfig geändert hat.
Aber damit lässt sich leben.

lg, Gerhard

hapege

Hi,

bei 5:14 war ich auch echt beeindruckt ;)

Danke für das Update - ich habe das neue Modul gerade injiziert und neu gestartet:

Error:Modul 99_RoombaUtils deactivated:
Global symbol "$evstart" requires explicit package name (did you forget to declare "my $evstart"?) at ./FHEM/99_RoombaUtils.pm line 605.
Global symbol "$evstart" requires explicit package name (did you forget to declare "my $evstart"?) at ./FHEM/99_RoombaUtils.pm line 606.
Global symbol "$evstart" requires explicit package name (did you forget to declare "my $evstart"?) at ./FHEM/99_RoombaUtils.pm line 609.
Global symbol "$evcmd" requires explicit package name (did you forget to declare "my $evcmd"?) at ./FHEM/99_RoombaUtils.pm line 615.
Global symbol "$evcmd" requires explicit package name (did you forget to declare "my $evcmd"?) at ./FHEM/99_RoombaUtils.pm line 619.


Zum disconnectAfter: Könnte man nicht den "alten" Wert auslesen, zwischenspeichern, und danach wieder setzen? Dann bleibt er nicht auf 7 oder 300 stehen...


Ich hatte heute folgende Fehlermeldung im Log:

Illegal division by zero at /usr/local/share/perl/5.30.0/Math/Polygon/Calc.pm line 329


Ich konnte das nur bereinigen, indem ich den Aufruf "finalizemap" kurz auskommentiert habe. Es stand wohl der "old state" auf "dock", obwohl der Roomba schon in "charge" war, hat dann bei jeder Message versucht finalizemap aufzurufen, ist bei "division by zero" ausgestiegen und ist damit nie in "charge" angekommen.  Ich hatte den Roomba vorher manuell in einem Zimmer gestartet, wo er kein Dock hat; er bleibt dann ja brav stehen und wartet dass man ihn zum Dock trägt, aber irgendwie haben die RoombaUtils das nicht richtig mitbekommen.

Mal sehen ob ich das reproduzieren kann...

LG,

Hermann
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Prof. Dr. Peter Henning

#289
Hmmm. Probiermodus, noch eine geänderte Version anbei.


LG

pah

hapege

#290
Probieren ist immer gut :)

Ergebnis: Jein...RoombaUtils wird nun ohne Fehler eingelesen, aber die Readings sind weiter ohne Schedules, nur die bisherigen Readings (battery, cm*, s*) kommen. (edit: OK, schedule2 Aufruf ist ja auch auskommentiert....)
Logfile:
Zitat
[RoombaUtils] schedule2 event {"state":{"reported":{"batPct": 100, "batteryType": "F12432832R", "batInfo": {"mName": "F12432832R", "mDate": "2020-8-20", "mDaySerial": 36503, "mData": "303030333034303200000000000000000000000000", "mLife": "0C220B5010800C324F14000704C8F61900CBFE9F2611FFFF0047017900000000", "cCount": 8, "afCount": 0}, "batAuthEnable": true, "bbchg": {"nChatters": 0, "nKnockoffs": 313, "nLithF": 0, "nChgOk": 16, "aborts": [0, 0, 0], "smberr": 0}, "bbchg3": {"estCap": 2036, "nAvail": 30, "hOnDock": 421, "avgMin": 61}, "bbmssn": {"aCycleM": 31, "nMssnF": 4, "nMssnC": 2, "nMssnOk": 16, "aMssnM": 45, "nMssn": 22}, "bbnav": {"aMtrack": 0, "nGoodLmrks": 0, "aGain": 0, "aExpo": 0}, "bbpause": {"pauses": [18, 24, 46, 18, 43, 18, 24, 24, 18, 46]}, "bbrstinfo": {"nNavRst": 0, "nMobRst": 0, "causes": "0000", "nSafRst": 0, "safCauses": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "bbrun": {"nEvacs": 18, "nCBump": 0, "nOvertemps": 0, "nWStll": 0, "nMBStll": 458, "nPanics": 84, "nPicks": 225, "nOpticalDD": 0, "nScrubs": 0, "nPiezoDD": 0, "nStuck": 13, "sqft": 47, "min": 18, "hr": 12, "nCliffsF": 3111, "nCliffsR": 0}, "bbswitch": {"nBumper": 16552, "nDrops": 413, "nDock": 18, "nSpot": 45, "nClean": 49}, "bbsys": {"min": 54, "hr": 453}, "bin": {"present": true, "full": false}, "binPause": true, "bleDevLoc": false, "cap": {"binFullDetect": 1, "dockComm": 1, "wDevLoc": 2, "bleDevLoc": 1, "edge": 0, "maps": 3, "pmaps": 4, "tLine": 2, "area": 1, "eco": 1, "multiPass": 2, "pose": 1, "team": 1, "pp": 0, "5ghz": 1, "prov": 3, "sched": 1, "svcConf": 1, "ota": 2, "log": 2, "tileScan": 1}, "carpetBoost": false, "cleanMissionStatus": {"cycle": "none", "phase": "charge", "expireM": 0, "rechrgM": 0, "error": 0, "notReady": 0, "mssnM": 10, "sqft": 50, "initiator": "none", "nMssn": 22}, "cleanSchedule2": [{"enabled": false, "type": 0, "start": {"day": [1, 3], "hour": 9, "min": 0}, "cmd": {"command": "start", "ordered": 1, "pmap_id": "xxxxxxxx", "regions": [{"region_id": "10", "type": "rid"}], "user_pmapv_id": "210227T111225"}}, {"enabled": true, "type": 0, "start": {"day": [2, 4, 6], "hour": 11, "min": 0}, "cmd": {"command": "start", "ordered": 1, "pmap_id": "yyyyyyyy", "regions": [{"region_id": "10", "type": "rid"}, {"region_id": "6", "type": "rid"}, {"region_id": "5", "type": "rid"}, {"region_id": "8", "type": "rid"}], "user_pmapv_id": "210227T111225"}}], "cloudEnv": "prod", "connected": true, "country": "DE", "deploymentState": 0, "dock": {"known": true, "pn": "unknown", "state": 301, "id": "zzzzzzzz", "fwVer": "3.0.3"}, "evacAllowed": true, "ecoCharge": false, "hwPartsRev": {"csscID": 0, "mobBrd": 10, "mobBlid": "aaaaaaa", "navSerialNo": "bbbbbbbb", "wlan0HwAddr": "50:14:79:6d:3c:3d", "NavBrd": 1}, "hwDbgr": {"swVer": "", "hw": "", "status": 0}, "langs": [{"cs-CZ": 0}, {"da-DK": 1}, {"de-DE": 2}, {"en-GB": 3}, {"en-US": 4}, {"es-ES": 5}, {"es-XL": 6}, {"fi-FI": 7}, {"fr-CA": 8}, {"fr-FR": 9}, {"he-IL": 10}, {"it-IT": 11}, {"ja-JP": 12}, {"ko-KR": 13}, {"nb-NO": 14}, {"nl-NL": 15}, {"pl-PL": 16}, {"pt-BR": 17}, {"pt-PT": 18}, {"ru-RU": 19}, {"sv-SE": 20}, {"zh-CN": 21}, {"zh-HK": 22}, {"zh-TW": 23}], "language": 2, "lastCommand": {"command": null, "initiator": null, "time": null}, "lastDisconnect": 0, "mapUploadAllowed": true, "missionTelemetry": {"aux_comms": 1, "bat_stats": 1, "camera_settings": 1, "map_hypotheses": 1, "map_load": 1, "vital_stats": 1, "vslam_report": 1}, "name": "Rumpel", "noAutoPasses": false, "noPP": false, "openOnly": false, "pmapLearningAllowed": true, "pmaps": [{"cccccccc": "210307T113149"}, {"dddddddddddd": "210306T171929"}], "pmapCL": true, "rankOverlap": 15, "sceneRecog": 1, "schedHold": false, "secureBoot": {"log": 2, "flip": 0, "sbl1Ver": "B3.2.02_PPUB", "stublVer": "B3.2.02_PPUB", "efuse": 1, "blType": 1, "enforce": 2, "lastRst": "200000001", "recov": "linux+2.1.6_lock-1+lewis-release-rt419+12", "idSwitch": 0}, "sku": "i755840", "softwareVer": "lewis+3.10.8+lewis-release-rt320+13", "subModSwVer": {"nav": "lewis-nav+3.10.8-EPMF+build-HEAD-fed1cd6fdd3+13", "mob": "3.10.8+build-HEAD-fed1cd6fdd3+13", "pwr": "0.5.3+build-HEAD-fed1cd6fdd3+13", "sft": "1.1.0+Lewis-Builds/Lewis-Certified-Safety/lewis-safety-bbbe81f2c82+21", "mobBtl": "4.2", "linux": "linux+2.4.2+lewis-release-rt320+13", "con": "2.4.0-@071b7851/build"}, "svcEndpoints": {"svcDeplId": "v007"}, "timezone": "Europe/Berlin", "tls": {"tzbChk": 1, "privKType": 2, "lcCiphers": [0, 0, 0, 0, 0, 0, 0, 50380848, 50380847, 50331708]}, "twoPass": false, "tz": {"events": [{"dt": 1604232000, "off": 60}, {"dt": 1616893201, "off": 120}, {"dt": 1635642001, "off": 60}], "ver": 9}, "vacHigh": false, "wDevLoc": false}
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

hapege

Hi,

maximale Anzahl von Schedules beim i7: Ich habe gerade mal fleissig Zeitpläne eingerichtet - der i7 kann maximal 14 Stück speichern.

LG,

Hermann
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

hapege

Hallo,

ich experimentiere gerade einfach ein wenig, und bräuchte einen kleinen Tipp...ich möchte die Funktion "readingsDelete" aufrufen, um fallweise ein Reading meines i7 zu löschen:

main::readingsDelete($name, "Schedule".$nsched."Enabled")

Offenbar möchte readingsDelete lt. API Beschreibung aber eine Hashreferenz

readingsDelete($hash, $reading);

Ich bin noch nicht firm genug in Perl, und verstehe nicht ganz wie ich vom Namen des Robots $name zu einem Hash komme - und mir ist auch nicht ganz klar warum readingsDelete einen hash braucht, während z.B. ReadingsVal  statt hash "nur" den Namen braucht.
Sorry wenn die Frage trivial ist...

Hermann
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Prof. Dr. Peter Henning

Erst einmal ist es nicht ganz trivial, so etwas aus den RoombaUtils aufzurufen - da die selber schon innerhalb einer Schleife laufen, die Readings setzt. Besser ist, einen Aufruf
fhem("deleterading <name> <reading>")
abzusetzen.

Zweitens: $defs{"<name>"} ist der Hash.

LG

pah

hapege

#294
@pah: Dankeschön! Mit

my $hash = $main::defs{$name};

komme ich vermutlich weiter ;)

Noch 2 Findings, bei denen sich der i7 offenbar von den anderen Modellen unterscheidet:
Es gibt drei "uncaught events":
Zitat
uncaught event {"state":{"reported":{"bbswitch": ...
uncaught event {"state":{"reported":{"mssnNavStats":...
uncaught event {"state":{"reported":{"lastDisconnect": 2}}}
Die beide ersten habe ich mal bei "do nothing" ergänzt, für das "lastDisconnect" baue ich mir mal eine Routine.

Und beim missionmanager ist der normale i7 Ablauf wohl

charge -> run -> hmPostMsn -> evac -> hmPostMsn -> run -> charge

Das erklärt, warum bei mir nach jedem Lauf disconnectAfter weiter auf 300 sitzt. Ich habe das elsif mal erweitert um
|| $oldphase.$phase eq "runcharge"
(noch nicht getestet - gute Nacht ;) )
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

hapege

Ich habe meine Routine für die i7 Schedules aktualisiert (Maximalanzahl der Zeitpläne, Readings alter Zeitpläne löschen):
https://forum.fhem.de/index.php/topic,114166.msg1137830.html#msg1137830

@pah: Sorry, basiert nicht auf Deiner letzten Testversion, da ich die nicht zum Laufen gebracht habe :(, aber ich wollte einfach wissen obs geht, und evtl. freut sich zwischenzeitlich jemand drüber.

LG,

Hermann
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

hapege

Hallo,

ich habe immer wieder Perl Warnings im Log aus den RoombaUtils:

PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/99_RoombaUtilsI7.pm line 671
PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/99_RoombaUtilsI7.pm line 676
PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/99_RoombaUtilsI7.pm line 677

Die lines sind aus "meiner" Testversion (deshalb "RoombaUtilsI7", aber selbstverständlich mit kompletter Nennung des honorierten Autors!) und beziehen sich auf die pose subroutine:

if($hash->{helper}{initmap}==1){
    $hash->{helper}{startx} = $px;
    $hash->{helper}{starty} = $py;
    $hash->{helper}{initmap}=0;
  }
  $px -= $hash->{helper}{startx};
  $py -= $hash->{helper}{starty};

Was passiert ist möglicherweise, dass eine Nachricht vom Device kommt mit "pose", aber vorher die sub "initmap" nicht aufgerufen wurde, weil kein "cleanMissionStatus" vorher empfangen wurde (kann z.B. beim fhem restart passieren).

Könnte man das am Anfang der pose abfangen? Z.B. mit so was wie

if (!$hash->{helper}{initmap}) return;

(Evtl. ein brachialer Vorschlag, aber ich denke nur laut...)

Ich hatte auch schon den Fall, dass wohl gar ein pose kommt, und sich die Calc.pm beschwert bzw verabschiedet in line 329:

PERL WARNING: Use of uninitialized value in multiplication (*) at /usr/local/share/perl/5.30.0/Math/Polygon/Calc.pm line 323
PERL WARNING: Use of uninitialized value in addition (+) at /usr/local/share/perl/5.30.0/Math/Polygon/Calc.pm line 324
PERL WARNING: Use of uninitialized value in addition (+) at /usr/local/share/perl/5.30.0/Math/Polygon/Calc.pm line 325
Illegal division by zero at /usr/local/share/perl/5.30.0/Math/Polygon/Calc.pm line 329


Dann wird "cmPhase" wohl nicht mehr gesetzt, und es entsteht eine loop (zumindest habe ich die "division by zero" dann eine halbe Stunde im Minutentakt im Log), weil er die Meldung nicht mehr komplett auswertet und phase nicht neu setzt - vermute ich. Evtl. kann man das auf die selbe Art lösen - ich übe weiter, bin aber für jeden Denkanstoß dankbar.

LG,

Hermann
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Eisix

Hallo,

kann mir jemand sagen welches die funktionierende Version der 99_RoombaUtils.pm ist. Habe die beiden letzten von PAH probiert.
Oder liegt mein Fehler woanders?

i7

Log

2021.04.06 17:31:01.526 5: PutzfeeClient: sending PINGREQ (192)(0)
2021.04.06 17:31:01.648 5: PutzfeeClient: received PINGRESP
2021.04.06 17:31:19.698 3: MQTT2_DEVICE set Putzfee start
2021.04.06 17:31:19.699 1: ERROR evaluating my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $NAME=   $evalSpecials->{'%NAME'};{roomba::command($NAME,"start",$EVENT)}: Undefined subroutine &roomba::command called at (eval 2708) line 1.

2021.04.06 17:31:19.699 5: PutzfeeClient: sending PUBLISH 0E(0)(9)Undefinedsubroutine &roomba::command called at (eval 2708) line 1.(10)


list Putzfee

Internals:
   CID        XXXXX
   DEF        XXXXX
   DEVICETOPIC XXXXX
   FUUID      6033ce97-f33f-9eb8-adc1-9ca1b8486c2f6f1a
   FVERSION   10_MQTT2_DEVICE.pm:0.238430/2021-02-27
   IODev      PutzfeeClient
   LASTInputDev PutzfeeClient
   MSGCNT     22
   NAME       Putzfee
   NR         588
   PutzfeeClient_MSGCNT 22
   PutzfeeClient_TIME 2021-04-06 17:39:33
   STATE      start
   TYPE       MQTT2_DEVICE
   READINGS:
     2021-04-06 17:31:19   state           start
Attributes:
   IODev      PutzfeeClient
   autocreate 1
   devicetopic XXXXXX
   readingList $DEVICETOPIC:.* {roomba::reading($NAME,$EVENT)}
   room       MQTT2_DEVICE
   setList    start:noArg {roomba::command($NAME,"start",$EVENT)}
stop:noArg {roomba::command($NAME,"stop",$EVENT)}
dock:noArg {roomba::command($NAME,"dock",$EVENT)}
resume:noArg {roomba::command($NAME,"resume",$EVENT)}
pause:noArg {roomba::command($NAME,"pause",$EVENT)}
CarpetBoost:true,false {roomba::setting($NAME,"carpetBoost",$EVENT)}
TwoPass:true,false {roomba::setting($NAME,"twoPass",$EVENT)}
NoAutoPasses:true,false {roomba::setting($NAME,"noAutoPasses",$EVENT)}
NoPP:true,false {roomba::setting($NAME,"noPP",$EVENT)}
VacHigh:true,false {roomba::setting($NAME,"vacHigh",$EVENT)}
BinPause:true,false {roomba::setting($NAME,"binPause",$EVENT)}
OpenOnly:true,false {roomba::setting($NAME,"openOnly",$EVENT)}
ProgHold:true,false {roomba::setting($NAME,"schedHold",$EVENT)}
ProgSun:time {roomba::setsched($NAME,0,$EVENT)}
ProgMon:time {roomba::setsched($NAME,1,$EVENT)}
ProgTue:time {roomba::setsched($NAME,2,$EVENT)}
ProgWed:time {roomba::setsched($NAME,3,$EVENT)}
ProgThu:time {roomba::setsched($NAME,4,$EVENT)}
ProgFri:time {roomba::setsched($NAME,5,$EVENT)}
ProgSat:time {roomba::setsched($NAME,6,$EVENT)}
maplist:noArg {roomba::setting($NAME,"local:cmMapList={listmaps('$NAME')}",$EVENT)}
mapdel {roomba::setting($NAME,"local:cmMapList={delmap('$NAME','$EVENT')}",$EVENT)}


list PutzfeeClient

Internals:
   BUF       
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        X.X.X.X:8883
   DeviceName X.X.X.X:8883
   FD         157
   FUUID      6033ce2e-f33f-9eb9-1550-748e3271959ff7c7
   FVERSION   00_MQTT2_CLIENT.pm:0.238990/2021-03-06
   NAME       PutzfeeClient
   NR         587
   PARTIAL   
   SSL        1
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   XXXXX
   lastMsgTime 1617723755.80805
   nextOpenDelay 5
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2021-04-06 17:26:29   state           opened
   sslargs:
     SSL_version SSLv23
Attributes:
   SSL        1
   autocreate no
   clientId   XXXXX
   mqttVersion 3.1.1
   room       MQTT2_DEVICE
   sslargs    SSL_version:SSLv23
   username   XXXXX
   verbose    5


Gruß
Eisix

hapege

Hi,

Du müsstest im Forum etwas zurückgehen, oder die aus dem svn nehmen, die letzten Versionen laufen bei mir auch nicht.

Ich habe inzwischen etwas weiter dran gebaut, und versucht nix kaputt zu machen, dafür ein paar zumindest für mich nützliche Funktionen einzubauen (SysUptime, Runtime, einen ChargeState (weil mich "Wird geladen (100%)" irgendwie stört und ich "Geladen (100%)" korrekter finde), die cleanRoom Routinen von delMar integriert, ein paar unknowns abgefangen, den Logtext bei "finalization" korrigiert, ein catchall eingebaut um einfach mal alle verfügbaren Readings zu bekommen  etc...).

Ich packe meine Version mal hier rein - als "RoombaUtilsI7", bitte als Ergänzung auffassen, ich will keinesfalls so tun als wäre das meine Leistung, die Ehre gehört pah! Deshalb auch als "I7" - sollte aber auch bei den anderen Fegern funktionieren. Ich schreibe demnächst mal zusammen was ich ausprobiert habe, ist im code aber alles sauber mit "#hapege ... #/hapege" geklammert. Da sind noch einige Codestellen drin mit denen ich rumspiele, also lacht mich bitte nicht aus ;-)

Zur Verwendung in fhem einfach den Aufruf "roomba" durch "roombaI7" ersetzen, z.B.
start:noArg {roombaI7::command($NAME,"start",$EVENT)}
So kann man weiter parallel bzw hauptsächlich pahs Original verwenden und zum Testen oder für einen I7 relativ einfach auf meine Testversion umschalten.

Have fun...

Hermann
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Prof. Dr. Peter Henning

#299
Also, hier passiert gerade etwas Ungesundes, das wir mit FHEM seit vielen Jahren zu vermeiden versuchen - nämlich die halbparallele Entwicklung von Software.

Da ich mit dem I7 nicht testen kann, bin ich auf Mithilfe angewiesen, prima, Danke an hapege.
Ebenfalls Danke für die Behebung von ein paar kleinen Ungenauigkeiten

Gleichzeitig werden aber in der "RoombaUtilsI7.pm" dann Änderungen vorgenommen, die ganz andere Bereiche betreffen. Neue Readings erfunden, die wohl überlegte Syntax verändert etc.

Das bedeutet: Wenn ich nicht komplett die Kontrolle verlieren will, muss ich mit hohem Aufwand jeweils überlegen, was das bedeutet oder nicht bedeutet.

Das sollten wir _bitte_ so nicht weiter machen

Ich habe jetzt mal eine konsolidierte Version erstellt, die viele (nicht alle) der Änderungen von hapege übernommen hat und für beide Systeme laufen sollte. Noch nicht ganz - beispielsweise wird - mutmaßlich wegen der Umbauten - im Moment bei mir kein FinalizeMap ausgelöst, muss erst herausfinden, woran das liegt.

Bitte mal wegen der I7-Routinen testen, das ist jetzt sozuagen wieder auf Alpha-Status zurückgefallen.

LG

pah