Hallo,
angenommen, es gibt mehrere at zu einem Device. Gibt es eine smarte Möglichkeit, herauszufinden, wann das nächste at definiert ist? So richtig fällt mir da nichts ein :-\
Schöne Grüße
Jo
Wie wäre es mit "Probably associated with" unten in der Datailansicht?
In FHEMWEB gibt es in der Detailübersicht zu jedem Gerät einen Abschnitt "Probably associated with" Dort sind alle wahrscheinlich mit diesem Gerät verbundenen andere Geräte, u.a. auch at oder notify aufgelistet (s. Screenshot)
Danke. Diese Liste kenne ich natürlich. Ich würde das nächste at allerdings gerne in fhem verarbeiten. Bzw die dazu gehörige Zeit. Wie greife ich denn darauf zu bzw ist das möglich?
Schöne Grüße
Jo
Am besten ist es immer, wenn man genau beschreibt, was man machen könnte, sonst verläuft ein Thread so, wie dieser hier.
devspec2array könnte hilfreich sein. Dann ein wenig Perl um die Sachen zu sortieren. Über $defs{$name} bekommt man den Hash des Devices und da steht dann alles drin. Ein kleiner Blick in die Developer Wiki Seiten hilft sicher auch.
Super, danke. Das werde ich mir mal anschauen.
Schöne Grüße
Jo
Zitat von: Jojo11 am 03 Dezember 2016, 21:39:46
Hallo,
angenommen, es gibt mehrere at zu einem Device. Gibt es eine smarte Möglichkeit, herauszufinden, wann das nächste at definiert ist? So richtig fällt mir da nichts ein :-\
Schöne Grüße
Jo
Wann das nächte at definiert ist sollte man doch im Device sehen können ???
Siehe Screenshot - ein Device EG_Rollo_Terrasse_Tuer wird in einem at um 03:20:00 geprüft/gesetzt - das sehe ich direkt im Device.
Oder ich hab was falsch verstanden und bin auf dem Holzweg.
Aber wie marvin schon geschrieben hat
Zitat von: marvin78 am 03 Dezember 2016, 22:04:16
Am besten ist es immer, wenn man genau beschreibt, was man machen könnte, sonst verläuft ein Thread so, wie dieser hier.
sub atStartTime($) {
my ($atName) = @_;
my $d = Value( "$atName" );
if ( $d ) {
my @e = split( "[ \t]", $d );
my @atStartTime = split( ":", $e[1] );
my $startTime = $atStartTime[0] . ":" . $atStartTime[1];
return $startTime;
}
}
Bisschen umständlich aber es liefert Dir den nächsten Auslösezeitpunkt eines at.
Vielen Dank für Eure Hilfe! Hintergrund ist dass ich für z.B. eine Lampe mehrere regelmäßige ats definiert habe. Die kann man alle am Device sehen, aber ich würde mit das nächste Schaltevent gerne ausgeben lassen.
Schöne Grüße
Jo
Und wofür genau? Nur damit Du es mal eben siehst oder zum Anzeigen in einer anderen Übersicht oder zum weiterverarbeiten in einer Variablen.
Du bist ein wenig zu ungenau um Dir wirklich helfen zu können.
Für die Programmtechnische Umsetzung, ggf. für eine eigene sub, kannst du dir ja mal in 01_FHEMWEB.pm anschauen, wo das array für "Probably associated with" zusammengestellt wird.
Im Prinzip werden da einfach nur alle devices abgeklappert und geprüft ob der Name des gesuchten device im jeweiligen DEF enthalten ist. (und umgekehrt, was aber für deinen Anwendungsfall nicht relevant ist).
Ich möchte den Zeitpunkt des nächsten "Events" einfach nur anzeigen lassen. Wenn es nur ein at ist, ist das ja überschaubar. Bei mehreren wird es unübersichtlich und da dachte ich, evtl werden die irgendwo schon in sortierter Form verwaltet ::)
Schöne Grüße
Jo
Die Frage nach dem genauen Grund dafür ist dann also berechtigt. Warum du damit und mit mehr Details nicht raus rückst (z.B. lists der ats)...naja.
Warum mehrere ats für ein Device? Was ist mit weekdaytimer? Da man nicht ganau weiß, was du machen möchtest, kann es sein, dass das für den Fall viel besser geeignet ist, als mehrere ats. Da kannst du dann auch leicht den nächsten Zeitpunkt herausfinden.
Hallo,
vielleicht habe ich die Frage ja im falschen Teil des Forums gestellt. Mir ist vollkommen klar, dass man Zeitsteuerungen auf unterschiedlichste Weise realisieren kann (at, weekdaytimer, doifs, ...). Das ist hier aber nicht Gegenstand der Fargestellung. Ich bin hier konkret nicht ins Detail gegangen, da ich am Anfang meiner Überlegungen stehe (daher auch das "angenommen" im OP). Soviel dazu, dass ich hier mit irgendwelchen Informationen "nicht rausrücken" möchte. Ich weiß nur, dass ich hunderte Devices habe und zahlreiche mit mehreren ats versehen sind. Gründe dafür gibt es viele. Z.B. werden auch viele ats zur Laufzeit generiert. Meine Annahme war daher, dass man evtl. mit einfachen Mitteln alle zur Zeit definierten ats für ein bestimmtes Device herausfiltern kann, so dass man die Uhrzeit des nächsten Events bestimmen kann (sei es zur Anzeige oder zum Speichern in einem Dummy).
Vielen Dank für die konkreten Hinweise - damit kann ich definitiv schon mal weiter arbeiten.
schöne Grüße
Jo