Autor Thema: Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version  (Gelesen 5103 mal)

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3532
Liebe Eltern von Kindern, die eine Nintendo Switch besitzen...

Ich hatte schon lange vor die Zeitbeschränkungen der Nintendo Switch in FHEM zu integrieren, mit Hilfe von Google und mitmproxy konnte ich die Kommunikation jetzt größtenteils entschlüsseln und habe ein Modul gebastelt, das bisher folgendes kann:
* Spielzeit der letzten x Tage auslesen
* Aktuelle Beschränkungen auslesen (Spieldauer pro Tag, Gute-Nacht Alarm etc..)
* Beschränkungen ändern (Alarme für heute deaktivieren, einzelne Tage/jeden Tag ändern etc...)
* Direkt-Befehle um Spielzeit und Gute-Nacht-Zeit  für heute zu ändern

Das Modul ist coding-mäßig stark optimierbar, offene Punkte sind vor allem:
* keine Doku (CommandRef)
* aktuell sind die API-Abfragen blockierend ein paar weniger wichtige Abfragen sind noch blockierend
* Es muss manuell ein Session-Token erstellt werden - mir fehlt die Langzeit-Erfahrung, wie häufig das gemacht werden muss (bei mir läuft das Ding jetzt seit > 1 Monat ohne neu-Generierung, scheint also kein wirklich kritisches Thema zu sein)
* Die Fehlerbehandlung ist noch nicht überall sauber

Das Modul benötigt MIME::Base64::URLSafe, installieren über cpan oder mit:
sudo apt-get install libmime-base64-urlsafe-perl

Define einfach über
define switch NSPC

dann muss das Session token generiert werden,

get switch getUrl

danach wird eine URL angezeigt, diese in den Browser pasten, bei Nintendo anmelden, mit der rechten Maustaste auf "Diesen Account verwenden" klicken und die Link Adresse kopieren. Anschließend:
get switch sessionCode <kopierter Link>


Nun können erstmalig die Daten abgefragt werden:
get switch query

Set Kommandos
alarmState, ist das, was in der Switch App "Disable Alarms for today" heisst. Die doppelte Verneinung vermeiden wir hier, "on" heißt, Beschränkungen aktiviert, "off" heißt keine Beschränkugen
bedtimeDay setzt die Gute Nacht Zeit und erwartet einen Komma-getrennte Liste der Form: Wochentag|Uhrzeit, als Wochentage erlaubt sind mo,tu,we,th,fr,sa,su und all (für die allgemeine Einstellung), also z.B.:
set switch bedtimeDay mo|21:00,tu|20:00 all|21:00
maxtimeDay setzt die maximale Spieldauer und erwartet einen Komma-getrennte Liste der Form: Wochentag|Minuten, als Wochentage erlaubt sind mo,tu,we,th,fr,sa,su und all (für die allgemeine Einstellung), also z.B.:
set switch maxtimeDay sa|120,su|120,all|60
restrictionMode setzt den Modus (nur benachrichtigen oder pausieren) und mit
timerMode wird eingestellt, ob die generellen Einstellungen oder tages-indiviuelle Einstellungen aktiv sind.
addBedtimeToday und addMaxtimeTodayerwarten einen Wert in Minuten und erhöhen/reduzieren (negative Werte sind möglich) die maximale Spieldauer/Gute-Nacht-Zeit um den jeweiligen Wert.

Attribute
ns_interval, das (in Sekunden) angibt wie häufig der Status abgerufen werden soll (letztendlich das selbe wie get query nur timer-gesteuert)
ns_summaryDays für wieviele Tage werden die Spielzeiten abgerufen (default 7)

Readings

* xx_date und xx_time enthalten die Tages-Statistiken (Spielzeit) für die letzten n Tage
* playtimeToday, bedtimeToday und maxtimeToday enthalten die jeweiligen Werte für den aktuellen Tag
* account.* und device.* enthalten ein paar Infos zum Nintendo-Account bzw. zum Switch-Device (derzeit wird jeweils nur ein Account/eine Switch unterstützt)
* pc_.* enthalten Informationen zu den aktuellen Spieldauer-Einstellungen

Das Modul ist noch in der Entwicklungs-Phase aber bei mir im produktiven Einsatz. Ich hätte gerne Feedback, ob das überhaupt jemand braucht und wie es genutzt wird, daher die aktuelle Version angehängt...

Grüße,

Oli




