HM-PB-6-WM55 <-FHEM-> HM-LC-Sw4-DR: "Echte" Rückmeldung an Taster?

Begonnen von M_I_B, 21 November 2015, 22:59:44

Vorheriges Thema - Nächstes Thema

M_I_B

... ne, natürlich nicht :P
Zitat aus http://www.fhemwiki.de/wiki/EventMap :
ZitatWerden mit eventMap Werte umdefiniert, müssen zumindest in manchen Situationen (z.B. devStateIcon) die "neuen" Werte verwendet werden.
So sind ja auch die Icons für "on" und "off" gesetzt, die jetzt "AN" und "AUS" heißen. Ebenso heißt "on-for-timer 300" nun "05 MIN". Daher bin ich in Anlehnung an das Zitat nebst Wiki davon ausgegangen, das die Notation so korrekt ist.
Der Aktor generiert m.W. nur on:off. Allerdings sehe ich gerade erst, das es da noch was anderes gibt, nämlich "timedOn - running:AUS"... Da komme ich so ohne weiteres aber nicht dran?!? Also wohl wieder Klimmzüge machen?

justme1968

devStateIcon bezieht sich immer auf das internal STATE. du kannst mir stateFormat bestimmen was in STATE steht.

das set_ taucht bei hm (und manchen anderen devices) so lange auf bis vom device das ack gekommen ist. mit passendem devStateIvon und/oder stateFormat kannst du für die set_ zustände ein eigenes icon anzeigen oder das set_ ignorieren.

im gegensatz zu FS20 ist bei homematic am state und STATE nicht zu erkennen ob (und wie lange) ein device eingeschaltet bleiben soll. unter anderem weil das unter umständen vom device selber abhängt. du kannst es intern so programmieren das es auch bei einem on (z.b. durch einen gepeerten taster) nur für eine gewisse zeit lang an bleibt.

es gibt 'nur' das reading timedOn an dem zu sehen ist das es kein permanentes on ist.

wie man das timedOn mit bei devStateIcon berücksichtig findest du z.b. hier: http://forum.fhem.de/index.php/topic,39969.msg322107.html#msg322107.

das sind keine 'klimmzüge' sondern liegt an dein eigenheiten und möglichkeiten von homematic. du musst fhem halt recht genau sagen wie es mit den vielen unterschiedlichen kombinationsmöglichkeiten die homematic bietet umgehen soll.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

M_I_B

... was für die einen eine "nebenbei"- Geschichte, ist für die andere ein Klimmzug  ;D

Aber super! Genau das habe ich gesucht. Vermutlich hätte ich jetzt wieder probiert, da mit wilden SUB's o.ä. rumzudoktorn ^^ Ne, hätte ich doch nicht; ich hät's erstmal so gelassen ;)

EDIT:
Läuft so wie erwartet und sollte mir erstmal reichen; feine Sache das ;) Vielen Dank noch mal!

Irgendwann werde ich mir dann mal anschauen, ...
... ob es eine Möglichkeit gibt, dem Aktorkanal den aktuellen Zählerstand zu entlocken und via GD resp. ImageMagick als aktives Icon zu übergeben; das wäre mal knorke ;)
... wie man in der GUI an Stelle der vielen "Timertasten" ein Eingabefeld zur freien Eingabe schaffen kann

M_I_B

... mal 'ne bescheidene Frage:
Kann es sein, das ein Aktor von jetzt auf gleich nicht mehr auf seine Sensoren reagiert, wohl aber auf Befehle aus FHEM?!? Ich habe hier gerade ein ganz merkwürdiges Problem...
Mein Bruder war vorhin da, ebenfalls interessiert an dem Thema. Da der Hutschienenaktor und der 6fach- Taster immer noch nicht eingebaut ist (was dazwischen gekommen), wollte er das mal antesten... Dabei war festzustellen, das diese Timernummer auf einmal nicht mehr funktionierte. Also dachte ich mir, das ggf. irgend etwas hängt und habe den RPi kurzerhand neu gestartet. Nun aber reagiert der Aktor aber weder auf die 6fach-Taste, noch auf den ebenfalls zugewiesenen ITS-500. Lediglich aus FHEM raus lässt er sich noch steuern...
Auch ein Blick ins EventLOG und die CFG's hat mich nicht weiter gebracht; alles so wie gewohnt... Kapier ich nicht  >:(

