Benutzer-IP in dummy bzw. notify auslesen

Begonnen von Tri, 19 Dezember 2021, 14:30:59

Vorheriges Thema - Nächstes Thema

Tri

Hallo zusammen!

Ich möchte in einem Dummy die IP des Benutzers mit einem Reading des Dummys vergleichen und abhängig davon einen entfernten Rechner runter fahren.

Dazu also die Frage:
Wie kann ich die IP des gerade zugreifenden Benutzers abfragen, der den Button "Runterfahren" gedrückt hat?

Leider habe ich noch keine passende Lösung gefunden. Die Suche nach einer passenden Lösung wird durch zu viele "falsche" Treffer extrem erschwert.

Zusatzinformationen:
Das soll verhindern, das der Rechner runtergefahren wird, obwohl der Rechner noch von jemand anders genutzt wird. Auf dem Rechner läuft ein Webserver. Nur, wenn kein user mehr aktiv ist, soll der Rechner runter gefahren werden können, es sei denn, der letzte user, der den Rechner benutzt hat, fährt den Rechner selber runter. Dafür der geplante IP-Vergleich.

Dafür soll das Reading userip1 mit der Benutzer-IP von FHEM verglichen werden, wenn der den Button "Runterfahren" gedrückt hat. Aktuell kann der Rechner nach Leerlauf einer halben Stunde runter gefahren werden. Der Rechner soll dann sofort runter gefahren werden können.

Das Dummy (vereinfacht dargestellt, in RAW):

defmod PC dummy
attr PC eventMap boot:Hochfahren on:Eingeschaltet PCshutdown:Runterfahren off:Ausgeschaltet
attr PC webCmd Hochfahren:Runterfahren

setstate PC Eingeschaltet
setstate PC 2021-12-19 13:33:02 LetzterZugriff 2021-12-19 12:46:59.389528056

setstate PC 2021-12-19 13:33:02 numberofuser 1

setstate PC 2021-12-19 13:33:02 userip1 192.168.1.5
setstate PC 2021-12-19 13:33:03 userlastaction1 19Dec2021 12:46:07
setstate PC 2021-12-19 13:33:02 userlastlogin1 19Dec2021 12:31:17
setstate PC 2021-12-19 13:33:03 userlastlogout1 19Dec2021 12:46:07

... weitere Einträge mit anderen IP's möglich

setstate PC 2021-12-19 13:33:02 leerlauf 2763
setstate PC 2021-12-19 13:33:02 leerlaufstr 000:46:03

setstate PC 2021-12-19 13:33:01 statusPC on


Das notify (vereinfacht dargestellt, in RAW)

defmod PC_notify_1 notify PC:.* {\
if ($EVENT eq "Hochfahren") { # Button Hochfahren gedrückt\
...
} # Ende Button Hochfahren gedrückt\

if ($EVENT eq "Runterfahren") { # Button Runterfahren gedrückt\
if(ReadingsVal("PC","statusPC","---") ne "off" &&\
   ReadingsVal("PC","statusPC","---") ne "Hochfahren" &&\
   ReadingsVal("PC","statusPC","---") ne "Runterfahren" &&\
   ReadingsVal("PC","statusPC","---") ne "Benutzer noch aktiv" &&\
   ReadingsVal("PC","statusPC","---") ne "Fehler Hochfahren") {\
    if (ReadingsVal("PC","leerlauf","yes" ) > (60*30)) {\
  fhem("set PcWol off");;\
  fhem("setreading PC statusPC Runterfahren");;\
} else {fhem("setreading PC statusPC Benutzer noch aktiv");;}\
    };;\
} # Ende Button Runterfahren gedrückt\
}\


Vielen Dank schonmal für Eure Mühe  :)
Gruß
Tri

rudolfkoenig

ZitatWie kann ich die IP des gerade zugreifenden Benutzers abfragen, der den Button "Runterfahren" gedrückt hat?
Wenn: Zum Knopf druecken FHEMWEB verwendet wird und das notify direkt auf das Druecken reagiert (also so wie abgebildet, kein sleep, etc dazwischen)
Dann: $FW_chash->{PEER}

Tri

Super, vielen Dank, genau das habe ich gesucht!