[gelöst] Soundausgabe unter windows, wsl2, debian

Begonnen von the ratman, 01 April 2024, 16:57:04

Vorheriges Thema - Nächstes Thema

the ratman

Fortsetzung von https://forum.fhem.de/index.php?msg=1309425
Zitat von: Otto123 am 01 April 2024, 16:22:24Ich habe das mit tts nicht vergessen, schau ich mir an.
goil! freut mich so richtig und teste dir dumm dämlich alles, was du dann haben willst.
gut, seit ich hier 'ne möchtegern-fhem/wsl2-testumgebung hab, auch alles, was dir so einfallen mag (*). nur sagen ... wenn ich was zum laufen kriege, hast du dann 100% idiotensicher geschrieben *lach*

aber wie g'sagt: tu dir bloß nix an, wenn du nicht selber 'nen mehrwert siehst.
wirklich bringen tuts ja nur was, wenn man recht ähnliche vorgaben hat wie ich. und ich glaub', ich bin da recht einsam unterwegs in der fhem-hardware-struktur *g*.

* meine test-umgebung:
win11home auf intel core i7(gen 12) mit 16gb ram, nvidia rtx3060, 2 monitore (ist 'n hp omen schleppi), wsl2, debian aus dem win-store. alles immer tagesaktuell. für mich ein webmin, weil ich sonst bei linux weine. keine grafischen oberflächen oder sonst was.
→do↑p!dnʇs↓shit←

Otto123

#1
Ich wusste bisher nicht, dass es in Powershell so einfach ist Sprache auszugeben  ;D

Klar das Beispiel aus deinem Link funktioniert: sogar über eine RDP Sitzung auf ein Windows 11 welches auf meinem Linux Host unter KVM/qemu/libvirt läuft  ;D
Du kannst auf deinem Windows ja erstmal bloß in Powershell probieren:
Add-Type -AssemblyName System.speech
$text="Heute ist ein Schöner Tag"
(New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak($text)
Analog im wsl
text="Heute ist ein Schöner Tag"
powershell.exe "Add-Type -AssemblyName System.speech;(New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak(\"$text\")"

Edit: Wobei mir gerade einfällt, diese Sache dann quasi aus FHEM heraus im "Untergrund" zu starten und wirklich einen Sound zu hören wird wahrscheinlich eine komplizierte Nummer.
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

the ratman

#2
Zitatsogar über eine RDP Sitzung auf ein Windows 11 welches auf meinem Linux Host unter KVM/qemu/libvirt läuft  ;D
war klar, hätte ich dir um 3 in der früh auch sagen können *totlach*

jetzt kommt der onkel milchmädchen ... bitte nicht lachen.
wäre der befehl "powershell.exe" nicht auch nur ein weiterer consolenbefehl, den man in einem cmdalias wie z.b.

defmod c_dellog cmdalias dellog AS {qx(truncate $currlogfile --size 0);;Log 1, "logfile wurde gelöscht";;}

verwursten könnte?
ich hätts ja sogar probiert, wüsste ich, wie ich den ganzen sermon unfallfrei zw. die {} kriege.

auf jeden fall funzen deine beispiele mal bei mir auch ...
→do↑p!dnʇs↓shit←

Otto123

#3
Moin,

hier spricht der "Verrückte" - nach meinem letzten Post habe ich weiter gesucht und zwei mal aufgegeben - aber wie sagt man? aller guten Dinge sind drei 8)
Ausgangssituation:
Windows 11, wsl ubuntu, fhem installiert (immer noch die Test VM, alles über RDP ;) )

Eine Datei tts.ps1 im Homdedir des Windows Users (bei mir c:\users\heinz) mit diesem Inhalt
Add-Type -AssemblyName System.speech
$text="Heute ist alles ohne Fehler"
$tts=New-Object System.Speech.Synthesis.SpeechSynthesizer
$tts.Speak($text)
In der FHEM Kommandozeile folgendes Kommando einwerfen und es redet  ;D  ;D  ;D
"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe c:\\\\users\\\\heinz\\\\tts.ps1"oder blockierend
{qx '/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe c:\\\\users\\\\heinz\\\\tts.ps1' }Das schräge an dieser Zeile:
  • wsl mag für den Programm Aufruf die \ nicht
  • powershell mag für seine Scriptdatei die / nicht
  • die \ muss man in Linux verdoppeln damit sie bleiben
  • in der FHEM Kommandozeile muss man die \ (nochmal) verdoppeln damit sie bleiben
