Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [geklärt] prinzipielle Steuerungsfrage

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [geklärt] prinzipielle Steuerungsfrage

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

      Hallo,

      ich hab mir vor längerem mit einem ESP826 und zwei 8-fach Relaiskarten ein kleine Gartensteuerung gebaut.

      Auf dem ESP8266 läuft ein WebServer mit dem ich über eine HTML Seite die Relais ein/aus-schalten kann.

      In der WebSeite ist auch ein automatisches "reload", damit -falls die WebSeite von einem anderen Rechner(Smartphone)

      aufgerufen wird- auch immer der aktuelle Status der Relais angezeigt wird…. funktioniert soweit prima.

      Jetzt möchte ich das Ganze auch zusätzlich über ioBroker steuern, daher die Frage, wie gehe ich hier am geschicktesten vor.

      Javascript ist kein Problem, allerdings ist mir die NODEJS-Logik nicht ganz klar.

      Ich kann per http-request, jederzeit den Status der Relais abfragen, und Datenpunkte damit setzen(z.B: Relais1: an/aus),

      aber wie mache ich das im IOBroker?

      mit "setState" kann ich Datenpunkte setzen,

      mit getState Datenpunkte abfragen...

      mit on({id:'xxxxx'},... kann ich auf Änderungen reagieren,

      wie steuere ich aber sowas jetzt vernünftig, mit je zwei Datenpunkten(SOLL/IST-Zustand) pro Relais?

      Ein script "pollt" alle10 sec den Status der Relais und setzt die Datenpunkte(IST)

      parallel läuft ein weiteres script, das auf Änderungen der Datenpunkte (SOLL) reagiert, und dann entsprechend schaltet,

      ist das die übliche Vorgehensweise oder gibt's was besseres mit IOBroker?

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

        @stoffel67:

        Ich kann per http-request, jederzeit den Status der Relais abfragen, und Datenpunkte damit setzen(z.B: Relais1: an/aus),

        aber wie mache ich das im IOBroker?

        mit "setState" kann ich Datenpunkte setzen, `
        Ganau so: Per Polling (schedule) die Werte aus der Webseite abfragen, und mit setState(id, val, true) den Datenpunkt setzen.
        @stoffel67:

        wie steuere ich aber sowas jetzt vernünftig, mit je zwei Datenpunkten(SOLL/IST-Zustand) pro Relais? `
        Weshalb zwei Datenpunkte pro Relais ?
        @stoffel67:

        Ein script "pollt" alle10 sec den Status der Relais und setzt die Datenpunkte(IST)

        parallel läuft ein weiteres script, das auf Änderungen der Datenpunkte (SOLL) reagiert, und dann entsprechend schaltet, `
        Das kann alles in einem Skript erfolgen, sogar für alle Relais. Prinzip:

        const id1 = '...'; // Datenpunkt-ID für Relais 1
        const id2 = '...'; // Datenpunkt-ID für Relais 2
        const js = 'system.adapter.javascript.' + instance;
        
        on({id: id1, change: 'ne', fromNe: js}, function(dp) {
           // Wert an Webseite für Relais 1 senden
        });
        
        on({id: id2, change: 'ne', fromNe: js}, function(dp) {
           // Wert an Webseite für Relais 2 senden
        });
        
        schedule('*/10 * * * * *', function() {
           // Werte von Webseite holen
           setState(id1, val1, true); // val1 = Wert für Relais 1 von Webseite 
           // usw.
        });
        
        
        1 Reply Last reply Reply Quote 0
        • S
          stoffel67 last edited by

          So hab' ich mir es auch gedacht, aber ( ich hab's so noch nicht programmiert..)

          wenn ich durch den "schedule" alle 10 sec den Status hole, und mit "setState" setze, produziere ich da nicht eine "Endlosschleife"

          denn mit setState "ändert" sich der Zustand und damit wird der Befehl über "on ({…" an die WebSite erneut gesendet?

          oder habe ich da einen Gedankenfehler?

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

            @stoffel67:

            denn mit setState "ändert" sich der Zustand und damit wird der Befehl über "on ({…" an die WebSite erneut gesendet?

            oder habe ich da einen Gedankenfehler? `
            Genau das soll der Triggerzusatz fromNe: js verhindern: Ist die Quelle der Wertänderung die Javascript-Instanz (setState), wird nicht getriggert.

            1 Reply Last reply Reply Quote 0
            • S
              stoffel67 last edited by

              Ahh, OK

              wieder was gelernt…

              Vielen Dank...

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

                Dann markiere bitte das Thema im Betreff des ersten Beitrags als [geklärt] oder so ähnlich.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                567
                Online

                31.9k
                Users

                80.2k
                Topics

                1.3m
                Posts

                2
                6
                373
                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