Auch wenn niemand schreibt:
Habe es jetzt mit einem kodi addon versucht. Als servic.script definiert, läuft. Nur dass die Bewegungserkennung nicht auslöst. Der add_event_detect wird offensichtlich ausgeführt, jedoch kommt es nie zur Ausführung des in der callback Methode definierten codes. Verdammt, schon wieder klappt es nur fast;-((
Mein script:
<<
import xbmc
import xbmcaddon
import RPi.GPIO as GPIO
import time
import keyboard
SENSOR_PIN = 23
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
def mein_callback(channel):
...print('=============================================================================')
...print('===========================Es gab eine Bewegung!==============================')
...print('=============================================================================')
...keyboard.press_and_release(77) #Pfeil rechts x'4d' = 77
GPIO.add_event_detect(SENSOR_PIN , GPIO.RISING, callback=mein_callback)
try:
...while True:
......# print(time.time())
......time.sleep(1)
except KeyboardInterrupt:
...print("Beende...")
GPIO.cleanup()
>>
und die XML dazu:
<<
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.service.playnext" name="play-next" version="0.0.1" provider-name="ej">
<requires>
<import addon="xbmc.python" version="2.25.0"/>
</requires>
<extension point="xbmc.service" library="pir.py" />
<extension point="xbmc.addon.metadata">
<summary lang="en_GB">Bewegungsmelder script</summary>
<description lang="en_GB">a script to skip playback to the next titel when movement detected</description>
<language></language>
<platform>all</platform>
</extension>
</addon>
>>
Vielleicht antwortet ja dieses mal eine/r?
Liebes Forum,
nachdem ich schon seit Tagen gegoogelt und verschiedenes versucht habe, frage ich hier mal um Hilfe.
Ich möchte einen Raspberry Pi 3B+ (Rasbian strech desktop) mit Hifiberry DAC+ und einem IPR Bewegungsmelder als Jukebox einsetzen. Jedesmal, wenn eine Bewegung erkannt wird (jemand nähert seine Hand dem IPR), soll die Musikwiedergabe auf den nächsten Titel der Playlist springen.
Habe alle erfolgreich aufgebaut und den IPR mit Nagellack so manipuliert, dass er Bewegungen nur aus einer Richtung erkennt (Richtung, aus der die Hand sich nähert). Damit soll er quasi als Taster fungieren.
Kodi startet beim Systemstart und spielt die Wiedergabeliste ab. Über das Keymapping addon habe ich der Funktion "next" die rechte Pfeiltaste zugewiesen.
Alles funktioniert, bis auf die Ansteuerung des kodi. Getestet habe ich mit dem folgenden Python script pir.py, das ich im Homeverzeichnis (Pi) abgelegt habe und das später dann auch beim Systemstart neben Kodi starten soll.
Leider gehen die Einrückungen hier verloren, habe sie durch ein "..." angedeutet.
<<
import RPi.GPIO as GPIO
import time
import keyboard
import subprocess
SENSOR_PIN = 23
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
def mein_callback(channel):
...keyboard.press_and_release(77) #Pfeil rechts x'4d' = 77
...# print('Es gab eine Bewegung!')
...# global starttime
...# print "it took", time.time() - starttime, "seconds."
...# starttime = time.time()
#starttime = time.time()
GPIO.add_event_detect(SENSOR_PIN , GPIO.RISING, callback=mein_callback)
#subprocess.call('/usr/share/applications/kodi.desktop')
subprocess.call('kodi')
try:
...while True:
......# print time.time()
......time.sleep(1)
except KeyboardInterrupt:
...print "Beende..."
GPIO.cleanup()
<<
Der Keyboard.press gibt die Taste natürlich auf der Console aus. Sie muss aber ans kodi geleitet werden. Daher habe ich es darüber versucht, dass ich kodi aus dem script heraus als subprocess starte, nur führt das auch nicht zu einer Weiterleitung des Signals an das Kodi. (Und "subprocess.call('/usr/share/applications/kodi.desktop')" funktioniert nicht, sodass ich eine andere Instanz von Kodi bekomme, ohne meine Voreinstellungen etc.)
Ich könnte mir 3 Wege vorstellen:
1. Das signal aus dem Pythonscript wieterleiten ans kodi
2. Die Bewegungserkennung in das Kodi einbauen (addon?)
3. Über das Webinterface ansteuern - aus dem Pythonscirpt heraus?
Leider fehlen mir hier wohl zuviele Kenntnisse über Kodi.
Ich würde mich sehr freuen, wenn mir jemand eine möglichst fertige Lösung zeigen könnte.