Tsgrain

Linux Infotag 2024 in Augsburg

2024-04-20

Tennisplatz

Vier Sprinkler an den Ecken

Sprinkler

Gesamte Anlage

Sieben Plätze (Stadtbergen)

Aufgaben

  • Manuelle Beregnung

    • Vor dem Spiel (5 Minuten)
  • Automatische Beregnung

    • Meist in der Nacht, je nach Wetter (ca. 15 bis 45 Minuten / Platz)

    • Auch am Tag bei grosser Hitze (Mittag, ca. 10 Minuten / Platz)

Beregnungssteuerung Edst1008

Edst1008

Technik aus den 70er/80er Jahren

  • 8085 µP + UV-EPROM
  • Schwer zu bedienen für Spieler (zu viele Knöpfe)
  • Viele mechanische Teile – häufig Wackler
  • Repariert (fast) niemand mehr

Ideen

  • Was mit (Embedded) Linux bauen

  • Soll preiswert sein – nur mit “Maker Zeugs”

  • Raspberry Pi, Beagle Bone Black, etc.

  • Einfachste manuelle Bedienung

  • Alles Komplexe über lokale Web-Schnittstelle

Erste Überlegungen im Okt 2019: https://hhoegl.informatik.hs-augsburg.de/hhwiki/Zeitsteuerung

Grober Aufbau

Magnetventile

  • Eine Leitung → vier Sprinkler

  • Magnetventil (24 V~, ca. 8-9 Watt)

Schaltplan

Software

  • Zwei Hintergrundprozesse (Python)

    • Controller

      • Überwacht manuelle Tasten und automatische Abläufe (einmalig oder täglich wiederholend)

      • Steuert Magnetventile über Relais

      • Speichert Jobs in TinyDB

    • Web-Anwendung (Flask)

      • Am Anfang sehr simpel
      • Zunächst kein asynchroner UI-Update

Software (2/2)

Erster Aufbau

  • Christian Graber (BA)

  • April 2020

  • Preis der Teile ca. 200 Euro

  • Siehe den Artikel von 2020.

Erste Erfahrungen

  • Gute Akzeptanz, da einfache manuelle Bedienbarkeit

  • Gelegentliche Störungen

    • Induktive Lasten immer tückisch
    • Suppressor Dioden schaffen Abhilfe!
  • Es kommen neue Anforderungen

    • Jobs aktiv/inaktiv
    • Jobs an manchen Tagen deaktivieren
    • Web-Interface ausbauen! Brauchen mehr Möglichkeiten.

Zweite Iteration (1/5)

  • Thomas Hampp, BA 2021

  • Redesign des Controllers (Python schöner und moderner)

  • Web-Backend nun in Go

  • Kommunikation Controller ↔︎ Web-Backend über gRPC

  • Web-Fronted mit React und RESTful-API (OpenAPI) zum Go Server

  • Yocto Project mit RAUC Updater

  • Entwurf einer Erweiterungsplatine für Raspi

Zweite Iteration (2/5) – SW-Update

Bisher

  • Installiere neue Version des OS (Raspi OS / Debian)
  • Installiere Tsgrain Anwendung darauf

Besser wäre

  • Ein reproduzierbares Image in dem OS und Anwendung sind.
  • Update-Programm (CLI, GUI) installiert Image.
  • Yocto-Project kann z.B. so ein Image bauen (auch buildroot)

Zweite Iteration (3/5) – Yocto Project

Zweite Iteration (4/5) – RAUC

Zweite Iteration (5/5)

  • Wurde bisher nicht komplett im Betrieb eingesetzt, nur in Teilen

Doku: https://hhoegl.de/etc/tsgrain/ba_hampp/html

Quellen: https://code.thetadev.de/TSGRain

Dritte Iteration (1/2)

H. Högl, Jan - März 2024

  • ☑ neu hinzugekommene Anforderungen

  • Controller von T. Hampp plus Erweiterungen

  • Web-Backend mit Python/Flask neu geschrieben (HTTP, XHR, JavaScript)

    (React ist sicher toll, aber ich bin nicht vertraut genug damit)

  • gRPC zwischen Controller und Web-Backend (super!)

  • CLI Client in Python (gRPC)

Dritte Iteration (2/2)

Zukunft (1/4)

RPi Erweiterungsplatine

Einen ersten KiCad Entwurf gibt es bereits (von T. Hampp), wurde aber noch nicht gebaut:

Zukunft (2/4)

Beregnungsautomatik dynamischer machen

Naheliegend: Vom Wetter abhängig machen

  • Falls es seit Tagen schüttet, muss man nicht beregnen
  • Lokale Wetterstation, oder
  • Wetterabfrage über Internet, z.B. https://www.wunderground.com, und/oder
  • Bodenfeuchte messen

Zukunft (3/4)

Linux schneller starten

  • Zur Zeit braucht der Bootvorgang fast eine Minute
  • Erledigt sich vermutlich durch massgeschneidertes Yocto Image

Linux robuster machen

  • Muss robust beim “Steckerziehen” sein (RO Filesystem)
  • Bisher aber mit “ext4” auch (fast) kein Problem

Zukunft (4/4)

  • Auf Yocto & RAUC umsteigen

  • Mit Funktionstests beschäftigen

    • Macht das Gerät auch, was es tun soll?
  • Ins Internet bringen (LoRaWAN als Alternative)

  • Mit alternativen Web-Frameworks experimentieren, z.B SvelteKit

Andere freie Projekte

OpenSprinkler https://opensprinkler.com

  • Mehr auf die Gartenbewässerung ausgerichtet

  • Läuft auf Arduino, ESP8266/32 oder Raspberry Pi

Noch weitere?

Fazit

  • Funktioniert seit Sommer 2020 (fast) reibungslos.

  • Interessante Anwendung, in der viele Aspekte von Embedded Linux enthalten sind.

  • Schönes Betätigungsfeld für Hochschulprojekte.

  • Es gab schon ein paar Nachbauer (erwünscht!).

  • Man kann noch einiges verbessern.

  • Wer Interesse hat kann sich das gerne beim TSG Stadtbergen anschauen (Email an mich).

  • Homepage: https://hhoegl.de/tsgrain.html

Quarto

Kleine Werbung: Die Folien sind mit quarto.org gemacht.


Gitlab

https://gitlab.com/huberthoegl/tsgrain_vortrag_lit2024