Irgend wer eine glorreiche Idee?

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

M_I_B

... nüscht relevantes ... konnte es auch nicht ... Irgendwie hat meine "chains.cfg" einen Knacks weg gehabt. FHEM hat beim Einlesen zwar keinen Fehler generiert, dennoch alle Inhalte ignoriert. Ich habe die Datei jetzt mal gelöscht und neu rein kopiert und nun geht das wieder (in der Datei stehen alle manuellen Zuweisungen "Sender/Sensoren" <-> "Empfänger/Aktoren"). Grund? Keine Ahnung :o

Aber jetzt stelle ich gerade eine andere Macke fest:
Kann es sein, das der "Trick"/Link von justme1968 ein paar Beiträge weiter oben bzgl. devStateIcon sich mit meiner SUB bezgl. TimerSET beißt? Ich werde das versuchsweise gleich mal rausnehmen, aber vorher hat es ja funktioniert... Mir dünkt, das nun der LongRelease nicht mehr erfasst werden kann?!?

Hier noch mal die relevanten Teile:

Ein Aktorkanal mit dem veränderten stateFormat:
define KG_ZS_4CH.1 CUL_HM 3A5CE401
attr KG_ZS_4CH.1 alias Licht Dachstuhl
attr KG_ZS_4CH.1 devStateIcon on:message_socket@green:off off:message_socket@gray:on timedOn:general_on_fuer_zeit@oronge:off
attr KG_ZS_4CH.1 eventMap /on-for-timer 300:[05m]/on-for-timer 900:[15m]/on-for-timer 1800:[30m]/on-for-timer 3600:[01h]/on-for-timer 7400:[02h]/on-for-timer 14800:[04h]
attr KG_ZS_4CH.1 group HM.Aktoren
attr KG_ZS_4CH.1 model HM-LC-SW4-DR
attr KG_ZS_4CH.1 peerIDs 00000000,FFFFFF01,
attr KG_ZS_4CH.1 room KG.Zählerschronk
attr KG_ZS_4CH.1 sortby 02
attr KG_ZS_4CH.1 stateFormat {if(ReadingsVal($name,"timedOn","off")eq"running"){return "timedOn";;}else{return ReadingsVal($name,"state","off");;}}
attr KG_ZS_4CH.1 webCmd on:[05m]:[15m]:[30m]:[01h]:[02h]:[04h]:off


Die SUB zum Timer-Erweitern:
### Timer setzen für Lichtautomaten ###

my $timer = 300;
my $multi = 0;
my $count = $timer;

sub SetTimerOnTip($$$) {
my ($SOURCE,$TARGET,$EVENT) = @_;

if ($EVENT =~ /\Short/m && ReadingsVal($TARGET,"state","err") eq "off" ) {
fhem ( "set $TARGET on" );
$count = $timer;
}
elsif ($EVENT =~ /\Short/m && ReadingsVal($TARGET,"state","err") eq "on" ) {
fhem ( "set $TARGET off" );
$multi = 1; $count = $timer;
}
elsif ( substr(ReadingsVal($SOURCE,"state","err"),0,11) eq "LongRelease" ) {
if (ReadingsVal($TARGET,"state","err") eq "on") {
$multi++;
}
$count = $timer * $multi;
if (int($count) == $count) {
fhem ( "set $TARGET on-for-timer $count"  );
}
}
}

M_I_B

... jetzt wird es ganz schräg  :o :o :o

Im letzten Teil der SUB (letzte Befehlszeile) wird zwar ...
fhem ( "set $TARGET on" );
...ausgeführt, aber ...
fhem ( "set $TARGET on-for-timer $count" );
... an gleicher Stelle wird ignoriert. $count hat im Übrigen immer einen Wert von 300 oder einem vielfachen davon.

Ein ...
print Dumper ("set $TARGET on-for-timer $count");
... also Kontrolle ergibt die korrekte Befehlszeile set KG_ZS_4CH_1 on-for-timer 600