Was wahrscheinlich auch geht - die Datei im FHEM Directory:
"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe \\\\\\\\wsl$\\\\ubuntu\\\\opt\\\\fhem\\\\tts.ps1"Das habe ich mal getestet :) das gibt aber nur den Inhalt des Directory aus!!!der Befehl zum Sound steht eine Zeile höher.
{qx '/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -command dir \\\\\\\\wsl$\\\\ubuntu\\\\opt\\\\fhem' }
Ich weiß: jetzt willst Du natürlich den Text als Variable übergeben  :))
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

the ratman

#4
ein hellseher *lach*

du meine güte, du gibst ja ordentlich gas.

btw - das übergeben bei meiner jetzigen version funzt eigentlich relativ simpel:
ist auch ein cmdalias mit "say .* AS setreading doif_tts_durchsage text $EVENT"
sprich: sobald ich irgendwo ein say absetze, steht das in meinem doif, das stellt div. zustände fest und jammert dann je nachdem androiden, windosen, tv's usw. voll.
wenn man also sowas hinbekommt ... dann kann ich den ganzen alten kram quasi irgendwann mal einfach übernehmen.

1. versuch:
1) file in fhem legen und dem user/gruppe fhem/dialout übergeben
2) in der commandozeile von fhem
{qx '/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -command dir \\\\\\\\wsl$\\\\Debian\\\\opt\\\\fhem' } absetzen
3) nix zu hören

ausgabe in fhem:
    Verzeichnis: \\wsl$\Debian\opt\fhem


Mode                 LastWriteTime         Length Name                                                                
----                 -------------         ------ ----                                                                
d-----        26.03.2024     10:11                www                                                                 
d-----        26.03.2024     10:11                docs                                                                
d-----        26.03.2024     15:37                share                                                               
d-----        03.04.2024     20:24                log                                                                 
d-----        26.03.2024     10:11                lib                                                                 
d-----        26.03.2024     10:11                demolog                                                             
d-----        26.03.2024     10:11                contrib                                                             
d-----        26.03.2024     11:09                FHEM                                                                
d-----        26.03.2024     11:07                restoreDir                                                          
------        03.04.2024     20:26         423278 CHANGED                                                             
------        28.01.2024     10:20          21936 fhem.cfg.demo                                                       
------        26.03.2024     11:07          47276 MAINTAINER.txt                                                      
------        28.01.2024     10:20          46886 configDB.pm                                                         
------        26.03.2024     11:07          18092 GPL_V2.txt                                                          
------        03.04.2024     20:37           4840 fhem.cfg                                                            
------        26.03.2024     11:07         174201 fhem.pl                                                             
------        04.04.2024     12:51            151 tts.ps1                                                             
------        28.01.2024     10:20            935 README_DEMO.txt    

log bleibt leer

in der wsl-console kommt:
root@LittleBastard:/opt/fhem# ./tts.ps1
./tts.ps1: line 1: Add-Type: command not found
./tts.ps1: line 2: $'=Heute ist alles ohne Fehler\r': command not found
./tts.ps1: line 3: =New-Object: command not found
./tts.ps1: line 4: syntax error near unexpected token `$text'
./tts.ps1: line 4: `$tts.Speak($text)'

zur sicherheit das file tts.ps1:
Add-Type -AssemblyName System.speech
$text="Heute ist alles ohne Fehler"
$tts=New-Object System.Speech.Synthesis.SpeechSynthesizer
$tts.Speak($text)
→do↑p!dnʇs↓shit←

the ratman

#5
ach, da fehlt doch genau beim verwendeten der name des files *g*
{qx '/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -command dir \\\\\\\\wsl$\\\\Debian\\\\opt\\\\fhem' }

sollte wohl
{qx '/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -command dir \\\\\\\\wsl$\\\\Debian\\\\opt\\\\fhem\\\\tts.ps1' }
lauten, oder?

