Wenn kodi gestartet ist, dann in die shell einloggen und den Befehl 'ps -aux' ausführen. Dann bekommst Du eine Liste von allen laufenden Programmen.
In der rechten Spalte taucht dann irgendwo Kodi auf. Diese Zeile suchen und auf die erst Spalte schauen. Das ist der user mit dem dann 'Kodi gestartet wurde.
Ein/Aus Status Widget
-
Mc-Raw -
6. Februar 2017 um 21:53 -
Unerledigt
-
-
Wenn kodi gestartet ist, dann in die shell einloggen und den Befehl 'ps -aux' ausführen. Dann bekommst Du eine Liste von allen laufenden Programmen.
In der rechten Spalte taucht dann irgendwo Kodi auf. Diese Zeile suchen und auf die erst Spalte schauen. Das ist der user mit dem dann 'Kodi gestartet wurde.Moin,
ps -aux geht unter LibreELEC nicht, aber ps -TCodePID USER TIME COMMAND 246 dbus 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation 352 avahi 0:00 avahi-daemon: running [LibreELEC.local]
die restlichen Prozesse sind als root ausgeführt worden.
bg -
-
Da bin ich so erstmal überfragt. Dann kann es ja sein das Kodi als root läuft. Was noch getestet werden könnte ist denn kompletten Pfad zum ping Befehl mt in den shell execute schreiben und dann mal testen.
Unter linux reicht es im Normalfall einzugeben 'which ping' Dann steht dort der komplette Pfad zum ping.
Dann in Zeile 36 von 'command="ping -i 1 -c 1 " + hostname' z.B. nach 'command="/bin/ping -i 1 -c 1 " + hostname' umändern. Den Pfad dann anpassen.Ich habe versucht LibreElec in meiner VM zu installieren. Die Installation geht soweit, das starten auch aber ich bekomme kein Bild ohne Fehlermeldung. Jetzt komme ich da nicht weiter.
Evtl. muss Du mal im LebreElect Forum nachfragen, woran das liegen kann.
-
Ich teste deine Ansätze mal und gebe bescheid.
Seltsam ist, dass ich per SSH den Ping Befehl nutzen kann. Egal in welchem Verzeichnis ich mich befinde. -
-
-
-
-
Zum testen ändere dann in Zeilen 37 und 164 von
'response = subprocess.call(command)' nach 'response = os.system(command)' -
Ja, so funktioniert es:
command="ping -c 1 " + hostname
response = os.system(command) -
-
Ja, so funktioniert es:
command="ping -c 1 " + hostname
response = os.system(command)hab mich zu früh gefreut, bzw nicht alles getestet.
mein label $INFO[Window(Home).Property(SkinHelperPING.serveron)] zeigt mir unter LibreELEC nun immer an, dass der/die Server online sind.
Habe 2 IPs eingetragen. 1x NAS, 1x TVH-Server
- NAS ist jetzt aus
- TVH läuft
Müsste also im Label eine 1 stehen. Steht aber eine 2.Im LOG erscheint kein Fehler mehr.
bg -
Sowas habe ich mir gedacht. os.system gibt den Status nicht zurück. Da scheint immer true drin zu stehen, auch wenn der Ping Fehlerhaft war. Deswegen hatte ich subprocess.call eingesetzt.
Ich versuche nochmal etwas anderes.
-
-
So, hier nochmal eine neue Version https://drive.google.com/open?id=0B0jBz…QWE4VjVnZ3RNTDA
Bitte testen. Da ich den Code unter Windows nicht testen konnte, musste ich alles blind programmieren. Ich hoffe ich habe keine Fehler drin. -
Schau doch einfach mal, was genau dort zurückgegeben wird, indem man die Ausgabe bspw ins Log schreiben lässt.
Infos zu den Rückgabewerten gibt's hier nochmal:Ich verwende immer noch die Grundfunktion des Addons
Python
Alles anzeigen# -*- coding: utf-8 -*- import xbmc import xbmcaddon import subprocess import sys import socket import json import time from multiprocessing import Process import threading import os import xbmcgui import time import urllib2 import subprocess, platform __addon__ = xbmcaddon.Addon() __addon_id__ = __addon__.getAddonInfo('id') __addonname__ = __addon__.getAddonInfo('name') __icon__ = __addon__.getAddonInfo('icon') __addonpath__ = xbmc.translatePath(__addon__.getAddonInfo('path')).decode('utf-8') __settings__ = xbmcaddon.Addon(id="service.skinhelper.PING") WINDOW = xbmcgui.Window(10000) class MyAddon: def Ping(self,hostname,kodiproperty,onpix,offpix): response = os.system("ping -c 1 " + hostname) #xbmc.[definition='1','0']log[/definition]("DEBUG PING Helper:"+ str(response), level=xbmc.LOGNOTICE) if response == 0: WINDOW.setProperty(kodiproperty,onpix) else: WINDOW.setProperty(kodiproperty,offpix) def __init__(self): self.Ping("192.168.2.100","SkinHelperPING.server1","backg/on.png","backg/off.png") count = 0 while(not xbmc.abortRequested): xbmc.sleep(100) count += 1 if count == 200: count = 1 try: self.Ping("192.168.2.100","SkinHelperPING.server1","backg/on.png","backg/off.png") #self.Ping("192.168.1.11","SkinHelperPING.server2") #self.Ping("192.168.1.12","SkinHelperPING.server3") #self.Ping("192.168.1.13","SkinHelperPING.server4") except Exception as msg: xbmc.[definition='1','0']log[/definition]("PING Helper:" + str(msg) , level=xbmc.LOGNOTICE) xbmc.[definition='1','0']log[/definition]("PING Helper service: start", level=xbmc.LOGNOTICE) MyAddon() xbmc.[definition='1','0']log[/definition]("PING Helper service: stop", level=xbmc.LOGNOTICE)
Infos zu ping subprocess oder os.system gibt's hier nochmal: http://stackoverflow.com/questions/2281…ping-via-python
Habs mittlerweile noch ein Bisschen umgebaut, so dass ich eine Notification bekomme, wenn sich der Status ändert, also der Server on oder offline geht. Funktioniert bei mir mit allen 4 Geräten im Netzwerk einwandfrei.
-
-
So, hier nochmal eine neue Version https://drive.google.com/open?id=0B0jBz…QWE4VjVnZ3RNTDA
Bitte testen. Da ich den Code unter Windows nicht testen konnte, musste ich alles blind programmieren. Ich hoffe ich habe keine Fehler drin.fast. die ping zeile funktioniert nur mit "ping -c1", und um die zeit etwas zu minimieren habe ich es noch mit "ping -c1 -w1 " probiert.
das kappt wunderbar
bg -
Deinem Wol-Popup würde ich vielleicht noch einen Hintergrund spendieren, der das Bild dahinter abdunkelt und dem Popup selbst ne kleine Animation, die es einblenden lässt. Wenn das im Script überhaupt möglich ist.
Ich baue gerade mein eigenes auf den Skin angepasstes Custom_Window. Danke deiner Befehle und Propertys die du eingebaut hast, geht das sehr gut!
Danke.Hast du noch vor das Script ins Repo der Nerds zu packen?
bg -
-
Einen Hintergrund ist nicht ganz so einfach, da dies nicht in der Base Class des Frameworks vorgesehen ist. Da würde einiges an Änderung erfordern.
Eine Animation ist jetzt drin. Ich habe den Code ein wenig aufgeräumt.
Im Ping für Linux habe ich den Parameter -w 1 reingepackt.
Wenn jemand das Script in die Repo packen will, gerne.Hier noch der Link: https://drive.google.com/open?id=0B0jBz…QWE4VjVnZ3RNTDA
Bitte noch einmal testen. Dann kann es so übernommen werden.
-
Ich teste es.
@L0RE ich werde das Addon in die Repo legen. OK?
bg -
-
Scheint soweit alles zu laufen. Ich habe mir mal herrausgenommen die Animationszeit etwas zu verkleinern.
Der Ping Befehl läuft nun so wie er soll. Ist der denn auch für andere Systeme passend? Linux, MAC OS ... ?
bgEdit: mir fällt gerade noch was ein.
Eine readme Datei fehlt noch und vielleicht noch eine Standard License Datei.
Soll ich da mal was zusammenstellen oder möchtest du das selbst machen?
In der readme würde ich die Skinmigration auflisten. -
-
-
@_Andy_
BJ1 und ich sind schon mal etwas aktiv geworden. Ich hoffe ich habe dich jetzt nicht zu sehr überumpelt.
Da ich die Großschreibung ändern möchte, muss auch die common.pyo geändert werden.
addon id und skin ordner heißen jetzt script.skinhelper.ping. BJ1 meinte es gibt höchstwahrscheinlich Probleme damit.
Hier liegt das Projekt nun: https://github.com/blauesgruen/skinhelper.ping
Kannst du die pyo Datei noch anpassen?
bg -
Hallo
Nein, ist OK. Kannst Du bzw. Ihr machen. Freut mich, wenn evtl. auch andere davon nutzen haben. Die pyo Dateien sind vom Compiler generierter Objekte. Die werden, wenn nicht vorhanden zur ersten Laufzeit ode bei Veränderung der py angelegt. Im Sourcecode haben die nichts zu suchen.
Also einfach alle .pyo Files auf github löschen.
-
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!