Aktiven Script durch neuen Script vorzeitig beenden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Aktiven Script durch neuen Script vorzeitig beenden

    Hallo Leute,

    ich habe ein kleines Problem, bei dem ich eure Hilfe benötige.

    Momentaner Zustand:
    RPI 1B mit Raspbian Jessie.
    Ich habe im ganzen Haus elektrische Rolläden verbaut die mit Schutzleiter und Nullleiter verbunden sind. Über 2x L kann ich wählen ob er auf-, oder zufährt. Schließe ich beide L an gibt es einen unschönen Kurzschluss und die Rollomotoren werden evtl. zerstört.
    Mein Pi ist an eine 8-fach Relaiskarte angeschlossen. Die Wechselrelais darauf sind ohne Spannung geschlossen, also habe ich die anderen Ausgänge benutzt und invertiere sie sobald der Pi startet.
    Um die Ausgänge zu invertieren, ohne dass es einen Kurzschluss bei den Rolläden gibt, wird folgender Script beim starten des Pi durch die rc.local ausgeführt.

    Quellcode: GPIOdefault.sh

    1. gpio mode 1 out
    2. gpio write 1 1
    3. sleep 0.2
    4. gpio mode 2 out
    5. gpio write 2 1
    6. sleep 0.2
    7. usw...


    Sobald ich nun im SHC auf einen Button (Rollo ab) klicke wird folgender Script ausgeführt.

    Quellcode: GPIO1.sh

    1. gpio write 1 0
    2. sleep 30 (je nachdem wie weit das Rollo runterfahren soll)
    3. gpio write 1 1


    Das funktioniert soweit alles sehr gut!

    Nun zu meinem Problem:
    Wie kann ich es anstellen, diesen Script vorzeitig zu beenden und den Ausgang wieder auf 1 zu stellen?
    Wenn ich jetzt aus versehen auf "Rollo auf" klicke während der "Ab" Befehl noch ausgeführt wird, gibt es den Kurzschluss.
    Kann ich einfach hingehen und in der "GPIO2.sh" folgendes eintragen?


    Quellcode: GPIO2.sh

    1. #Um den GPIO 1 einfach während der sleep-Ausführung in "GPIO1.sh"zu beenden
    2. gpio write 1 1
    3. #Um dann den eigentlichen Befehl für GPIO 2 zu starten und das Rollo wieder zu öffnen
    4. gpio write 2 0
    5. sleep 30
    6. gpio write 2 1
    Kann das funktionieren?

    Wie gesagt, ich bin absoluter Anfänger in Sachen Pi, also bitte alles für Dumme erklären ;)

    Danke im Voraus
    DrCache

    PS: Ich werde mir noch einen ULN einbauen, in der Hoffnung die Ausgänge nicht mehr invertieren zu müssen, aber das wird das eigentliche Problem nicht lösen.
  • Antworte mir mal selbst ^^

    Könnte es so funktionieren?

    Quellcode: GPIO2.sh

    1. #Um den GPIO 1 einfach während der sleep-Ausführung in "GPIO1.sh"zu beenden und wieder auf "ein" zu schalten
    2. pkill gpio1.sh
    3. gpio write 1 1
    4. #Um dann den eigentlichen Befehl für GPIO 2 zu starten und das Rollo wieder zu öffnen
    5. gpio write 2 0
    6. sleep 30
    7. gpio write 2 1
  • Auf Dein Script kann ich jetzt nicht Antworten, da müsste ich mich zuweit hineindenken.

    Generell denke ich aber über die Problematik von Zeit zu Zeit darüber nach. Ich habe die gleiche Anlage mit 13 Rollläden und habe einen anderen Ansatz.
    Ich stelle mir vor für jeden Rollladen zwei Relais zu nutzen. Ein Relais für "Auf" und ein Relais für "Zu".
    Zuzüglich ein Relais, welches entweder die Relais mit Strom versorgt zum "Auf" bzw. "Zu" fahren, als Wechsler. Somit ist zu jedem Zeitpunkt ausgeschlossen, dass ein Rollladen nicht zweimal eine "Phase" erhält.
    Da benötige ich dann insgesamt 27 Relais und das möchte ich mit einem Arduino Mega als Schaltserver machen.

    Ich hatte mir noch eine andere Variante überlegt, und zwar ein Relais als Wechsler pro Rollladen plus 1 Relais zum "Betätigen". Das wäre aber dann um alle Rollläden gleichzeitig zu fahren.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • Die Lösung mit zusätzlichen Relais hatte ich auch überlegt, alleine wegen der Handtaster direkt an den Rolläden, aber dann müsste ich noch mehr Kabel verlegen und da habe ich keine Lust zu :)

    Ich will auch nicht zu viele Relais haben, das birgt alles mögliche Fehlerquellen. Ich merke es jetzt schon bei den vorhandenen Trennrelais, die gehen der Reihe nach kaputt. Habe mir daher eine eigene Relaisplatine gebaut, nur für die manuelle Betätigung. Jetzt soll zusätzlich der Pi alles automatisch machen können, ich will es bei Bedarf aber auch abbrechen, darum die Frage oben.

    Es funktioniert auch alles sehr gut, ist mir nur zu gefährlich falls mal jemand (meine Frau) zu hektisch ist und die 20 Sekunden nicht abwarten kann :P
  • Beides.

    Also was bisher per Zeitschaltuhr geregelt war:
    Alle Rollos gehen Abends runter (per Astro) und morgens bis auf das Schlafzimmer auch wieder rauf. Das Schlafzimmer kann per verkabeltem Wandtaster manuell rauf und runter gefahren werden (wegen Nachtschicht), geht aber Abends automatisch mit den anderen runter.
    Alles ist sauber auf dem Dachboden verkabelt und ein 7+1 Ölflexkabel geht bis ins Erdgeschoss zum Zählerschrank.

    In Zukunft soll der Pi die komplette Schaltung übernehmen wie sie bisher funktioniert, zusätzlich möchte ich aber das Wohnzimmer auch separat als Sonnenschutz bedienen können (auch hier ist eine Ölflex zum Zählerschrank vorhanden). Das Schlafzimmer sollte auch per SHC bedienbar sein um als Weckfunktion die Rollos hochzufahren.

    Der Pi schaltet jetzt schon per Funk neun Funksteckdosen (teilweise aus den Steckdosen ausgebaut und in AP Abzweigkästen montiert) für die Außenbeleuchtung, Beetbeleuchtung, Terrasse, Brunnenpumpe sowie Ambiente im Wohnzimmer und per Relais vier Eltako Stromstoßrelais im Zählerschrank für die normale Beleuchtung im Wohn- und Essbereich.

    -----------------------

    Bei einem Kollegen habe ich auch schon einen Pi mit SHC für die Rollos installiert. Dort war es aber einfacher, weil alle mit Funkempfängern ausgerüstet waren. Diese haben zwar 868MHz mit Rollingcode, aber wir haben einfach die Relaisplatine an die Taster einer Fernbedienung gelötet und schon funktionierte es.
  • Ok. Ist ähnlich wie bei mir. Taster an den Fenstern und im Keller sitzen Relais um alle gemeinsam Zeitgesteuert hoch- bzw. runter zufahren.

    Ich hätte das auch schon neu verdrahtet, was mich aber noch abhält ist, dass ich mit dem SHC nicht Punktgenau individuell fahren kann, da es keine Tastfunktion gibt die solange aktive ist, wie ich auf dem z.B. Smartphone gedrückt halte. Das wäre mir eigentlich das wichtigste.

    Man sitzt und wird von der Sonne geblendet und steht x- mal auf um die beste Stellung des Rollladens einzustellen.

    Wie Du das, wie oben geschrieben mit nur einem Relais pro Rollladen machen willst erschließt sich mir noch nicht.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • Pro Rolladen kommen zwei Relais zum Einsatz, eins für runter und eins für rauf. Dann bräuchte ich für mein Vorhaben mit den Rollos nur 6 Relais.
    2x komplett, 2x Wohnzimmer und 2x Schlafzimmer.

    Was spricht bei Dir dagegen, die Taste mehrmals zu drücken?

    In dem Script "GPIO1.sh" in Post1 kann ich ja zBsp das Relais 1-2 Sekunden schalten lassen. Wenn ich dann mehrmals drücke fährt es jedes Mal 1-2 Sekunden runter.


    Edit: Mit einer "Stop" Taste wäre Dir ja auch geholfen, also genau das was ich auch brauche :|

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DrCache ()

  • DrCache schrieb:

    Was spricht bei Dir dagegen, die Taste mehrmals zu drücken?
    Wenn der SHC wie bei mir sehr weit ausgebaut ist mit einem Master und 5 Slave's plus noch ein paar ESP's wird das ganze etwas träge. Ich hoffe auf den SHC 3.0.

    Mit einem Script für eine Sekunde müsste ich sehr oft tippen und es wäre ein gestotter. Mit an und Ausschalten habe ich Verzögerungen. Vergleichbar mit einer ausgeschlagenen Lenkung beim Auto.

    Auf Dein Projekt zurückzukommen , ich würde es so wie auf dem Bild machen. Ein Relais zum Umschalten zwischen auf und zu und mit dem zweiten den Fahrbefehl geben. Da brauchst Du auch nur zwei und kannst sicher sein, das die Phase nur an einer Seite anliegt, und solange gefahren wird, darf man keinen Taster betätigen.2016-04-21 17.11.21.jpg
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • Ja, das könnte ich so machen. Nur blöde, dass alles schon verkabelt ist. Aber guter Vorschlag, muss ich nochmal drüber nachdenken!



    Ich habe es eben mit der Relaiskarte für die Esszimmerbeleuchtung getestet, es funktioniert!


    Quellcode: GPIO2.sh

    1. #Also hiermit breche ich den sleep aus "GPIO1.sh" ab und stelle den GPIO wieder zurück
    2. pkill gpio1.sh
    3. gpio write 1 1
    4. #Und starte dann den neuen Befehl
    5. gpio write 2 0
    6. sleep 0.2
    7. gpio write 2 1
    Das muss ich dann natürlich für jedes Relais und jeden Ausgang machen.
  • @Didi
    Wie die Wicklung des Motors ist, kann ich auch nicht sagen. Elektrisch gesehen ist das ganze trivial. Der Motor hat drei Anschlussdrähte.

    Blau = 0 Leiter

    Braun = L1 230 V Auf
    Schwarz = L1 230V Zu oder umgekehrt.

    Zu den Motoren gehören spezielle Wipptaster, die mechanisch gegeneinander versiegelt sind, damit man nicht aus versehen, oder beabsichtigt gleichzeitig AUF und ZU drücken kann.

    Wenn man es schafft, wie auch immer z.B. falsche Taster beide L1 Leitungen des Motors gleichzeitig mit der Phase zu belegen, bewegt sich der Motor nicht, er brummt laut und wäre wohl nach kurzer Zeit durchgebrannt.

    Da man nie ganz ausschließen kann, dass 2 GPIO's nicht gleichzeitig mal high oder low sein können, wäre eine solche Ansteuerung, anders als von mir oben aufgezeigt viel zu gefährlich, da nur so ausgeschlossen werden kann, dass nicht beide Seiten gleichzeitig bestromt werden.

    Nachtrag: Die Motoren haben auch noch einen mechanischen einstellbaren Endschalter für beide Zustände.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • Hallo,
    wenn Wechslerkontakte vorhanden sind, würde ich einfach die Schaltung der serienmäßigen Trennrelais nachbauen. Also L auf den P-Kontakt des Auf-Wechslers, von dessen Öffner zum P vom Ab-Relais. Die Motoren-L' an die Schließerkontakte.
    Nennt sich "elektrische Verriegelung" und ist immer zu empfehlen, da unabhängig von der Software auch mal ein Kontakt hängen kann.