« Letzte Änderung: 14 März 2020, 00:43:08 von KernSani »
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...
Gefällt mir Gefällt mir x 3 Informativ Informativ x 2 Liste anzeigen

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3532
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #1 am: 04 Januar 2020, 23:42:57 »
Da sich das Interesse noch in Grenzen hält, habe ich für mich ein bisschen weiter gebastelt (Anhang im ersten Post) und
* einen Großteil der API-Aufrufe auf nonBlocking umgestellt
* ein paar Komfortfunktionen gebastelt:
- separate Readings für aktuelle und maximale Spielzeit und Gute-Nacht-Zeit für den aktuellen Tag
- Direktbefehle um Spielzeit/Gute-Nacht-Zeit für den heutigen Tag zu ändern

Neben dem neuen Direktbefehl (heute 30 Minuten verlängern) nutze ich das Modul vor allem, um jede Nacht, meine default-Werte wieder herzustellen.

defmod ev_switch_default DOIF ([03:00])((set switch bedtimeDay mo|20:00,tu|20:00,we|20:00,th|20:00,fr|20:00,sa|21:00,su|21:00))\
    ((set switch maxtimeDay mo|60,tu|60,we|60,th|60,fr|60,sa|120,su|120,all|60))\

attr ev_switch_default do always
attr ev_switch_default wait 0,5
Edit: Angepasstes DOIF, mit Verzögerung, da sich die beiden set-Befehle sonst in die Quere kommen.
« Letzte Änderung: 06 Januar 2020, 21:24:14 von KernSani »
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline Det20

  • Sr. Member
  • ****
  • Beiträge: 746
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #2 am: 06 Januar 2020, 20:41:54 »
Sehr interessant, danke, schaue ich mir mal an

Offline masterpete23

  • Full Member
  • ***
  • Beiträge: 493
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #3 am: 07 Januar 2020, 09:24:12 »
Danke. Das ist super!

Offline caldir65

  • Full Member
  • ***
  • Beiträge: 275
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #4 am: 28 Januar 2020, 14:24:16 »
Moin,
hört sich interessant an - schaue ich mir auch mal an

Gruß, Christoph
Raspi 4 mit RaspiOS Buster und aktuellem fhem (auf SSD), Homematic-Devs, Shellys, Rademacher, NextCloud-Anbindung, Fully+TabletUI2 uvm.

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3532
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #5 am: 10 Februar 2020, 17:09:35 »
Ich hatte kürzlich etwas Probleme mit "malformed JSON", was zum FHEM-Neustart geführt hat, daher habe ich die Fehlerbehandlung verbessert. Aktualisierte Version im ersten Post.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline caldir65

  • Full Member
  • ***
  • Beiträge: 275
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #6 am: 13 März 2020, 19:41:18 »
Moin,

ich habe jetzt verucht, das Modul einzubinden - leider klappt ab dem get token nicht mehr - im Log erscheint dann:

2020.03.13 19:35:25.502 5: [switch] Get Token
2020.03.13 19:35:25.502 5: [switch] GetBearer - Session Token is xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2020.03.13 19:35:32.201 1: [switch] - Received invalid JSON: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/98_NSPC.pm line 1036.

2020.03.13 19:35:32.201 5: [switch] GetMe - Access Token is
2020.03.13 19:35:39.556 5: [switch] GetMe - received <html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
</body>
</html>

2020.03.13 19:35:39.557 1: [switch] - Received invalid JSON: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<html>\r\n<head><tit...") at ./FHEM/98_NSPC.pm line 1036.

2020.03.13 19:35:39.557 5: [switch] GetDevice - Starting Blocking Call
2020.03.13 19:35:39.560 5: [switch] Get Summary
Mehr passiert leider nicht.

Die Config
Internals:
   AUTHCODE   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   FUUID      5e63b1d4-f33f-378b-bbb4-092d0063e25581d9
   NAME       switch
   NR         1909
   SESSIONTOKEN exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   STATE      pc_alarm playtimeToday/maxtimeToday bedtimeToday
   TYPE       NSPC
   READINGS:
     2020-03-13 19:33:18   code            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     2020-03-13 19:35:41   error           not_found
     2020-03-13 19:35:41   error_description HTTP 404 Not Found
     2020-03-13 19:33:18   session_token   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

   helper:
Attributes:
   ns_interval 3600
   ns_summaryDays 7
   room       Web
   stateFormat pc_alarm playtimeToday/maxtimeToday bedtimeToday
   verbose    5

Gruß, Christoph
Raspi 4 mit RaspiOS Buster und aktuellem fhem (auf SSD), Homematic-Devs, Shellys, Rademacher, NextCloud-Anbindung, Fully+TabletUI2 uvm.

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3532
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #7 am: 14 März 2020, 00:44:31 »
Moin,

ich habe jetzt verucht, das Modul einzubinden - leider klappt ab dem get token nicht mehr - im Log erscheint dann:


