pc present? dann setstate Rechner on

Begonnen von PerlJoe, 05 Juli 2017, 09:53:40

Vorheriges Thema - Nächstes Thema

PerlJoe

Hallo,

ich habe folgenden present:

define pc PRESENCE lan-ping 192.168.178.44 60

Dann habe ich einen Dummy:

define Rechner dummy
attr Rechner setList on off
define Rechner_Ein_Aus DOIF ([Rechner:"on"]) {switchPC("on")} DOELSEIF ([Rechner:"off"]) {switchPC("off")}


Wenn der Rechner nur per Hand eingeshaltet wird, muss der Dummy das mitbekommen.
So möchte ich dann im present das Ergebnis bearbeiten und je nachdem ob der lan-ping erfolgreich war oder nicht den Status beim dummy ändern:

setstate Rechner on / off

Kann ich das direkt im Dummy realisieren oder muss ich wieder eine eigene Funktion in my_utils.pm schreiben?

Danke schon mal.

Gruß, Jörg

nils_

was willst du denn am ende erreichen?

so ganz konnte ich deine beschreibung nicht nachvollziehen....
wofür brauchst du den dummy?

du könntest im DOIF auch auf dein PRESENCE triggern.
define Rechner_Ein_Aus DOIF ([pc:"present"]) {switchPC("on")} DOELSEIF ([pc:"absent"]) {switchPC("off")}

bitte syntax prüfen, hab das nur so ausm kopf geschrieben.
viele Wege in FHEM es gibt!

PerlJoe

#2
Wenn der Rechner per Hand eingeschaltet worden ist, so bekommt das der Dummy nicht mit, hat also den Status noch auf off. Dann sage ich "Rechner herunterfahren" und nichts passiert, da er noch den Status off hat.

Edit: Den dummy benötige ich um zu überprüfen ob die Steckdose unter 20 Watt (also Standby ist), erst dann kann die Steckdose ausgeschaltet werden, falls dies nicht der Fall ist wird der Rechner herunter gefahren.

nils_

was macht denn die switchPC(...) ?? ist die in deinen myUtils ??

evtl so:
define Rechner_Ein_Aus DOIF ([pc:"present"]) (set Rechner on)) DOELSEIF ([pc:"absent"]) (set Rechner off)


viele Wege in FHEM es gibt!

PerlJoe

Genau, in den my_utils.pm ist die Funktion.

Den dummy benötige ich um zu überprüfen ob die Steckdose unter 20 Watt (also Standby ist), erst dann kann die Steckdose ausgeschaltet werden, falls dies nicht der Fall ist wird der Rechner herunter gefahren.

PerlJoe

Würdest du das anders lösen? Bin für alles offen :)

CoolTux

Wenn man die gesamt Anforderung kennen würde kann man über einen Lösungsweg reden.

Geht es nur darum das erkannt wird ob Dein PC im Standby ist und wenn ja soll eine Schaltsteckdose ausgeschaltet werden? Oder wie genau?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

PerlJoe

#7
Ok, dann ganz ausführlich: :)

Ich möchte meinen Rechner per Alexa, Weboberfläche und auch per Hand ein und ausschalten.
Dafür habe ich eine DECT 300 Steckdose, wo der Rechner mit Bildschirmen hängt.

Wenn der Rechner bzw. Die Steckdose aus ist, so sage ich Alexa, schalte den Rechner ein.
Dann wird der Rechner über die Funktion switchPC("on") eingeschaltet, bzw. erst die Steckdose, dann der Rechner über WOL.

Wenn ich Alexa, schalte den Rechner aus, sage, so wird in der Funktion switchPC("off") kontrolliert ob der Rechner in Standby ist oder in Betrieb, also hochgefahren. Dementsprechend wird dann reagiert. Wenn die Steckdose mehr als 20Watt misst, so wird über eine URL, an einem laufenden Node.js Server Skript auf dem PC, das Herunterfahren des Rechners erzwungen. Dann wird rekursiv (kann sein das Updates von Windows laufen) die Funktion aufgerufen switchPC("off"), bis weniger als 20Watt anstehen und die Fritzbox Dect 300 Steckdose dann schließlich ausgeschalten wird.

Alexa und über der Weboberfläche wird der Dummy Rechner angesprochen.
Mein Problem bei der Sache, wenn der Rechner per Hand eingeschaltet ist, bekommt der Dummy Rechner das nicht mit und reagiert dann bei Alexa, schalte Rechner aus, nicht. Klar, weil der Rechner für ihn den Status noch auf off hat.

Somit habe ich mir gedacht ich erzeuge ein PRESENCE welches alle 60 Sekunden kontrolliert ob der Rechner erreichbar ist, bzw. eingeschaltet ist. Hier müsste ich jetzt nur noch auf einen Wechsel von State reagieren und gleichzeitig dem Dummy Rechner das State on / off geben.

Aber das bekomme ich leider nicht hin.

Hoffe es ist nun verständlich!? :)

Gruß und danke,
Jörg



justme1968

das geht doch komplett ohne dummy. schau dir mal das powerCmd attribut von presence an.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

CoolTux

Ich stimme Andre da zu. Wenn dennoch fragen aufkommen sollten ruhig noch mal nachhaken. Aber bitte erstmal Commandref zu presence lesen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

PerlJoe

Habe mir das durchgelesen, aber keine Idee wie ich das ganze jetzt umsetzen könnte...

Dann spare ich mir den Dummy, wenn ich im presence eine Funktion angebe die ich in myUtils.pm definiere.
Aber das wäre doch schon lan-ping 192.168.178.44 60

ZitatpowerCmd

Ein FHEM-Befehl, welcher das Gerät schalten kann.

Wenn der power-Befehl ausgeführt wird (set-Befehl: power) werden folgende Platzhalter durch ihre entsprechenden Werte ersetzt:

$NAME - Name der PRESENCE-Definition
$ADDRESS - Die überwachte Addresse der PRESENCE Definition, wie sie im define-Befehl angegeben wurde.
$ARGUMENT - Das Argument, was dem Set-Befehl "power" übergeben wurde. (z.B. "on" oder "off")

Beispielhafte FHEM-Befehle:

set PowerSwitch_1 on
set PowerSwitch_1 $ARGUMENT
"/opt/power_on.sh $ADDRESS"
{powerOn("$ADDRESS", "username", "password")}

Verstehe nicht wie mir der Befehl: powerCmd hier helfen könnte!?!

PerlJoe

Habt ihr vielleicht ein Beispiel oder könnt das ganze etwas näher erklären?

Würde mich freuen.

Gruß,
Jörg