Wenn PC (WIN) auf Audio-Ausgabegerät x, dann schalte y

Begonnen von 87insane, 03 Oktober 2019, 14:04:15

Vorheriges Thema - Nächstes Thema

87insane

Hey zusammen,

ich hab mal wieder eine Kleinigkeit vor aber komme nicht weiter.

INFOS:
- Windows 10 PC
- Mehrere Audio Ausgabe Geräte (Headset, Sound System)
- WLAN Schalter (Shelly Plug S)

Ich möchte gerne, wenn mein PC auf ein spezielles Ausgabe Gerät gestellt wird, dass der WLAN Schalter eingeschaltet wird und natürlich auch wieder aus.
Der Hintergrund ist eigentlich ganz einfach. Wenn ich am PC etwas mit meinem Headset mache, soll das Sound System aus sein. Wenn ich aber nun mal etwas lauter Musik an machen will, stelle ich an meinem Windows PC die Ausgabe auf den Ausgang der Soundkarte. In diesem Moment soll der WLAN Schalter eingeschaltet werden. Mit diesem geht dann auch das Sound System an und brüllt durch die Gegend. Stelle ich nun wieder auf mein Headset um, welches einen USB Dongle nutzt um die Datenströme an das Funk Headset zu senden, soll der WLAN Schalter wieder aus gehen.

Aktuell habe ich WINCONNECT mal eingerichtet. Allerdings komme ich mit der WMI Einrichtung nicht weiter. WINCONNECT selber sagt mir aber leider nicht von sich aus, was mein Haupt Audio Ausgabegerät ist. Also habe ich das aktuell nur so lösen können, dass wenn PC = an und WINCONNECT das sieht, geht der WLAN Schalter an und wenn der PC aus ist auch wieder aus. Das ist aber eigentlich sinnlos, da das Soundsystem dann oft mit läuft ohne genutzt zu werden.

Hat einer von euch eine Idee, wie man das schön lösen kann? Ich benötige eigentlich auch nicht die ganzen Infos die WINCONNECT noch so mit liefert.

Weitere Infos:
Der Name der Ausgabegeräte in Windows ist einmal Lautsprecher und einmal Headset.

Mein Aktuelles notify (so muss ich manuell einschalten aber es geht automatisch wieder aus [schon mal etwas besser]):
defmod n_az_pc_musik notify kai_pc:off set MQTT2_shellyplug_s_7AE167 off

Anbei noch ein WINCONNECT List, des betroffenen PCs:

