FB7390 Labor - CUL nicht erkannt

Begonnen von Guest, 02 Juni 2011, 09:50:02

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hi,
bin zugegebenermassen nicht besonders firm in flashen, Linux etc.
Hier der aktuelle Stand:

- Labor-Firmware auf FB7390 installiert (fhem-update.84.05.04-19798)
- CUL V3.2 kam gestern - ohne Firmware. Da ich keine brauchbare
Anleitung zum installieren von dfu-programmer auf der fb gefunden
habe, geflashed am Windows-PC mittels Flip3.4.3 mit hex-file v3
release 1.8 (http://cvs.berlios.de/cgi-bin/viewvc.cgi/culfw/culfw/
Devices/CUL/CUL_v3.hex)
-  am Win-PC wird CUL868 im Geräte-Mgr angezeigt - wenn auch mit
Warnung - vermutlich, da ich den CUL-Win-Treiber nicht  installiert
hab. Den brauch ich aber auch nicht.

Beim einstecken in die FB7390 blinkt die LED am CUL.
An der FB erscheint im log:
02.06.11   09:12:56   Es wurde ein nicht unterstütztes USB-Gerät
angeschlossen.
02.06.11   09:12:56   USB-Gerät 2002, Klasse 'USB 1.1 (full-speed) bulk',
angesteckt
Habe bereits den USB-Fernanschluss aktiviert/deaktiviert -> USB-
Erkennung lief durch.

In Linux folgendes Bild:
lsusb bringt 3 devices, u.a.:
BUS=002
DEV=002
VID=03eb
PID=204b
CLS=02
SCL=00
SPEED='full'
VER='1.1'
ISOC=0
INUM=2
ICLS1=02
ISCL1=02
ICLS2=10
ISCL2=00
Der CUL wird also offenbar zumindest als USB-Gerät erkannt.

Unter /dev erscheinen  ttyUSBn mit n=0..7
ls -l /dev/ttyUSBn  bringt das heutige Datum für alle devices

>>>>>>Aber kein ttyACM0<<<<<<<

Hier also die ersten drei Fragen - ich fürchte es kommen später noch
mehr....

1. Kann ich prüfen, ob das flashen des CUL korrekt funktioniert hat?
2. Wie bekomme ich mein heiss ersehntes ttyACM0?
3. Meine FB bringt bei http://fritz.box:8083 nur einen Seiten-
Ladefehler - obgleich auf der AVM-Seite steht, dass FHEM nun auch bei
nicht-angeschlossenem CUL gestartet wird - oder?

Schon im Voraus vielen Dank für eure Hilfe,
Gruß, Uli

PS: falls Linux-Schritte erforderlich sind, schickt mir BITTE die
genauen commands - am besten für copy+paste - Danke!  :-)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Nachtrag:
Beim Durchlauf der USB-Erkennung (USB-Fernanschluss deaktivieren/
aktivieren) erscheint eine Fehlermeldung:
# rmmod: vfat
rmmod: fat
rmmod: nls_cp437
rmmod: nls_iso8859-1
rmmod: sd_mod
rmmod: ext2
rmmod: usb-storage
rmmod: scsi_mod
rmmod: vfat
rmmod: fat
rmmod: nls_cp437
rmmod: nls_iso8859-1
rmmod: sd_mod
rmmod: ext2
rmmod: usb-storage
rmmod: scsi_mod
stopping aurad
killall: aurad: no process killed
OHCI USB 1.1 Host stopped
EHCI USB 2.0 Host stopped
mount: mounting sysfs on /sys failed: Device or resource busy
EHCI USB 2.0 Host started
OHCI USB 1.1 Host started

Hat aurad/sysfs einen Einfluss?

Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi, gerade noch eine weitere Stunde gegoogelt und gelesen.
Offenbar wurde FHEM trotz Labor-Version gar nicht richtig installiert.
Im FritzNAS gibt's zwar nen Ordner fhem, der ist aber leer.
in ps weder fhem noch perl zu sehen.
Oh Mann - stehe offenbar noch viel tiefer im Wald als ich dachte.

