Hallo,
Mir ist schon die letzten Tage aufgefallen das ein
attr DEVICE event-on-change-reading .*
nach einem neustart von FHEM zu
attr DEVICE event-on-change-reading state
wird.
Dies geschieht interessanter Weise nur bei Geräten vom AMAD Modul. Was habe ich bei meinem Modul anders oder falsch gemacht? Es hat bis vor kurzem noch gut funktioniert. Ich denke dies kam wohl mit einem Update rein.
Muss ich in meinem Modul irgendwas ändern??
Grüße
Es hat sich diesbezueglich nichts geaendert, und ich kann dein Problem auch nicht nachstellen mit:
Zitatfhem> define a AMAD localhost
fhem> attr a event-on-change-reading .*
fhem> save
Wrote configuration to cfg/fhem.cfg.test
fhem> shutdown restart
...
fhem> list a
...
Attributes:
event-on-change-reading .*
room AMAD
Hallo Rudi
Vielen Dank fürs Testen. Wäre es möglich das Du es mit einem /etc/init.d/fhem stop und dann start probierst? Sollte kein Unterschied sein, aber ich will nur sicher gehen. Ist komischer Weiße auch erst seit kurzem. So 2 Wochen vielleicht.
Danke noch mal
Grüße
Nein: die Entwicklung laeuft bei mir nicht ueber /etc/init.d/fhem... und die Produktion auch nicht :)
Und ich glaube nicht daran, dass /etc/init.d/fhem sowas bewirken koennte.
Kopier mal fhem.cfg zur Seite vor dem save/nach dem save/vor dem start/nach dem start, und vergleiche die Dateien.
Das ist eine gute Idee. Werde ich machen und dann morgen berichten. Danke für den Tip.
Grüße und nen ruhigen Abend gewünscht
Bin nun mal dazu gekommen da was zu machen.
Ich habe alles korrekt eingestellt und dann die cfg gesichert. Danach ein shutdown restart
in der cfg stand und steht immer noch
define Nexus10Wohnzimmer AMAD 10.6.9.18
attr Nexus10Wohnzimmer userattr alleAndroidGeraete alleAndroidGeraete_map lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 structexclude
attr Nexus10Wohnzimmer alias Tablet Wohnzimmer
attr Nexus10Wohnzimmer alleAndroidGeraete structureAndroidDevices
attr Nexus10Wohnzimmer event-on-change-reading .*
attr Nexus10Wohnzimmer group Multimedia Wohnzimmer
attr Nexus10Wohnzimmer icon it_smartphone
attr Nexus10Wohnzimmer lightSceneRestoreOnlyIfChanged 1
attr Nexus10Wohnzimmer room Wohnzimmer
attr Nexus10Wohnzimmer setBluetoothDevice Logitech_Bt_Adapter|FC:58:FA:23:0A:02,Anker_A7908|FC:58:FA:84:6A:2A
attr Nexus10Wohnzimmer setOpenApp gplay,tuneinradio
attr Nexus10Wohnzimmer setScreenBrightness 1
attr Nexus10Wohnzimmer stateFormat Batterie powerLevel%, Bildschirm screenBrightness, Status state
Ein list auf das Device ergibt aber
Internals:
DEF 10.6.9.18
HOST 10.6.9.18
INTERVAL 180
NAME Nexus10Wohnzimmer
NR 348
PORT 8090
STATE Batterie 24.0%, Bildschirm 60, Status active
TYPE AMAD
VERSION 0.9.4
Readings:
2015-11-24 09:21:12 androidVersion 5.1 Lollipop
2015-11-24 09:21:12 automagicState Automagic Premium
Automagic Service läuft
2015-11-24 09:21:12 bluetooth off
2015-11-24 09:21:12 checkActiveTask
2015-11-24 09:21:12 connectedBTdevices
2015-11-24 09:21:12 connectedBTdevicesMAC
2015-11-24 09:21:12 currentMusicAlbum no soundplayer activ
2015-11-24 09:21:12 currentMusicArtist no soundplayer activ
2015-11-24 09:21:12 currentMusicTrack no soundplayer activ
2015-11-24 09:18:07 deviceState online
2015-11-24 09:21:12 flow_SetCommands aktiv
2015-11-24 09:21:12 flow_informations aktiv
2015-11-23 21:00:09 lastSetCommandError no route to target. bad network configuration or network is down
2015-11-24 08:06:05 lastSetCommandState cmd_done
2015-11-23 21:05:30 lastStatusRequestError no route to target. bad network configuration or network is down
2015-11-24 09:21:12 lastStatusRequestState statusRequest_done
2015-11-24 09:21:12 nextAlarmDay
2015-11-24 09:21:12 nextAlarmTime
2015-11-24 09:21:12 powerLevel 24.0
2015-11-24 09:21:12 powerPlugged 0
2015-11-24 09:21:12 screen off
2015-11-24 09:21:12 screenBrightness 60
2015-11-24 09:21:12 screenOrientation auto
2015-11-24 09:21:12 state active
2015-11-24 07:12:21 volume 0
2015-11-24 09:21:12 volumeMusikBluetooth 0
2015-11-24 09:21:12 volumeMusikSpeaker 7
Helper:
infoErrorCounter 0
setCmdErrorCounter 0
Attributes:
alias Tablet Wohnzimmer
alleAndroidGeraete structureAndroidDevices
event-on-change-reading state
group Multimedia Wohnzimmer
icon it_smartphone
lightSceneRestoreOnlyIfChanged 1
room Wohnzimmer
setBluetoothDevice Logitech_Bt_Adapter|FC:58:FA:23:0A:02,Anker_A7908|FC:58:FA:84:6A:2A
setOpenApp gplay,tuneinradio
setScreenBrightness 1
stateFormat Batterie powerLevel%, Bildschirm screenBrightness, Status state
userattr alleAndroidGeraete alleAndroidGeraete_map lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 structexclude
Rudi kannst Du hier was sehen was ich übersehe. Das war kurz nach einem restart.
Grüße
Ich habe dein Konfig zu eine sonst leere fhem.cfg hinzugefuegt, und fhem damit gestartet: list zeigt weiterhin "event-on-change-reading .*" an. Allerdings habe ich kein Android mit Automagic rumliegen, und die IP habe ich auch nicht geaendert.
In deinem FHEM passieren noch andere merkwuerdige Sachen.
Ich wuerde in fhem.pl/AnalyzeCommand eine Zeile einbauen, mit
Log 1, "N10W:".$attr{Nexus10Wohnzimmer}{"event-on-change-reading"};
und danach mit "attr global verbose 5" FHEM neu starten, und beobachten, wann die wunderhafte Umwandlung stattfindet.
Ich kann beim besten Willen nichts finden. Interessanter Weise sind es nur Geräte meines AMAD Modules welche umgestellt werden.
Interessanter Weise trifft es mein Bridge Device nicht. Also irgendwas ist da faul an meinem Modul. Anbei mal ein Log, erstellt mit den Umstellungen welche Du vorgeschlagen hast.
sub AMAD_Initialize($) {
my ($hash) = @_;
$hash->{SetFn} = "AMAD_Set";
$hash->{DefFn} = "AMAD_Define";
$hash->{UndefFn} = "AMAD_Undef";
$hash->{AttrFn} = "AMAD_Attr";
$hash->{ReadFn} = "AMAD_CommBridge_Read";
$hash->{AttrList} = "setOpenApp ".
"checkActiveTask ".
"setFullscreen:0,1 ".
"setScreenOrientation:0,1 ".
"setScreenBrightness:0,1 ".
"setBluetoothDevice ".
"root:0,1 ".
"interval ".
"port ".
"disable:1 ".
$readingFnAttributes;
foreach my $d(sort keys %{$modules{AMAD}{defptr}}) {
my $hash = $modules{AMAD}{defptr}{$d};
$hash->{VERSION} = $version;
}
}
sub AMAD_Define($$) {
my ( $hash, $def ) = @_;
my @a = split( "[ \t][ \t]*", $def );
return "too few parameters: define <name> AMAD <HOST>" if( @a < 2 && @a > 3 );
my $name = $a[0];
my $host = $a[2];
my $port = 8090;
my $interval = 180;
$hash->{HOST} = $host if( $host );
$hash->{PORT} = $port;
$hash->{INTERVAL} = $interval if( $hash->{HOST} );
$hash->{VERSION} = $version;
$hash->{helper}{infoErrorCounter} = 0 if( $hash->{HOST} );
$hash->{helper}{setCmdErrorCounter} = 0 if( $hash->{HOST} );
if( ! $hash->{HOST} ) {
return "there is already a AMAD Bridge, did you want to define a AMAD host use: define <name> AMAD <HOST>" if( $modules{AMAD}{defptr}{BRIDGE} );
$hash->{BRIDGE} = 1;
$modules{AMAD}{defptr}{BRIDGE} = $hash;
$attr{$name}{room} = "AMAD" if( !defined( $attr{$name}{room} ) );
Log3 $name, 3, "AMAD ($name) - defined Bridge with Socketport $hash->{PORT}";
AMAD_CommBridge_Open( $hash );
} else {
if( ! $modules{AMAD}{defptr}{BRIDGE} && $init_done ) {
CommandDefine( undef, "AMADCommBridge AMAD" );
}
Log3 $name, 3, "AMAD ($name) - defined with host $hash->{HOST} on port $hash->{PORT} and interval $hash->{INTERVAL} (sec)";
$attr{$name}{room} = "AMAD" if( !defined( $attr{$name}{room} ) );
readingsSingleUpdate ( $hash, "state", "initialized", 1 ) if( $hash->{HOST} );
readingsSingleUpdate ( $hash, "deviceState", "online", 1 ) if( $hash->{HOST} );
InternalTimer( gettimeofday()+$hash->{INTERVAL}, "AMAD_GetUpdateTimer", $hash, 0 ) if( $hash->{HOST} );
$modules{AMAD}{defptr}{$hash->{HOST}} = $hash;
return undef;
}
}
sub AMAD_Undef($$) {
my ( $hash, $arg ) = @_;
if( $hash->{BRIDGE} ) {
delete $modules{AMAD}{defptr}{BRIDGE};
my $ret = TcpServer_Close( $hash );
} else {
delete $modules{AMAD}{defptr}{$hash->{HOST}};
RemoveInternalTimer( $hash );
foreach my $d(sort keys %{$modules{AMAD}{defptr}}) {
my $hash = $modules{AMAD}{defptr}{$d};
my $host = $hash->{HOST};
if( $host ) {
my $name = $hash->{NAME};
CommandDelete( undef, $name ) if( $hash->{BRIDGE} );
}
}
}
}
Rudi könnte das Problem in einer dieser Zeilen stecken? Würdest Du bitte mal Dein professionelles Auge drauf werfen?
Danke Dir schon mal für Deine Zeit.
Grüße
Marko
ZitatWürdest Du bitte mal Dein professionelles Auge drauf werfen?
Mein "professionelles" Auge sieht nix. Heisst nicht viel.
Log: Ich finde kein N10W drin.
Heißt entweder ich habe Bockmisst gebaut, oder aber das es kein
$attr{Nexus10Wohnzimmer}{"event-on-change-reading"}
gab.
Ich schau noch mal. Danke Dir erstmal fürs durch schauen.
Grüße
So ich denke ich habe den Mistkerl gefunden. Ich war schon mal auf der richtigen Spur. Genaueres gibt es gleich.
define structureAndroidDevices structure alleAndroidGeraete Nexus10Wohnzimmer Nexus7Isabel Nexus7Schlafzimmer Nexus5Marko MotoGNadin LgG2Isabel
attr structureAndroidDevices alias alle Android Geräte
attr structureAndroidDevices event-on-change-reading state
attr structureAndroidDevices group IT
attr structureAndroidDevices icon it_smartphone
attr structureAndroidDevices room EDV
Bitte schön, das war er. Habe die structure gelöscht und nun geht alles wieder so wie es soll. Warum wieso kann ich aber nicht sagen.
Rudi ich danke Dir ganz herzlich für Deine große Hilfe.
Grüße
Marko
Kleiner Nachtrag
2015.11.24 14:08:04 1: N10W:.*
2015.11.24 14:08:04 5: Cmd: >attr NetzschalterWohnzimmerHintenLinks icon black_Steckdose.off<
2015.11.24 14:08:04 1: N10W:.*
2015.11.24 14:08:04 5: Cmd: >attr NetzschalterWohnzimmerHintenLinks room Wohnzimmer<
2015.11.24 14:08:04 1: N10W:.*
2015.11.24 14:08:04 5: Cmd: >attr NetzschalterWohnzimmerHintenLinks webCmd :<
2015.11.24 14:08:04 1: N10W:.*
2015.11.24 14:08:04 5: Cmd: >define structureAndroidDevices structure alleAndroidGeraete Nexus10Wohnzimmer Nexus7Isabel Nexus7Schlafzimmer Nexus5Marko MotoGNadin LgG2Isabel<
2015.11.24 14:08:04 1: N10W:.*
2015.11.24 14:08:04 5: Cmd: >attr structureAndroidDevices alias alle Android Geräte<
2015.11.24 14:08:04 1: N10W:.*
2015.11.24 14:08:04 5: Cmd: >attr structureAndroidDevices event-on-change-reading state<
2015.11.24 14:08:04 1: N10W:.*
2015.11.24 14:08:04 5: Cmd: >attr structureAndroidDevices group IT<
2015.11.24 14:08:04 1: N10W:state
2015.11.24 14:08:04 5: Cmd: >attr structureAndroidDevices icon it_smartphone<
2015.11.24 14:08:04 1: N10W:state
2015.11.24 14:08:04 5: Cmd: >attr structureAndroidDevices room EDV<
2015.11.24 14:08:04 1: N10W:state
2015.11.24 14:08:04 5: Cmd: >define TRX_AC_00606c2201 TRX_LIGHT AC 00606c2201 light<
2015.11.24 14:08:04 1: N10W:state
2015.11.24 14:08:04 5: Cmd: >attr TRX_AC_00606c2201 IODev TRX1<
2015.11.24 14:08:04 1: N10W:state
2015.11.24 14:08:04 5: Cmd: >attr TRX_AC_00606c2201 group UNBENUTZT<
2015.11.24 14:08:04 1: N10W:state
2015.11.24 14:08:04 5: Cmd: >attr TRX_AC_00606c2201 room Betriebsraum<
2015.11.24 14:08:04 1: N10W:state
2015.11.24 14:08:04 5: Cmd: >define autoBeleuchtungDummy dummy<
Man kann hier sehr gut sehen ab wann er den Status geändert hat.
attr structureAndroidDevices event-on-change-reading state
Diese Attributzuweisung war wohl keine so gute Idee von mir ;D
Grüße
structure gibt (bis auf eine hartkodierte Blacklist) alle Attribute weiter an die Mitglieder. Bin inzwischen nicht sicher, dass das eine gute Idee war.
Mach Dir nichts drauß Rudi, konntest ja nicht wissen das es so einen wie mich gibt ;D ;D
War bestimmt der erste, ist immer so.
Nun bin ich erstmal wieder froh das alles seinen normalen geht.
Grüße und noch einen schönen Tag gewünscht