Internals:
   CFGFN     
   DEF        192.168.xxx.xxx 120
   FUUID      5d95c98a-f33f-fcb4-67a8-648089db44dae283
   INTERVAL   120
   NAME       kai_pc
   NR         4154
   STATE      on
   TYPE       WINCONNECT
   OLDREADINGS:
   READINGS:
     2019-10-03 13:47:47   audio           on
     2019-10-03 13:04:54   audio_devicename Lautsprecher
     2019-10-03 13:04:58   battery_ChargeStatus NoSystemBattery
     2019-10-03 13:04:58   battery_LifePercent 100
     2019-10-03 13:04:58   battery_LifeRemainingsMin 0
     2019-10-03 13:04:58   battery_PowerLineStatus Online
     2019-10-03 13:04:57   bios_boardmanufacturer Shuttle Inc.
     2019-10-03 13:04:57   bios_boardproduct SX58
     2019-10-03 13:04:57   bios_boardversion V10
     2019-10-03 13:04:57   bios_releasedate 01/06/2012
     2019-10-03 13:04:57   bios_vendor     American Megatrends Inc.
     2019-10-03 13:04:57   bios_version    080016
     2019-10-03 13:04:58   brightness      200
     2019-10-03 13:04:54   core_temp_state not_installed
     2019-10-03 13:04:55   cpu_0_mhz       3200
     2019-10-03 13:04:55   cpu_0_name      Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
     2019-10-03 13:04:56   cpu_1_mhz       3200
     2019-10-03 13:04:55   cpu_1_name      Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
     2019-10-03 13:04:56   cpu_2_mhz       3200
     2019-10-03 13:04:56   cpu_2_name      Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
     2019-10-03 13:04:56   cpu_3_mhz       3200
     2019-10-03 13:04:56   cpu_3_name      Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
     2019-10-03 13:04:56   cpu_4_mhz       3200
     2019-10-03 13:04:56   cpu_4_name      Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
     2019-10-03 13:04:56   cpu_5_mhz       3200
     2019-10-03 13:04:56   cpu_5_name      Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
     2019-10-03 13:04:56   cpu_6_mhz       3200
     2019-10-03 13:04:56   cpu_6_name      Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
     2019-10-03 13:04:56   cpu_7_mhz       3200
     2019-10-03 13:04:56   cpu_7_name      Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
     2019-10-03 13:04:57   drive_C_Format  NTFS
     2019-10-03 13:33:56   drive_C_Space_AvailableFree 86543
     2019-10-03 13:04:57   drive_C_Space_Total 124391
     2019-10-03 13:33:56   drive_C_Space_Used 37848
     2019-10-03 13:04:58   drive_C_Type    Fixed
     2019-10-03 13:04:58   drive_D_Format  NTFS
     2019-10-03 13:04:58   drive_D_Space_AvailableFree 48341
     2019-10-03 13:04:58   drive_D_Space_Total 351389
     2019-10-03 13:04:58   drive_D_Space_Used 303048
     2019-10-03 13:04:58   drive_D_Type    Fixed
     2019-10-03 13:04:55   file_filter     *.*
     2019-10-03 12:25:47   file_fullname   no file found
     2019-10-03 12:25:47   file_name       no file found
     2019-10-03 13:04:55   file_order      descending
     2019-10-03 13:53:59   memory_available 8.858
     2019-10-03 13:04:56   memory_total    12.279
     2019-10-03 13:04:54   microphone_detect False
     2019-10-03 13:04:54   microphone_devicename FIXME Type = VT_BOOL
     2019-10-03 12:23:31   model           Windows 10 Pro
     2019-10-03 13:04:54   motion_autodetect False
     2019-10-03 13:04:54   motion_detect   False
     2019-10-03 13:04:58   mute            off
     2019-10-03 13:04:55   os_Domainname   WORKGROUP
     2019-10-03 13:04:55   os_Hostname     DESKTOP-SEB195P
     2019-10-03 13:04:55   os_InstallDate  06.08.2019 14:54:41
     2019-10-03 13:04:55   os_Name         Windows 10 Pro
     2019-10-03 13:04:55   os_ReleasID     1903
     2019-10-03 13:04:59   os_RunTime_days 0
     2019-10-03 13:06:31   os_RunTime_hours 1
     2019-10-03 13:53:31   os_RunTime_minutes 107
     2019-10-03 13:04:55   os_StartTime    03.10.2019 12:06:31
     2019-10-03 13:04:55   os_Type         Client
     2019-10-03 13:04:55   os_Username     SYSTEM
     2019-10-03 13:04:55   os_Version      10.0.18362.356
     2019-10-03 13:04:57   printer_aktiv   false
     2019-10-03 13:04:57   printer_names   no_printing
     2019-10-03 12:25:46   speechcontrol   off
     2019-10-03 13:04:57   speechquality   70
     2019-10-03 13:04:54   state           on
     2019-10-03 13:00:37   user_aktiv      false
     2019-10-03 13:04:57   user_aktividletime 60
     2019-10-03 13:04:58   volume          22
     2019-10-03 13:04:55   wincontrol      0.0.27
     2019-10-03 12:12:28   wincontrol_error Download new version = 0.0.27
     2019-10-03 12:12:28   wincontrol_gitlab 0.0.27
     2019-10-03 12:12:28   wincontrol_gitlab_serviceurl https://gitlab.com/michael.winkler/winconnect/raw/master/WinControlService_0.0.27.exe
     2019-10-03 12:12:28   wincontrol_gitlab_url https://gitlab.com/michael.winkler/winconnect/raw/master/WinControl_0.0.27.exe
     2019-10-03 13:04:55   wincontrol_starttime 03.10.2019 13:04:51
     2019-10-03 13:04:54   wincontrol_type Service
     2019-10-03 13:04:55   wincontrol_user NT-AUTORITÄT\SYSTEM
     2019-10-03 13:04:59   wmi_Realtek_High_Definition_Audio Realtek High Definition Audio
   helper:
     ADDRESS    192.168.xxx.xxx
Attributes:
   alias      Kais PC
   icon       it_server



Zuerst dachte ich, dass bei audio_devicename der Name stehen müsste. Dieser bleibt aber auf Lautsprecher. Und das auch immer.
Hinzu weiß ich nicht wirklich wie aufwendig es für FHEM ist, den PC regelmäßig ab zu fragen. Deswegen steht die Zeit der Abfrage bei mir auf 120 Sekunden.

