NAS anpingen führt zu ruckeln

  • Hallo,

    Ich möchte mein NAS anpingen und so, falls dies an oder aus geht, eine Meldung ausgeben lassen. Dies funktioniert so weit auch, ausser dass es dabei beim Filme schauen zu einem Ruckler kommt, sobald gepingt wird.

    Verwende das Script auf einem C2, der schon im Performance Mode läuft. Es liegt nur an der Zeile im Script, wo gepingt wird.

    Ehrlich gesagt, weiß ich nicht, wo ich ansetzen soll. Gibt es eventuell andere Möglichkeiten, zu schauen, ob das NAS an oder aus ist?

    Vielen Dank im voraus

  • Vielleicht ein Ansatz als Workaround.
    Ich weiss ja nicht welches NAS du im Einsatz hast aber vielleicht gibts dort im OS die Möglichkeit eine Mail abzusetzen wenn es schlafen geht/aufwacht. Ich würde dann eine Mailadresse anlegen und dann ein Addon suchen was einkommende Mails anzeigt.

    Oder vielleicht nicht über Ping checken sondern über WoL.

    Nvidia Shield TV Pro
    Server: Intel Core i3-10100 CPU @ Gigabyte B460M D3H | 4x 8TB, 3x6TB, 2x1TB Cachepool | 4x8GB DDR4-2400 | unRAID 6.11.5 | Emby | Unifi | Teamspeak | Swag | DDclient | Heimdall | PiHole |

  • Daten, Fakten..

    Welches Betriebssystem, welche Hardware.. ansonsten kann keiner helfen..

    Meine Hardware

    NAS-->: G4560, 8GB, Gigabyte DS3H- WD Red OMV 4.x (latest)| TVHeadend 4.x.x (latest) | DD CineS2 V6. (+Oscam)
    Raspi 4 --> LibreElec (latest)
    Nvidia Shield 2017

  • WoL = Wake on LAN

    Nvidia Shield TV Pro
    Server: Intel Core i3-10100 CPU @ Gigabyte B460M D3H | 4x 8TB, 3x6TB, 2x1TB Cachepool | 4x8GB DDR4-2400 | unRAID 6.11.5 | Emby | Unifi | Teamspeak | Swag | DDclient | Heimdall | PiHole |

  • Wenn ich sicher bin das die Kiste in Standby geht muss ich nicht prüfen ob die aus ist. Reicht doch vollkommen die zu wecken wenn ich sie brauche.

    Nvidia Shield TV Pro
    Server: Intel Core i3-10100 CPU @ Gigabyte B460M D3H | 4x 8TB, 3x6TB, 2x1TB Cachepool | 4x8GB DDR4-2400 | unRAID 6.11.5 | Emby | Unifi | Teamspeak | Swag | DDclient | Heimdall | PiHole |

  • Verstehe ich es denn jetzt völlig falsch? Warum sollte ein NAS denn automatisch "aus" gehen? Wenn es in "Idle" geht, heißt das doch nichts anderes, als das die Festplatten "schlafen" gehen. Das NAS und sein OS sind doch dabei immer noch per Ping erreichbar. Es dauert beim nächsten Zugriff ggf nur etwas länger, bis die Festplatten hoch gefahren sind. Somit verstehe ich den Ping gar nicht. Wenn ein Film abgespielt wird, herrscht doch ohnehin ständiger Zugriff auf das NAS und die Festplatten gehen doch gar nicht schlafen. Oder zumindest nicht die, die gerade in Benutzung ist.

    Warum also sollte man das NAS anpingen wenn ein Film davon abgespielt wird.

    Weiter bringt, wie gesagt, der Ping nichts wenn das NAS in Idle ist. Der Ping wird antworten. Egal ob es im Idle ist oder nicht. Und automatisch in "Standby" sollte es ohnehin nicht gehen. Wenn das der Fall ist, würde ich das NAS entsprechend konfigurieren.

    Man kann es aber im Script auch anders lösen. Man könnte Kodi per JSON abfragen ob Kodi einen aktiven Player hat und solange das der Fall ist, keinen Ping senden. Wenn Kodi keinen aktiven Player mehr hat, kannst du anfangen den Ping zu senden. Warum auch immer man das machen möchte ;)

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Okay, dann muss ich also nochmal mein Vorhaben genau erklären...

    Vielleicht war meine Frage auch nicht eindeutig formuliert.

    Ich habe einen Rechner im Netzwerk mit mehreren Festplatten, Filmen, Musik, etc... . Dieser wird hauptsächlich als Datengrab genutzt. Wenn nichts abgespielt wird, ist dieser Rechner im Energiesparmodus, also aus. Möchte ich jetzt etwas abspielen, kann ich den Rechner entweder durch Kodi wecken lassen oder manuell.

    Ich hätte aber gern einfach nur eine Anzeige in Kodi, die mir anzeigt, ob der Rechner angeschaltet oder aus ist.

    Ich hoffe, das war jetzt verständlich.

  • ok, jetzt kommt etwas mehr Licht ins dunkel.

    Bezteichnungen:

    Datengrab = "PC A"
    Kodi Gerät = "PC B"

    Möglichkeiten:

    1:

    Nichts tun!

    Wenn du einen Film abspielen möchtest, der in der Datenbank von Kodi auf "PC B" ist und auf "PC A" gespeichert wurde, und der "PC A" ausgeschaltet ist, wird Kodi meckern, dass der Film nicht verfügbar ist und ob du ihn aus deiner Datenbank entfernen möchtest. Das ganze kann man auch als "Benachrichtigung" verstehen, da du ja eigentlich weiß, dass er verfügbar sein sollte. Das er nicht verfügbar ist, könnte dann also 2 Ursachen haben:

    - PC A ist aus
    - Festplatte in PC A defekt

    2:

    Cronjob auf LibreELEC anlegen, der in einem bestimmten Zyklus (von mir aus alle 3 Minuten) checkt ob irgenein Film/Serie/Musik auf deiner LibreELEC Kiste läuft. Der Cronjob könnte dann entweder ein Python oder vielleicht auch ein SH-Script ausführen. Ich würde eher zu Python tendieren. Wenn das nicht der Fall ist (also kein Film oder ähnlliches im Player läuft), dann einen Ping zum entfernten Rechner senden und wenn dieser nicht beantwortet wird, einen Dialog_Ok nach Kodi senden (damit du ihn bestätigen musst), der dir dann sagt, ob der Ping positiv oder negativ verlaufen ist (Antwort: "Ping erfolgreich" oder "Ping nicht erfolgreich". Ursachen dafür, dass der Ping nicht antwortet können aber auch sein:

    - Netzwerkkabel defekt
    - Switch/Router defekt
    - Netzwerkkarte bei LibreELEC oder PC A defekt
    - PC A ist aus

    Ein nicht beantworteter Ping heißt also nicht gleich, dass der Rechner nicht an ist. Es besteht bei einem nicht beantwortetem Ping nur ein Problem mit der Verbindung von PC B zu PC A. Welche das ist, musst du immer noch manuell überprüfen.

    3:

    Ein kleines Addon schreiben, welches du bei Bedarf manuell ausführst. Dann kannst du dir den Cronjob sparen, musst aber halt auch wieder manuell ein Addon ausführen, welches ähnliches macht wie das, was ich unter "2:" vorgeschlagen habe.

    Wie genau man das schreibt, müsste ich noch in Erfahrung bringen, da ich mit JSON nicht gerade sehr erfahren bin. Daher in dem Fall auch noch kein Code-Beispiel.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Ich hätte aber gern einfach nur eine Anzeige in Kodi, die mir anzeigt, ob der Rechner angeschaltet oder aus ist.

    Nochmal: Es geht mir nur um die Anzeige. Ob der Rechner schlafen gehen sollte oder nicht, ist doch nicht relevant. Pingen funktioniert super, die Auswertung stimmt auch. Heisst, wenn der Rechner aus ist, antwortet er nicht.

    Je nach Auswertung setze ich ein property und blende dadurch ein kleines Icon ein, dass mir dies im skin anzeigt.

    Gepingt wird alle 10 Sekunden.

    Hier mein Schnipsel Code:

    Mir geht es nur darum, vielleicht herauszubekommen, warum der Ping Befehl eine hohe CPU Last auslöst und es dadurch zu Rucklern beim Filme schauen kommt, bzw ob jemand eine Lösung oder Alternativen hat.

    Mehr wollte ich nicht. ;)

  • bzw ob jemand eine Lösung oder Alternativen hat.

    Alternativen habe ich oben genannt.

    Wir sind uns doch einig, dass es absolut keinen Sinn macht, das NAS anzupingen, wenn gerade in Film davon abespielt wird, oder? Somit solltest du auch erstmal feststellen, ob Kodi gerade einen Film abspielt. Das geht (theoretisch) via JSON.

    Für die API unter Krypton:

    https://kodi.wiki/view/JSON-RPC_…etActivePlayers

    Weiter habe ich dir erklärt, dass ein nicht beantworteter Ping kein Indiz dafür ist, dass das Gerät welches du anpingen möchtest, ausgeschaltet ist. Mögliche Ursachen für einen nicht beantworteten Ping habe ich oben aufgelistet. Natürlich gehört ein ausgeschaltetes Gerät zu einer der Ursachen, es kann aber auch einige andere Ursachen haben.

    Weiter sehe ich in deinem Skript, dass du das Script "script.skinhelper.ping" aus dem Nerds Repo verwendest. Du benutzt also keine Boardmittel sondern ein zusätzliches Script. Um festzustellen, ob es tatsächlich der Ping ist, der da störend ist, oder die Notification, die dadurch ausgelöst wird, würde ich einfach mal einen Film vom NAS abspielen, mich per SSH einwählen und einen Ping auf den Server absetzen ping -c 10 <ip>. Wenn dann keine Ruckler auftreten ist das Problem NICHT der Ping, sondern ggf die Aktivität im Skin selbst.

    response = os.system("ping -c 1 " + hostname

    Grundlegend würde ich dir auch empfehlen mehr als nur einen Ping abzusetzen. Was machst du, wenn das eine Paket, welches zu absetzt, verloren geht, drei weitere, die du theoretisch senden könntest, aber ankommen? Dann bekommst du eine Meldung, dass der Server offline ist, du rennst los um zu schauen, was plan ist, stellst dann aber fest, dass er läuft. Empfehlen würde ich dir 4 Pings.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Um festzustellen, ob es tatsächlich der Ping ist, der da störend ist, oder die Notification, die dadurch ausgelöst wird, würde ich einfach mal einen Film vom NAS abspielen, mich per SSH einwählen und einen Ping auf den Server absetzen ping -c 10 <ip>. Wenn dann keine Ruckler auftreten ist das Problem NICHT der Ping, sondern ggf die Aktivität im Skin selbst

    Super, das hilft mir schon weiter, das teste ich auf jeden Fall. Danke dir.

  • Auch per SSH kam es zu gelegentlichem Ruckeln. Hab's aber jetzt geschafft und zwar mit:

    https://github.com/samuel/python-ping/blob/master/ping.py

    Damit kann ich einen PC pingen, ohne dass es beim Film schauen zu Rucklern kommt. Alle 10 Sekunden wird jetzt gepingt. Ist der PC aus, kommt logischerweise keine Antwort. Übrigens prüft das Addon advanced WoL auch standardmässig per ping, ob das wecken funktioniert hat.

    Den Status des PC s sehe ich jetzt durch ein kleines Icon im Homemenü. Zusätzlich kommt jetzt eine Nachricht, wenn der PC aus geht oder gestartet ist.

    Hab bis jetzt keinen Paketverlust feststellen können, daher reicht auch ein Ping.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!