Fritz Dect200

Begonnen von hetterich, 20 Oktober 2018, 20:05:55

Vorheriges Thema - Nächstes Thema

hetterich

Hallo,

ich habe heute ein FHEM-Update gemacht.
Danach hat sich keiner meiner Dect200 noch schalten lassen.
FBAHAHTTP ist "connected" und zeigt keinen Fehler.
Wenn ich über die Fritzbox schalte, erkennt das jeweilige Device das aber schon. Nur schalten geht nicht.
FBDECT Devices und  FBAHAHTTP entfernen und neu eingeben hat auch nichts gebracht.

BackUp eingespielt, dann funktioniert es wieder.
Nach erneutem Update wieder das gleiche Problem.

Hat einer eine Idee oder die gleichen Probleme?

rudolfkoenig

Das gleiche Problem wurde kuerzlich im Zusammenhang eines Fritz!OS Updates erwaehnt.
Ich konnte es mit Fritz!OS 7.01 und aktuelles FHEM nicht nachvollziehen.
Falls das Problem besteht, dann bin ich an einem "attr global verbose 5" Log des fehlgeschlagenen Schaltvorgangs interessiert.

hetterich

Mache ich heute Abend.

Es ist übrigens nicht FritzOs abhängig, weil die Versuche mit der letzten 6er Version und der 7.01 keinen Unterschied machten.
Altes Fhem Backup funktioniert, nach Update egal mit welcher FritzOs klappt es nicht mehr.