Gut wäre, wenn mein PC die Info der Ausgabe an z.B. ein Dummy senden könnte, in dem Moment wo ich das am PC umstelle. Wie oben schon gesagt, brauche ich die ganzen anderen Infos nicht. Es würde ja schon reichen wenn der PC eine 1 für den einen Ausgang senden würde und eine 2 für den anderen Ausgang. 1 oder 2 sind nur Beispiele....

Ich bin gespannt wie ihr das so gelöst habt...

DANKE an alle :)

Otto123

Hi,

ich habe das nicht gelöst aber hätte eine andere Idee.:
Windows ermittelt entweder per Powershell welches Audio Device aktiv ist, oder wenn das zu schwierig ist, Du setzt dein Audio-Device mit einem Powershell Script (Link auf dem Desktop oder so ähnlich)
Im gleichen Script sendest Du einen Befehl an FHEM, FHEM macht den Rest.

Die Verbindung von Powershell zu FHEM habe ich. Der Part auf Windows ist noch wage, aber scheinbar lösbar:
https://darkball.net/2018/03/change-audio-output-with-powershell-in-windows-10/

Wäre das ein Ansatz?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Hört sich gut an... So könnte ich das sogar als Hotkey verwenden.

Muss mich nur noch einlesen, wie ich von Win-PS gegen FHEM komme (Syntax und ggf. Probleme). Was Powershell Richtung Windows selber angeht, sollte ich hinbekommen.
Tatsächlich würde ich hier die zweite Lösung bevorzugen. Das diese nicht dauerhaft im Hintergrund laufen muss, sondern nur auf Knopfdruck reagieren würde.

Geile Idee, danke Otto - Wochenende gerettet :)

Melde mich dann mit Ergebnissen, wenn ich soweit bin. Sollte jemandem noch was einfallen, bitte gerne her damit. Ich denke ich bin nicht der Einzige mit solch einer Idee.

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

Hi,

es ist entspannter die Diskussion hier zu führen. ;)
Wenn Du https Zugriff hast: Funktioniert denn der Zugriff auf deinen FHEM Server über InternetExplorer bzw. edge von Deinem Windows PC mit dem selfsigned Zertifikat? Powershell greift eigentlich auf die Sicherheit des Internetexplorers (System) zurück.

Gruß  Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Prof. Dr. Peter Henning

ZitatSicherheit des Internetexplorers
Gibt es die inzwischen?  8)

LG

pah

87insane

Naja es kommt wie bei jedem Zertifikat aus nicht gekaufter stelle zu einer Warnung. Ist ein selbst signiertes. Nun könnte ich das Zertifikat natürlich hart im System bekannt machen aber in meinen Augen muss das genau wie im Browser auch so gehen.



Gesendet von meinem LG-H850 mit Tapatalk


Otto123

Aber das ist doch der einzig vernünftige Weg bei selbstsignierten Zertifikaten? Es dem System bekannt zu machen und damit der ausstellenden Stelle zu vertrauen. Ansonsten kann man das auch weglassen - meine Meinung. Denn man vertraut irgendwann im Dialog stumpf jedem Zertifikat was vorgibt bekannt und sinnvoll zu sein.
Außerdem ist doch der ständige Warnungsdialog vertane Lebenszeit :)

Ansonsten hab ich hier was gefunden was man versuchen könnte.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Hey - Auch wenn das nun komisch klingt. Ich habe für mich einen besseren Weg gefunden.

Es wird bei Powershell mit dem von dir empfohlenen cmdlet bleiben. Nur sende ich die Daten einfach via MQTT an FHEM.
Das ist aufgrund dessen, das ich eh viel damit mache, für mich viel einfacher und schöner.

Wenn von Interesse, sende ich bei Fertigstellung auch mal mein Script.

Otto123

Ja mqtt ist auch ein eleganter Weg. Ist für mich noch etwas Neuland aber ich arbeite mich gerade ein.
Wäre toll wenn Du das hier einfach mal beschreibst.
Und mqtt machst Du ohne TLS?  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Ich lese und teste auch den halben Tag schon. Hatte bisher immer nur Endgeräte bei denen man alles einträgt.

Nun habe ich mir einen Client auf dem PC installiert. Über PS geben ich dem Client die Infos die er mir in dem entsprechendem FHEM Device bereit stellen soll.
MQTT ist bei den meisten lot Geräten ohne alles.. Da kannst du alles mit lesen. Deswegen sind die auch ganz weit weg und kommen über 10 Ecken an mein Netz.