Meine Erwartungshaltung war: Firmware-Update drauf, CUL rein - und ab
geht's mit der FHEM Konfiguration der Sensoren/Aktoren konfigurieren,
alles schick.
Stattdessen häng ich im Formware-Sumpf fest :-(

Hat jemand nen Tipp wie ich FHEM erstmal vernünftig installiert krieg?
Muss ich irgendein tar installieren/entpacken oder wasß

Frustige Grüße,
Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Ui, peinlich.
Beim siebzehnten Durchlesen hab ich den entscheidenden kleinen Punkt
nicht mehr überlesen:
Vor dem Install der FHEM-Firmwareversion MUSS eine Laborverseion auf
der FB gewesen sein.
Also: Erst 'normale' Labor-Firmware auf die 7390, erst DANACH die FHEN-
Firmware.
Jetzt geht's - ttyACM0 ist da, erscheint in FHEM als initialisiert.

Im Moment kämpfe ich noch damit, dass keine FS20-Geräte erkannt werden
(trotz autocreate nix zu sehen), hoffe das wird noch.

Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Am 02.06.2011 15:24, schrieb UliM:

> Im Moment kämpfe ich noch damit, dass keine FS20-Geräte erkannt werden
> (trotz autocreate nix zu sehen), hoffe das wird noch.

Bei den Aktoren wirst Du dich mit autocreate auch schwer tun, die senden
ja nicht. Die darfst Du manuell anlernen. Also in Anlernmodus bringen
und dann einen "set" Befehl absetzen.

-Manfred

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi Manfred,
danke für den Hinweis - so langsam bekomme ich etwas Bodenhaftung.
Heute geht's in den Laden, noch einen Schwung Sensoren und Aktoren
holen.

Schlage mich gerade mit 'Toggle' rum, das einfache Beispiel in den
Howtos hab ich gefunden, suche gerade nach einem verfügbaren
(fertigen) Codestück, bei dem ich nur noch ein Array füllen muss, das
dann die Umsetzug in Defines bereits kann, also zB

Sensor            Aktor
wzTaster1       wzLicht3
ezTaster1       ezLicht2
gzTaster1       gzLicht1
coTaster1       structureHome

Habe wirklich reichlich gegoogelt, aber bisher nix gefunden.  Kann mir
bitte jemand nen Tipp (oder Code ;-) geben?

Gruß, Uli

PS: Habe mal meine ganzen Stolpersteine mit Lösungen aufgeschrieben,
vll wird ein 'FHEM FB7390 for dummies' draus)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> Howtos hab ich gefunden, suche gerade nach einem verfügbaren
> (fertigen) Codestück, bei dem ich nur noch ein Array füllen muss, das
> dann die Umsetzug in Defines bereits kann, also zB

Ich wuerde es mit gut gewaehlten Namen loesen: wenn gilt dass xxxTaster immer
xxxLicht schaltet, dann wuerde folgendes notify funktionieren:

define Taster2Licht notify .*Taster {\
  my $aktor = "@";;\
  $aktor =~ s/Taster/Licht/;;\
  fhem("set $aktor %");;\
}

Eine Alternative ist die Taster direkt an den Aktoren anzulernen, fhem kann
diese auch schalten und kriegt auch den Status mit.

Wenn es unbedingt ein Array sein soll, dann kann man das in 99_MyUtils.pm
einbauen (fuer Fortgeschrittene :)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

On 3 Jun., 09:40, Rudolf Koenig wrote:
> Eine Alternative ist die Taster direkt an den Aktoren anzulernen, fhem kann
> diese auch schalten und kriegt auch den Status mit.

Diese Idee hab ich doch glatt aufgegriffen :-)