ich probier mal nochmal
nix zu hören, ausgabe in fhem:
Mode                 LastWriteTime         Length Name                                                                
----                 -------------         ------ ----                                                                
------        04.04.2024     12:51            151 tts.ps1  
keine meldung in der console
→do↑p!dnʇs↓shit←

Otto123

#6
Du hast jetzt den Versuch rausgenommen, der nur den Inhalt des Directory ausgibt  :))  :))  :))
So müsste es gehen
"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe \\\\\\\\wsl$\\\\ubuntu\\\\opt\\\\fhem\\\\tts.ps1"
Oder so:
{qx '/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe \\\\\\\\wsl$\\\\Debian\\\\opt\\\\fhem\\\\tts.ps1' }
Zitat von: the ratman am 04 April 2024, 12:50:18in der wsl-console kommt:
Da fehlt aber der komplette Aufruf mit powershell - die datei allein geht nur in der powershell und NICHT in der wsl Konsole!
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

Jetzt mit Parameter. Der Inhalt von tts.ps1 leicht geändert
param(
      [string]$text="Heute ist alles ohne Fehler"
)
Add-Type -AssemblyName System.speech
$tts=New-Object System.Speech.Synthesis.SpeechSynthesizer
$tts.Speak($text)
Der Aufruf in der FHEM Kommandozeile
"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe \\\\\\\\wsl$\\\\ubuntu\\\\opt\\\\fhem\\\\tts.ps1 \"Willi ist Lustig\" "
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

the ratman

#8
hehe, na weil ich qx kannte ... *g*

also folgendes in der kommandozeile:
"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe \\\\\\\\wsl$\\\\Debian\\\\opt\\\\fhem\\\\tts.ps1 \"Willi ist Lustig\" "tts.ps1 hab ich geändert

logfile fhem:
2024.04.04 13:24:08 1: logfile wurde gelöscht
\\\\wsl$\\Debian\\opt\\fhem\\tts.ps1 : Die Datei "\\wsl$\Debian\opt\fhem\tts.ps1" kann nicht geladen werden, da die
Ausf�hrung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter
"about_Execution_Policies" (https:/go.microsoft.com/fwlink/?LinkID=135170).
In Zeile:1 Zeichen:1
+ \\\\wsl$\\Debian\\opt\\fhem\\tts.ps1 "Willi ist Lustig"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : Sicherheitsfehler: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess



PS C:\Users\the-r> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned
→do↑p!dnʇs↓shit←

Otto123

#9
In der Admin Powershell Konsole:
Set-ExecutionPolicy RemoteSignedDamit tut er es bei mir.

Aber ok Du verwendest jetzt \\wsl$\... - das ist für ihn ev. remote. Ich verwende /mnt/c/...

Dann braucht es bei Dir ev.
Set-ExecutionPolicy Unrestrictednicht schön :(
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

the ratman

jetzt wirds mühsam *g*

also aus dem cheffsesselC:\Windows\System32>Set-ExecutionPolicy RemoteSigned
Der Befehl "Set-ExecutionPolicy" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
→do↑p!dnʇs↓shit←

Otto123

Nicht aus dem Chefsessel sondern in der Admin Powershell Konsole - erkennbar am PS ganz vorne im Prompt ;)
PS C:\Users\heinz> Set-ExecutionPolicy UnrestrictedHier warst Du doch schonmal richtig
PS C:\Users\the-r> Get-ExecutionPolicy -List
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

the ratman

#12
gut, also zur sicherheit direkt aus dem menü die powershell mit rechtsklick als admin starten:
PS C:\Users\the-r> Set-ExecutionPolicy RemoteSigned
Set-ExecutionPolicy: Access to the path 'C:\Program Files\PowerShell\7\powershell.config.json' is denied.
To change the execution policy for the default (LocalMachine) scope, start PowerShell with the "Run as administrator" option. To change the execution policy for the current user, run "Set-ExecutionPolicy -Scope CurrentUser".
fux, ich hab als admin gestartet! der fragt mich ja sogar noch, ob ich mir sicher bin, dass ich admin sein will ...habs
im rechtsmenü is also ein unterschied von "als admin starten" oder ps dort nochmal mit rechts und danan "als admin starten" heiliger bimbam!

