70_WINCONNECT.pm zum Steuern eines Windows PC / Tablet

Begonnen von michael.winkler, 19 Oktober 2016, 10:08:42

Vorheriges Thema - Nächstes Thema

michael.winkler

Zitat von: ManOki am 19 August 2017, 16:54:31
EDIT: Falls du (wovon ich ausgehe) den ganzen Code für eine ältere Perl-Version entwickelt hast, kannst du das auch im Modul angeben: https://perldoc.perl.org/functions/use.html
OK, ich denke dass ich den Fehler gefunden habe. Werde heute Abend ein Update bereitstellen.

the ratman

#376
hihi, naja, in fhem steht im entsprechenden reading "no prining"
also ein kleiner typo. nix böses, aber halt erwähnenswert

wichtiger, falls überlesen: könntest du das "mb" am ende des ram-readings entfernen? hast sonst ja auch nirgends einheiten, und ich müsste dass dann sowieso wieder mit nem regex entfernen. grund siehe anhang. das wird mal schön aussehen *g*.

und das für dich wichtigere:
deine v 0.0.20 rennt wunderbar flockig. update automatisch und problemlos und beim runterfahren des compis kommt keine blöde meldung mehr.

bei mir bleibt also nur mehr die frage offen, warum auf einem schleppi die autostart nicht abspeicherbar is.
mal schaun, ob das mit der 20er auch weg is. ich hab nur leider ned immer zugriff auf das gerät, kann also dauern.
→do↑p!dnʇs↓shit←

michael.winkler

Zitat von: the ratman am 20 August 2017, 08:24:43
hihi, naja, in fhem steht im entsprechenden reading "no prining"
also ein kleiner typo. nix böses, aber halt erwähnenswert
sollte in dieser Version erledigt sein

Zitat von: the ratman am 20 August 2017, 08:24:43
wichtiger, falls überlesen: könntest du das "mb" am ende des ram-readings entfernen? hast sonst ja auch nirgends einheiten, und ich müsste dass dann sowieso wieder mit nem regex entfernen. grund siehe anhang. das wird mal schön aussehen *g*.

sollte in dieser Version erledigt sein

Zitat von: the ratman am 20 August 2017, 08:24:43
bei mir bleibt also nur mehr die frage offen, warum auf einem schleppi die autostart nicht abspeicherbar is.
mal schaun, ob das mit der 20er auch weg is. ich hab nur leider ned immer zugriff auf das gerät, kann also dauern.
Kann eventuell an einer eingeschalteten UAC oder einer Firewall liegen. Eventuell wird hier ein Eintrag in der Registry verhindert.

Der Eintrag sollte hier zu finden sein: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Name = FHEM_Winconnect
Wert = PfadzuEXE\winconnect.exe

Gruß
Michael

the ratman

#378
ZitatKann eventuell an einer eingeschalteten UAC oder einer Firewall liegen. Eventuell wird hier ein Eintrag in der Registry verhindert.
nö, keine meldungen in der richtung. wenn du also nicht total anders als andere was in die reg einträgst ...

ZitatDer Eintrag sollte hier zu finden sein: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Name = FHEM_Winconnect
Wert = PfadzuEXE\winconnect.exe
auf die idee hätt ich auch selber kommen können ich depperle. danke fürs ankurbeln meiner grauen zellen *g*

NACHTRAG:
pc anwerfen, v.18 händisch anwerfen, update geht durch, firewall fragt wie üblich, v.20 lässt sich automatisch mit win starten.
wars doch die v.18 scheinbar?
→do↑p!dnʇs↓shit←

the ratman

ah, was neues gefunden ...

wollte eben die user_aktiveidletime in fhem ändern.
da kommt, geb ich z.b. 15 ein, nur ein popup mitArgument does not seem to be a valid integer between 0 and 10000das log bleibt leer.
→do↑p!dnʇs↓shit←

michael.winkler

Zitat von: the ratman am 20 August 2017, 14:26:01
ah, was neues gefunden ...

wollte eben die user_aktiveidletime in fhem ändern.
da kommt, geb ich z.b. 15 ein, nur ein popup mitArgument does not seem to be a valid integer between 0 and 10000das log bleibt leer.
Ja das habe ich schon bemerkt. Update ist morgen verfügbar


