Ankündigung
Einklappen
Keine Ankündigung bisher.
Alexa Text to Speech
Einklappen
X
-
Ja, ich bin auch eher für LIB.. oder man lässt es raus aus den requirements und schreibt das in die doku.. bzw wirft nen fehler wenn man mfa nutzt und die lib fehlt. das database plugin verlangt ja auch nicht zwingend via requirements.txt pymsql, nur als beispiel.
-
Danke AndreK für die schnelle Antwort.
So exotisch scheint mir die pyotp nun auch nicht zu sein: https://pypi.org/project/pyotp/
Ich persönlich fände es am besten pyotp in die Plugin Requirements aufzunehmen. Damit wird die lib nur installiert wenn das Plugin benutzt wird. Andererseits wird sie beim Nutzen des Plugins automatisch installiert. Mit dem Kommandozeilentool muss der User noch manuell das oathtool installieren. Da wittere ich schon wieder unnütze Support Anfragen in deine Richtung :-)
Grundsätzlich finde ich es immer sauberer eine Lib zu nutzen anstelle von externen Aufrufen.psilo Was meinst du
Wenn ich mir andere Plugins, z.B. mein Deebot Ozmo Plugin, da werden wesentlich exotischere und instabilere Libs installiert (zrecks Mangel an Alternativen).
Aber du bist der Chef des Plugins, solange es funktioniert ist es mir persönlich eigentlich egal ;-)
Mit freundlichen Grüßen,
Serge
Einen Kommentar schreiben:
-
Hi Foxi352 ,
das mit der Python-Library hatte ich auch überlegt, das würde aber heißen, das jeder die Library installieren muss ob er MFA nutzt oder nicht.
Könnte man sicherlich über die requirements abdecken.
Die Frage ist, was ist uns lieber OAuth-Tool oder python-library ?
Da in der Regel von der Verwendung einer Exoten-Library abgeraten wird würde ich das OAuth-Tool mittels Popen bevorzugen, bin aber für alles offen.
Vielleicht kann noch jemand anderes ein Statement / Meinung abgeben.
Viele Grüsse Andre
Einen Kommentar schreiben:
-
Moin AndreK
Genauso macht es auch das von dir verlinkte Script. Ich hab mir das mal angesehen:
Wie du siehst ruft er auch vom Script aus das oathool auf und hängt das Resultat an das Password an. Natürlich nur wenn ein MFA Code eingegeben wurde.Code:# # add OTP if using MFA # if [ -n "${MFA_SECRET}" ] ; then OTP=$(${OATHTOOL} -b --totp "${MFA_SECRET}") PASSWORD="${PASSWORD}${OTP}" fi
Besser und sauberer würde ich es natürlich finden wenn wir eine Python Library finden die das macht anstelle von popen. Hab nach einem schnellen googlen schon mal was gefunden: https://github.com/pyauth/pyotp
Aufgerufen wird es wohl sehr einfach wie folgt:
Wobei das base32secret das MFA_SECRET istCode:totp = pyotp.TOTP('base32secret3232') totp.now() # => '492039'
Einen Kommentar schreiben:
-
Foxi352 ,
OK kann sein, dass es wie Du beschrieben hast laufen muss. Dann würde ich ins Plugin die Eingabe des MFA-Secrets einbauen.
Mittels eines popen kann das OAuth-Tool den Code berechnen und ihn ans Passwort beim einloggen anhängen.
Wie ist Deine Meinung ?
Gruss Andre
Einen Kommentar schreiben:
-
AndreK Moin
Das habe ich aber anders verstanden. Was du meinst ist der TOTP Code, also der 6-stellige OTP Code der dann hinter das Password gehängt wird. Das Problem ist, der ist dann nicht länger gültig als das Cookie und muss danach mit dem oathtool neu berechnet werden. Das wäre also kein Gewinn.
So wie ich das verstanden habe kann man dem Script auch den MFA_Code übergeben. Das ist kein 6-stelliger Code sondern wie ich im vorherigen Post geschrieben hatte ein langer Code (Beispiel siehe vorheriger Post). Damit kann das Script dann jeweils beim login selbst den 6-stelligen TOTP Code berechnen. Wahrscheinlich nutzt das Script auf der Seite das oathtool um das zu tun ....
Ich denke du verwechselst TOTP Code mit dem MFA_Code (das das war in dem QRCode angezeigt wird wenn mat ein neues Auth tool anmeldet).
Einen Kommentar schreiben:
-
Hallo Foxi352 ,
soweit ich das in den Quellen von Loetzimmer und der Edomi-Lösung erkennen konnte wird der ermittelte MFA_Code einfach hinter das Passwort gehängt.
Password = "meinPWD"
MFA_Code "123456"
Passwort mit MFA für die Anmeldung "meinPWD123456".
Das Passwort mit ergänzetem MFA-Code im Web-IF des Plugins eintragen und speichern, danach einloggen.
Man muss wohl sehr schnell sein mit der Anmeldung da das MFA-Secret nur ein paar Sekunden
(ich meine iregendwo 15 gelesen zu haben) gültig ist.
Wie gesagt, noch nicht selbst getestet
Gruss Andre
Einen Kommentar schreiben:
-
AndreK Mein importiertes Cookie hielt das erste mal ein paar Stunden. Inzwischen vielleicht noch 1 Stunde. Das Plugin ist so also mit MFA kaum bis gar nicht nutzbar. Hab meine Squeezeboxes wieder ausgegraben :-(
Aber ich geb die Hoffnung nicht auf :-)
Der von dir verlinkte Artikel erklärt dass man das oathtool Tool nutzt um ein weiteres MFA Gerät anzumelden. Dies habe ich getan und es auch mit dem oathool bestätigt.
Jetzt habe ich ein MFA String im Format(hier natürlich verändert) den ich laut Anleitung als MFA_SECRET in dem Script auf das sich diese Seite bezieht nutzen kann. Nur hat dein Plugin die Nutzung eines MFA Secrets aber (noch) nicht vorgesehen. Deshalb frage ich mich jetzt natürlich, was ich mit dem Secret anfange ?Code:E4NP GWXQ VALY HBZ3 BYFF DUEF JAPP IPYY 4JJU H62H UXPY BZ7K QEMA
Einen Kommentar schreiben:
-
Hallo Foxi352 ,
Du machst nichts falsch !
mit MFA kannst du noch folgendes probieren. Ich selbst bin noch nicht dazu gekommen das auszutesten.
Bei mir läuft ohne MFA der Auto-Login alle 5 Tage ohne Probleme durch (Ok, folgende Einschränkung, ich bekomme jedesmal per SMS und mail den Hinweis das sich jemand eingeloggt hat)
Laut EDOMI-Forum tut das. Wie gesagt selbst nicht getestet.
Wie lange hält Deine importiertes Cookie ?
Würde mich nur interessieren da die bei Amazon sehr viel umgestellt haben und ich selbst mit dem Auto-Login ohne Probleme unterwegs bin.
Gruss Andre
Einen Kommentar schreiben:
-
AndreK Läuft zwar wie gesagt jetzt, aber nie sehr lange. Wenn ich dann im WebIF des Plugin's schaue sehe ich folgendes wenn's nicht mehr funktioniert:
Ich kann mich nicht mit Usernamen / Password einloggen da ich 2FA nutze und so bei jedem SHNG Start eine SMS von Amazon bekomme mit dem Code. Den kann ich ja aber nirgends eingeben.Code:2020-06-15 17:42:33 successfully logged off
Deshalb nutze ich die Cookies.txt. Ich logge mich mit Chrome ein, setze auch das Häckchen bei "Angemeldet bleiben". Exportiere das Cookie dann und mache ein Paste in das WebIF wo ich dann auch speichere. Das Cookie funktioniert dann auch im Plugin, nur halt nicht sehr lange ...
Mache ich was falsch ?
Einen Kommentar schreiben:
-
Super, scheint zu klappen ! Danke.Zitat von AndreK Beitrag anzeigenlass mal den ersten Eintrag : weg.
Es scheint, dass kein aktueller gültiger Wert für Volume vom Device ermittelt werden konnte bzw. das die Abfrage auf einen Fehler läuft.
Bitte numeriere die Kommandos dann wieder neu durch.
Ausser, dass er natürlich jetzt nicht mehr das Default Volume setzt, das ist momentan aber OK.
Es hat aber auch schon vorher mal mit dem VolumeSet funktioniert. Ich kann aber (bis jetzt) nicht genau sagen wann es funktioniert und wann nicht ...
Ich habe eine Türklingel Logik in der ich auch das AlexaRC eingebaut hatte und ein VolumeSet auf eine Gruppe (Erdgeschoss) mache. Auch das funktioniert nicht mehr. Werde auch mal ohne VolumeSet probieren ...
Andere Frage: Man kann vermutlich keine Text2Speech auf eine Gruppe machen ?
Momentan mache ich bei Türklingel ein VolumeSet auf die Gruppe, und dann 4 einzelne Text2Speech ...
Einen Kommentar schreiben:
-
Hallo Foxi352,
lass mal den ersten Eintrag :weg.Zitat von Foxi352 Beitrag anzeigenalexa_cmd_01: True:Esszimmer:VolumeSet:40
Es scheint, dass kein aktueller gültiger Wert für Volume vom Device ermittelt werden konnte bzw. das die Abfrage auf einen Fehler läuft.
Bitte numeriere die Kommandos dann wieder neu durch.
Ich werde das mal nachstellen.
Gruss Andre
Einen Kommentar schreiben:
-
Hab das Plugin auch mal probiert. Ist wirklich cool endlich die Alexa fernsteuern zu können. Da kann ich einige Squeezeboxes ausmustern bzw umstellen.
Leider hab ich ein Problem damit das Plugin in den Items zu nutzen. Von admin WebIf aus funktioniert alles tadelos. Auch in den Items hat es schon mal funktioniert.
Plugin ist ohne Probleme eingeloggt (mit cookie transfer vom Browser):
Hier der relevante Teil der Items definition:HTML-Code:2020-06-08 18:15:18 Login-State checked - Result: Logged ON 2020-06-08 18:15:18 Status of check_login_state: 200
Nach ein paar Tests hab ich jetzt laufend diese Fehlemeldung:HTML-Code:EG: Kueche: Licht: type: bool visu_acl: rw knx_dpt: 1 knx_cache: 1/1/4 knx_send: 1/0/4 alexa_name: Licht Küche alexa_description: Küche Spots Decke alexa_actions: TurnOn TurnOff alexa_icon: LIGHT alexa_cmd_01: True:Esszimmer:VolumeSet:40 alexa_cmd_02: True:Esszimmer:StartTuneInStation:s265060 alexa_cmd_03: True:Esszimmer:Text2Speech:Hallo alexa_cmd_04: 'False:Esszimmer:Pause: '
Natürlich existiert das Device mit dem Name "Esszimmer":HTML-Code:2020-06-08 18:25:19 ERROR lib.item Item EG.Kueche.Licht: problem running <bound method AlexaRc4shNG.update_item of <plugins.alexarc4shng.AlexaRc4shNG object at 0x7f1a1bef6a90>>: Invalid URL '/api/np/player?deviceSerialNumber=<serialNumber>&deviceTyp e=<deviceType>': No schema supplied. Perhaps you meant http:///api/np/player?deviceSerialNumber=<serialNumber>&deviceTyp e=<deviceType>? Traceback (most recent call last): File "/usr/local/smarthome/lib/item.py", line 2395, in __update method(self, caller, source, dest) File "/usr/local/smarthome/plugins/alexarc4shng/__init__.py", line 336, in update_item httpStatus, myPlayerInfo = self.receive_info_by_request(myCommand.EndPoint,"L oadPlayerInfo","") File "/usr/local/smarthome/plugins/alexarc4shng/__init__.py", line 508, in receive_info_by_request response= mySession.get(myUrl,headers=myHeader,allow_redirec ts=True) File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get return self.request('GET', url, **kwargs) File "/usr/lib/python3/dist-packages/requests/sessions.py", line 519, in request prep = self.prepare_request(req) File "/usr/lib/python3/dist-packages/requests/sessions.py", line 462, in prepare_request hooks=merge_hooks(request.hooks, self.hooks), File "/usr/lib/python3/dist-packages/requests/models.py", line 313, in prepare self.prepare_url(url, params) File "/usr/lib/python3/dist-packages/requests/models.py", line 387, in prepare_url raise MissingSchema(error) requests.exceptions.MissingSchema: Invalid URL '/api/np/player?deviceSerialNumber=<serialNumber>&deviceTyp e=<deviceType>': No schema supplied. Perhaps you meant http:///api/np/player?deviceSerialNumber=<serialNumber>&deviceTyp e=<deviceType>?
Screenshot 2020-06-08 at 18.34.59.png
Bug, oder mache ich was falsch ??
Einen Kommentar schreiben:
-
Das ist falsch:
plugin_name muss lowercase sein. (so wie der Name des Verzeichnisses in /plugins geschrieben ist) und der class_name ist case sensitive.Zitat von schuma Beitrag anzeigenCode:
AlexaRc4shNG: plugin_name: AlexaRc4shNG # class_name: alexarc4shng # class_path: plugins.alexarc4shng
Und der könnte ja durchaus anders sein.
(Außerdem fehlen die Einrückungen)
Wenn das in dieser Form beschrieben werden soll, muss das zumindest so heissen:
Es sollte in Zukunft auch nur noch **plugin_name** verwendet werden. (Die Admin GUI macht das auch so).Code:AlexaRc4shNG: plugin_name: alexarc4shng # class_name: AlexaRc4shNG # class_path: plugins.alexarc4shng
Einen Kommentar schreiben:


Einen Kommentar schreiben: