NEWS
Soll-/Ist-Zustand erweitert
-
Hallo zusammen,
bei einer Lampe den Soll-/Ist-Zustand zu setzen/abzufragen ist relativ einfach... man setzt den entsprechenden Datenpunkt und ein paar ms später, erhält man das entsprechende ACK.
Mir geht es jetzt aber um ein erweitertes Szenario, den Soll-/Ist-Zustand eines PCs beispielsweise. Hier zählt nicht nur Strom an/aus (wäre einfach), sondern ich möchte gerne den Betriebszustand als Status heranziehen. Angenommen, der PC läuft gerade (Betriebszustand = an), ich möchte ihn ausschalten. Strom abschalten ist jetzt nicht die beste Option, also braucht er einen Befehl zum Herunterfahren, dann dauert es eine gewisse Zeit und erst dann ist er aus. Sprich zwischen Soll: aus und Ist: aus vergeht eine gewisse Zeit. Genauso verhält es sich mit dem Einschalten. Nach dem WOL-Befehl vergeht eine gewisse Zeit, bis er Befehle ausführen kann.
Wie handhabt Ihr so etwas? Theoretisch wären zwei Datenpunkte denkbar: Ein Soll-Datenpunkt und ein Ist-Datenpunkt. Mit nur ACK=true/false zu arbeiten funktioniert nicht, denn wenn man den Datenpunkt in die VIS setzt, könnte man dann hin- und herschalten, obwohl der PC gar nicht so schnell reagieren kann. Die Idee wäre dann, den Soll-Datenpunkt zu überwachen und dann mit Javascript o.ä. entsprechende Befehle zu senden, die dann z.B. Wartezeiten für das Hoch-/Runterfahren mit einbinden.
Wie macht Ihr sowas? Ich bin doch sicher nicht der Erste, der sich über so etwas Gedanken macht, oder? -
@antimon
Ich würde dafür 2 Datenpunkte nutzen- einen "status" datenpoint, als numeric, mit einer Aufzählung: 0: aus, 1: startet, 2: läuft, 3: wird herunter gefahren, 4: aus, 5: standby
- einen "Steuer" datenpoint, auch numeric mit einer Aufzählung: 0: ausschalten, 1: einschalten, 2: aufwecken
A.
-
@Asgothian Daran habe ich auch schon gedacht, quasi eine kleine State Machine...
Die Idee finde ich gut, das würde ja bedeuten, dass ich mit dem Steuer-Datenpunkt z.B. sage: Einschalten. Zuerst schaltet das Skript dann den Strom ein und setzt den Zustand "startet". Dann fährt der PC hoch, irgendwann erhalte ich z.B. einen Ping als Lebenszeichen und setze den Zustand "läuft".
Was passiert, wenn ich während des Hochfahrens bereits den Steuer-Datenpunkt auf "ausschalten" setze? Während des Hochfahrens kann ich ja keinen Shutdown-Befehl setzen und Strom einfach abschalten ist auch eine schlechte Idee. Was meint Ihr, wäre dann das Beste?- Die Änderung des Steuer-Datenpunkts nur während "aus" und "läuft" zulassen?
- Den Befehl fürs Herunterfahren sofort ausführen, sobald der Zustand "läuft" erreicht ist?
- Den Steuer-Datenpunkt wieder auf "einschalten" zurücksetzen, weil der Zustand noch nicht erreicht ist?
Was passiert, wenn der PC nicht startet (z.B. manuelle Eingabe für fsck nötig)? Man könnte einen Timer starten, sobald der Einschalt-Befehl kommt - und wenn der PC sich nicht in einer bestimmten Zeit meldet, wird ein eigener Status "Fehler" gesetzt? Oder wie könnte man so einen Fall abdecken? Was meint Ihr dazu?