at im at modifizieren

Begonnen von bugster_de, 26 Mai 2014, 12:44:06

Vorheriges Thema - Nächstes Thema

bugster_de

Hi,

ich habe im Prinzip folgenden MetaCode

define callme at +00:02:00 { thefunc( );;}

sub thefunc( ) {
if( noch_nicht_jetzt ) {
   fhem( "delete callme" );
   fhem( "define callme at +00:02:00 { thefunc( );;}" );
}
}


Sprich ich möchte in der Funktion, die vom at aufgerufen wurde den at modifizieren / neu anlegen. Das scheint aber nicht zu klappen. Kann das sein?

Warum will ich das?
ich habe an den Terrassentüren Griffsensoren. Wenn die Rolladensteuerung die Rolladen schließt, checkt sie erst mal, ob die Terrassentüre offen ist. Wenn geschlossen, dann Rolladen zu. Wenn Türe offen, dann Timer setzen. Wenn der Timer kommt, dann in der Funktion Türe checken und wenn Türe zu, dann Rolladen runter. Wenn Türe offen, dann Timer wieder neu starten.

betateilchen

Zitat von: bugster_de am 26 Mai 2014, 12:44:06
Sprich ich möchte in der Funktion, die vom at aufgerufen wurde den at modifizieren / neu anlegen. Das scheint aber nicht zu klappen. Kann das sein?

Ja, das ist so. Und das wurde in letzter Zeit auch schon mehrfach hier im Forum durchdiskutiert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

at (einer der ersten FHEM-Module) ist nicht intuitiv realisiert: nach dem ausfuehren des Argumentes definiert es sich anhand der gemerkten Parameter neu -> ich weiss nicht, wie man diese Parameter aus dem ausgefuehrten Code-Stueck modifizieren kann.

Um das erwaehnte Problem zu loesen, wuerde ich eine wiederkehrende at Instanz (+*00:02) definieren, die sich loescht, falls sie nicht mehr gebraucht wird.

bugster_de

Danke für die schnelle Antwort.
Das wiederkehrende Anlegen geht ja auch nicht, da ich im Codestück den Art ja nicht löschen kann.

Ich baue einfach eine Zähler ein, der bei jedem Aufruf sich selbst inkrmentiert und lege ein neues Art an, das den Zählerstand im Namen hat. Der aufrufend e Art ist ja dann automatisch gelöscht.

Viele Grüße

betateilchen

und schalte bitte die Autokorrektur ab, das verstümmelt Deine Texte fast zur Unverständlichkeit ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

ZitatDas wiederkehrende Anlegen geht ja auch nicht, da ich im Codestück den Art ja nicht löschen kann.

Das klingt zwar logisch, ist aber nicht korrekt.

at_Exec prueft, ob es man das at im Exec entfernt hat, und definiert dann keine neue Instanz.

bugster_de

Danke. Und sorry wegen der blöden Autokorrektur.