neuer versuch:
\\\wsl$\\Debian\\opt\\fhem\\tts.ps1 : Die Datei "\\wsl$\Debian\opt\fhem\tts.ps1" kann nicht geladen werden, da die
Ausf�hrung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter
"about_Execution_Policies" (https:/go.microsoft.com/fwlink/?LinkID=135170).
In Zeile:1 Zeichen:1
+ \\\\wsl$\\Debian\\opt\\fhem\\tts.ps1 "Willi ist Lustig"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : Sicherheitsfehler: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\the-r> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    Unrestricted
→do↑p!dnʇs↓shit←

Otto123

Aber bei mir funktioniert, das
{qx '/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe \\\\\\\\wsl$\\\\ubuntu\\\\opt\\\\fhem\\\\tts.ps1 \"Willi ist Lustig\" ' }Mit
PS C:\Users\heinz> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned
Aber ich habe nicht Powershell 7 ...
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

the ratman

#14
ich auch - ohne admin:
PowerShell 7.4.1
PS C:\Users\the-r>
mit admin:
PowerShell 7.4.1
PS C:\Users\the-r>


wem gehört bei dir die .ps1? ich habs fhem/dialout geändert - richtig?

hab jetzt mal auch das tts-file in mein userverzeichnis gelegt und mit
"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe c:\\\\users\\\\the-r\\\\tts.ps1"
selbe meldung
→do↑p!dnʇs↓shit←

Otto123

#15
Ich habe 5.1

Wem die gehört sollte egal sein, die wird nur gelesen. Je nachdem wie und woher Du kopiert hast könnte die Datei noch dieses "Remote geblockt attribute" haben. Schau mal mit dem explorer rein - eigenschaften Datei
\\wsl$\Ubuntu\opt\fhem
Oder versuche sowas in der Powershell
Unblock-File \\wsl$\Ubuntu\opt\fhem\tts.ps1
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

the ratman

#16
PowerShell 7.4.1
PS C:\Users\the-r> Unblock-File \\wsl$\Debian\opt\fhem\tts.ps1
PS C:\Users\the-r>

"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe \\\\\\\\wsl$\\\\Debian\\\\opt\\\\fhem\\\\tts.ps1 \"Willi ist Lustig\" "weiterhin die gleiche meldung
übrigens ohne "" auch in der wsl-konsole direkt
→do↑p!dnʇs↓shit←

Otto123

Letzte Idee: Mit dem Zusatz?
"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass \\\\\\\\wsl$\\\\Debian\\\\opt\\\\fhem\\\\tts.ps1 \"Willi ist Lustig\" "
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

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

the ratman

#19
Deine Konsole macht 7.4 unser Aufruf mit Pfad 1.0 die Version 5?fragst mich das ernsthaft? ich hab tatsächlich 0 gemacht. der schleppi ist mit halinstalliertem win11home so bei mir angekommen. hab dann nur nach deiner blog-anleitung sicherheitshalber geschaut, ob eh wsl2 rennt.

wir hätten auch gleich mit deiner letzten idee anfangen können *lach*

"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass \\\\\\\\wsl$\\\\Debian\\\\opt\\\\fhem\\\\tts.ps1 \"Willi ist Lustig\" ""willi ist lustig", tönts hier grade lustig um meine ohren.

gratulation und vielen thx - jetzt kann ich da draus ja quasi ein cmdalias machen, mit say As ... oder so?


nachtrag: und fallst mich fragen willst: auch ich hab nur ein unter-dir "1.0" im powershell-dir ...

in der reg hab ich aber auch 2 powershells:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine]
"ApplicationBase"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0"
"ConsoleHostAssemblyName"="Microsoft.PowerShell.ConsoleHost, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=msil"
"ConsoleHostModuleName"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\Microsoft.PowerShell.ConsoleHost.dll"
"PowerShellVersion"="2.0"
"PSCompatibleVersion"="1.0, 2.0"
"RuntimeVersion"="v2.0.50727"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine]
"ApplicationBase"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0"
"ConsoleHostAssemblyName"="Microsoft.PowerShell.ConsoleHost, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=msil"
"ConsoleHostModuleName"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\Microsoft.PowerShell.ConsoleHost.dll"
"PowerShellVersion"="5.1.22621.1"
"PSCompatibleVersion"="1.0, 2.0, 3.0, 4.0, 5.0, 5.1"
"PSPluginWkrModuleName"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\system.management.automation.dll"
"RuntimeVersion"="v4.0.30319"

