Frag mich gerade ob das ein Fragmentierunsproblem sein könnte, sprich, das zu erwartende Paket
wurde bereits einmal verkleinert und soll wiederum verkleinert werden, hmmm... da könntest Du mal die MTU auf 1400 setzen.
Aber heutzutage ... nicht sicher ... bin schon ewig aus der Materie heraus.
Beiträge von ClaudiaF
-
-
> Sind die dropped Packets möglicherweise das Problem ?
So weit ich weiß, nein, das sind eher Pakete die das Interface empfangen hat aber nicht erwartet wurden.
Kannst Du ein ethtool -i eth0 ausführen? Weiß jetzt gerade nicht ob das im CoreELEC enthalten ist.Gruß
Claudia -
Als Inspiration zu sehen.
Ich habe ein kleines Addon um einen Lüfter am RPi3 zu betreiben geschrieben.Python
Alles anzeigenimport time import os import xbmc import sys sys.path.append('/storage/.kodi/addons/virtual.rpi-tools/lib') GPIO_PIN_18 = 18 START_FAN_TEMP = 55 STOP_FAN_TEMP = 40 FAN_IS_RUNNING = False SLEEP_TIME = 30 def setup(): GPIO.setmode(GPIO.BCM) GPIO.setup(GPIO_PIN_18, GPIO.OUT) GPIO.setwarnings(False) def get_temperature(): res = os.popen('vcgencmd measure_temp').readline() temp = res.replace('temp=','').replace("'C\n",'') return temp if __name__ == '__main__': try: import RPi.GPIO as GPIO monitor = xbmc.Monitor() setup() xbmc.[definition='1','0']log[/definition](u"ADDON: CONTROLFAN started", level=xbmc.LOGNOTICE) while not monitor.abortRequested(): if monitor.waitForAbort(SLEEP_TIME): break temp = get_temperature() if (float(temp) > START_FAN_TEMP) and (FAN_IS_RUNNING is False): GPIO.output(GPIO_PIN_18, True) FAN_IS_RUNNING = True elif (float(temp) <= STOP_FAN_TEMP) and (FAN_IS_RUNNING is True): GPIO.output(GPIO_PIN_18, False) FAN_IS_RUNNING = False GPIO.cleanup() except ImportError: xbmc.[definition='1','0']log[/definition](u"ERROR: CONTROLFAN needs RPi.GPIO library installed ", level=xbmc.LOGNOTICE) finally: xbmc.[definition='1','0']log[/definition](u"ADDON: CONTROLFAN stopped", level=xbmc.LOGNOTICE)
das dazugehörige addon.xml
XML
Alles anzeigen<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="service.other.controlfan" name="Control Fan" version="0.0.1" provider-name=""> <requires> <import addon="xbmc.python" version="2.1.0"/> </requires> <extension point="xbmc.service" library="service.py" start="login"/> <extension point="xbmc.addon.metadata"> <platform>all</platform> <summary lang="en">Control Fan</summary> </extension> </addon>
Vlt. hilft es Dir weiter.Gruß
Claudia -
Das mit dem Service Addon hatte ich auch überlegt, aber da muss dann das Problem mit der Playlist gelöst werden, oder?
Das Service-Addon läuft doch in einem anderen Thread und wenn Du dann versucht auf die Playlist von dort aus zu ändern,
wird das nicht funktionieren, da das Playlistobjekt nur in dem Thread in dem es kreiert wurde auch veränderbar sein sollte, denke ich jedenfalls.Nur aus Neugier, was benutzt Du für Reverse Engineering? Wireshark und Webbrowser-Debugconsole?
Cheers
Claudia -
Was ich bisher herausgelesen bzw. erzählt bekommen habe ist, dass wenn es mit einem Script-Addon gelöst werden soll,
muss dieses alle Controls selber erstellen - ist also wie Skinning zu betrachten, nur halt nicht ganz so umfangreich aber schon
erheblich mehr Arbeit als mit einem Plugin-Addon.Cheers
Claudia -
@L0RE - ich würde nicht sagen, dass das ein Bug war/ist, habe auch mehrere Addons gesehen welche das so benutzen aber zwei
Kodi-Entwickler meinten dass dies so nicht vorgesehen war (siehe z.B. mein trac ticket)Bezgl. der plugin/script internas bin ich mir immer noch nicht 100% sicher, aber ich denke ja, dass sollte via script-addon realisierbar sein.
Muss mir bei Gelegenheit doch mal den C++-Source anschauen.Wenn ich das bis jetzt so richtig verstanden habe, dann war/ist das Konzept das ein Plugin-Addon nur eine Teilmenge von einem Script-Addon ist,
sprich alles was mit einem Plugin-Addon realisierbar ist sollte mit einem Script-Addon ebenfalls realisierbar sein und noch mehr.Interessiert mich nun selber - ich schau mir das mal an und geb Dir wieder Bescheid
Cheers
Claudia -
Hallo @L0RE,
also wenn ich das Problem richtig verstehe, musst Du bis 10 Minuten vor Ende des aktuellen Streams warten bis Du auf die neuen Streamdaten zurückgreifen bzw. abholen kannst, korrekt?
Wenn dem so ist, heisst das ja auch das Du im Script bleiben musst was aber bei einem Plugin-Addon nicht vorgesehen ist.
Mein Verständnis dazu ist, dass das Addon eigentlich ein Script-Addon mit eigenem Player sein müsste.
Wenn ich falsch liegen sollte, hoffe ich das mich jemand berichtigt.Cheers
Claudia -
Hallo @L0RE,
hab es gerade erst gesehen, schaue mir das morgen bzw heute (irgendwann nach der Arbeit an)
Geb wieder Bescheid und ruhe dich aus - gute Besserung.Gute Nacht
Claudia -
Hallo @L0RE
ich hatte eine Diskussion bezgl. der Benutzung der Player-Klasse innerhalb eines Plugins (nicht eines Scripts).
Anscheinend ist es so, dass es nicht vorgesehen ist, dass diese Klasse von Plugins benutzt wird, anstelle
soll nur die Playlist übergeben werden. Bei Benutzung der Klasse kann es zu unvorhergesehenen Problemen kommen.Für deinen Code würde das bedeuten, dass Du an zwei Stellen etwas ändern müsstest.
Python
Alles anzeigendef addDir(name, url, mode, thumb, desc="",seite=1,anz=0,serienname=0,stattfolgen=0,play=0,_isFolder=True): . . . if play==1: liz.setProperty('IsPlayable', 'true') _isFolder = False ... ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, listitem=liz, isFolder=_isFolder)
_isFolder habe ich im Funktionsheader hinzugefügt.
Dieser Parameter muss, wenn das Item playable ist, auf False gesetzt werdenDesweiteren müsste in der playplaylist Funktion playlist.clear() und xbmc.Player().play(playlist) gelöscht bzw. kommentiert werden.
playlist.clear ist anscheinend dafür verantwortlich dass der erste Titel übersprungen wird
und xbmc.Player().play(playlist) sollte, wie bereits erwähnt, in einem Plugin nicht benutzt werden.Mit den Änderungen werden die jeweiligen MTV-Playlists bei mir abgespielt.
Cheers
Claudia -
Ja, es ist das Zusammenspiel von addDirectoryItem und dem Listitem, sprich,
wenn Du in einem Listitem die Eigenschaft isPlayable auf true setzt und bei addDirectoryItem
den default isFolder=False benutzt kommt es zu deinem Szenario dass das erste Item
einer playlist übersrpungen wird.Das trac ticket habe ich mit den Infos aktualisiert.
Cheers
Claudia -
trac ticket updated - verursacht durch eine Kombination von setProperty und isFolder
Cheers
Claudia -
Bezgl. Kodi v18 und erster Titel in Playlist wird übersrungen, es scheint ein Problem zu geben, wenn der Link, welcher zum abspielen dient nicht als Folder markiert wird.
Wenn ich in der addLink Funktion ein isFolder=True anhänge, habe ich das Phänomen nicht.ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, listitem=liz, isFolder=True)
Bezgl Background-Playback habe ich nicht geschaut. Mal schauen ob ich die Tage dazu komme.
Cheers
ClaudiaEdit: Sieht so aus, als ob damit auch das Problem mit dem Background-Playback gelöst ist.
-
Danke für die Rückmeldung, bin allerdings verwirrt dass das resize2fs danach nötig war.
parted man page
Resize the filesystem on partition so that it begins at start and ends at end (by default in megabytes).Wieder etwas gelernt
Cheers
Claudia -
Hab es ehrlich gesagt noch nie selber probiert aber mit parted solltest Du es wie folgt machen können
parted resize 2 539MB 7818MB
Wie gesagt, habe ich selber noch nie probiert.
Cheers
Claudia -
Nein, das hast Du falsch verstanden.
Auf dem NAS legst Du ein Skript an
vim /tmp/shutdown_nas.sh
Inhalt
speichern und dem Skript Ausführungsrechte gebenchmod u+x shutdown_nas.sh
danach legst Du mit dem Program crontab einen cronjob an, welcher über den cron daemon ausgeführt wird.
crontab -e
speichern - exit.
mit crontab -l kannst Du prüfen ob der Job erstellt wurde.Nun würde minütlich geprüft ob eine Datei namens test_datei im Verzeichnis /tmp existiert und wenn ja, die gelöscht.
Im Beispiel habe ich sowohl das Skript als auch die Datei die zu prüfen es gilt im Verzeichnis tmp. In einer produktiven
Umgebung würdest Du wenigstens das Skript in einem anderen Verzeichnis speichern, da beim Neustart das tmp immer wieder
neu estellt wird, sprich alles was vorher dort war ist nach dem Neustart gelöscht.Nun erstelle von Kodi aus , zum Beispiel durch copy, eine Datei namens test_datei im Verzeichnis /tmp und Du wirst sehen,
dass diese nach spätestens einer Minute nicht mehr existiert. Wenn das funktioniert, brauchst Du nur noch das Skript dahin erweiteren,
das nach dem löschen der Datein das System heruntergefahren wird - fertig, dein NAS wird dann gestoppt wenn Du die Datei erstellst.Solltest Du von Kodi aus keine Schreibrechte auf /tmp auf deinem NAS haben, dann nimm ein Verzeichnis auf welchem Du die Rechte
besitzt und passe das Skript dementsprechend an.Der User der das Skript ausführt muss natürlich auch das Recht haben das System zu stoppen.
Cheers
Claudia -
Also mein RPi3 läuft 24/7 und ist daher immer vor meinem TV an und ich habe das Problem nicht.
Das einzige was ich in der config.txt bezgl. hdmi habe isthdmi_force_hotplug=1Cheers
ClaudiaEdit: Sorry, geht ja über CEC - da hab ich überhaupt nichts in der config.txt eingetragen.
-
QNAP nutzt auch Linux so wie z.B. Synology. Cron wird bei QNAP wohl als "crontab" bezeichnet.
Aber wenn ich das richtig verstehe, laufen deine Lösungen auf das selbe hinaus wie der Vorschlag von 'SkyBird1980':
Punkt 2 in Beitrag #2.
Kann ich nicht sagen, da ich nicht weiß wie das NAS die Untätigkeit ermittelt, kann per Cron, per Event, per Timer ... sein.
Mein Ansatz ist folgender:Ein cronjob läuft z.B. alle Minute um die Existenz einer Datei zu prüfen. Ist die Datei vorhanden, dann wird der Befehl zum shutdown ausgeführt,
ist die Datei nicht vorhanden wird der cronjob beendet.Die Datei würdest Du dann einfach erstellen wenn Du möchtest, dass das NAS herunterfahren soll. Da dein Kodi ja bereits über eine Verbindung zum NAS verfügt, musst Du nur sicherstellen, dass es einen Platz gibt wo Du von Kodi aus auf das NAS schreiben darfst. Wenn dieser Platz dann zufällig
auch noch das tmp Verzeichnis des NAS ist, kannst Du Dir auch das Löschen der Datei schenken, da Dateien im tmp Verzeichnis automatsch gelöscht
werden.Cheers
Claudia -
Ich kene QNAP nicht, aber es sieht so aus als ob dies unter einem Linux läuft, oder?
Wenn ja, gibt es da einen cron?
Wenn dem auch so ist, warum nicht einen Job einrichten der prüft ob eine bestimmt Datei vorhanden ist und im
Falle das dem so ist, dann die Datei löscht und runterfährt?
Vielleicht hat das NAS auch die Möglichkeit eines Filemonitorings, dann könte man dies darüber auch lösen.
Das würde Dir die ganze Arbeit bezüglich remote shell, server etc... abnehmen.Cheers
Claudia -
>Hmm, ich hab das mal beobachtet...
>Bin ich mit jemanden auf einer Wellenlänge, könnt ich Stundenlang... Alles mögliche. Da wird nichts langweilig.
>Echt jetzt... Hast Du da wirklich andere Erfahrungen?Hmm, ich weiß nicht ob das, jedenfalls von mir, beantwortet werden kann, ist eher etwas für Philosophen.
Anfangs mag eine Glückseligkeit in der Gemeinsamkeit sein, aber kann das von Dauer sein?
Wenn wir alle auf der gleichen Wellenlänge sind, heisst das doch auch das wir alle das selbe machen, denken,
fühlen etc... Wo sind dann die Spannungen, die, meiner Meinung nach, das Salz in der Suppe sind.Ich meine, solange es verschiedene Meinungen gibt, werden wir permanent auch an dem wachsen was andere
vertreten. Nur durch das miteinander diskutieren, auch miteinander streiten, werden wir uns weiterentwickeln.
Ich würde vermuten das eine Welt, wo alle auf einer Wellenlänge sind, still steht. Woher kommen die neuen
Akzente - scheint kein Bedarf da zu sein.Über so etwas könnte ich stundenlang ... aber ich glaube wir haben den Thread schon mehr als gewünscht
in eine andere Richtung abdriften lassen.Cheers
Claudia -
andererseits wäre es natürlich ganz langweilig wenn wir alle auf der selben Wellenlänge wären, oder?
Aber ja, an sich selbst kann/sollte man arbeiten und mit sich selbst sollte man zufrieden sein dann
ist der erste Schritt für ein glückliches Zusammensein getan.Cheers
Claudia