S4A als Taster konfiguriert
Direkt mit ST-2 gepairt
Taster in FHEM definiert  (heisst wie die zu steuernde Lampe am Regal
im Esszimmer: ezLichtRegal)
Funktioniert prima - bis auf zwei kleine Haesslichkeiten....

Meine cfg:
define ezLichtRegal FS20 6969 00
attr ezLichtRegal model FS20S4A

define ezLichtRegalSwitch NOTIFY ezLichtRegal { \
if ("%" eq "toggle"){ \
   if ($oldvalue{"ezLichtRegal"}{VAL} eq "off") { \
     {fhem "setstate ezLichtRegal on"}\
   }\
   else { \
     {fhem "setstate ezLichtRegal off"} \
   } \
 } \
 else { \
   {fhem "setstate ezLichtRegal %"} \
 } \
}

Also quasi die Umsetzung von
http://groups.google.com/group/fhem-users/browse_thread/thread/655f79d68d34933/5af843d4a2586d81?lnk=gst&q=setstate+geht+nicht#5af843d4a2586d81

Kleines Problem:
Toggeln ändert durch setstate den STATE von ezLichtRegal ganz prima -
nur wird das webfrontend nicht refreshed. Das Gluehbirnen-Icon bleibt
'aus' auch wenn STATE ON ist.  ZB nach klicken auf 'All together' wird
das icon korrekt angezeigt.
Wie kann ich aus dem code heraus ein refresh des webfrontend triggern?

Grosses Problem:
Das Mitschalten von STATE beim toggeln funktioniert nur genau einmal,
da über setstate zwar $value, aber nicht $oldvalue angepasst wird.
Ich versuch's mal als Tabelle darzustellen:

---Betaetigt---------------  --STATE--  --OLDSTATE--
Webfrontend-Klick-On       on                  egal
Webfrontend-Klick-Off       off                   on
Taster-Toggle                     on                   off
Taster-Toggle                     off                toggle  (und eben
NICHT off - das ist das Problem)

Kann man im code oben zusätzlich zu (setstate ezLichtRegal) auch den
Inhalt von ($oldvalue{"ezLichtRegal"}{VAL})  überschreiben?
Oder statt $oldvalue eine Dummy-Variable verwenden? Wie definieren und
einbinden?

Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> Wie kann ich aus dem code heraus ein refresh des webfrontend triggern?

Gar nicht. Das Web-Frontend muesste die Daten selber abholen, z.Bsp mit einem
JavaScript Prograemmchen. Ich selber will aber kein regelmaessiges Refresh,
fuer eine am Wand haengende Anzeige waere das aber wichtig.


> Grosses Problem:
> Das Mitschalten von STATE beim toggeln funktioniert nur genau einmal,
> da über setstate zwar $value, aber nicht $oldvalue angepasst wird.

Ist wohl ein Bug, habs (hoffentlich) gefixed und ins CVS eingecheckt.
Kannst Du es bitte testen?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

On 4 Jun., 10:42, Rudolf Koenig wrote:
> Kannst Du es bitte testen?

Erledigt :-) Ein wenig Nacharbeit wird's noch erfordern :-(

Habe mal ein paar Zusatzeinträge ins Log genommen, damit man sieht,
was passiert.

define ezLichtRegalSwitch notify ezLichtRegal { \
if ("%" eq "toggle"){ \
   {Log 1, "Vorher : Value ist    ".$value{"ezLichtRegal"}} \
   {Log 1, "Vorher : Oldvalue ist ".($oldvalue{"ezLichtRegal"}{VAL})}\
   if ($oldvalue{"ezLichtRegal"}{VAL} eq "off") { \
     {fhem "setstate ezLichtRegal on"}\
     {Log 1, "Change : setstate ezLichtRegal on"}\
   }\
   else { \
     {fhem "setstate ezLichtRegal off"} \
     {Log 1, "Change : setstate ezLichtRegal off"}\
   } \
 } \
 else { \
   {fhem "setstate ezLichtRegal %"} \
 } \
{Log 1, "Nachher: Value ist    ".$value{"ezLichtRegal"}} \
{Log 1, "Nachher: Oldvalue ist ".($oldvalue{"ezLichtRegal"}{VAL})}\
}