Gesendet von iPhone mit Tapatalk

the ratman

#381
nur, um dir zukünfige nervereien zu ersparen, ein paar readings mehr:
memory_used - kann man durchaus brauchen
user_drive_xxx - in gb (eventuell einstellbar per attr?)

hab das derzeit als userreadings, falls wer braucht:memory_used {sprintf("%.3f",(ReadingsNum($name,"memory_total",1) - ReadingsNum($name,"memory_available",1)))},

user_drive_C_Space_Used {sprintf("%.0f",(ReadingsNum($name,"drive_C_Space_Used",1)) / 1024)},
user_drive_D_Space_Used {sprintf("%.0f",(ReadingsNum($name,"drive_D_Space_Used",1)) / 1024)},
user_drive_C_Space_Total {sprintf("%.0f",(ReadingsNum($name,"drive_C_Space_Total",1)) / 1024)},
user_drive_D_Space_Total {sprintf("%.0f",(ReadingsNum($name,"drive_D_Space_Total",1)) / 1024)},

btw. rechne ich wirklich mit 1024 hier, oder sinds 1000 fürs dividieren? ich werd mirs nie merken *g*

nachtrag
nur zur sicherheit: bei "volume" krieg ich ebenfalls die - von dir für morgen ausgebesserte - fehlermeldung. nur halt für 0 bis 100.
→do↑p!dnʇs↓shit←

michael.winkler

Zitat von: ManOki am 19 August 2017, 16:54:31
Meine Vermutung ist, dass meine Perl-Version "zu neu" ist (aktuell Debian Stretch/Stable): https://rt.cpan.org/Public/Bug/Display.html?id=108203
Ich habe mir die Zeilen angesehen, meiner Meinung nach sollte man "$_" weder mit "my" neu definieren, noch die Variable neu setzen.
EDIT: Falls du (wovon ich ausgehe) den ganzen Code für eine ältere Perl-Version entwickelt hast, kannst du das auch im Modul angeben: https://perldoc.perl.org/functions/use.html
Konntest Du das neue Modul schon testen?

the ratman

ich mal wieder ... *g*

sag mal: was genau bewirkt "win_resetreadings" auf "1"?
irgendwie schauen alle readings von offline compis bei mir trotzdem noch gefüllt aus.
→do↑p!dnʇs↓shit←

michael.winkler

Zitat von: the ratman am 21 August 2017, 11:25:33
ich mal wieder ... *g*

sag mal: was genau bewirkt "win_resetreadings" auf "1"?
irgendwie schauen alle readings von offline compis bei mir trotzdem noch gefüllt aus.
siehe Seite 1 https://forum.fhem.de/index.php/topic,59251.0.html

ManOki

Zitat von: michael.winkler am 19 August 2017, 19:38:32
OK, ich denke dass ich den Fehler gefunden habe. Werde heute Abend ein Update bereitstellen.

Danke, funktioniert jetzt.

Allerdings ist mir aufgefallen, dass der Windows-Client einige Probleme aufweist:

Wenn ich per RDP angemeldet bin, kann ich z.B. nicht den PC herunterfahren oder Ton abspielen. Entweder erfolgt keine Reaktion oder es kommt eine Fehlermeldung, der Client sei beendet bzw. der PC aus. Per RDP kann ich andere Audioquellen normal abspielen, leider meint der WINCONNECT-Client, audio sei ausgeschaltet.

Außerdem muss immer der Benutzer angemeldet sein, um das Programm zu starten. Sinnvoller aus meiner Sicht wäre ein Windows-Dienst, der bereits vor dem Anmelden aktiv ist. Ich habe noch nicht ausprobiert, aber sollten zwei Benutzer auf dem gleichen PC angemeldet sein und damit zweimal den WINCONNECT-Client starten, dürfte das eventuell auch Probleme geben, oder?

Außerdem ist mir unklar, wo die Konfiguration vom WINCONNECT-Client im Windows gespeichert wird.

the ratman

eben bemerkt:
winconnect segnet das zeitliche nach standby.
→do↑p!dnʇs↓shit←

michael.winkler