Ich habe gerade eine aktualisierte Version am ersten Post angehängt. Probier die bitte mal (wahrscheinlich musst du die komplette Prozedur von Anfang an wiederholen)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline caldir65

  • Full Member
  • ***
  • Beiträge: 275
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #8 am: 19 März 2020, 10:36:27 »
Moin,

bin erst jetzt dazu gekommen, das neue Modul einzubinden (und neu zu definieren wie oben), und jetzt scheint es zu funktionieren - allerdings habe ich erst nach einem reload der Seite im Browser plötzlich auch Readings, die vorher nicht kamen.

Werde weiter testen

Gruß, Christoph
Raspi 4 mit RaspiOS Buster und aktuellem fhem (auf SSD), Homematic-Devs, Shellys, Rademacher, NextCloud-Anbindung, Fully+TabletUI2 uvm.

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3532
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #9 am: 20 März 2020, 00:27:18 »
Moin,

bin erst jetzt dazu gekommen, das neue Modul einzubinden (und neu zu definieren wie oben), und jetzt scheint es zu funktionieren - allerdings habe ich erst nach einem reload der Seite im Browser plötzlich auch Readings, die vorher nicht kamen.

Werde weiter testen

Gruß, Christoph
Neue Readings werden bei FHEM immer erst nach einem page reload dargestellt. Nur die Aktualisierung bereits existierender Readings findet "live" statt. Sollte also kein Problem sein.

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline fhem-mn

  • Newbie
  • Beiträge: 1
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #10 am: 05 Mai 2020, 02:06:25 »
Danke ;D, ich finde das sehr gelungen und werde es weiter ausprobieren. Die Installation hat schon mal geklappt.
Welches Konto empfielt sich zu verwenden, das Kinder oder das Parent-Konto (habe ich derzeit gewählt)?
Welche Parameter ließen sich vielleicht noch einstellen bzw. auslesen: Welcher User hat die Switch verwendet? Welches Programm? (Das zeigt die Switch App am Handy an).
Für mich wäre interessant, die Daten so zu bekommen, dass ich das Logfile (mit regex) gut auswerten kann: d.h. Spielzeit heute getrennt nach User und Programm.
Zuletzt noch eine Frage, ließe sich das auch für die XboxOne umsetzen (ich habe 2 Kinder  :o)?
« Letzte Änderung: 05 Mai 2020, 02:09:26 von fhem-mn »

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3532
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #11 am: 05 Mai 2020, 23:07:14 »
Hallo fhem-mn,

willkommen im Forum. Ist ja mutig, dass du dich bei deinem ersten Post gleich an ein als "Alpha-Version" tituliertes Modul wagst ;-)
Das Parent-Konto ist das Richtige, also das, mit dem du dich auch an der App angemeldet hast.
Die Daten die du möchtest kann ich ich definitiv mit einlesen. Ich habe nur gerade keine wirklich zündende Idee, wie ich diese dann vernünftig in Readings darstelle. Ich mach mir mal ein paar Gedankem. Kann aber ein bisschen dauern, bis ich es umgesetzt habe.

Und dir wird in der App aufgefallen sein, dass das alles mit einer gewissen Verzögerung aktualisiert wird. Das wird das Modul nicht besser können, d.h. im Nachhinein auswerten ist ok, quasi in realtime zu steuern welches Kind wieviel spielen darf geht nicht.
XBox habe ich nicht. Gibt es da auch eine "Parental Control" App? Dann geht es wahrscheinlich, es muß sich nur jemand finden, der es bastelt ;-)

Grüße,

Oli 
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline masterpete23

  • Full Member
  • ***
  • Beiträge: 493
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #12 am: 12 April 2021, 12:21:09 »
HI, wie ist hierzu der aktuelle Stand?

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3532
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #13 am: 12 April 2021, 12:52:05 »
HI, wie ist hierzu der aktuelle Stand?
Aktuelle Stand ist, dass ich das Modul weiterhin persönlich nutze und seit ewigen Zeiten auf der Todo-Liste habe, das mal "rund" zu machen. Anregungen sind immer willkommen.
Grüße,
Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline caldir65

  • Full Member
  • ***
  • Beiträge: 275
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #14 am: 10 Juli 2021, 09:23:21 »
Moin,

ist mir aufgefallen beim fhem-Update - es wird eine Fehlermeldung ausgeworfen:Calling /usr/bin/perl ./contrib/commandref_join.pl -noWarnings, this may take a while
*** EN FHEM/98_NSPC.pm: ignoring text due to DOS encoding
*** DE FHEM/98_NSPC.pm: ignoring text due to DOS encoding
Mir ist aber nichts aufgefallen, was soweit nicht (mehr) funktioniert ...