Danke,
heute Abend mache ich das log fertig. Winterreifen für 3 Autos gehen laut meiner Regierung vor :(

hetterich

Hallo,

habe also nochmal ein Update gemacht.
Verbose 5 auf 1 Device LaserDrucker und auf FBDECT.
Hinweis: Ich habe einen Gruppenschalter in der SmartHome-Gruppe für die Weihnachtsbeleuchtung in der Fritzbox definiert.
Die Devices sind aber momentan offline weil nicht benötigt.
Dem alten Backup stört das aber nicht. Eventuell gibt es da ein Problem.
Ebenso habe ich das Modul 37_echodevice eingebunden.
Sonst wüsste ich nicht was bei mir anders sein sollte.
Danke für deine Mühe.

Peter



2018.10.21 19:08:05 2: HMCCU: [HomeMatic] Updated devices. Success=67 Failed=0
2018.10.21 19:10:51 3: FBDECT set LaserDrucker on
2018.10.21 19:12:46 5: LaserDrucker
2018.10.21 19:12:46 5:    power = 0
2018.10.21 19:12:46 5:    name = LaserDrucker
2018.10.21 19:12:46 5:    mode = manuell
2018.10.21 19:12:46 5:    celsius = 260
2018.10.21 19:12:46 5:    offset = 0
2018.10.21 19:12:46 5:    id = 18
2018.10.21 19:12:46 5:    functionbitmask = 2944
2018.10.21 19:12:46 5:    voltage = 229607
2018.10.21 19:12:46 5:    identifier = 08761 0187740
2018.10.21 19:12:46 5:    state = 0
2018.10.21 19:12:46 5:    fwversion = 04.09
2018.10.21 19:12:46 5:    devicelock = 0
2018.10.21 19:12:46 5:    lock = 0
2018.10.21 19:12:46 5:    energy = 31933
2018.10.21 19:12:46 5:    manufacturer = AVM
2018.10.21 19:12:46 5:    present = 1
2018.10.21 19:12:46 5:    productname = FRITZ!DECT 200
2018.10.21 19:14:54 3: FBDECT set LaserDrucker off
2018.10.21 19:17:46 5: LaserDrucker
2018.10.21 19:17:46 5:    power = 0
2018.10.21 19:17:46 5:    name = LaserDrucker
2018.10.21 19:17:46 5:    mode = manuell
2018.10.21 19:17:46 5:    celsius = 260
2018.10.21 19:17:46 5:    id = 18
2018.10.21 19:17:46 5:    offset = 0
2018.10.21 19:17:46 5:    functionbitmask = 2944
2018.10.21 19:17:46 5:    voltage = 229883
2018.10.21 19:17:46 5:    identifier = 08761 0187740
2018.10.21 19:17:46 5:    state = 0
2018.10.21 19:17:46 5:    devicelock = 0
2018.10.21 19:17:46 5:    fwversion = 04.09
2018.10.21 19:17:46 5:    lock = 0
2018.10.21 19:17:46 5:    energy = 31933
2018.10.21 19:17:46 5:    manufacturer = AVM
2018.10.21 19:17:46 5:    present = 1
2018.10.21 19:17:46 5:    productname = FRITZ!DECT 200
2018.10.21 19:22:27 3: FBDECT set LaserDrucker on
2018.10.21 19:22:46 5: FritzDect: dispatch <device identifier="08761 0187740" id="18" functionbitmask="2944" fwversion="04.09" manufacturer="AVM" productname="FRITZ!DECT 200"><present>1</present><name>LaserDrucker</name><switch><state>0</state><mode>manuell</mode><lock>0</lock><devicelock>0</devicelock></switch><powermeter><voltage>230142</voltage><power>0</power><energy>31933</energy></powermeter><temperature><celsius>260</celsius><offset>0</offset></temperature></device>
2018.10.21 19:22:46 5: LaserDrucker
2018.10.21 19:22:46 5:    celsius = 260
2018.10.21 19:22:46 5:    mode = manuell
2018.10.21 19:22:46 5:    name = LaserDrucker
2018.10.21 19:22:46 5:    power = 0
2018.10.21 19:22:46 5:    productname = FRITZ!DECT 200
2018.10.21 19:22:46 5:    manufacturer = AVM
2018.10.21 19:22:46 5:    present = 1
2018.10.21 19:22:46 5:    energy = 31933
2018.10.21 19:22:46 5:    devicelock = 0
2018.10.21 19:22:46 5:    fwversion = 04.09
2018.10.21 19:22:46 5:    lock = 0
2018.10.21 19:22:46 5:    identifier = 08761 0187740
2018.10.21 19:22:46 5:    state = 0
2018.10.21 19:22:46 5:    voltage = 230142
2018.10.21 19:22:46 5:    functionbitmask = 2944
2018.10.21 19:22:46 5:    id = 18
2018.10.21 19:22:46 5:    offset = 0
2018.10.21 19:22:46 5: FritzDect: dispatch <device identifier="08761 0199749" id="19" functionbitmask="2944" fwversion="04.09" manufacturer="AVM" productname="FRITZ!DECT 200"><present>1</present><name>GartenQualler</name><switch><state>0</state><mode>manuell</mode><lock>0</lock><devicelock>0</devicelock></switch><powermeter><voltage>228650</voltage><power>0</power><energy>192509</energy></powermeter><temperature><celsius>335</celsius><offset>0</offset></temperature></device>
2018.10.21 19:22:46 5: FritzDect: dispatch <group identifier="FF:2A:3C-900" id="900" functionbitmask="6784" fwversion="1.0" manufacturer="AVM" productname=""><present>1</present><name>Weinachten</name><switch><state>0</state><mode>manuell</mode><lock>0</lock><devicelock>0</devicelock></switch><powermeter><voltage>228650</voltage><power>0</power><energy>192509</energy></powermeter><groupinfo><masterdeviceid>0</masterdeviceid><members>19,22,23,24,25</members></groupinfo></group>
2018.10.21 19:22:46 5: FritzDect: dispatch <device identifier="08761 0198489" id="20" functionbitmask="2944" fwversion="04.09" manufacturer="AVM" productname="FRITZ!DECT 200"><present>1</present><name>GarageHeizung</name><switch><state>0</state><mode>manuell</mode><lock>0</lock><devicelock>0</devicelock></switch><powermeter><voltage>230185</voltage><power>0</power><energy>788828</energy></powermeter><temperature><celsius>150</celsius><offset>0</offset></temperature></device>
2018.10.21 19:22:46 5: FritzDect: dispatch <device identifier="08761 0206275" id="21" functionbitmask="2944" fwversion="04.09" manufacturer="AVM" productname="FRITZ!DECT 200"><present>1</present><name>AutoHeizung</name><switch><state>0</state><mode>manuell</mode><lock>0</lock><devicelock>0</devicelock></switch><powermeter><voltage>230183</voltage><power>0</power><energy>416865</energy></powermeter><temperature><celsius>150</celsius><offset>0</offset></temperature></device>
2018.10.21 19:22:47 5: FritzDect: dispatch <device identifier="08761 0199762" id="22" functionbitmask="2688" fwversion="03.87" manufacturer="AVM" productname="FRITZ!DECT 200"><present>0</present><name>WeihnachtKueche</name><switch><state></state><mode></mode><lock></lock><devicelock></devicelock></switch><powermeter><voltage></voltage><power></power><energy></energy></powermeter></device>
2018.10.21 19:22:47 5: FritzDect: dispatch <device identifier="08761 0187745" id="23" functionbitmask="2688" fwversion="03.87" manufacturer="AVM" productname="FRITZ!DECT 200"><present>0</present><name>WeihnachtWohnzimmer</name><switch><state></state><mode></mode><lock></lock><devicelock></devicelock></switch><powermeter><voltage></voltage><power></power><energy></energy></powermeter></device>
2018.10.21 19:22:47 5: FritzDect: dispatch <device identifier="08761 0206141" id="24" functionbitmask="2688" fwversion="03.87" manufacturer="AVM" productname="FRITZ!DECT 200"><present>0</present><name>WeihnachtBesenkammer</name><switch><state></state><mode></mode><lock></lock><devicelock></devicelock></switch><powermeter><voltage></voltage><power></power><energy></energy></powermeter></device>
2018.10.21 19:22:47 5: FritzDect: dispatch <device identifier="08761 0301737" id="25" functionbitmask="2688" fwversion="03.87" manufacturer="AVM" productname="FRITZ!DECT 200"><present>0</present><name>WeihnachtenGartenLinks</name><switch><state></state><mode></mode><lock></lock><devicelock></devicelock></switch><powermeter><voltage></voltage><power></power><energy></energy></powermeter></device>
2018.10.21 19:22:47 5: FritzDect: dispatch <device identifier="08761 0305298" id="26" functionbitmask="2944" fwversion="03.87" manufacturer="AVM" productname="FRITZ!DECT 200"><present>1</present><name>3DDrucker</name><switch><state>0</state><mode>manuell</mode><lock>0</lock><devicelock>0</devicelock></switch><powermeter><voltage>229539</voltage><power>0</power><energy>232827</energy></powermeter><temperature><celsius>230</celsius><offset>0</offset></temperature></device>

jump to the top

rudolfkoenig

ZitatVerbose 5 auf 1 Device LaserDrucker und auf FBDECT.
Ist jetzt nicht exakt das, was ich gefragt habe.
Aus den vorliegenden Daten sehe ich nur, dass es keine "offensichtlichen" Fehler gibt.
Wenigstens fuer die FBAHAHTTP Instanz muesste verbose auf 5 gesetzt werden, damit ich mehr sehe.
Kann man aus der Fritz!Box Oberflaeche schalten?

hetterich

Hallo,

ja, von der Fritzbox aus lässt es sich schalten.
Ebenso wenn ich mein altes Fhem-BackUp wieder einspiele.
FritzDect ist doch meine  FBAHAHTTP Instanz oder?

Verbose ist hier auf 5 (siehe Bild)

Aber!

Schau mal bitte in

Sub FBAHAHTTP_Define($$) in 00_FBAHAHTTP

Alt und funktioniert:



sub
FBAHAHTTP_Define($$)
{
  my ($hash, $def) = @_;
  my @a = split("[ \t][ \t]*", $def);

  return "wrong syntax: define <name> FBAHAHTTP hostname"
    if(@a != 3);

  $hash->{Clients} = ":FBDECT:";
  my %matchList = ( "1:FBDECT" => ".*" );
  $hash->{MatchList} = \%matchList;

  for my $d (devspec2array("TYPE=FBDECT")) {
    if($defs{$d}{IODev} && $defs{$d}{IODev}{TYPE} eq "FBAHA") {
      my $n = $defs{$d}{IODev}{NAME};
      CommandAttr(undef, "$d IODev $hash->{NAME}");
      CommandDelete(undef, $n) if($defs{$n});
    }
    $defs{$d}{IODev} = $hash
  }
  $hash->{CmdStack} = ();

  return undef if($hash->{DEF} eq "none"); # DEBUGGING
  InternalTimer(1, "FBAHAHTTP_Poll", $hash);
  $hash->{STATE} = "defined";
  return undef;
}

Neu und funktioniert nicht!



sub
FBAHAHTTP_Define($$)
{
  my ($hash, $def) = @_;
  my @a = split("[ \t][ \t]*", $def);

  return "wrong syntax: define <name> FBAHAHTTP hostname"
    if(@a != 3);

  $hash->{Clients} = ":FBDECT:";
  my %matchList = ( "1:FBDECT" => ".*" );
  $hash->{MatchList} = \%matchList;

  # Moving definition from FBAHA to FBAHAHTTP
  for my $d (devspec2array("TYPE=FBDECT")) {
    if($defs{$d}{IODev} && $defs{$d}{IODev}{TYPE} eq "FBAHA") {
      my $n = $defs{$d}{IODev}{NAME};
      CommandAttr(undef, "$d IODev $hash->{NAME}");
      CommandDelete(undef, $n) if($defs{$n});
      $defs{$d}{IODev} = $hash;
    }
  }
  $hash->{CmdStack} = ();

  return undef if($hash->{DEF} eq "none"); # DEBUGGING
  InternalTimer(1, "FBAHAHTTP_Poll", $hash);
  $hash->{STATE} = "defined";
  return undef;
}


Ändere ich das auf alt und starte mein FHEM neu gehen alle Devices wieder zu schalten!

Peter


rudolfkoenig

ZitatSchau mal bitte in Sub FBAHAHTTP_Define($$) in 00_FBAHAHTTP
Die Aenderung kenne ich. Dieser Code ermoeglicht die automatische Umstellung von FBAHA auf FBAHAHTTP.  Gibt es bei dir noch eine FBAHA Definition? Wenn ja, es gehoert entfernt. Wie ist IODev der FBDECT Module gesetzt mit dem neuen FBAHAHTTP Modul?

hetterich

Nein kein FBAHA Definition mehr vorhanden.
Ich habe damals die automatische Umstellung wegen des damaligen Updates der Fritzbox mitgemacht.
FBAHA ging ja nicht mehr.
Die Devices wurden automatisch umgestellt nachdem ich das IO auf FBAHAHTTP umgestellt hatte. Siehe Bild
Momentan läuft auch alles nach dem Update, nachdem ich die obige markierte Zeile wieder unter die Klammer geschoben habe ohne Fehler.
Ich kann dir aber auch gerne meine ganzen FritzDect200 gerne mal von der fhem.cfg posten.
Wäre ja echt schlecht, wenn ich nach jedem FBAHAHTTP Update die Zeile wieder verschieben muss damit es funkioniert.

hetterich

Ich komme zwar aus der .net Ecke aber ein bisschen lesen kann ich den Code schon.
In der Schleife gehst du alle FBDECT Devices durch.
Wenn deren IO Device noch auf FBAHA ist schreibst du es auf FBAHAHTTP um.
Da du die Zeile ($defs{$d}{IODev} = $hash) bei der neueren Version in den If-Block verschoben hast,
wird er sie auch nur finden, wenn es noch ein FBAHA Device ist. Oder verstehe ich das falsch.
Da ich aber keine FBAHA mehr habe wird er sie auch nicht finden.
Warum er allerdings jedes Mal in diesen define sub läuft ist mir nicht klar. (inizialize?)

Wenn ich die Zeile ($defs{$d}{IODev} = $hash) wieder aus dem If-Block rausnehme(so wie in der Vorgängerversion)
findet er die Dinger wieder und alles ist gut.

Peter

rudolfkoenig

ZitatIch komme zwar aus der .net Ecke aber ein bisschen lesen kann ich den Code schon.
Danke fuer die Erklaerung, ich versuche meine Variante darzulegen :)
- der Block soll nur bei der Umstellung (d.h. beim ersten Definieren der FBAHAHTTP Instanz die IODevs setzen.
- in der "normalen" Variante setzen die FBDECTs selbst IODev im DefineFn durch AssignIODev()
- falls beim Definieren der FBDECTs FBAHAHTTP noch nicht definiert wurde, dann sollte im Logfile fuer jedes FBDECT eine Meldung erzeugt werden "No I/O device found for <FBDECTNAME>".

Das Problem (was ich bei dieser Routine nicht betrachtet habe) ist, dass bei dieser automatischen Umstellung FBAHAHTTP _nach_ den FBDECTs definiert ist (und damit DefineFn in den FBDECts unwirksam ist), eigentlich muesste die FBAHAHTTP Instanz die ReihenfolgeNr von FBAHA uebernehmen. Das habe ich jetzt implementiert und eingecheckt, funktioniert leider nur bei der Umstellung, nicht nachtraeglich.

Fuer das aktuelle Problem gibt es drei Workarounds:
#1: FBAHAHTTP vor die FBDECTS zu schieben in fhem.cfg
#2: Folgende Anweisung in der Kommandozeile ausfuehren (stellt auch die Reihenfolge um):{ $defs{<FBAHAHTTPNAME>}{NR} = 2 }
#3: attr TYPE=FBDECT IODev <FBAHAHTTPNAME>

Nach #2 und #3 ein save, und bei allen drei shutdown restart durchfuehren.

Die alte Version hat fuer jeden der FBDECTs die letzte FBAHAHTTP Instanz als IODev definiert, und damit unmoeglich gemacht, dass zwei FBAHAHTTP Instanzen aktiv verwendet werden. Deswegen will ich es nicht einfach zurueckstellen.



hetterich

Klingt logisch.
Mache ich heute Abend sofort nach der Arbeit.

Was ich aber immer noch nicht verstehe:
Ich habe ja zum Test alle Fritz-Geräte incl. FBAHAHTTP gelöscht
und neu eingegeben. (Allerdings ließ sich FBAHAHTTP nur manuell
aus der Config löschen. Über das Webinterface hat es sich hartnäckig
geweigert)
Hätte es dann nicht funktionieren müssen?
Aber egal, ich mach das mal so wie beschrieben und ändere den
Code wieder zurück.
Gebe dir dann heute Abend sofort Rückmeldung.

Danke,
Peter

hetterich

Funktioniert ;)

Habe das Ding in der Config nach oben geschoben.
Jetzt geht's auch wieder mit dem original Code.

Müssten eigentlich nicht mehr Leute das Problem gehabt oder haben.
Kann mir nicht vorstellen, dass ich der einzige war, der die Umstellung mitgemacht hat.

Vielen Dank für deine Mühe, jetzt kann ich wieder bedenkenlos Updaten.

Mein nächstes Projekt wird sicherlich auch spannend.
(Gesichtserkennung mit Sprachausgabe auf meinen Echos mit 37_echodevice.pm)

Peter



rudolfkoenig

Zitat(Gesichtserkennung mit Sprachausgabe auf meinen Echos mit 37_echodevice.pm)
Und ich dachte ein Echo hat kein Kamera.

hetterich

Echo Spot und Echo Show schon.
Habe aber meine eigenen separaten IP-Cams.
Die werden über einen eigenen Raspi gesteuert und verwaltet.
Diese(n) steuert wiederum der FHEM-Raspi :)