Ergebnis:
2011.06.04 13:03:58 2: FS20 set ezLichtRegal on
2011.06.04 13:03:59 1: Nachher: Value ist    on
2011.06.04 13:03:59 1: Nachher: Oldvalue ist on
2011.06.04 13:04:02 2: FS20 set ezLichtRegal off
2011.06.04 13:04:02 1: Nachher: Value ist    off
2011.06.04 13:04:02 1: Nachher: Oldvalue ist off  <2011.06.04 13:04:06 2: FS20 set ezLichtRegal on
2011.06.04 13:04:06 1: Nachher: Value ist    on
2011.06.04 13:04:06 1: Nachher: Oldvalue ist on <2011.06.04 13:04:10 2: FS20 set ezLichtRegal off
2011.06.04 13:04:10 1: Nachher: Value ist    off
2011.06.04 13:04:10 1: Nachher: Oldvalue ist off <2011.06.04 13:04:16 2: FS20 ezLichtRegal toggle
2011.06.04 13:04:16 1: Vorher : Value ist    toggle
2011.06.04 13:04:16 1: Vorher : Oldvalue ist off  <2011.06.04 13:04:16 1: Change : setstate ezLichtRegal on
2011.06.04 13:04:16 1: Nachher: Value ist    toggle <setstate geaendert werden muessen
2011.06.04 13:04:16 1: Nachher: Oldvalue ist toggle
2011.06.04 13:04:30 2: FS20 ezLichtRegal toggle
2011.06.04 13:04:30 1: Vorher : Value ist    toggle
2011.06.04 13:04:30 1: Vorher : Oldvalue ist toggle
2011.06.04 13:04:30 1: Change : setstate ezLichtRegal off
2011.06.04 13:04:30 1: Nachher: Value ist    toggle <setstate geaendert werden muessen
2011.06.04 13:04:30 1: Nachher: Oldvalue ist toggle

Was mir auffällt:  Wenn ich im Frontend auf die Eigenschaften von
ezLichteRegal klicke, wird die Variable state 2x angezeigt:
Einmal im 'regulaeren' Block in Grossbuchstaben. Ausserdem einmal ganz
oben in Kleinbuchstaben (mit Zeitstempel bei 'Measured'). Schicke Dir
gerne einen sccreenshot.
Die Variablen werden auch unterschiedlich belegt: Waehrend nach dem
letzten Schritt state=toggle, ist STATE=off.
Offenbar liest $value{} das (kleingeschriebene) state aus, setstate
setzt aber das (grossgeschriebene) STATE.

Im Moment scheinen weder $value{} noch $oldvalue{} die richtigen Werte
zu liefern.  Kannst Du bitte noch mal schauen?
Oder hab ich irgendwo einen Denkfehler?

Danke + Gruss,
Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> Erledigt :-) Ein wenig Nacharbeit wird's noch erfordern :-(

Stimmt. Jetzt muesste es tun, habs mit deinem notify geprueft.

Nicht erschrecken: Nachher $value ist zwar falsch, aber das relevante
$defs{ezLichtRegal}{STATE} ist korrekt. Ursache: $value wird nur einmal vor
einem Perl-Notify Aufruf mit den Werten aller $defs{NAME}{STATE} gefuelt.

Da mich das fuellen aller Gerete ins $value vor jedem Perl-Notify bzw. Perl-At
stoert, moechte ich auf Funktionen als Schnittstelle umsteigen, analog zu
ReadingsVal():
  $value{NAME}          => Value("NAME")
  $oldvalue{NAME}{VAL}  => OldValue("NAME")
  $oldvalue{NAME}{TIM}  => OldTimestamp("NAME")