ich glaub', ich mach' mir jetzt ein bier auf ... du kriegst auch eines, also muss ich wohl 2 in mich füllen ...
→do↑p!dnʇs↓shit←

Otto123

Gibt es da bei Dir einen Unterschied? in der CMD
"%ProgramFiles%\PowerShell\7\pwsh.exe" -command Get-ExecutionPolicy"%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe" -command Get-ExecutionPolicyOder PS
& $env:ProgramFiles\PowerShell\7\pwsh.exe -command Get-ExecutionPolicy& $env:WINDIR\System32\WindowsPowerShell\v1.0\powershell.exe -command Get-ExecutionPolicy
Zitatich hab tatsächlich 0 gemacht
Ich habe mal installiert, danach gibt es im Windows Terminal zweimal Powershell Konsole: eine Hellblaue und ein Dunkelblaue  :o  :))

Naj, hab ich das auch mal gemacht ...
Zitat von: the ratman am 04 April 2024, 14:31:38jetzt kann ich da draus ja quasi ein cmdalias machen, mit say As ... oder so?
Ja sollte so gehen ...
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

the ratman

#21
Ich habe mal installiert, danach gibt es im Windows Terminal zweimal Powershell Konsole: eine Hellblaue und ein Dunkelblaue  :o  :))gut, dann hat das aber hp so vorgesehen. ich hab damals dumm dämlich losgelegt, ohne was nachzuinstallieren ... kann ich ausnahmsweise nicht mitlachen. genau sowas bricht so halb-wissenden wie mir das genick ... wärst das jetzt nicht du, dürfte ich mir wieder anhören, was für ein fauler, unwissender depp ich doch bin.

jo
PS C:\Users\the-r> & $env:ProgramFiles\PowerShell\7\pwsh.exe -command Get-ExecutionPolicy
Unrestricted
PS C:\Users\the-r> & $env:WINDIR\System32\WindowsPowerShell\v1.0\powershell.exe -command Get-ExecutionPolicy
Restricted

pööser purche *g*
Ja sollte so gehen ... ich krieg' die "" und ;; nicht auf die reihe *g*


nachtrag:
der vollständigkeit halber ... ich hab im startmenü genau eine "PowerShell 7 (x64)" zum anklicken.
nix weiter, auch net bei m wie microsoft oder w wie windoof ...
→do↑p!dnʇs↓shit←

Otto123

#22
Gut - Deine Ausgabe erklärt wenigsten das Verhalten - darauf muss man erstmal kommen: 2 mal PS und 2 unterschiedliche Umgebungen auf einem Windows  :o

Zitat von: the ratman am 04 April 2024, 15:01:17ich krieg' die "" und ;; nicht auf die reihe *g*
Wenn Du mir erklärst, warum diese beiden Zeilen funktionieren,
" /mnt/c/Program\ Files/PowerShell/7/pwsh.exe -ExecutionPolicy Bypass \\\\wsl$\\ubuntu\\opt\\fhem\\tts.ps1 'willi ist Lustig' ""/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass \\\\\\\\wsl$\\\\ubuntu\\\\opt\\\\fhem\\\\tts.ps1 \"Willi ist Lustig\" "Und die hier nicht
" /mnt/c/Program\ Files/PowerShell/7/pwsh.exe -ExecutionPolicy Bypass \\\\\\\\wsl$\\\\ubuntu\\\\opt\\\\fhem\\\\tts.ps1 \"Willi ist Lustig\" "helfe ich dir  :))  :))  :))

Aber dann gehe ich erstmal zum Stammtisch - ich tausche quasi diese Bauerschaale gegen Gerstenkaltschale ;)

Nachtrag: Ich sage Dir das mit den "" und ;; und \" usw. ist alles kaum vorhersehbar, da hilft (mir) auch nur ein bisschen Wissen und ganz viel Geduld beim probieren. 
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

the ratman