Das ist reproduzierbar und mir vollkommen unerklärlich, vor allen Dingen deshalb, weil es ja mal genau so funktioniert hat  ??? :o >:(

martinp876

wenn du HM Kommandos testen willst mache es erst einmal ohne Variablen - zumindest wenn du postest- Ich rate nicht gerne.
Und ich rate auch nicht gerne, was dein Problem ist.
Also wenn du
set KG_ZS_4CH_1 on-for-timer 600
passiert was? ich haben ein on-for-timer 600 probiert - klappt problemlos.
was sagen die messages? Bitte aufzeichnen. Kommt ein Fehler oder kommen einfach keine messages? Sind kommandos pending? Steht ein Overload am IO an? macht es doch nicht immer so kompliziert.

M_I_B

Zitatmacht es doch nicht immer so kompliziert.
Ich für meinen Teil finde es viel komplizierter, all das aufzuführen, was nicht ist, wie in diesem Fall auch ...

Es passiert schlicht und ergreifend ........... nichts!

# fhem ( "set $TARGET off" );
print Dumper ("set $TARGET on-for-timer $count");
# fhem ( "set $TARGET on-for-timer $count" );
fhem ( "set KG_ZS_4CH_1 on-for-timer 300" );
}

... habe ich selbstverständlich auch getestet. Das "on-for-timer" wird schlichtweg ignoriert, ohne Fehler, ohne Logeintrag, ohne Messages... nix "pending", nix "overload", nix nix ...
Und auch das Neuschreiben der Datei in Anlehnung an das chains.cfg-Problem hat nichts geändert, auch kein Neustart, auch kein Update, kein garnix...

M_I_B

... jetzt habe ich eine Fehlermeldung provozieren können direkt aus FHEM heraus ...

Gebe ich direkt in die FHEM Kommandozeile "set KG_ZS_4CH_1 on-for-timer 300" ein, erhalte ich eine Fehlermeldung wie folgt:
Unknown argument on-for-tion-for-timer, choose one of clear getConfig getRegRaw inhibit off on on-for-timer on-till peerBulk peerIODev press regBulk regSet sign statusRequest toggle
Wie man sieht, wird aus on-for-timer mal eben on-for-tion-for-timer, was er selbstverständlich nicht kennen kann. Die FRage ist jetzt halt nur, warum acht er das?!?

martinp876

du sendest immer zusammengebaute kommandos und willst wissen, ob FHEM ein on-for-timer kann.

In deinem Programflow bekommst du eben KEINE Rückmeldung. Also noch einmal: nicht so kompliziert, immer einmal kleine Schritte. Untersuche die Kommandos einzeln, dann baue sie zusammen. So kannst du erkennen, wo das Problem ist. Ich kann das an deinem System eben nicht.

Wenn ich in die Kommandozeile ein
set laBusch on-for-timer 10
einbaue klappt das prima.

hast du irgendwelche alias gesetzt?  Das ist definitiv kein Systemverhalten. Schalte einmal deine replacements ab.

M_I_B

Zitatdu sendest immer zusammengebaute kommandos und willst wissen, ob FHEM ein on-for-timer kann.
... Du sprichst in Rätseln ...
ZitatGebe ich direkt in die FHEM Kommandozeile "set KG_ZS_4CH_1 on-for-timer 300" ein, erhalte ich eine Fehlermeldung wie folgt:
... wie bitte geht es noch direkter und an welcher Stelle übersehe ich den Zusammenhang zwischen "ProgramFlow" und Direkteingabe?

martinp876

das kommando hat kein Problem.
dein system hat ein Problem.
nutzt du alias? Irgendwelche replacements? Sind updates offen? Jetzt musst du einmal selbst nachsehen.

die proceduren hattest du am Anfang - dann hast du hier gefragt, warum es nicht geht. Kann kein Mensch finden. Jetzt nutzt du das Kommando direkt, schon hast du eine Fehlermeldung. Jetzt probiere, warum das Kommando verhunzt wird. Es muss an deinen Einstellungen liegen.

M_I_B

... Thema hat sich durch Neuinstallation Debian & Co. und Zurückspielen der CFG's erledigt ... Weiß der Draht, was das war ^^