Ich teste gerade ohne TLS. Aber soweit ich gelesen habe, soll das auch verschlüsselt gehen. Wobei ich das bei MQTT noch nie gesehen habe.
Aber ich lese, wie schon gesagt auch noch wie es am besten ist usw. Am Ende ist @Beta-User schuld das ich MQTT mittlerweile so mag :-P

Ich baue erst mal zu ende und würde mich am WE aber noch melden. Es wird sicher nicht der schönste Weg sein aber für das was ich vor habe ist das klasse!

Danke für Eure Unterstützung! Ohne die Ideen wäre ich auch nicht weiter gekommen!

Otto123

Naja da sind wir ja auf einem ähnlichen "Stand" mit mqtt. Ich habe mir ein paar wlan Stecker besorgt um mit mqtt zu spielen :) und mir attrTemplate anzuschauen ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Zitat von: 87insane am 05 Oktober 2019, 12:44:27
Am Ende ist @Beta-User schuld das ich MQTT mittlerweile so mag :-P
Es entbehrt nicht einer gewissen Ironie, wenn du mich im Zusammenhang mit diesem seltsamen OS aus redmond erwähnst :P . Und die "Schuld" darfst du eher Rudi geben, der hat die Module gebaut, die das so flexibel handhabbar/konfigurierbar machen ;D .

Zitat von: Otto123 am 05 Oktober 2019, 13:35:44
Ich habe mir ein paar wlan Stecker besorgt um mit mqtt zu spielen :) und mir attrTemplate anzuschauen ;)
@Otto: Du weißt doch: WLAN ist sch...e  ;D ;D ;D
(aber attrTemplate cool :P ). (Vielleicht magst du das bei HTTPMOD mal näher ansehen, da sind ein paar templates drin, die "verbesserungsfähig" wären, aber ich bin nicht so der geübte regexer... Und evtl. hast du noch ein paar Sachen auf Lager, die man da zweckmäßigerweise reinpacken könnte?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Dauert leider noch. Zum einen war ich mal spontan unterwegs und zum anderen muss ich so was wie eine Warteschlange bauen, damit keine Nachrichten verloren gehen. An sich habe ich aber eine lauf fähige Lösung. Will nur nix Posten was am ende Probleme macht.

Nochmal danke für die ganzen Ideen!

Otto123

#14
Zitatich habe mich gestern sehr lange mit den Passwörtern in PS auseinander gesetzt. Zudem habe ich mir mal ein aktuelles PS Buch besorgt.
Soweit so gut... Nun habe ich dein Script auch verstanden. Womit ich allerdings auch mit Beschreibungen noch nicht klar komme sind die param().
Da ich nur den Teil mit dem PW benötige, benötige ich natürlich nicht $Share usw.

Ca. so wollte bzw würde ich das übernehmen:

$PWDFile="C:\Users\BENUTZERNAME\Downloads\pwfile.txt"

#Wenn Passwort nicht gespeichert vorhanden passwort abfragen und File erzeugen
If (-not (test-path $PWDFile)) {
    $credential = Get-Credential -Credential $UserName
    $credential.Password | ConvertFrom-SecureString | Set-Content $PWDFile
    }

#Credential aus Passwort Datei und Username erzeugen
$encrypted = Get-Content $PWDFile | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential($UserName, $encrypted)


und bekomme ein Problem bei der initialisierung von userName.


New-Object : Ausnahme beim Aufrufen von ".ctor" mit 2 Argument(en):  "Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "userName" ungültig ist. Ändern Sie den
Wert des Arguments "userName", und führen Sie den Vorgang erneut aus."
In C:\Users\christk1\Downloads\test.ps1:28 Zeichen:15
+ ... redential = New-Object System.Management.Automation.PsCredential($Use ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand



Spontan ne Idee?

Vermutlich nur eine deklarations Geschichte, denke ich.
Sieht so aus als ob userName (also die Variable $UserName) irgendwie nicht gesetzt ist oder nicht zur Datei passt?

In den param() werden ja nur Variablen deklariert und die Übernahme aus der Kommandozeile geregelt.
Also stattdessen geht auch einfach
$UserName="willli"

Edit: Ich kann den Fehler nachstellen: Der kommt genau wenn $UserName nicht existiert, Du musst die Variable also am Anfang unbedingt setzen. Ansonsten wird ja auch der Abfragedialog in Zeile 3 für das Passwort nicht gestartet!

Nochmal Edit:
Dir fehlt natürlich noch das Passwort im Original zur Verwenden in deinem MQTT ich bin nicht sicher ob dort das Object direkt geht. Wenn nicht, dann so:
$credential.GetNetworkCredential().Password
$credential.GetNetworkCredential().UserName


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz