LibreElec auf dem Raspberry Pi 3B+ - Rückmeldung erhalten, wenn Kodi ausgeführt wird.

  • Hallo!

    Wer kennt eine Möglichkeit den Betrieb von Kodi (Raspberry Pi/LibreElec) abzufragen, also eine Rückmeldung zu erhalten, das Kodi ausgeführt wird.

    Der Optimalste Fall wäre eine einfache Pegeländerung an den GPIO-Ports. Unter Kodi habe ich folgendes AddOn installiert, da ich es zum Runterfahren des Systems per Taster nutze.

    https://www.matthuisman.nz/2018/10/gpio-m…odi-add-on.html

    Leider kann dieses AddOn aber scheinbar nur eingehende Pegel verarbeiten, also den Wechsel von "Hi" auf "Low" an den GPIO-Ports und daraufhin etwas geschehen lassen.
    Schön wäre es, wenn ich einen Pin am GPIO-Port (oder sonstiges) nach dem Kodi hochgefahren ist und ausgeführt wird, von "Low" auf "Hi" (3,3v oder 5V) ansteigen lassen könnte.

    Vielleicht gibt es auch eine Andere Art der Rückmeldung??!
    Hat jemand einen Tipp?

  • Ich bin mir unsicher, ob ich es richtig verstehe....aber egal. Ich schreibe einfach mal was ;)

    Kodi ist unter LibreELEC ein "Service". Man kann Kodi dementsprechend mit systemctl stop kodi stoppen oder auch mit systemctl restart kodi Kodi einem restart erzwingen.

    Alternativ kann man auch mit systemctl status Kodi den aktuallen Status abfragen.

    Wenn ich gestoppt habe, sieht eine Zeile der Ausgabe so aus:

    Active: inactive (dead) since Mon 2019-01-14 10:57:29 UTC; 2s ago

    Wenn der Service läuft:

    Active: active (running) since Mon 2019-01-14 10:59:20 UTC; 4s ago

    Wenn ich es richtig verstehe, kann dieses Addon aber "nur" die built in python Funktionen ausführen. Da müsste man dann halt noch ein wenig Hand anlegen und ggf. was mit System.exec oder so basteln, dass auf dem System ein Kommando ausgeführt wird, welches den Status abfragt. Ggf auch ein Script triggern, welches dann vielleicht sowas wie:

    Bash
    #!/bin/bash
    
    
    if (systemctl status kodi | grep -iq "running"); then
        <some command>
    else
        <some_other_command>
    fi

    macht. Das prüft nach dem String "running" in der Zeile und wenn er gefunden wird, dann macht du dies und wenn nicht, dann machst du das.

    Wie du das aber als Rückmeldung in Kodi bekommst, weiß ich nicht. Du könntest ggf noch mit kodi-send arbeiten um was in Kodi ausführen zu lassen. Aber da kennst du das Add-on definitiv besser als ich ;). Ggf. reicht es ja auch dann weiter was aus System-Ebene zu machen, anstelle es Kodi ausführen zu lassen.

    Ein Einzeiler hier auf meiner VM bringt auf jeden Fall das gewünschte Ergebnis:

    if (systemctl status kodi | grep -iq "running"); then echo "ok"; else echo "not ok"; fi

    Antwortet mit "ok", wenn Kodi läuft und mit "not ok" wenn Kodi nicht läuft.

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

  • @don

    Mit dem "Hi" an dem GPIO-Ports möchte ich gerne Signale an meine Microkontroller-Platine senden um den Microkontroller dann etwas ausführen zu lassen.

    Als ich Kodi noch auf einen PC laufen hatte, nutzte ich ein kleines Programm, welches ein Freund mir geschrieben hat. Dies gab über die COM-Schnittstelle zum Beispiel ein Signal raus, wenn ich in Kodi einen Film gestartet/gestoppt habe. Mit diesem Signal habe ich dann über meinen Microkontroller das Licht dimmen lassen, sobald der Film gestartet wurde. War der Film zuende, bzw. wurde dieser durch "Stopp" unterbrochen, dimmte das Licht wieder hoch.
    Diese Funktion hätte ich gerne wieder...

  • @yard2

    Mit JSON hat mein Freund auch die Auswertung für das kleine Programm für den PC gemacht, welches dann per COM-Schnittstelle Signale an meinen Microkontroller gesendet hat.
    Dieses Programm ist jedoch eine EXE-Datei.
    Wie könnte ich denn beispielsweise vom Raspberry etwas auf diesem Weg zum Microkontroller senden?

  • Es gibt (gab) ein Addon RPi-Tools aus dem inoffiziellen Repo. Das sollte sowas können ohne Umwege gehen zu müssen und damit musst Du auch nicht abfragen, ob Kodi läuft oder nicht: https://forum.libreelec.tv/thread/1754-pr…pi-tools-addon/

    Ggf. auch mal hier nachlesen: RPi.GPIO Addon?
    Bzw hier: https://github.com/LibreELEC/Libr…i-tools-depends
    Und hier: https://kodi.wiki/view/Raspberry_Pi#Remote_controls
    Oder auch hier: http://www.endyourif.com/setting-up-rpi-gpio-with-openelec/
    Oder hier: https://forum-raspberrypi.de/forum/thread/2…nicht/?pageNo=1

    Oder einfach mal @CvH lieb fragen :)

  • Du musst im Prinzip das Windows Programm auf Linux portieren.
    Das überwacht die Kodi JSON Schnittstelle und setzt dann die IO ports.
    Evtl gibt es ein Kodi JSON Python Skript irgendwo was man verwenden könnte.

    Y.A.R.D.2 IR Receiver / Sender / Wakeup & RTC Wakeup & LCD
    Link

  • Also wenn das selbe wie oben für den PC beschriebene beabsichtigt ist, dann könnte man das auch über eine kleine Adaption im Skin lösen. Ein <onload> in der VideoFullScreen.xml, das ein kleines Python-Skript startet, welches wiederum einen GPIO-Pin auf High setzt. Mit einem <onunload> kann man den Pin dann beim Beenden des Videos ebenso wieder zurücksetzen.

    Code
    <window>
            <onload>RunScript(Pfad/zum/Skript/LichtAus.py)</onload>
            <onunload>RunScript(Pfad/zum/Skript/LichtAn.py)</onunload>
    	<controls>
            ...
  • Hey Leute, ich glaube, ich bin echt zu blöd dafür... Ich habe gerade gar keine Ahnung, wie ich all Eure reichlichen Information Umsetzen kann, bzw. wie ich damit weiter komme.

    Die Links von root2 wirken sehr interessant, aber mir fehlt das Backgroundwissen, wie ich irgendetwas davon auf den Raspberry Pi unter Libreelec installieren und zum Laufen bringen kann. Auch tue ich mich ein wenig schwer mit den zum Teil englischen Tutorials :(

    Kann mir jemand noch ein wenig unter die Arme greifen und mir einen Weg zeigen, wie ich beispielsweise ein funktionierendes GPIO-Addon unter Libreelec installieren kann?!

    Vielen Dank

  • Wo hängts denn? Die von @root2 geposteten Links sind doch recht aufschlussreich. Lies dir z.B. im letzten Link (https://forum-raspberrypi.de/forum/thread/2…nicht/?pageNo=1) mal Post #5 durch. Da wird beschrieben wie man die rpi tools unter LE installiert. Die brauchst du, um in LE Python-Skripte ausführen zu können. Und Python ist das Mittel der Wahl, um am Pi mit den GPIOs zu interagieren.

    Mehr kann man dir im Moment nicht raten, da du bisher ja nicht genau gesagt hast, was konkret du eigentlich machen möchtest. Ich habe dir oben schon eine mögliche Lösung geschrieben. Aber ob dein Problem zu meiner Lösung passt, das kannst nur du wissen.

  • Ich versuche jetzt einfach mal mich Schritt für Schritt ranzutasten und mit der Zeit all dir hier nicht nur zu lesen, sondern es auch zu verstehen.

    Ich habe mir jetzt über "Addons" das Addon "Raspberry Pi Tools (9.0.105 von Team LibreELEC)" runtergeladen und installiert.

    Unter "Addons/Programm-Addons" ist es nun auch als installiert zu sehen. Wähle ich es an und drücke dann auf "Ausführen" erhalte ich die Meldung: "This is a console-only addon".

    Demnach muss ich jetzt auf anderen Wege weitermachen um das gewünschte Resultat zu erzielen...
    Ich denke, ich muss jetzt irgendein Script schreiben, oder so, damit das Addon seine Dienste verrichtet... und da ist dann auch der Haken... Ich habe aber so was von keine Ahnung, wie?!

    Für den Anfang würde ich jetzt erst einmal folgendes machen wollen...

    -> Sobald LibeELEC nach dem Start hochgefahren und einsatzbereit ist, soll sich ein Pin an der GPIO-Leiste (z.B. GPIO4) von 0V auf 3,3V ändern.

    Ich hoffe Ihr könnt mich Schritt für Schritt ranführen, so das ich es dann am Ende auch endlich mal verstanden habe... :(

    Danke :)

  • -> Sobald LibeELEC nach dem Start hochgefahren und einsatzbereit ist, soll sich ein Pin an der GPIO-Leiste (z.B. GPIO4) von 0V auf 3,3V ändern.

    Und was soll dann passieren, wenn der Pin auf High ist? Sei doch nicht so sparsam mit deinen Informationen!
    Nur mal so nebenbei: sobald der Pi an ist, liegen auf Pin 1 sowieso 3,3V an. Da braucht es überhaupt kein Skript dazu …

  • Nur mal so nebenbei: sobald der Pi an ist, liegen auf Pin 1 sowieso 3,3V an. Da braucht es überhaupt kein Skript dazu …


    Das stimmt nicht ganz, mit der Aussage. Am Pin 1 liegen 3,3V an, sobald der Raspberry mit mit Spannung versorgt wird. Hier wird kein Unterschied gemacht, ob Kodi gestartet ist, oder nicht. Nur wenn sich der Raspberry im Tiefschlaf befindet (PEN auf Ground) liegen 0V an Pin 1 an. Ich kann somit an diesem Pin nicht auswerten, ob Kodi gestartet und komplett hochgefahren ist.

    Mit den Pegelwechsel an der GPIO-Leiste möchte ich diverse Signal an meinen Mikrocontroller weitergeben.
    Die Rückmeldung (GPIO-Pin Wechsel auf 3,3V [Hi]) ist nur einer von vielen Dingen, die ich verwirklichen möchte.

    Auch möchte ich den Raspberry über die GPIO-Leiste einschalten, ausschalten, die Wiedergabe stoppen und so weiter.

    Ich habe eine funktionierende Multimedia-Steuerung, die ich seit langer Zeit am Laufen habe, die nun mal mit Spannungspegel arbeitet. Demnach benötige ich eine Schnittstelle, an der ich aus verschiedenen Spannungspegeln, Befehle machen kann. Aus meiner Sicht ist hierfür die GPIO-Leiste genau geeignet.

    Das Beispiel mit der Rückmeldung ist erst der erste Schritt.

    Deshalb möchte ich wissen und verstehen, wie ich aus LibreELEC raus Einfluss auf die GPIO-Leiste nehmen kann, dort Pegelwechsel hervorrufen kann und auch auf Pegelwechsel reagieren kann, wenn beispielsweise eine externe Anforderung kommt, auf die Kodi reagieren soll.

    Ich hoffe, hiermit ist mein gesamtes Vorhaben einigermaßen erklärt.

  • Sorry, aber ich steige immer noch nicht so richtig durch. Willst du nun dass der Pi etwas steuert oder dass der Pi über ein externes Gerät gesteuert wird?
    Für die GPIO gilt: ein Pin (als Ausgang definiert) ist immer entweder High oder Low. Vergiss das mit den "verschiedenen Spannungspegeln". Gleichzeitig ist zu beachten, dass man über GPIO nur eine begrenzte Menge Strom ziehen kann (allerhöchstens 16mA pro Pin und max. 50mA über die ganze Leiste – guckst du). Desweiteren: Als Eingang kann der Pi über die GPIOs von Haus aus nur digitale Signale verarbeiten. Für analoge Signale braucht es dann einen AD-Wandler.

    Generell hast du mit LibreELEC das denkbar schlechteste System, um dein Vorhaben zu realisieren. Dafür ist LE viel zu geschlossen und abgeschottet. Mit OSMC hättest du mehr Chancen. Aber wie dem auch sei – mir ist das alles zu wischiwaschi, als dass ich mich im Stande sähe, konkrete Hilfestellung zu geben.

  • Hallo Tiroler,

    vorweg möchte ich erwähnen, das ich gelernter Elektroniker bin und mich mit Spannungen, Pegel, Belastbarkeit usw. bestens auskenne. Die Software ist es, woran es bei mir hakt.

    Tatsächlich möchte ich die GPIO-Leiste nutzen, um sowohl einen Pegel an einem GPIO-Pin von Low auf High zu ändern um externe Schaltungen anzusprechen und Pegeländerungen, beispielsweise von High auf Low am einem GPIO-Pin auszuwerten um auf externe ereignisse zu reagieren.
    Ich möchte also quasi Eingänge und Ausgänge haben. Meine Mikrocontrollerboards arbeiten, wenn nötig, mit verstärkern, so das 50mA völlig ausreichend sind.

    Also, der Strom und die Spannung ist nicht mein Probllem, sondern die Verbindung/Verarbeitung zwischen Software und Hardware.

Jetzt mitmachen!

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