Taster Skript setzt SHC außer Gefecht

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Taster Skript setzt SHC außer Gefecht

    Guten Abend,
    und zwar habe ich ein kleines Problem beim einbinden eines Tasters.

    Ich habe einen Taster angeschlossen welchen ich mit einem Python Skript auslese. Beim Tastendruck soll dieses einen Toggle Befehl ans SHC senden und so ein Element schalten.
    Soweit so gut, das funktioniert ohne Probleme. Wenn ich allerdings das Skript gestartet habe, kann ich das Element nicht mehr von der SHC Weboberfläche aus starten, da darauf mein Python Skript mitreagiert und das Element sofort erneut schaltet.
    Dies bekomme ich auch in der Skript Ausgabe angezeigt ("Element erfolgreich geschalten").
    Wenn das Skript nicht läuft lässt sich das Element wie gewohnt schalten.

    Ich benutze folgendes Skript:

    Source Code

    1. import time
    2. import RPi.GPIO as GPIO
    3. import os
    4. GPIO.setmode(GPIO.BOARD)
    5. GPIO.setup(15, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
    6. def doIfHigh(channel):
    7. os.system ("php /var/www/shc/index.php app=shc id=5 -sw --toggle")
    8. GPIO.add_event_detect(15, GPIO.RISING, callback = doIfHigh, bouncetime = 1500)
    9. while 1:
    10. time.sleep(0.1)
    Display All
    Hat jemand eine Idee wo mein Denkfehler liegt oder einen Verbesserungsvorschlag?
    Weiß hier absolut nicht mehr weiter...

    Gruß
    Jones
  • ich würde ja vorschlagen, du beschreibst mal, was du damit erreichen willst.

    Ich gehe mal davon aus, dass dein Python-Script über die Shell gestartet ist, und somit nicht als Script aus dem SHC aufgerufen wird.

    Nun habe ich noch nicht verstanden was der Switch mit der ID 5 in deinem SHC macht. Willst du SHC und dein Python-Script parallel schalten lassen? Oder schaltet der Switch im SHC womöglich den GPIO, den du im Python-Script auswertest?
    Gruß Dieter
    --------------
    Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  • Tut mir Leid wenn das nicht klar rüber kam.

    Ich habe an meinem Raspi ein Relais hängen (ID:5) welches ich über das SHC schalte. Nun will ich diesen Schaltvorgang parallel auch noch "händisch" über einen Taster (GPIO Board Pin 15 (GPIO22)) ausführen. Bei Tastendruck soll das Relais umschalten (an -> aus / aus -> an). Mein Plan war den Taster über das Skript zu überwachen und bei Betätigung den toggle Befehl über die CLI an das SHC zu schicken.

    Ich könnte natürlich auch direkt das Relais schalten ohne den Umweg über SHC zu gehen, allerdings wird ja dann der aktuelle Zustand im SHC nicht registriert.

    Hoffe das ist jetzt etwas verständlicher geworden.

    Viele Grüße
    Jones
  • Ich muss ehrlich zugeben, dass ich nicht wusste das im SHC bereits eine solche Funktion eingebaut ist :D
    Dann würde das Beispiel mit der sinnlosen Maschine sogar relativ treffend sein..

    Also ich habe jetzt den Eingang als Schaltfunktion hinzugefügt. Nun stehe ich ein klein wenig auf dem Schlauch wie ich weiter vorgehen muss. Wo muss ich definieren dass beim Tastendruck das Relais umgeschaltet werden soll?
  • Ich glaube es liegt bei mir am Grundlegenden Problem das ich nicht verstehe wie das SHC einen Taster überprüft.
    Wie genau muss ich den Taster überhaupt anschließen? Aktuell hängt er an 3,3V und am GPIO, nach meinem Verständnis überwache ich dann die positive Flanke um bei Tastendruck eine Reaktion zu bekommen. Wenn ich den aktuellen Wert per CLI auslese (gpio -g read 22) funktioniert das auch, bei Tastendruck lese ich eine 1 aus.
    Ich habe den Taster als Schaltbares Element hinzugefügt und bekomme ihn auch im entsprechenden Raum angezeigt. Sollte sich die Farbe des roten Punktes bei Tastendruck ändern? Da passiert nämlich bei mir nichts.

    Vermutlich ist das Problem sehr simple, allerdings für Einsteiger relativ schwer zu verstehen, da sich auch auf Agent's Github oder im Wiki dazu relativ wenig finden lässt (Oder ich bin nur zu blöd zum suchen).
    Würde mich daher auch bereiterklären nach erfolgreicher Lösung meines Problems eine detaillierte Anleitung fürs Wiki zu schreiben, sodass es Leuten wie mir in Zukunft leicher fällt in das Thema hineinzufinden.

    Viele Grüße,
    Jones
  • Bin jetzt so weit das beim Druck des Tasters der Punkt grün und das Ereignis ausgelöst wird. Allerdings dauert das auslösen und das ändern der Farbe sehr lange (pendelt zwischen 5-10 sek). Auch reicht ein kurzes antippen des Tasters nicht aus, ich muss ihn einige Sekunden gedrückt halten. Habe den Taster hinter einem 10kOhm Widerstand an den GPIO angeschlossen, wenn ich den Widerstand rausnehme ändert das aber auch nichts.
    Ist das so gewollt oder ein Fehler?

    Außerdem suche ich beim Ereignis noch die Möglichkeit den Ausgang umzuschalten. Während es bei den Schaltpunkten einen extra Auswahl-Punkt "umschalten" gibt, gibt es beim Ereignis ja nur an/aus. Habe auch versucht das ganze über Bedingungen zu lösen (wenn an -> aus / wenn aus -> an), das funktionierte aber auch nicht, da Beim Zustand "an" dennoch beide Ereignisse (an+aus) ausgeführt wurden.
  • DAs mit der Reaktionszeit ist ganz einfach => Du muss doller drücken. Je fester, desto schneller reagiert das SHC. ;)

    PS: Sorry, den konnte ich mir nicht verkneifen.

    Nein, mal im Ernst. Ich kann im Augenblick leider nicht in mein SHC schauen, wie das gehen könnte.
    Grundsätzlich ist das mit dem Script nicht zwangsläufig die schlechteste Idee gewesen. Du muss nur darauf achten, dass der Schaltvorgang im Script nicht im SHC ein Ereignis auslöst, welches in seiner Aktion seinerseits wieder das Ereignis im Script auslöst. Denn damit hast du einen Loop geschaffen.
    Im SHC geht's bestimmt auch irgendwie, leider kann ich jetzt nicht rumtüfteln.
    Gruß Dieter
    --------------
    Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  • Erstmal vielen Dank für die Hilfe!
    Und das genau ist mein Problem, ich weiß nicht welche Ereignisse das schalten im SHC auslöst, bzw was ich da noch probieren könnte. Am wissen über skripte im generellen scheitert es nicht, das kann man sich ja auch anlesen, allerdings Scheitert es bei mir an wissen übers shc. Wenn du da also Nen Tipp für mich hättest ich welche richtung ich suchen muss um das mit dem Skript zu lösen wäre ich sehr dankbar!

    Ich bin doch bestimmt nicht der einzige der das mal gemacht hat

    Gesendet von meinem ONEPLUS A3003 mit Tapatalk