Kodi und Kommunikation über USB

  • Kennt jemand ein Addon, mit dem Kodi via USB wie über eine serielle Schnittstelle kommunizieren kann?
    Es geht um kleine Datenmengen, die an einen über USB angeschlossenen Arduino gesendet werden und von diesem auch wieder empfangen werden sollen.
    Ein Raspi könnte das evtl. über die GPIO's. Ein Intel PC ???

    Raspi 4 / LibreElec10.0.4 / Kodi Matrix
    NUC7i5BNK / LibreElec11.0.5 / Kodi Nexus

  • JSON Strings über USB senden und die Schnittstelle soll auf eingehende Daten reagieren, egal ob gerade TV oder sonst was läuft.
    Ooops, da kommen Daten über USB rein -> Daten in Datei oder Datenbank speichern, ohne das laufende TV oder Video zu unterbrechen.

    Raspi 4 / LibreElec10.0.4 / Kodi Matrix
    NUC7i5BNK / LibreElec11.0.5 / Kodi Nexus

  • Und warum muss es unbedingt USB sein? Soweit ich weiß, kann Kodi das nicht über USB. Kodi kann das über den Aufruf der API über http

    Edit:

    Moment....möchtest du, dass Kodi was sendet oder das Kodi was empfängt? Die Frage bzgl "warum ausgerechnet über USB" bleibt aber ;)

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

  • Und warum muss es unbedingt USB sein? Soweit ich weiß, kann Kodi das nicht über USB. Kodi kann das über den Aufruf der API über http

    Und wie?
    Lauscht Kodi ständig an bestimmten Ports, ob da was rein kommt?
    USB wäre besser. Da werden Interrupts ausgelöst so wie bei Eingangssignalen von der LIRC - RC.

    Raspi 4 / LibreElec10.0.4 / Kodi Matrix
    NUC7i5BNK / LibreElec11.0.5 / Kodi Nexus

  • Kodi hat einen integrierten Webserver. Wenn du den einschaltest (unter "Einstellungen" -> "Dienste" -> "Steuerung") und dann auch noch die Steuerung durch "auf anderen Systemen befindliche Anwendungen" zulässt, dann kannst du die JSON-RPC ansprechen. Da hast du dann ziemlich viele Optionen:

    https://kodi.wiki/view/JSON-RPC_API/v12

    Eine Kommunikation kann dann via "curl" stattfinden oder auch über den Browser abgesetzte HTTP Requests. Je nachdem, was du halt genau machen möchtest. Das hast du immer noch nicht gesagt. Daher nochmal die Frage:

    Was möchtest du erreichen? Was ist der Usecase?

    Wenn es nur darum geht, die Datenbank zu aktualisieren, dann ist das möglich. Wenn du aber erkennen möchtest, ob Daten auf einen Share oder einen Ordner eingehen, dann musst du erst feststellen, ob die Daten auch vollständig übertragen worden sind bevor du weitere darauf abhängige Requests absendest. Daher wäre mal eine genaue Beschreibung dessen, was du machen möchtest, notwendig.

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

  • Was möchtest du erreichen? Was ist der Usecase?

    Kodi soll mit einem Arduino kommunizieren


    Ich habe 2 Beispiele für Serielle Kommunikation gefunden.

    Schreiben:
    Hier steuert einer seinen TV über USB

    Code
    import time, serial
    ser = serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=1)
    ser.write("\x08\x22\x00\x00\x00\x00\xd6")
    ser.close()


    Lesen:

    Ich habe einen USB zu Serial(Sub-D 9) Adapter am Raspi angesteckt. LibreElec erkennt das Teil sofort.
    Die Zeilen für Schreiben kopiere ich testweise einfach in ein bestehendes Addon und übertrage ein paar Bytes.
    Jetzt muss ich noch einen ollen PC mit Serial Ports ausgraben, darauf ein Terminal öffnen und prüfen ob Kodi Daten sendet.

    Wie kann ich jetzt ein Service-Addon erstellen, damit Lesen immer im Hintergrund ausgeführt wird.
    Kodi hat ja keine Ahnung, wann Daten über USB reinkommen.

    Raspi 4 / LibreElec10.0.4 / Kodi Matrix
    NUC7i5BNK / LibreElec11.0.5 / Kodi Nexus

  • Vielleicht bin ich nicht kreativ genug, aber ich verstehe den Usecase bzw die Anforderung nicht.

    "Kodi soll mit einem Arduino kommunizieren"

    Das ist mir einfach zu vage um da eine valide Aussage treffen zu können. Ich verstehe nicht was mit den gelesenen Daten gemacht werden soll oder mit den gesendeten Daten. Solange keine klaren Anforderungen gestellt werden, kann man wahrscheinlich auch schlecht eine Lösung präsentieren.

    Kodi hat eine Python-Monitor Klasse wo ich mir aber gerade unsicher bin, ob dir das hilft.

    Vielleicht kann dir @PvD helfen. Der ist hier der Python-Guru ;)

    Meine 2 Cent sind...Kodi muss nicht ständig lesen. Kodi hat die JSON RPC API um auf jegliche Art von Eingaben zu reagieren. Dafür ein Service Addon zu schreiben finde ich Overkill. Wenn Kodi Daten an den Arduino sendet, dann ist der Arduino verantwortlich für das Verarbeiten der gesendeten Daten und dafür braucht es kein Kodi Addon bzw ist es an der Stelle auch nicht möglich.

    Wenn der Arduino Geräte steuern soll, dann kann er bestimmt auch HTTP Requests via "curl" absetzen und damit Kodis API steuern (Netzwerkfähigkeit des Arduino voraus gesetzt). Alle anderen Geräte (TV z. B.) muss der Arduino dann sowieso auf anderem Wege steuern.

    Ohne weitere Anforderungen bzw Erklärung der Anforderung sehe ich hier immer noch keinen Bedarfsfall warum Kodi ständig an einem USB Port lauschen sollte. Und ich könnte mir noch eher vorstellen, dass das vielleicht eher eine Aufgabe des darunter liegenden Betriebssystems ist.

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

    Einmal editiert, zuletzt von DaVu (18. Dezember 2022 um 17:18)

  • Ich sehe hier keinen Use-Case. Datensätze (oder was auch immer) sollen in eine Datenbank geschrieben werden, ohne den Medienkonsum zu unterbrechen. Braucht man Kodi dafür?

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Ich sehe hier keinen Use-Case. Datensätze (oder was auch immer) sollen in eine Datenbank geschrieben werden, ohne den Medienkonsum zu unterbrechen. Braucht man Kodi dafür?

    Es gibt für Kodi ein 1Wire Addon, das bis zu 8 DS18B20 auswerten kann. Geht aber nur auf dem Raspi wegen 1Wire GPIO's.
    Das hat mal jemand für den Raspi CarPC geschrieben, um Fahrzeugdaten zu überwachen.
    Jetzt würde ich diese Funktionen auch gerne auf anderer Hardware einsetzen und deshalb einen Arduino über USB anschließen.
    Während einer Video-Wiedergabe knallt dann z.B. eine Warnung auf den Bildschirm: "Dein Stall brennt"
    Kodi ist nicht nur ein Mediacenter sondern kann auch IoT.

    Raspi 4 / LibreElec10.0.4 / Kodi Matrix
    NUC7i5BNK / LibreElec11.0.5 / Kodi Nexus

  • Kodi ist in erster Linie ein Mediacenter und kein Informationbroker. Das können HASS, Node Red, OpenHAB und wie sie alle noch heissen, besser und flexibler.

    Während einer Video-Wiedergabe knallt dann z.B. eine Warnung auf den Bildschirm: "Dein Stall brennt"

    Ja und? Was ist, wenn Kodi gar nicht läuft? Ein IOBroker kann dann immer noch auf verschiedenen Wegen informieren und kommunizieren. Es ist allerdings richtig, das man Kodi als Endpoint in einem Smarthome-System benutzen und Nachrichten auf den Bildschirm bringen kann. Dazu braucht man aber kein USB.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    Einmal editiert, zuletzt von PvD (19. Dezember 2022 um 22:02)

  • Na super,

    Was du also brauchst ist ein Gerät was Hitzesensoren in deinem Stall überwacht. Dieses Gerät kann dann (sofern im gleichen Netzwerk) via "curl" die JSON RPC von Kodi ansprechen und eine Notification an Kodi senden.

    Das was du damit machen möchtest nennt sich "Monitoring" und danach (im Falle eines Falles) "Alerting". Und dafür ist Kodi definitiv nicht gemacht weil zu instabil.

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

  • Das mit "Dein Stall brennt" war ja nur ein Beispiel.
    Ich könnte ja auch mit einem Sensor die Raumtemperatur überwachen. Wenn es zu warm wird, kommt eine Meldung: "Dreh die Heizung runter, du Dödel" auf den Bildschirm.

    Wer hat bei einem spannendem Film schon immer das SmartHome Display im Auge.

    Mein Alarm:
    ich habe in der Ablufthaube über dem Herd einen PIR eingebaut. Ist der Herd an und der Sensor registriert 30 min. keine Bewegung in der Küche
    wird der Herd abgeschaltet. Ich bin schon mal mit Essen auf dem Herd eingepennt.
    Jetzt soll ein Alarm (visuell und akustisch) auf den TV kommen, bevor der Herd abgeschaltet wird.

    Sensor am Herd (Arduino durch ESP ersetzen) sendet Alarm über WiFi und Kodi empfängt die Meldung.
    Bin ich wieder so weit: Wie empfängt Kodi die Daten über LAN bzw. WLan und wie kommt der Alarm auf den Bildschirm.
    Noch einen ESP, der über WiFi die Meldung empfängt und Seriell über USB an Kodi übergibt? Das wäre meine angestrebte Lösung.
    Curl und Co fallen weg, da man unter LibreElec nicht einfach Pakete installieren kann. Es müssen alle Funktionen in ein Kodi-Addon integriert werden.
    Ich mach' mich dann mal an die Arbeit. Arduino Bastelkiste auf, Lötkolben an, mit Python rumärgern und und und

    Raspi 4 / LibreElec10.0.4 / Kodi Matrix
    NUC7i5BNK / LibreElec11.0.5 / Kodi Nexus

  • Bin ich wieder so weit: Wie empfängt Kodi die Daten über LAN bzw. WLan und wie kommt der Alarm auf den Bildschirm.

    Da würde ich, wie hier bereits erwähnt wurde, eine der vielen Heimautomatisierungslösungen benutzen. Bei allen großen bekannten Produkten gibt es eine Kodi-Integration. Mit der lassen sich dann Nachrichten schicken und Kodi fernsteuern.

  • Bei allen großen bekannten Produkten gibt es eine Kodi-Integration. Mit der lassen sich dann Nachrichten schicken und Kodi fernsteuern.

    Ergänzend dazu muss in Kodi lediglich die Kommunikation und Steuerung über Fremdquellen enabled sein. Alles andere wird dann über den Smarthome-Broker geregelt. Ein Addon/Plugin in Kodi ist dazu nicht nötig.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Und hier der passende curl aufruf:

    Code
    curl -fs -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"GUI.ShowNotification","params":{"title":"'"<TITLE>"'","message":"'"<MESSAGE>"'","image":"'"info"'","displaytime":'"10000"'},"id":1}' http://<HOST>:8080/jsonrpc

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Da würde ich, wie hier bereits erwähnt wurde, eine der vielen Heimautomatisierungslösungen benutzen. Bei allen großen bekannten Produkten gibt es eine Kodi-Integration. Mit der lassen sich dann Nachrichten schicken und Kodi fernsteuern.

    Oder, wie ich schon vorher erwähnt habe und wie @SkyBird1980 aufzeigt, einen Befehl via "curl" absetzen.

    Dazu muss, wie ich ganz am Anfang schonmal sagte und @PvD auch nochmal, in Kodi die Steuerung über andere Applikationen zugelassen werden.

    Irgendwie drehen wir uns hier im Kreis und alles ist schon mal gesagt worden. Anscheinend nur noch nicht von jedem ;)

    @iptvnerd das, was du da machen möchtest, nennt sich auch an deinen anderen Beispielen immer noch "Monitoring" und "Alerting". Weiter frage ich mich, was dir eine Meldung am TV bringt, wenn du davor eingeschlafen bist? Ein akustisches Signal ähnlich eines Feuermelders wäre da sinnvoller. Eine Notification auf dem Bildschirm geht unter wenn du pennst ;)

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

  • Was sich ja über die vorhandene Schnittstelle auch ausführen lässt. Lautstärke rauf stellen und einen abgelegten (Alarm)sound abspielen.

    Und da wäre dann Kodi immer noch die falsche Schnittstelle dafür. Kodi ist kein "Monitoring" oder "Alerting"-System. Kodi ist ein Mediencenter. Was machst du denn, wenn Kodi gar nicht läuft? Was benachrichtigt dich dann, wenn du nur normales Sat-TV schaust und kein Kodi nutzt?

    Hier soll eine Gefahrenquelle abgesichert werden. Dann muss ich auch ein Medium wählen, was 24/7 läuft und mich zuverlässig benachrichtigen kann. SMS wäre so eine Option. Bringt auch nur dann was, wenn ich mein Telefon 24/7 dabei habe. Eine andere Option wäre ein weiteres Gerät in meinem Netzwerk welches auch einen Lautsprecher angeschlossen hat und welches dann einen Ton von sich gibt. Unabhängig davon welche anderen Geräte im Netzwerk laufen.

    Alternativ kann man für die Küche auch einen einfachen Hitzemelder nehmen (Rauchmelder sind logischer Weise unsinnig ;) ). Es gibt diese mittlerweile auch vernetzt....schlägt einer an, schlagen alle an. Somit wäre es auch abgesichert, dass man es mitbekommt, wenn man gerade nicht im Raum ist.

    Kodi ist da definitiv nicht das richtige für. Und selbst wenn...dann muss ich es immer noch nicht über USB betreiben sondern kann immer noch über die JSON-RPC API gehen.

    Was prüft denn überhaupt die funktionalität der Geräte? Was prüft ob der PIR in der Küche überhaupt noch funktioniert? Welches Monitoring-System oder welches Alerting-System wird da eingesetzt und wie wird da benachrichtigt? Wenn der PIR nämlich kaputt ist, dann liefert der auch nichts. Und dann kann auch kein anderes Gerät irgendwas anzeigen. Warum verpasse ich dem PIR in der Küche nicht selbst den gleichen (nennt man es so?!) Lautsprecher, wie in einem Rauchmelder? Dann hätte ich 2 Fliegen mit einer Klappe erschlagen.

    Ich könnte noch ne Weile darüber philosphieren, was da Sinn macht und was nicht. Z. B.:

    Ich könnte ja auch mit einem Sensor die Raumtemperatur überwachen. Wenn es zu warm wird, kommt eine Meldung: "Dreh die Heizung runter, du Dödel" auf den Bildschirm.

    Darüber möchte ich gar keine Benachrichtigung haben. Und erst Recht nicht auf Kodi. Ich möchte, wenn es zu warm wird, dass die Heizung automatisch runter geregelt wird.
    Mitten in einem spannenden Film, wo es gerade wirklich ernst von der Handlung wird und alle gespannt auf den Bildschirm schauen, möchte ich ganz bestimmt, dass so eine dämliche Notification aufpoppt, dass meine Heizung runter gedreht werden soll. Das ist genau das, was ich möchte :D (nicht).

    Anderes Beispiel:

    Sensor am Herd (Arduino durch ESP ersetzen) sendet Alarm über WiFi und Kodi empfängt die Meldung.

    Welches System prüft eigentlich das Netzwerk? Bzw. die Verbindung ob der Arduino überhaupt "online" ist, damit die Meldung zuverlässig gesendet werden kann und wie wird über den Netzwerkausfall überhaupt benachrichtigt, wenn kein Netzwerk zur Verfügung steht? SMS ans Handy? Gibt es ein SMS-Gateway im Netzwerk? Ach halt...wenn das SMS Gateway auch nur über Netzwerk erreichbar ist, dann kann es auch keine Daten empfangen, die dann gesendet werden können. Es sei denn, das Gateway hat eine Option ein Gerät im Netzwerk anzupingen und wenn der Ping nicht erfolgreich war, dann eine Warn-SMS zu senden, dass das Netzwerk nicht verfügbar ist. Was aber...wenn nur das eine Gerät, welches das SMS-Gateway ansprechen soll, nicht erreichbar ist, alle anderen Geräte aber schon? Kommen dann false-positives oder gibt es einen "doppelten Boden"?

    Wie gesagt...das läuft hier alles unter "Monitoring" und "Alerting" und für mich klingt das alles eher nach undurchdachter Spielerei, die weder Hand noch Fuß hat und in irgendeiner Form ein Add-on benötigt, welches an der Stelle total unnötig für Kodi ist.

    @iptvnerd

    Sensor am Herd (Arduino durch ESP ersetzen) sendet Alarm über WiFi und Kodi empfängt die Meldung.
    Bin ich wieder so weit: Wie empfängt Kodi die Daten über LAN bzw. WLan und wie kommt der Alarm auf den Bildschirm.
    Noch einen ESP, der über WiFi die Meldung empfängt und Seriell über USB an Kodi übergibt? Das wäre meine angestrebte Lösung.
    Curl und Co fallen weg, da man unter LibreElec nicht einfach Pakete installieren kann. Es müssen alle Funktionen in ein Kodi-Addon integriert werden.

    Nochmal....du brauchst dafür kein Addon. ALLE, aber wirklich ALLE Installationen von Kodi haben von Haus aus die Option die JSON-RPC API zu nutzen. Du kannst die Daten über WLAN direkt an die JSON API senden ohne weiteres Gerät dazwischen. Unter LibreELEC musst du nicht zusätzlich installieren. Es ist auch unabhängig vom Betriebssystem auf dem Kodi läuft, da diese Funktion eine Funktion ist, die dir Kodi bietet.

    Du musst dem Arduino nur beibringen, dass er JSON-Daten über die Programmiersprache deiner Wahl an Kodi sendet. Wenn du das hast, dann wars das schon. Dann kannst du mit Kodi kommunizieren. Über USB ist das völliger Unsinn. Kodi lauscht schon ständig an Ports ob da was ankommt. Du versuchst hier unnötiger Weise das Rad neu zu erfinden.

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

Jetzt mitmachen!

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