Diese Funktionen sind frisch im CVS, und $value wird in dem naechsten
fhem-Release verschwinden. Es sei denn ich werde ueberstimmt.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

On 5 Jun., 13:29, Rudolf Koenig wrote:

Hallo Rudi,
wow, das ging superschnell und sieht ja doch nach ner umfangreichen
Aenderung aus.

> Stimmt. Jetzt muesste es tun, habs mit deinem notify geprueft.
Kannst Du mir bitte Deine Version des ezLichtRegalSwitch schicken,
komme im Moment mit der Nutzung/Einbindung/Aufruf der neuen Routinen
nicht klar:
   {Log 1, 'Nachher: $Value{}    ist '.$value{"ezLichtRegal"}} \
   {Log 1, 'Nachher: Value()     ist '.value("ezLichtRegal")} \
<
Habe lediglich fhem.pl frisch aus dem cvs geholt - müssen noch andere
Dateien refreshed werden?
Meine Arbeitsgrundlage: fhem in der AVM-Version, fhm.pl gestern
uebergebuegelt mit der Zwischenversion zu $oldvalue{}{VAL}.

>  $value wird in dem naechsten
> fhem-Release verschwinden. Es sei denn ich werde ueberstimmt.
Bin nicht sicher, wieviele Installationen auf die bisherigen Routinen
$value und $oldvalue zugreifen - das koennte ja fuer einige Nutzer
doch umfangreichere Aenderungen mit sich bringen - auch bin ich nicht
sicher, ob jeder, der fhem nutzt, hier staendig mitliest.  Wenn diese
Umstellung in den Release-Notes hinreichend deutlich gemacht wird,
m.E. ok.
Evtl die alten Versionen noch einen Release-Zyklus co-existieren
lassen?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

{Log 1, 'Nachher: $Value{}    ist '.$value{"ezLichtRegal"}} \
   {Log 1, 'Nachher: Value()     ist '.fhem "value('ezLichtRegal')"} \
liefert Fehlermeldung:
2011.06.05 15:42:15 2: FS20 set ezLichtRegal off
2011.06.05 15:42:15 1: Nachher: $Value{}    ist off
2011.06.05 15:42:15 3: value('ezLichtRegal') : Unknown command
value('ezLichtRegal'), try help

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Dr. Boris Neubert

                                             

Am 05.06.2011 15:44, schrieb UliM:
>     {Log 1, 'Nachher: $Value{}    ist '.$value{"ezLichtRegal"}} \
>     {Log 1, 'Nachher: Value()     ist '.fhem "value('ezLichtRegal')"} \
> liefert Fehlermeldung:
> 2011.06.05 15:42:15 2: FS20 set ezLichtRegal off
> 2011.06.05 15:42:15 1: Nachher: $Value{}    ist off
> 2011.06.05 15:42:15 3: value('ezLichtRegal') : Unknown command
> value('ezLichtRegal'), try help

Du hast ein $ vergessen.

Grüße
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Guest

Originally posted by: <email address deleted>

On 5 Jun., 18:02, "Dr. Boris Neubert" wrote:
> Am 05.06.2011 15:44, schrieb UliM:

> Du hast ein $ vergessen.

Fast :-)
Siehe post von Rudi oben - es gibt neue Routinen:
  $value{NAME}                => Value("NAME")
  $oldvalue{NAME}{VAL}  => OldValue("NAME")
  $oldvalue{NAME}{TIM}  => OldTimestamp("NAME")

Ich habe Gross/Kleinschreibung uebersehen.

Funktioniert nicht:
   {Log 1, 'Vorher : Value()     ist '.value("ezLichtRegal")} \
   {Log 1, 'Nachher: Oldvalue()  ist '.oldvalue("ezLichtRegal")}\

Funktioniert:
   {Log 1, 'Vorher : Value()     ist '.Value("ezLichtRegal")} \
   {Log 1, 'Nachher: Oldvalue()  ist '.OldValue("ezLichtRegal")}\