Gruß, Christoph
Raspi 4 mit RaspiOS Buster und aktuellem fhem (auf SSD), Homematic-Devs, Shellys, Rademacher, NextCloud-Anbindung, Fully+TabletUI2 uvm.

Offline HeikoE

  • Full Member
  • ***
  • Beiträge: 110
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #15 am: 05 September 2021, 21:45:04 »
Hallo KernSani,
ich habe heute Deim Modul gefunden und wollte es direkt mal probieren.
Ich bekomme ein Session Token und es wird zumindest teilweise akzeptiert. Das Reading "account_nick" zeigt zum Beispiel den korrekten Namen.
Ansonsten gibt es aber folgende Meldung:
error  not_found
error_description  HTTP 404 Not Found
Im Log (verbose = 5) findet sich:
2021.09.05 21:19:40 4: [NintendoSwitch] Processing Queue: NSPC_getDevices
2021.09.05 21:19:40 5: [NintendoSwitch] GetDevice - Starting Blocking Call
2021.09.05 21:19:41 5: [NintendoSwitch] GetDevice - received {"type":"https://moon.nintendo.com/errors/v1/400/update_required","status":400,"errorCode":"update_required","title":"UpdateRequiredException","detail":"","instance":"https://api-lp1.pctl.srv.nintendo.net/moon/v1/users/xxxxxxxxxxxxxxxxx/devices"}
2021.09.05 21:19:41 5: [NintendoSwitch] GetDevice - JSON is: $VAR1 = {
          'detail' => '',
          'errorCode' => 'update_required',
          'instance' => 'https://api-lp1.pctl.srv.nintendo.net/moon/v1/users/xxxxxxxxxxxxxxxxx/devices',
          'status' => 400,
          'title' => 'UpdateRequiredException',
          'type' => 'https://moon.nintendo.com/errors/v1/400/update_required'
        };

2021.09.05 21:19:41 4: [NintendoSwitch] Processing Queue: NSPC_getDailySummary
2021.09.05 21:19:41 5: [NintendoSwitch] Get DailySummary - received {"type":"https://moon.nintendo.com/errors/v1/404/not_found","status":404,"errorCode":"not_found","title":"NotFoundException","detail":"HTTP 404 Not Found","instance":"https://api-lp1.pctl.srv.nintendo.net/moon/v1/devices//daily_summaries"}
2021.09.05 21:19:41 5: [NintendoSwitch] Get DailySummary - JSON is: $VAR1 = {
          'detail' => 'HTTP 404 Not Found',
          'errorCode' => 'not_found',
          'instance' => 'https://api-lp1.pctl.srv.nintendo.net/moon/v1/devices//daily_summaries',
          'status' => 404,
          'title' => 'NotFoundException',
          'type' => 'https://moon.nintendo.com/errors/v1/404/not_found'
        };

2021.09.05 21:19:41 4: [NintendoSwitch] Processing Queue: NSPC_getPCSettings
2021.09.05 21:19:41 5: [NintendoSwitch] Get PCSettings - received {"type":"https://moon.nintendo.com/errors/v1/404/not_found","status":404,"errorCode":"not_found","title":"NotFoundException","detail":"HTTP 404 Not Found","instance":"https://api-lp1.pctl.srv.nintendo.net/moon/v1/devices//parental_control_setting"}
2021.09.05 21:19:41 5: [NintendoSwitch] Get PCSettings - JSON is: $VAR1 = {
          'detail' => 'HTTP 404 Not Found',
          'errorCode' => 'not_found',
          'instance' => 'https://api-lp1.pctl.srv.nintendo.net/moon/v1/devices//parental_control_setting',
          'status' => 404,
          'title' => 'NotFoundException',
          'type' => 'https://moon.nintendo.com/errors/v1/404/not_found'
        };
Ein unterschied zu Deiner Erklärung fällt mir auf: Du schreibst
Zitat
mit der rechten Maustaste auf "Diesen Account verwenden" klicken und die Link Adresse kopieren.
Bei mir steht da "Diese Person auswählen". Auf dem Handy wird mit diesem Link die Nintendo App geöffnet.
Gibts noch irgendwas zu wissen?
Viele Grüße,
Heiko

Offline wolfram

  • Full Member
  • ***
  • Beiträge: 176
Antw:Modul 98_NSPC - Nintendo Switch Parental Control - alpha Version
« Antwort #16 am: 14 September 2021, 10:42:31 »
Hallo HeikoE,

ich habe genau das gleiche Problem wie Du. Ich bekomme auch ein "Update required".
Hast Du schon eine Lösung dafür gefunden?

Viele Grüße
wolf

 

decade-submarginal