Stalltür steuern, wenn Rasenmährobotor fertig

  • Hallo,

    ich bin recht Neuling in dem Gebiet, habe aber auch schon lange gegoogelt und nun greife ich zu den Tasten, da ich auf Hilfe hoffe.

    Ich will folgendes Problem lösen:

    Ich habe einen neuen Rasen-Roboter installiert, einen Gardena Smart Sileno City 500. Es laufen jedoch normalerweise den ganzen Tag die Kaninchen frei im Garten herum. Ich sehe jedoch gewisse Gefahren, dass die Kaninchen durch den Mäh-Roboter verletzt werden könnten. Daher soll jetzt folgende Automatisierung her.

    Einfache Bedingung: Solange der Mäh-Roboter arbeitet, muß der Stall geschlossen sein. Wenn das mit dem Gardena Gerät direkt koppelbar wäre, dann genial. Ich dachte an FHEM, aber auch da bin ich noch sehr unbedarft. Insofern würde ich es erstmal "einfacher gestalten wollen. D.h. der Roboter mäht bis max 10:00 Uhr morgens. Dann sollte ab 10:15 Uhr die Stalltür sich selbst öffnen. Dazu habe ich mir schon einen Servo-Motor DS3218 gekauft. Der sollte genug Kraft haben, die Türe aufzumachen. Zur Drehmechanik hab ich auch schon ein Konzept. Abends wäre die Zeit, wo die Kaninchen zurück in den Stall gehen immer leicht verschieden. Die Tiere werden auch quasi reingetrieben, daher bietet es sich hier an, dass ein Taster am Stall wäre, der dann die Türe wieder verschließt, also ohne Zeit-Steuerung.

    Ich würde also gerne mit einem Raspi den Servo so ansteuern, daß er einmal um 10:!5Uhr öffnen (oder die Kür mit der Zusatzinfo: Mäher ist fertig) und dann abends per Taster wieder schließt.

    Ich hatte schon einige gute Infos gelesen hier: Servo über Schalter steuern

    Ich komme auch soweit, daß ich mal prinzipiell den Servo ansteuern kann. Aber dann verlassen mich meine Anfänger-Künste.

    Ist vielleicht etwas fancy Use Case, aber ich würde mich riesig freuen, wenn es klappt. Danke schonmal vorab

  • Für eine solche Anwendung würde ich überlegen einen Arduino zu verwenden. Dieser scheint mir für die Anwendung optimal und der Raspberry hat in diesem Fall viele Nachteile. Gibt es einen driftigen Grund warum Du einen Raspberry verwendest (und bitte nicht nur weil Du ihn schon hast)...

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • ja, in der Tat habe ich nun den Raspi bereits dafür gekauft. Das war für mich letztlich gleich. Ich hatte aber aus vielen Foren herausgelesen, dass der Raspi für Servo-Steuerungen besser geeignet sei. Ich gebe hier jedoch sehr oberflächlich eine wie auch immer entstandenes Expertenbild wieder. Ich meine, daß es auch ein weiterer Grund war, daß beim Raspi das FHEM besser oder überhaupt zu installieren sei. Wobei ich noch gar nicht sicher sagen kann, ob das hier tatsächlich zum Tragen kommt.

    Frage daher mal umgekehrt. Was würde ich denn nun machen, wenn es der Arduino wäre? An einer solchen Anschaffung soll es nicht scheitern?

  • Der PI schluckt vor allem einfach mehr Strom, ist fragiler, und fuer diese Aufgabe massiv ueberqualifiziert. Ein Arduino spart Strom, ist robuster, die Programmierung ist einfacher, etc.

    Den kannst du zB auch mit einer realtime clock ausstatten, und dann haelt er die Zeit ausreichend genau fuer Monate.

    https://datasheets.maximintegrated.com/en/ds/DS3231.pdf

  • Moin Digi,

    ich bin auch Anfänger, aber vielleicht kann ich Dir mit einigen Anregungen helfen.

    Eigentlich müsste das gut in Python realisiert werden können.

    Zur Ansteuerung eines Servos und zum "Üben" gibt es hier ein Tutorial :

    https://tutorials-raspberrypi.de/raspberry-pi-s…otor-steuerung/

    Die Zeitsteuerung kannst Du über einen Cronjob (dazu gibt es gute Beiträge hier im Forum) recht einfach realisieren.

    Für die Schließfunktion gibt es hier gute Beschreibungen, wie ein an einen GPIO angeschlossener Taster abgefragt werden kann.

    Die Routine muss in einer Schleife laufen.

    LG

  • Klar geht das in Python. Aber nicht mit cronjob, und nicht mit while-Schleife. Denn erster hilft dir nicht, wenn du gleichzeitig den Knopf abfragen willst, oder wie bekommt das Programm mit, dass der cronjob gerade laeuft? Und auch wen man eine while-Schleife benutzen *kann*, macht man das nicht, sondern benutzt die when_pressed-Rueckruf-Funktionalitaet. Die ist CPU-Sparsamer und gleichzeitig zuverlaessiger.

    Und die Probleme mit Stromverbrauch und Robustheit loest das natuerlich auch nicht.

  • Moin deets,

    wenn jemand hier im Forum eine Frage stellt, dann sollte man ihm versuchen zu helfen und nicht - leider ist das nicht selten - andere Fragestellungen aufzuwerfen, andere Baustellen aufzumachen oder den Profi raushängen zu lassen.

    Digi hat seine Fragestellung deutlich formuliert, seine vorhandene Hardware aufgeführt und wartet nur auf konstruktive Tipps.

    Das Ausprobieren mit dem obigen Tutorial kann hilfreich sein, um die Ansteuerung zu testen. Ob die Nutzung von Cronjob sinnvoll ist oder eine Zeitabfrage im Programm - dass muss er selbst probieren.

    Sag ihm doch einfach so, dass er (wie ich) als Anfänger weiß, in welche Richtung er es versuchen soll.

    LG

  • Was genau an dem Hinweis, der PI ist dafuer ueberqualifiziert und eher weniger robust, ist nicht konstruktiv?

    Das Beitraege hilfreich sein sollen, ist selbstverstaendlich eine tolle Regel. Eine andere tolle Regel ist, unbedarfte Anfaenger nicht in die Irre zu fuehren. Und das tust du mit deinen beiden Hinweisen auf Cronjobs, und auf while-Schleifen. Und es ist eine ebenso gute Regel, darauf hinzuweisen, wenn sowas geschieht. Was ich, weil ich Profi bin, erkennen kann. Da muss ich nichts raushaengen lassen.

    • Offizieller Beitrag

    Jungs bitte! :angel:

    Ja, ein Arduino oder evtl. sogar ESP (wenn der Platz reicht) wäre effizienter was Ausfallsicherheit und Stromverbrauch betrifft. Ein RPi kann das latürnich auch und ja, auch per Cronjob, wenn man z.B. ein Flag in eine Datei schreibt o.ä., auch wenn das eigentlich nich so optimal ist.

    Es gibt immer mehrere Lösungswege für ein Projekt, deshalb: Vergesst nicht, wir wollen doch alle nur helfen und deshalb möchte ich euch bitten das zu tun OHNE sich verbal die Köpfe einzuhauen! ;)

  • Frage daher mal umgekehrt. Was würde ich denn nun machen, wenn es der Arduino wäre? An einer solchen Anschaffung soll es nicht scheitern?

    Also, ich würde einen Arduino nano Clone [Anzeige] empfehlen. Installiere die Arduino IDE (Empfehlung) oder verwende den WEB editor. Dort brauchst Du nur den Nano einstellen und den Beispiecode für Servo runter spielen (Bereits in der IDE integriert). Dann müsstest Du Deinen Servo schon zum laufen bringen (5V müssen eventuell extra versorgt werden, da der ziemlich viel Power hat und somit Strom zieht). Etwas abändern und noch eine Tasterabfrage in der Loop (auch hier gibt es gute Beispiele). Für eine "genaue" Uhrzeit brauchst Du noch eine Echtzeituhr. Ich würde aber vorerst folgendes vorschlagen: Starte den Arduino zu der Zeit, wann er aufgehen soll - und er zählt intern die 24 Stunden und macht dann wieder auf - ist nicht sehr genau aber könnte genügen. Wenn Du die Zeit korrigieren oder ändern möchtest, starte (oder resete) einfach zu dieser Zeit den Arduino... Für die Zeit, die der Arduino läuft gibt es die Funktion millis() - bei 86.400.000 ist ein Tag um (24h x 3600s x 1000ms). Wenn Du es etwas anspruchsvoller willst, kannst Du Dir auch mal das D1 Mini System ansehen. Das ist etwas anspruchsvoller beim Einrichten, ist aber ein geniales Konzept - es gibt viele Module, die Du einfach zusammenstecken kannst (auch Echtzeituhr und Display z.B.) - für den Anfang würde ich aber mal mit dem Nano beginnen...

    Ich kann mir gut vorstellen, dass Du begeistert bist, wenn Du den Arduino mal genauer kennst. Mit denen kann man einiges machen - meist viel besser als mit dem Raspberry. Der Raspberry hat seine Stärke bei Visualisierung (Display und Kamera), großen Datenmengen und aufwändigen Berechnungen und wenn man eine Netzwerkanbindung benötigt. Wenn keines der aufgezählten notwendig ist, ist meist der Arduino die bessere Wahl (wenn Du willst kann ich das noch begründen).

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Etwas Offtopic, weil ich dir den Spass am Basteln nicht nehmen möchte, wovon ich selbst eh keine Ahnung habe.

    Aber warum lässt du den Gardena Smart Sileno City 500 nicht nur nachts laufen, wenn die Kaninchen eh im Stall sind? Den Sileno kannst du ja entsprechend programmieren und leise genug für die Nachtarbeit ist er auch.

    Raspberry Pi 4B mit 4 GB (Raspbian Buster USB-Boot_Stick/Ubuntu-Mate 20.10 USB-Boot-SSD, vorerst als Office-PC-Ersatz zum Kennenlernen, später vllt. noch Pihole)

  • Ich denke mal, wenn er vor hätte die Türe manuell zu öffnen, könnte er auch um 10 Uhr hin gehen ;)

    Außerdem scheint es üblich zu sein die Hennen erst später frei zu lassen, da sie vormittags scheinbar brüten. Wenn man sie da schon frei lässt, dann ist jeden Tag Ostern (Eiersuche) :lol:

    Angaben ohne Gewähr - Infos habe ich aufgeschnappt, da meine Schwiegermutter Hennen hat...

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Ich glaube, ich hatte etwas missverstanden oder meine Phantasie ging mit mir durch. Ich nahm an, der Sileno meldet seinen Feierabend, woraufhin der Raspbi die Stalltür öffnet. Hier soll ja "nur" die Stalltür zu einer festen Zeit öffnen. Das mit den Hennen ist interessant, aber hier gehts um Kaninchen ...

    Auch wenn man sich möglicherweise etwas von Hühnerstallprojekten abschauen kann: Hühnerstalltür

    Raspberry Pi 4B mit 4 GB (Raspbian Buster USB-Boot_Stick/Ubuntu-Mate 20.10 USB-Boot-SSD, vorerst als Office-PC-Ersatz zum Kennenlernen, später vllt. noch Pihole)

  • hi zusammen,

    erstmal frohe Ostern und besten Dank für schon einige gute Infos.

    ich versuche mal auf alle Aspekte einzugehen.

    • Gardena Smart Sileno City : Ja der ist in der Tat sehr leise. War auch ein klares Kaufkriterium. Auch jetzt im Live-Betrieb kann ich das bestätigen. Hat mich erstmal auch zum Umdenken gebracht und lasse ihn im Moment auch weitestgehend nachts mähen. Ich kam aber auch auf den RPi, da Gardena ja eine Web-Schnittstelle hat zum Bedienen einerseits und auch eine IFTTT. Sicher geht auch FHEM, und auch da dachte ich dann an den RPi
    • Abhängigkeit: Die Idee, war das mit dem Mäher in Abhängigkeit zu steuern. Ist aber kein absolutes Muss. Also geht auch per reiner Zeitsteuerung. Da kommt es auch nicht auf super Genauigkeit an. D.h. wenn hier die Zeit leicht aus dem Ruder läuft, dann wäre das unkritisch, ob der Stall um 10:15 oder bereits um 10:10 oder erst 10:20 aufgeht. Hauptsache es ist Puffer zur letzten Mähzeit.
    • Arduino: Wie schon gesagt, ich bin da nicht festgelegt. Hatte es aber bis dato eher pro RPi verstanden. Ich wundere mich auch, denn es gibt ja hier un din diversen Foren schon grundsätzliche Erklärungen, wie man mit einem RPi einen Servo-Motor (und ja ist PWM) ansteuert. Wieso ist das denn jetzt nicht geeignet? Ist da der Stromverbrauch wirklich so unterschiedlich gegenüber Arduino?
      @VeryPrivat: Du hast ja einen Arduino Nanov3 empfohlen. Ich habe den Link bei Amazon mal angesehen. Da sind auch einige Kommentare, die das als Anfänger eher nicht empfehlen. Ich wäre logischerweise ebenso wie beim RPi auch Arduino Anfänger. Bin ich da richtig mit dem Einstieg?
    • Programmierung: Ich hatte bisher bei RPi das immer auf Python Basis gesehen. Wäre das bei Arduino auch Python oder geht das da ganz anders? Und wieso geht ein Cronjob nicht? Das klingt doch tatsächlich recht logisch von der Idee. Den Einwand habe ich noch nicht verstanden
    • Hühner vs Hasen: Wie schon richtig bemerkt: Ja es sind Hasen. Es gibt wohl mehr Hühnerprojekte. Ich habe auch schon einige gesehen. Aber dennoch danke an @Blacky1974  , der Link war mir neu. Schaut auf den ersten Blick interessant aus. Will ich mal noch studieren.

    Ich freue mich auf weiter gute Hinweise.

  • Der Stromverbrauch ist easy Faktor 10-50 im Normalbetrieb, vor allem aber koennen die kleinen Tiefschlaf-Modi in denen nur noch Microampere verbraucht werden. Der PI beherrscht so etwas nicht.

    Bezueglich der Genauigkeit: nach https://forum.arduino.cc/index.php?topic=13289.0 muss man pro tag zwischen ~4 Sekunden und 7.5 Minuten / Tag rechnen. Ersteres ist sicher vertretbar, letzteres denke ich nicht. Vor allem aber erfordert es von dir immer eine Synchronisation. Also wie zb vorgeschlagen aus/anschalten zu einem festen Zeitpunkt. Und *der* Teil wuerde mich nerven. Ich wuerde daher eine RTC spendieren, um das Problem einfach los zu sein. Oder aber, wenn es WIFI gibt, mit NTP. Das geht auch mit einem ESP32 zB.

    Und last but not least: das programmieren ist ja das eine. Aber dann will der PI auch noch "gehaertet" werden. Keine Logs mehr auf die SD-Karte schreiben, wenn moeglich read-only mounten, Ringbuffer fuer logfiles, etc. Das geht alles, aber ist nochmal extra Aufwand, der bei einem kleineren System entfaellt.

    Bezueglich des Cronjobs: nicht gehen ist nicht richtig. Das Mittel der Wahl ist es trotzdem nicht. Es ist aufwaendiger, dem Python-Programm beizubringen, eine von aussen per cronjob zB als Text-Datei erstelltes "Ereignis" zu beruecksichtigen, als einfach selbst zu pruefen, wie spaet es gerade ist. Mal kurz skizziert (ungetestet):

    Der zweite Teil ist halt komplett in sich geschlossen. Kein zweiter, auesserer Teil, der in Betrieb genommen werden muss, keine Spuren im Dateisystem, die da rumliegen und zB auch zu Fehlausloesungen fuehren koennen, etc.

    2 Mal editiert, zuletzt von MistyFlower59469 (12. April 2020 um 13:31)

  • Ich habe mir die Kommenate mal angesehen - das Hauptproblem scheint zu sein, dass der USB-Treiber unter Windows installiert werden muss und dass der "alte" Bootloader auf diesem Arduino drauf ist. Da ich Linux nutze, hat die Kommunikation sofort funktioniert (ohne Treiber runter laden). Ich musste in der Arduino IDE auch "alten Bootloader" auswählen - konnte damit aber keinerlei Probleme feststellen. Jedenfalls scheinen die Probleme leicht lösbar zu sein, auch unter Windows.

    Das mit "für Anfänger geeignet" ist natürlich stark subjektiv. Da ich mich aber schon vor Arduino mit Microcontrollern beschäftigt habe, muss ich sagen, dass Arduino optimal für den Einstieg ist. Für fast jedes Problem gibt es schon Libraries und Beispiele - in kürzester Zeit läuft da schon was.

    Das fällt mir persönlich am Raspberry oft noch viel schwieriger, mal hier ein Problem mit der Abhängigkeit, mal lässt sich gar nichts kompilieren, mal findet man haufenweise Python 2 Beispiele, soll aber Python 3 verwenden. Die GPIOs und die Spannungsversorgung sind extrem sensibel und wenn man einen Fehler macht sind schnell ca. 50€ kaputt. Schaltet man während des Betriebes (unabsichtlich) mal zum falschen Zeitpunkt aus, ist das Dateisytem kaputt.

    Mein Vorschlag wäre: Probiere es mal einfach (ohne RTC) und sammle Erfahrung. Parallel kannst Du ja auf einem zweiten Arduino das System weiter entwickeln (z.B. mit RTC) und dann einfach austauschen.

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!