Zitat von: ManOki am 21 August 2017, 14:20:34
Danke, funktioniert jetzt.

Allerdings ist mir aufgefallen, dass der Windows-Client einige Probleme aufweist:

Wenn ich per RDP angemeldet bin, kann ich z.B. nicht den PC herunterfahren oder Ton abspielen. Entweder erfolgt keine Reaktion oder es kommt eine Fehlermeldung, der Client sei beendet bzw. der PC aus. Per RDP kann ich andere Audioquellen normal abspielen, leider meint der WINCONNECT-Client, audio sei ausgeschaltet.

Außerdem muss immer der Benutzer angemeldet sein, um das Programm zu starten. Sinnvoller aus meiner Sicht wäre ein Windows-Dienst, der bereits vor dem Anmelden aktiv ist. Ich habe noch nicht ausprobiert, aber sollten zwei Benutzer auf dem gleichen PC angemeldet sein und damit zweimal den WINCONNECT-Client starten, dürfte das eventuell auch Probleme geben, oder?

Außerdem ist mir unklar, wo die Konfiguration vom WINCONNECT-Client im Windows gespeichert wird.
Schön das es jetzt funktioniert.

Wenn die GUI Probleme macht und Du Fehlermeldungen erhältst wäre es nicht schlecht diese mir zukommen zu lassen. Weiter Hilfreich wäre ein komplettes LOG der GUI. Alle Funktionen sollten auch innerhalb einer RDP Sitzung funktionieren. Beim Thema Audio kommt es allerdings darauf an was am RDP Client hier eingestellt wurde. Werde diese aber bei mir auch noch mal prüfen.

Da die Zielplattform nur normale Windows PC sind gibt es aktuell die GUI zur als Anwendung. Ein Windowsdienst ist erstmal hier nicht geplant, da auch viele Aktionen in Kompilation mit FHEM nur mit einem angemeldeten Benutzer Sinn machen. Da die GUI auf einem Netzwerkport lauscht ist eine doppelte Ausführung nicht möglich.


michael.winkler

Zitat von: the ratman am 21 August 2017, 14:31:14
eben bemerkt:
winconnect segnet das zeitliche nach standby.
Kannst du das näher Beschreiben? Gibt es eine Fehlermeldung? Was steht im LOG?

the ratman

im log steht nix (mehr).
fehlermeldungungen in den win-protokollen- System

  - Provider

   [ Name]  Application Error

  - EventID 1000

   [ Qualifiers]  0

   Level 2

   Task 100

   Keywords 0x80000000000000

  - TimeCreated

   [ SystemTime]  2017-08-21T10:42:29.375459500Z

   EventRecordID 7079

   Channel Application

   Computer Dr-Evil

   Security


- EventData

   WinControl.exe
   0.0.20.0
   5998ad52
   KERNELBASE.dll
   10.0.15063.502
   005405b5
   e0434352
   0000000000069e08
   1640
   01d31a4d21a96d51
   C:\Users\xxx\WinControl.exe
   C:\windows\System32\KERNELBASE.dll
   9d9b1d56-aad0-45b6-9290-bb9cb31ba622
und- System

  - Provider

   [ Name]  .NET Runtime

  - EventID 1026

   [ Qualifiers]  0

   Level 2

   Task 0

   Keywords 0x80000000000000

  - TimeCreated

   [ SystemTime]  2017-08-21T10:42:28.995211000Z

   EventRecordID 7078

   Channel Application

   Computer Dr-Evil

   Security


- EventData

   Anwendung: WinControl.exe Frameworkversion: v4.0.30319 Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet. Ausnahmeinformationen: System.Net.Sockets.SocketException bei System.Net.Sockets.Socket.Send(Byte[], Int32, Int32, System.Net.Sockets.SocketFlags) bei System.Net.Sockets.NetworkStream.Write(Byte[], Int32, Int32) Ausnahmeinformationen: System.IO.IOException bei System.Net.Sockets.NetworkStream.Write(Byte[], Int32, Int32) bei WinControl.Form1.StartServer() bei System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) bei System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) bei System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) bei System.Threading.ThreadHelper.ThreadStart() 
→do↑p!dnʇs↓shit←