Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Bewässerung (1xPumpe/4xVentile) / CRON + JSON

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Bewässerung (1xPumpe/4xVentile) / CRON + JSON

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      krizz2023 last edited by

      Hallo liebe Gemeinde,

      beim Versuch mir selbst zu helfen stosse ich leider an meine Grenzen und bin auf Hilfe zur Selbsthilfe angewiesen.

      Folgende Aufgabenstellung:
      Gartenbewässerung; Hauswasserwerk mit hm.IP Schaltsteckdose, 4x Magnetventile die nacheinander minutengenau getimed per shelly (shelly plus 2PM) auf und wieder zu gehen sollen, also mit einem exakt definierten Start und Stopzeitpunkt für jeden Wochentag und nicht über Start und Dauer wie oft üblich. Das Ganze soll in einer tabellenähnlichen Optik in VIS angezeigt und idealerweise auch dort "editiert" werden können.

      Für die exakte Definition der Schaltzeiten der Ventile dachte ich mich des CRON's zu bedienen, allerdings muss dann um es außerhalb des CRON weiter nutzbar zu machen, z.B. zur Anzeige in VIS für jeden Schaltzeitpunkt für sowohl Stunde und Minute, ein Datenpunkt angelegt werden.
      Das habe ich bereits gemacht, bin aber der Meinung dass das eleganter und weniger Bloating gehen müsste.
      7 Wochentage mit jeweils 4 Datenpunkten Start:Stunde/Minute, Stop:Stunde/Minute.
      Ich muss es auch so weit aufdröseln, da die Pumpe z.B. 20 Minuten laufen soll, während innerhalb dieses Zeitraumes die Ventile jeweils einzeln geöffnet werden, was etwas mit dem Mindestwasserdruck zu tun hat den ich jeweils auf den Leitungen brauche. Da aber nicht jeder Tag identisch ist, ich z.B. die Rasenberegnung nur alle zwei Tage oder bei extremer Trockenheit vllt. gar nicht laufen lasse, muss es variabel und editierbar bleiben und das gern in der VIS und nicht im Script.

      Nun die Frage wie ich das für die VIS innerhalb blockly in eine JSON "umformatiere". Leider ist das Thema JSON bei aller Recherche wohl vielen zu viel "echtes" Scripten, weswegen dazu verhältnismäßig wenig an Hilfestellung zu finden ist.
      Eine Frage dabei z.B. ob ich Stunden und Minuten aus zwei Datenpunkten innerhalb eines Tabellenfeldes anzeigen lassen kann oder jeder Datenpunkt sein eigenes Feld braucht, Inkl. der Frage nach dem trennenden Doppelpunkt in der Darstellung.
      Oder die Frage wie ich - ebenfalls nur ein "Ansichtssache" - eine führende "0" bei einstelliger Stundezahl einfüge, aber auch nur dann (muss sicherlich im Script bei Erstellen der Tabelle geschehen).

      Verstanden habe ich dabei soweit schon mal das allem voran eine leere Liste erstellt werden muss, die dann aus verschiedenen Textblöcken und Datenpunkten die Syntax nachbildet um diese Liste mit korrekter Syntax dann am Ende in ein JSON-Objekt umformatiert, welches dann widerum mit dem entsprechenden Widget in die VIS eingebunden wird,
      Die Darstellung lässt sich dann per css gestalten.

      Aktuell bin ich arbeiten und muss mein bereits erstelltes Skript mit den CRON's nachreichen.
      In diesem gibt es bereits ein Abfrage ob manuell oder automatischer Betrieb und danach eine Reihe von CRON's für jeden Wochentag und Schaltpunkt, die ich für die Übersicht in Funktionen ausgelagert habe.

      paul53 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @krizz2023 last edited by paul53

        @krizz2023 sagte: VIS innerhalb blockly in eine JSON "umformatiere".

        Das Erzeugen der JSON-Table ist auch in Blockly kein Problem. Aber: Kann man in eine JSON-Table unter Vis auch Werte (Uhrzeiten) eingeben?

        @krizz2023 sagte in Bewässerung (1xPumpe/4xVentile) / CRON + JSON:

        Frage nach dem trennenden Doppelpunkt in der Darstellung.

        Für Uhrzeiten mit Doppelpunkt siehe hier.

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @krizz2023 last edited by paul53

          @krizz2023 sagte: 7 Wochentage mit jeweils 4 Datenpunkten
          ... nur alle zwei Tage oder bei extremer Trockenheit vllt. gar nicht laufen lasse

          Also 6 Datenpunkte pro Wochentag: Freigabe Wochentag, 4 mal Ventilstart, Ende

          K 1 Reply Last reply Reply Quote 0
          • K
            krizz2023 @paul53 last edited by

            @paul53
            So, ich habe jetzt mal etwas mehr an Konkretem in der Hoffnung dass man mir besser helfen kann.

            Mein bisheriges Script mit nem Status Auto/manuell, dann die CRONs für Pumpe und die Ventile und das jeweils für jeden Wochentag. Der Link zur führenden Null und dem Doppelpunkt hat zwar nicht wirklich geholfen, da das Problem dort ein anderes ist, aber ich stell mir die Frage ob das auftrennen der Stunden und Minuten als seperate DP's so schlau ist.

            Screenshot 2025-06-05 123457.png

            Screenshot 2.png

            Screenshot 3.png

            Am Ende noch ein Cron der ab Oktober auf manuell schaltet.
            und dann sollte das Array erstellt werden und ein wenig debug output und der versuch das ergebnis in einen DP zu schreiben.

            Zum Ausprobieren habe ich das hier:

            Screenshot 4.png

            zusammengehackt und mit den versch. Datums und Konvertierunsblöcken gespielt um die führende Null hinzubekommen, ergebnislos.
            Der debug-output:
            Screenshot 5.png

            Wobei ich, ahnunglos in diesem Thema wie ich bin, auch nicht mit mehr gerechnet habe .... 😉
            Dass ich am ende für ein JSON in meiner Tabelle diese Syntax Screenshot 6.png

            haben muss, check .
            Dass ich das händisch mit Textblöcken erstellen muss, check.
            Dass dabei - glaube ich - sogar Leerzeichen und Zeilenumbrüche ne Rolle spielen, check.

            Die Syntax scheint zeilenweise aufgebaut.
            Wenn ich der Übersicht wegen die Gesamtliste in Teillisten aufteilen, sollte ich das dabei berücksichtigen?
            Also Teillisten nicht für Pumpe, Ventil1-4, sondern nach Wochentagen Mo-So anlegen?
            Sollte es bei aufgeteilten Zeit-DP's bleiben werden diese Listen unglaublich lang...

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @krizz2023 last edited by paul53

              @krizz2023 sagte: CRONs für Pumpe und die Ventile

              Benötigt die Pumpe einen eigenen CRON? Ich würde sie laufen lassen, wenn ein Ventil geöffnet ist:

              Blockly_temp.JPG

              @krizz2023 sagte in Bewässerung (1xPumpe/4xVentile) / CRON + JSON:

              JSON in meiner Tabelle

              Prinzip zum Aufbau einer JSON-Tabelle:

              Blockly_temp.JPG

              Die festen Werte sind durch die zugehörigen Datenpunkt-Werte zu ersetzen.

              @krizz2023 sagte in Bewässerung (1xPumpe/4xVentile) / CRON + JSON:

              stell mir die Frage ob das auftrennen der Stunden und Minuten als seperate DP's so schlau ist.

              Eher nicht. Deshalb hatte ich das Prinzip verlinkt, wie man aus einer Uhrzeit mit Doppelpunkt einen CRON erstellt.

              Blockly_temp.JPG

              35 dieser Funktionen werden benötigt. Die Schleife sorgt dafür, dass ein offenes Ventil geschlossen wird - unabhängig von der Reihenfolge der Öffnung.

              Die Variable mit den Ventil-IDs wird im Skript nur einmal bei Skriptstart gesetzt.

              Blockly_temp.JPG

              @krizz2023 sagte in Bewässerung (1xPumpe/4xVentile) / CRON + JSON:

              Am Ende noch ein Cron der ab Oktober auf manuell schaltet.

              Ich würde die 7 Freigabe-Datenpunkte auf falsch setzen.

              K 1 Reply Last reply Reply Quote 0
              • K
                krizz2023 @paul53 last edited by

                @paul53

                Saugut.

                Ich werd nen Moment benötigen um das zu adaptieren, aber das ist quasi die komplettlösung.
                Dachte mir beim Bauen schon, das der Ansatz nicht gut ist.
                Danke vorab schonmal. Ich melde mich, wenn ich Fragen habe.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                719
                Online

                31.7k
                Users

                79.7k
                Topics

                1.3m
                Posts

                2
                6
                93
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo