Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. S7 mit Node Red (node-red-contrib-s7)

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

S7 mit Node Red (node-red-contrib-s7)

Scheduled Pinned Locked Moved Node-Red
92 Posts 9 Posters 12.6k Views 9 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • fu_zhouF fu_zhou

    @hf_spsler Der Test läuft ja quasi von selbst, du überprüfst einfach die gelesenen Werte (die du vorher in die S7 schreibst: Haken bei Abfrage + Haken bei RW) auf Ausreißer, z.B. mit Blockly und lässt bei Abweichung einen Log-Eintrag los, den kannst du dann im iobroker im Protokoll finden (wenn er auftritt):
    e8dfb3e5-ce10-4184-b5cb-c112f78c1868-image.png

    • Reserve92 = DB22.DBD92 (REAL) bei mir
    • Der Wert ist nie >99 oder < -99 beim Schreiben
    • Wenn der Wert >99 oder < -99 gelesen wird, werden die 3 Zeilen im Protokoll als Kategorie "Debug" eingetragen
    • Das Protokoll kannst du ja über mehrere Tage einsehen (LOG HERUNTERLADEN) und dann einfach nach "Abweichung" suchen
    HF_SPSlerH Offline
    HF_SPSlerH Offline
    HF_SPSler
    wrote on last edited by
    #80

    @fu_zhou Okay, ich versuche das heute Abend mal nach Feierabend umzusetzen :+1:

    S7 1214 (Master) + Logo!8(Slave Erdgeschoss) + Logo!8 (Slave Obergeschoss) + S7 1214 (Slave Garage/Nebengebäude)

    1 Reply Last reply
    0
    • WalW Wal

      @hf_spsler ,
      so eilig jetzt nicht. ;-)

      fu_zhouF Offline
      fu_zhouF Offline
      fu_zhou
      wrote on last edited by fu_zhou
      #81

      @wal Ich habe den node-snap7 issue mal geschlossen und im iobroker.S7 issue einen Aufruf zum Mittesten gestartet. Ich glaube aber nicht, dass da viel zurückkommt. Bei mir läuft das Ganze mit sämtlichen Test-Skripten parallel zum Produktivbetrieb stabil über die letzten Tage. Sobald du den Mut zum Pull hast, würde ich auch den iobroker.S7 issue auf Github schließen.

      Synology DS920+ VM, S7-315 PN mit ET200S

      WalW 1 Reply Last reply
      1
      • fu_zhouF fu_zhou

        @wal Ich habe den node-snap7 issue mal geschlossen und im iobroker.S7 issue einen Aufruf zum Mittesten gestartet. Ich glaube aber nicht, dass da viel zurückkommt. Bei mir läuft das Ganze mit sämtlichen Test-Skripten parallel zum Produktivbetrieb stabil über die letzten Tage. Sobald du den Mut zum Pull hast, würde ich auch den iobroker.S7 issue auf Github schließen.

        WalW Offline
        WalW Offline
        Wal
        Developer
        wrote on last edited by
        #82

        @fu_zhou ,
        ich lasse @HF_SPSler noch ein paar Tage Zeit (ein Paar sind 2 ;-) )für eine Rückmeldung und wenn die positiv ist werde ich den Pull Request starten.

        Gruß
        Walter

        DoorIO-Adapter
        wioBrowser-Adapter und wioBrowser

        HF_SPSlerH 1 Reply Last reply
        0
        • WalW Wal

          @fu_zhou ,
          ich lasse @HF_SPSler noch ein paar Tage Zeit (ein Paar sind 2 ;-) )für eine Rückmeldung und wenn die positiv ist werde ich den Pull Request starten.

          HF_SPSlerH Offline
          HF_SPSlerH Offline
          HF_SPSler
          wrote on last edited by HF_SPSler
          #83

          @wal Moin zusammen.

          Ich habe jetzt die letzten zwei Tage insgesamt fünf Variablen auf SPS Seite auf Ausreißer überprüft und wenn einer Aufgetreten wäre einen Zähler hochgezählt. Was soll ich sagen, der Zähler ist auch nach zwei Tagen immer noch 0 - es ist also aus meiner Sicht davon auszugehen, dass es zu keinen Ausreißern mehr kommt :clap: :clap:

          Um ganz sicher zu gehen dass ich nicht irgendeinen Denkfehler bei dem Testaufbau drin hab hier meine Vorgehensweise:

          5cb77d24-9afc-47a4-8ef6-646dfdd25390-grafik.png

          PS: Bei AmbientTemperature nicht wundern, da sich der betreffende Akku im Gartenhaus befindet ist er mit einer Heizmatte versehen und der Temperaturfühler der eigentlich die Raumtemperatur im Gartenhaus misst wird aktuell dazu mißbraucht die Heizmatte zu messen. die 30°C sind also plausibel :blush:

          S7 1214 (Master) + Logo!8(Slave Erdgeschoss) + Logo!8 (Slave Obergeschoss) + S7 1214 (Slave Garage/Nebengebäude)

          WalW fu_zhouF 2 Replies Last reply
          1
          • HF_SPSlerH HF_SPSler

            @wal Moin zusammen.

            Ich habe jetzt die letzten zwei Tage insgesamt fünf Variablen auf SPS Seite auf Ausreißer überprüft und wenn einer Aufgetreten wäre einen Zähler hochgezählt. Was soll ich sagen, der Zähler ist auch nach zwei Tagen immer noch 0 - es ist also aus meiner Sicht davon auszugehen, dass es zu keinen Ausreißern mehr kommt :clap: :clap:

            Um ganz sicher zu gehen dass ich nicht irgendeinen Denkfehler bei dem Testaufbau drin hab hier meine Vorgehensweise:

            5cb77d24-9afc-47a4-8ef6-646dfdd25390-grafik.png

            PS: Bei AmbientTemperature nicht wundern, da sich der betreffende Akku im Gartenhaus befindet ist er mit einer Heizmatte versehen und der Temperaturfühler der eigentlich die Raumtemperatur im Gartenhaus misst wird aktuell dazu mißbraucht die Heizmatte zu messen. die 30°C sind also plausibel :blush:

            WalW Offline
            WalW Offline
            Wal
            Developer
            wrote on last edited by
            #84

            @hf_spsler ,
            das scl müsste stimmen, danke.

            Gruß
            Walter

            DoorIO-Adapter
            wioBrowser-Adapter und wioBrowser

            1 Reply Last reply
            0
            • HF_SPSlerH HF_SPSler

              @wal Moin zusammen.

              Ich habe jetzt die letzten zwei Tage insgesamt fünf Variablen auf SPS Seite auf Ausreißer überprüft und wenn einer Aufgetreten wäre einen Zähler hochgezählt. Was soll ich sagen, der Zähler ist auch nach zwei Tagen immer noch 0 - es ist also aus meiner Sicht davon auszugehen, dass es zu keinen Ausreißern mehr kommt :clap: :clap:

              Um ganz sicher zu gehen dass ich nicht irgendeinen Denkfehler bei dem Testaufbau drin hab hier meine Vorgehensweise:

              5cb77d24-9afc-47a4-8ef6-646dfdd25390-grafik.png

              PS: Bei AmbientTemperature nicht wundern, da sich der betreffende Akku im Gartenhaus befindet ist er mit einer Heizmatte versehen und der Temperaturfühler der eigentlich die Raumtemperatur im Gartenhaus misst wird aktuell dazu mißbraucht die Heizmatte zu messen. die 30°C sind also plausibel :blush:

              fu_zhouF Offline
              fu_zhouF Offline
              fu_zhou
              wrote on last edited by
              #85

              @hf_spsler Nachdem du gem. deiner Signatur Logos im Einsatz hast: Willst du hier mal eine Einschätzung abgeben?
              https://github.com/ioBroker/ioBroker.s7/issues/301#issue-2080449908

              Synology DS920+ VM, S7-315 PN mit ET200S

              HF_SPSlerH 1 Reply Last reply
              0
              • fu_zhouF fu_zhou

                @hf_spsler Nachdem du gem. deiner Signatur Logos im Einsatz hast: Willst du hier mal eine Einschätzung abgeben?
                https://github.com/ioBroker/ioBroker.s7/issues/301#issue-2080449908

                HF_SPSlerH Offline
                HF_SPSlerH Offline
                HF_SPSler
                wrote on last edited by
                #86

                @fu_zhou Moin, kurz zum S7 Adapter bezüglich Ausreißer: Bis jetzt keinerlei Auffälligkeiten, der Zähler steht noch immer bei 0 :+1:

                Bezüglich Logo: Meine Logos übernehmen Sensor- Aktoraktivitäten in den jeweiligen Geschossen, sie sind aber als Slaves an die S7 angebunden und haben zum Iobroker keinen Kontakt. Einzig die S7 als Kopf-SPS kommuniziert über einen DB mit Iobroker. Da kann ich leider nichts sinnvolles beitragen.

                S7 1214 (Master) + Logo!8(Slave Erdgeschoss) + Logo!8 (Slave Obergeschoss) + S7 1214 (Slave Garage/Nebengebäude)

                KoneK 1 Reply Last reply
                0
                • HF_SPSlerH HF_SPSler

                  @fu_zhou Moin, kurz zum S7 Adapter bezüglich Ausreißer: Bis jetzt keinerlei Auffälligkeiten, der Zähler steht noch immer bei 0 :+1:

                  Bezüglich Logo: Meine Logos übernehmen Sensor- Aktoraktivitäten in den jeweiligen Geschossen, sie sind aber als Slaves an die S7 angebunden und haben zum Iobroker keinen Kontakt. Einzig die S7 als Kopf-SPS kommuniziert über einen DB mit Iobroker. Da kann ich leider nichts sinnvolles beitragen.

                  KoneK Offline
                  KoneK Offline
                  Kone
                  wrote on last edited by Kone
                  #87

                  @hf_spsler
                  ich hab filtere die aussreißer in der s7 raus mit diesem baustein.

                  FUNCTION_BLOCK "Mittelwert_Real_gleite4"
                  { S7_Optimized_Access := 'FALSE' }
                  VERSION : 0.1
                  //Der Baustein  berechnet über 4 Messwerte hinweg einen gleitenden Mittelwert. 
                  //Die Bildung des Mittelwertes basiert auf folgender Gleichung:
                  //Yi=(X1+X2+X3+...+X4)/4.  Einen Schritt später werden die Messwerte wie folgt 
                  //durchgeschoben.
                  //Yi+1=(X2+X3+...+X4)/4.
                  //Wird der Baustein z.B. nur alle 100ms einmal durchlaufen, so mittelt er über 
                  //1,0 Sek. hinweg die Messwerte.
                     VAR_INPUT 
                        Eingangswert : Real;
                        Max_Positiv : Real := 32000.0;
                        Max_Negativ : Real := 0.0;
                     END_VAR
                  
                     VAR_OUTPUT 
                        Mittelwert_Ausgang : Real;
                        Zahlenbereich_Fehler : Bool;
                     END_VAR
                  
                     VAR_IN_OUT 
                        Start_oder_Reset : Bool;
                     END_VAR
                  
                     VAR 
                        Messwert_Schiebereg : Real;
                        Messwert_Schiebereg1 : Real;
                        Messwert_Schiebereg2 : Real;
                        Messwert_Schiebereg3 : Real;
                        Messwert_Schiebereg4 : Real;
                       
                        Summe_der_Messwerte : Real;
                        FP_Takt : Bool;
                     END_VAR
                  
                     VAR_TEMP 
                        Zu_klein : Bool;
                        zu_Positiv : Bool;
                        zu_Negativ : Bool;
                     END_VAR
                  
                  
                  BEGIN
                  NETWORK
                  TITLE = Arbeitstakt aufbereitung
                        A "SysDat_DB100".BlinkTakt_500msek_AnwPgm;
                        FP #FP_Takt;
                        JCN druu;
                  
                  NETWORK
                  TITLE = Prüfung des Zahlenbereiches
                  
                        L #Eingangswert;
                        A OV;
                        = #Zahlenbereich_Fehler;
                        JC druu;
                  
                        L #Max_Positiv          ;// grösste pos. Zahl stutzen
                        L #Eingangswert;
                        <R;
                        = #zu_Positiv;
                        A #zu_Positiv;
                        JCN zpos;
                        L #Mittelwert_Ausgang;
                        T #Eingangswert;
                        SET;
                        = #Zahlenbereich_Fehler;
                  zpos:      L #Max_Negativ               ;// grösste neg. Zahl stutzen
                        L #Eingangswert;
                        >R;
                        = #zu_Negativ;
                        A #zu_Negativ;
                        JCN zneg;
                        L #Mittelwert_Ausgang;
                        T #Eingangswert;
                        SET;
                        = #Zahlenbereich_Fehler;
                  
                  
                  NETWORK
                  TITLE = Alles löschen
                  zneg:      A #Start_oder_Reset;
                        JCN ruek;
                        L 0.0;
                        T #Mittelwert_Ausgang;
                        T #Messwert_Schiebereg1;
                        T #Messwert_Schiebereg2;
                        T #Messwert_Schiebereg3;
                        T #Messwert_Schiebereg4;
                        
                        T #Summe_der_Messwerte;
                        SET;
                        R #Start_oder_Reset;
                  
                  ruek:      NOP 0;
                  
                  
                  NETWORK
                  TITLE = Mittelwertberechnung Teil 1
                        L #Eingangswert             ;// Neun Wert hinzufügen
                        L #Summe_der_Messwerte;
                        +R;
                        T #Summe_der_Messwerte;
                  
                  
                  NETWORK
                  TITLE = Eins weiter Schieben
                        L #Messwert_Schiebereg3;
                        T #Messwert_Schiebereg4;
                        L #Messwert_Schiebereg2;
                        T #Messwert_Schiebereg3;
                        L #Messwert_Schiebereg1;
                        T #Messwert_Schiebereg2;
                  
                        L #Eingangswert;
                        T #Messwert_Schiebereg1;
                  
                  
                  NETWORK
                  TITLE = Mittelwertberechnung Teil 2
                        L #Summe_der_Messwerte      ;// Ältesten Wert abziehen
                        L #Messwert_Schiebereg4;
                        -R;
                        T #Summe_der_Messwerte;
                        L 3.0;
                        /R;
                        T #Mittelwert_Ausgang;
                  druu:      NOP 0;
                  
                  
                  END_FUNCTION_BLOCK
                  
                  HF_SPSlerH 1 Reply Last reply
                  0
                  • mickymM Online
                    mickymM Online
                    mickym
                    Most Active
                    wrote on last edited by
                    #88

                    Mit der normalen Filternode im Nahbandmodus kann man Ausreiser ganz einfach rausfiltern ohne Mittelwerte. Die verfälschen nur.

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    1 Reply Last reply
                    0
                    • KoneK Kone

                      @hf_spsler
                      ich hab filtere die aussreißer in der s7 raus mit diesem baustein.

                      FUNCTION_BLOCK "Mittelwert_Real_gleite4"
                      { S7_Optimized_Access := 'FALSE' }
                      VERSION : 0.1
                      //Der Baustein  berechnet über 4 Messwerte hinweg einen gleitenden Mittelwert. 
                      //Die Bildung des Mittelwertes basiert auf folgender Gleichung:
                      //Yi=(X1+X2+X3+...+X4)/4.  Einen Schritt später werden die Messwerte wie folgt 
                      //durchgeschoben.
                      //Yi+1=(X2+X3+...+X4)/4.
                      //Wird der Baustein z.B. nur alle 100ms einmal durchlaufen, so mittelt er über 
                      //1,0 Sek. hinweg die Messwerte.
                         VAR_INPUT 
                            Eingangswert : Real;
                            Max_Positiv : Real := 32000.0;
                            Max_Negativ : Real := 0.0;
                         END_VAR
                      
                         VAR_OUTPUT 
                            Mittelwert_Ausgang : Real;
                            Zahlenbereich_Fehler : Bool;
                         END_VAR
                      
                         VAR_IN_OUT 
                            Start_oder_Reset : Bool;
                         END_VAR
                      
                         VAR 
                            Messwert_Schiebereg : Real;
                            Messwert_Schiebereg1 : Real;
                            Messwert_Schiebereg2 : Real;
                            Messwert_Schiebereg3 : Real;
                            Messwert_Schiebereg4 : Real;
                           
                            Summe_der_Messwerte : Real;
                            FP_Takt : Bool;
                         END_VAR
                      
                         VAR_TEMP 
                            Zu_klein : Bool;
                            zu_Positiv : Bool;
                            zu_Negativ : Bool;
                         END_VAR
                      
                      
                      BEGIN
                      NETWORK
                      TITLE = Arbeitstakt aufbereitung
                            A "SysDat_DB100".BlinkTakt_500msek_AnwPgm;
                            FP #FP_Takt;
                            JCN druu;
                      
                      NETWORK
                      TITLE = Prüfung des Zahlenbereiches
                      
                            L #Eingangswert;
                            A OV;
                            = #Zahlenbereich_Fehler;
                            JC druu;
                      
                            L #Max_Positiv          ;// grösste pos. Zahl stutzen
                            L #Eingangswert;
                            <R;
                            = #zu_Positiv;
                            A #zu_Positiv;
                            JCN zpos;
                            L #Mittelwert_Ausgang;
                            T #Eingangswert;
                            SET;
                            = #Zahlenbereich_Fehler;
                      zpos:      L #Max_Negativ               ;// grösste neg. Zahl stutzen
                            L #Eingangswert;
                            >R;
                            = #zu_Negativ;
                            A #zu_Negativ;
                            JCN zneg;
                            L #Mittelwert_Ausgang;
                            T #Eingangswert;
                            SET;
                            = #Zahlenbereich_Fehler;
                      
                      
                      NETWORK
                      TITLE = Alles löschen
                      zneg:      A #Start_oder_Reset;
                            JCN ruek;
                            L 0.0;
                            T #Mittelwert_Ausgang;
                            T #Messwert_Schiebereg1;
                            T #Messwert_Schiebereg2;
                            T #Messwert_Schiebereg3;
                            T #Messwert_Schiebereg4;
                            
                            T #Summe_der_Messwerte;
                            SET;
                            R #Start_oder_Reset;
                      
                      ruek:      NOP 0;
                      
                      
                      NETWORK
                      TITLE = Mittelwertberechnung Teil 1
                            L #Eingangswert             ;// Neun Wert hinzufügen
                            L #Summe_der_Messwerte;
                            +R;
                            T #Summe_der_Messwerte;
                      
                      
                      NETWORK
                      TITLE = Eins weiter Schieben
                            L #Messwert_Schiebereg3;
                            T #Messwert_Schiebereg4;
                            L #Messwert_Schiebereg2;
                            T #Messwert_Schiebereg3;
                            L #Messwert_Schiebereg1;
                            T #Messwert_Schiebereg2;
                      
                            L #Eingangswert;
                            T #Messwert_Schiebereg1;
                      
                      
                      NETWORK
                      TITLE = Mittelwertberechnung Teil 2
                            L #Summe_der_Messwerte      ;// Ältesten Wert abziehen
                            L #Messwert_Schiebereg4;
                            -R;
                            T #Summe_der_Messwerte;
                            L 3.0;
                            /R;
                            T #Mittelwert_Ausgang;
                      druu:      NOP 0;
                      
                      
                      END_FUNCTION_BLOCK
                      
                      HF_SPSlerH Offline
                      HF_SPSlerH Offline
                      HF_SPSler
                      wrote on last edited by
                      #89

                      @kone Moin, nun, einen Monat nach meinem letzten Post zur Außreißerthematik, nachdem ja eine erfolgreich Änderung im S7 Adapter erfolgte, benötige ich keinen Workaround mehr um durch Software entstandene Außreißer heraus zu filtern - aber trotzdem danke für deinen Ansatz :+1:

                      S7 1214 (Master) + Logo!8(Slave Erdgeschoss) + Logo!8 (Slave Obergeschoss) + S7 1214 (Slave Garage/Nebengebäude)

                      WalW 1 Reply Last reply
                      0
                      • HF_SPSlerH HF_SPSler

                        @kone Moin, nun, einen Monat nach meinem letzten Post zur Außreißerthematik, nachdem ja eine erfolgreich Änderung im S7 Adapter erfolgte, benötige ich keinen Workaround mehr um durch Software entstandene Außreißer heraus zu filtern - aber trotzdem danke für deinen Ansatz :+1:

                        WalW Offline
                        WalW Offline
                        Wal
                        Developer
                        wrote on last edited by
                        #90

                        @hf_spsler @Kone ,
                        @apollon77 hatte aber noch keine Zeit den Patch zu überprüfen, deshalb muss der Adapter noch von meinem Github Account installiert werden.

                        Gruß
                        Walter

                        DoorIO-Adapter
                        wioBrowser-Adapter und wioBrowser

                        1 Reply Last reply
                        0
                        • apollon77A Offline
                          apollon77A Offline
                          apollon77
                          wrote on last edited by
                          #91

                          Sorry. Kommt die nächsten Tage. Wirklich ;-)

                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                          1 Reply Last reply
                          0
                          • apollon77A Offline
                            apollon77A Offline
                            apollon77
                            wrote on last edited by
                            #92

                            1.4.3 mit dem Fix auf den Weg ins latest ... npm und github wäre schon da. Latest dann heute nacht denke ich

                            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                            1 Reply Last reply
                            2
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            356

                            Online

                            32.7k

                            Users

                            82.4k

                            Topics

                            1.3m

                            Posts
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Home
                            • Recent
                            • Tags
                            • Unread 0
                            • Categories
                            • Unreplied
                            • Popular
                            • GitHub
                            • Docu
                            • Hilfe