#23
also das liegt eindeutig an den derzeitigen sonnenflecken-aktivitäten - du noob hast ja gar keine ahnung *lach*
ein bisschen Wissenja, wenn man das auf brot schmieren könnte, hätt ichs auch.ganz viel Geduldoh, neue fremdwörter für mich ...

genieße dein bier, hast dir verdient! ich spende wohl heute 'ne ganze kiste an dich ... muss ich dann wieder alleine saufen, ich armer *g*
→do↑p!dnʇs↓shit←

Otto123

#24
Guten Morgen,

die Anleitung, ich teile die Dinge gerne auf, um die Verdopplung und escapen halbwegs zu überschauen.
Das PS Script ist ja schon da, wir bauen zum Aufruf des PS Scripts noch ein Shell Script welches dann durch den alias aufgerufen wird.

alias -> shell Script -> powershell Script

wsl öffnen und dort als fhem arbeiten:
sudo -su fhemShell Editor öffnen
nano ~/wtts.shdort hinein diesen Code und speichern.
/mnt/c/Program\ Files/PowerShell/7/pwsh.exe -ExecutionPolicy Bypass \\\\wsl$\\ubuntu\\opt\\fhem\\tts.ps1 "$1" Jetzt muss in der FHEM Kommandozeile dies gehen
"bash wtts.sh 'Willi wieder da' "Wenn ja dann FHEM alias machen
define c_wtts cmdalias wtts .* AS {qx "bash wtts.sh '$EVENT' "}Und dann sollte gehen:
wtts Hedda kann in FHEM reden
Was mir jetzt nicht gefällt: das blockiert FHEM für die gesamte Ausgabe.
Das könnte man in FHEM so umgehen
{system("bash wtts.sh '$EVENT' &")}Die Powershell bzw. die System.Speech von Windows bietet aber auch eine alternative Ausgabe $tts.Speak() -> $tts.SpeakAsync()

Ich habe das jetzt immer nur mit drei Worten getestet - keine Ahnung was passiert wenn man dort einen Roman einwirft :)

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

the ratman

super sache - funzt sogar bei mir auf anhieb *g*

na dann romanisieren wir mal mit {system("bash wtts.sh '$EVENT' &")} *g* -->


wtts
wtts Die Powershell bzw. die System.Speech von Windows bietet aber auch eine alternative Ausgabe $tts.Speak() -> $tts.SpeakAsync()

Ich habe das jetzt immer nur mit drei Worten getestet - keine Ahnung was passiert wenn man dort einen Roman einwirft :)


also inkl. [ code] mal auf ganz blöd mit wtts drinnen, $, usw.
das frisst er - sogar mit den eckigen klammern, blaaa

man könnte sich max aufregen, dass ich in fhem ein "-1" als rückmeldung kriege, das log bleibt angenehm leer
→do↑p!dnʇs↓shit←

Otto123

Na da haben wir gestern gut vorgearbeitet  8)  ;D  :))
Zitat von: the ratman am 05 April 2024, 15:18:48dass ich in fhem ein "-1"
Ja das ist der system() Aufruf, könnte man mit einem return'' danach unterdrücken.
{system("bash wtts.sh '$EVENT' &");;return'' }Oder die qx() Variante nehmen und die ps1 ändern.
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

the ratman

ich hab nun, nur zur sicherheit, folgendes stehen: wtts .* AS {system("bash wtts.sh '$EVENT' &");;return'' }ausgabe kommt, "-1" kommt nicht, was will man mehr?

würde sagen: so einfach kommst sonst nirgends zu einer verständlichen tts ohne zwischennetz und riesen spielchen *g*

* the ratman ist absolut glücklich und zufrieden - vielen, vielen dank!
→do↑p!dnʇs↓shit←

betateilchen

Dafür, dass hier im Thread-Titel schon recht lange "erledigt" steht, wird hier aber noch ganz schön lange hinterher diskutiert...  8)

Zitat[erledigt] hmusb - neuer versuch einer verbindung unter windows, wsl2, debian
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

naja das war die Bonusaufgabe :) - ich könnte schauen ob und wie es geht und den Teil mit wsl und Sound abspalten, der passt ja nicht zu Homematic.
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