Hier also das Ergebnis - die umgestellte Routine:

define ezLichtRegalSwitch notify ezLichtRegal { \
if ("%" eq "toggle"){ \
   {Log 1, 'Vorher : Value()     ist '.Value("ezLichtRegal")} \
   {Log 1, 'Vorher : OldValue()  ist '.OldValue("ezLichtRegal")}\
   if (OldValue("ezLichtRegal") eq "off") { \
     {fhem "setstate ezLichtRegal on"}\
     {Log 1, "Change : setstate ezLichtRegal on"}\
   }\
   else { \
     {fhem "setstate ezLichtRegal off"} \
     {Log 1, "Change : setstate ezLichtRegal off"}\
   } \
 } \
 else { \
   {fhem "setstate ezLichtRegal %"} \
 } \
   {Log 1, 'Nachher: Value()     ist '.Value("ezLichtRegal")} \
   {Log 1, 'Nachher: OldValue()  ist '.OldValue("ezLichtRegal")}\
}

Das Log:
2011.06.05 19:01:49 2: FS20 set ezLichtRegal on
2011.06.05 19:01:49 1: Nachher: Value()     ist on
2011.06.05 19:01:49 1: Nachher: OldValue()  ist on
2011.06.05 19:01:58 2: FS20 set ezLichtRegal off
2011.06.05 19:01:58 1: Nachher: Value()     ist off
2011.06.05 19:01:58 1: Nachher: OldValue()  ist off  <OldValue noch off sein?
2011.06.05 19:02:07 2: FS20 ezLichtRegal toggle
2011.06.05 19:02:07 1: Vorher : Value()     ist toggle
2011.06.05 19:02:07 1: Vorher : OldValue()  ist off  << zu diesem
Zeitpunkt ist OldValue off korrekt
2011.06.05 19:02:07 1: Change : setstate ezLichtRegal on
2011.06.05 19:02:07 1: Nachher: Value()     ist on
2011.06.05 19:02:07 1: Nachher: OldValue()  ist on  <OldValue noch off sein?
2011.06.05 19:02:17 2: FS20 ezLichtRegal toggle
2011.06.05 19:02:17 1: Vorher : Value()     ist toggle
2011.06.05 19:02:17 1: Vorher : OldValue()  ist on << zu diesem
Zeitpunkt ist OldValue on korrekt
2011.06.05 19:02:17 1: Change : setstate ezLichtRegal off
2011.06.05 19:02:17 1: Nachher: Value()     ist off
2011.06.05 19:02:17 1: Nachher: OldValue()  ist off  <OldValue noch on sein?
2011.06.05 19:02:24 2: FS20 ezLichtRegal toggle
2011.06.05 19:02:24 1: Vorher : Value()     ist toggle
2011.06.05 19:02:24 1: Vorher : OldValue()  ist off << zu diesem
Zeitpunkt ist OldValue off korrekt
2011.06.05 19:02:24 1: Change : setstate ezLichtRegal on
2011.06.05 19:02:24 1: Nachher: Value()     ist on
2011.06.05 19:02:24 1: Nachher: OldValue()  ist on <OldValue noch off sein?

Fazit: Fuer die oben gezeigte Routine ist das Ergebnis das gewuenschte
- nach Toggle wird durch die Routine in das jeweils richtige STATE
umgesetzt.
Der Zeitpunkt des Setzens von OldState() koennte aber in anderen
Umgebungen/Routinen zu Problemen fuehren.
M.E. duerfte OldValue() von 'setstate' nicht beeinflusst werden; es
darf nur bei der Verarbeitung von 'set' umgesetzt werden - dann durch
Uebernahme aus STATE.

@Rudi: Feilst Du da noch mal nach?
Wie waere es, diese Routine in den 'define'-Befehl einzubauen, zB
aktiviert durch ein Attribut (attr toggleconversion 1) , dann
koennte man jeglichen Taster so auffangen.

Gruss, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com