Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX-Tasterschnittstelle Impulse durch 1000 dividieren - Gaszähler Reedkontakt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    KNX-Tasterschnittstelle Impulse durch 1000 dividieren - Gaszähler Reedkontakt

    Hallo zusammen,

    ich habe einen Reedkontakt an den Gaszähler "geklebebandet"... Reedkontakt ist mit einer Siemens 5WG1220-2B21 Tasterschnittstelle verbunden.
    Diese ist als Zähler parametriert. Impulse werden sauber ausgegeben. Allerdings zählt der Zähler immer um 1,000 hoch und nicht um 0,001.
    Ist es möglich, dass mittels SHNG abzufangen, oder brauche ich eine Schnittstelle die 0,001 ausgeben kann.

    Als Item habe ich folgendes verwendet... das stimmt aber nicht.

    Code:
    # gaszaehler test.yaml
    raspi:          
        knx:
            gas_wert:
                type: num
                knx_dpt: 12
                knx_cache: 11/5/30
        
            gaszaehler:
                type: num
                database: yes
                eval: (sh.raspi.knx.gas_wert)() / 1000
                eval_trigger: raspi.knx.gas_wert
                enforce_updates: yes
    Über die ETS lässt sich ja ein Wert übertragen, somit ist der "Startwert" des Gaszählers nicht das Problem.

    Danke euch

    #2
    Es sollte so heissen
    eval: round(sh.raspi.knx.gas_wert() / 1000), 2)

    Kommentar


      #3
      Funktioniert leider nicht.

      Vielleicht hab ich das Problem auch nicht gut erklärt:

      Gaszähler steht aktuell bei 3387,421 m3
      der Magnet sitzt an der Stelle XXXX,XXMagnet

      Die Tasterschnittstelle erhöht bei einer Umdrehung der „3.ten Kommastelle“ um 1,0.

      Sprich der GZ zeigt 3387,422 der BUS zählt aber auf 3388,421… deshalb habe ich das „Hilfsitem“ Gaszähler erstellt.

      Vielleicht liegt der Fehler auch im KNX - soll ich mir gar keinen Wert senden lassen sondern nur ein „Plus Eins“ (falls das überhaupt möglich ist)

      Kommentar


        #4
        Ich glaube die Lösung (theoretisch) gefunden zu haben. Text schreibe ich gerade am Handy…

        Die TS darf keine „festen“ Wert zählen sondern nur immer eine 1 senden.
        Diese 1 kann durch 1000 geteilt werden und dieses Zwischenergebnis zum vorherigen Stand addiert werden. Mal sehen ob ich das morgen hinbekomme. Auch ist unklar ob die Schnittstelle das so ausgibt… Evtl. nur mit „Bool“

        Kommentar


          #5
          Mir ist immernoch nicht klar was das problem ist?
          zählt die Tasterschnittstelle die 3te Nachkommastelle hoch?


          Oder stört dich die abweichung von 0,001? Dann kannst du einfach nen offset addieren
          ​​​​​​
          Btw ist knx dpt 12 überhaupt richtig?


          Code:
          # gaszaehler test.yaml
          raspi:          
              knx:
                  gas_wert:
                      type: num
                      knx_dpt: 12
                      knx_cache: 11/5/30
                  offset:
                      type: num
                      value : 123225534.000
                      cache: true    
                  gaszaehler:
                      type: num
                      database: yes
                      eval: (sh.raspi.knx.gas_wert()+sh.raspi.knx.offset())+0.001
                      eval_trigger: raspi.knx.gas_wert
                      enforce_updates: yes

          probiers doch einfach so in der art, dann musst du die TS nicht nochmal umstellen..
          Zuletzt geändert von Bonze; 12.01.2022, 07:36.

          Kommentar


            #6
            Zitat von Bonze Beitrag anzeigen
            zählt die Tasterschnittstelle die 3te Nachkommastelle hoch?
            Guten Morgen,
            der Magnet sitzt an der 3ten Nachkommastelle, die TS zählt aber die „Einerstelle“ also die erste Stelle links vom Komma.

            Bei Impuls Erhöhung um 1,0.
            Deinen Code werde ich testen.
            Danke

            so was ähnliches kam mir gestern Abend auch noch in den Sinn nicht multiplizieren oder dividieren sondern 0,01 addieren (3te Nachkommastelle gibt bei Null Signal aus - somit springt 2te NKS um 1 weiter)


            Zitat von Bonze Beitrag anzeigen
            die TS nicht nochmal umstellen..
            Das wäre kein Problem… wenn es den Code vereinfacht. Die TS einfach Null oder Eins ausgeben lassen. Bei Eins zum „GZ-Startwert“ 0,01 addieren und in die DB schreiben.
            Zuletzt geändert von Maexle; 12.01.2022, 07:46.

            Kommentar


              #7
              Zitat von Maexle Beitrag anzeigen
              der BUS zählt aber auf 3388,421… deshalb habe ich das „Hilfsitem“
              wenn du das Komma am Zähler weg lässt, also 3387421 dm² (also in Liter zählst), dann dürfte +1 dann 3387422 Liter werden, diese Ganzzahl sendest du per knx und mit eval mit oder ohne Hilfsitem teilen.

              evtl. auch ohne Hilsitem:
              Code:
              raspi:          
                  knx:
                      gas_wert:
                          type: num
                          knx_dpt: 12
                          knx_cache: 11/5/30
                         eval: value/1000
              wenn der Zähler auch + 0,001 kann (anstatt +1) dann geht das natürlich auch..
              Zuletzt geändert von ivande; 12.01.2022, 07:49.

              Kommentar


                #8
                Zitat von Bonze Beitrag anzeigen
                probiers doch einfach so in der art
                das hat nicht funktioniert... es wurde wieder die "Einerstelle" hochgezählt.

                Zitat von Bonze Beitrag anzeigen
                Btw ist knx dpt 12 überhaupt richtig
                da lässt sich zumindest in der ETS "m³" Liter/h etc auswählen



                ivande
                auch ein intressanter Ansatz in der ETS den Startwert nicht auf - aktuell - 3391,047 stellen sondern --> 339104 --> Erhöhung um 1 (eine volle Umdrehung von der 3ten Nachkommastelle) ergibt 339105 - eval /100 = 3391,05

                das kann gut sein, dass das so klappt.


                Jetzt ist die Frage welche Richtung einschlagen. Wir müssen davon ausgehen, dass sich der ein oder andere Fehler über die Zeit einschleichen wird.

                "Startwert" über ETS anpassen --> aufwendig
                "Startwert" über
                Bonze Item "Offset" anpassen --> weniger aufwendig --> allerdings der WAF auch nicht besonders hoch
                -----
                ist es möglich direkt in der SmartVisu einen Wert einzutippen und dieser wird von SHNG als Startwert angezogen?

                edit:
                device.codepad
                https://docu.smartvisu.de/3.0/index....device.codepad
                wäre natürlich die Luxusvariante --> hat aber leider kein Komma

                edit Nr.2 -- mit basic.input sollte das doch möglich sein.

                Auf jeden Fall, mache ich jetzt einen Testaufbau. Weil der GZ immer dann läuft wenn ich das nicht haben will und wenn er Laufen soll natürlich nicht.

                TS --> Reedkontakt --> Magnet --> händisch bedienbar.
                Zuletzt geändert von Maexle; 12.01.2022, 10:42.

                Kommentar


                  #9
                  Update:

                  mit basic.input funktioniert es grundsätzlich... leider sind keine Kommastellen möglich (Fehler meinerseits?)

                  Auch verstehe ich die Addition (siehe Bilder nicht)

                  1.png
                  1000.png

                  1234.png

                  Hier das Item und der Ausschnitt aus der Visu...

                  Code:
                  raspi:          
                      knx:
                         
                          startwert_sv:
                              type: num
                             
                              
                          siemens_mit_sw_sv:
                              type: num
                              knx_dpt: 12
                              database: yes
                              knx_cache: 11/5/30
                              eval: value+sh.raspi.knx.startwert_sv()
                              eval_trigger: raspi.knx.startwert_sv

                  Code:
                  <div class="block">
                  	<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="c" data-mini="true">
                  		 <div data-role="collapsible" data-collapsed="false"> 
                  			 <h3>Gaszähler TEST</h3>
                  				
                  			
                  	
                  			Gaszähler Siemens TEST	{{ basic.print('', 'raspi.knx.gaszaehler', 'mmm', '', '', '', '', '') }} 
                  			
                  			
                  			Gaszähler Siemens kurz TEST	{{ basic.print('', 'raspi.knx.gas_siemens', 'mmm', '', '', '', '', '') }} 
                  			
                  			
                  			Gaszähler Gira TEST	{{ basic.print('', 'raspi.knx.girawert', 'mmm', '', '', '', '', '') }} 
                  			
                  			
                  			Gaszähler Siemens siemens_mit_sw_sv	{{ basic.print('', 'raspi.knx.siemens_mit_sw_sv', 'mmm', '', '', '', '', '') }} 
                  			
                  			
                  		    Test für Startwert	{{ basic.input('', 'raspi.knx.startwert_sv', 'number', '', '99999.999', '', '') }}
                  				
                  				
                  		</div>
                  	</div>
                  </div>

                  Vieleicht hat jemand eine Idee - ob das mit "Startwert-Änderung" über die Visu überhaupt möglich ist.

                  Kommentar


                    #10
                    Irgendwie will das nicht klappen... wenn ich den Offset oder Startwert anpasse, sieht es eine Zeit lang ganz gut aus und dann


                    Ich habe jetzt mal eine Skizze angehängt... evtl. gab es ja immer noch ein Missverständis.

                    GZ.png

                    Kommentar


                      #11
                      Zur Info:

                      Folgender Code "funktioniert" seit etwa 12h... Zählerstand ist aktuell gleich der Anzeige im SHNG/SV

                      Code:
                      # verbrauchswerte.yaml
                      
                      # hier werden die Verbrauche Gas, Strom und Wasser eingetragen
                      
                      verbrauch:
                          gas:
                              zaehlerstand:
                                  type: num
                                  database: init
                              
                              
                              zaehlerknx:
                                  type: num
                                  knx_dpt: 12
                                  knx_cache: 11/5/30
                              
                              zaehler:
                                  type: num
                                  knx_dpt: 12
                                  knx_cache: 11/5/30
                                  eval: value / 100
                                  eval_trigger: verbrauch.gas.zaehler
                              
                              anzeige:
                                  type: num
                                  eval: sh.verbrauch.gas.zaehlerstand()+sh.verbrauch.gas.zaehler()
                                  eval_trigger: verbrauch.gas.zaehlerknx
                                  database: init
                      Code:
                      <div class="block">
                      	<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="c" data-mini="true">
                      		 <div data-role="collapsible" data-collapsed="false"> 
                      			 <h3>Gas Zähler TEST</h3>
                      				
                      				<br> </br>
                      		<br> </br>
                      Anzeige	{{ basic.print('', 'verbrauch.gas.anzeige', 'mmm', '', '', '', '', '') }} <br> <br />		
                      			
                      <!-- 			
                      KNX WERT	{{ basic.print('', 'verbrauch.gas.zaehlerknx', '', '', '', '', '', '') }} <br>  <br />
                      		
                      	 -->		
                      			
                      			
                      				
                      		</div>
                      	</div>
                      </div>
                      
                      
                      
                      <div class="block">
                      	<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="c" data-mini="true">
                      		 <div data-role="collapsible" data-collapsed="true"> 
                      			 <h3>Gas Zähler Startwert Eingabe</h3>
                      				
                      				<br> </br>
                      			
                      			
                      			
                      letze Eingabe Zählerstand			{{ basic.print('', 'verbrauch.gas.zaehlerstand', '', '', '', '', '', '') }} <br>  <br />			
                      		
                      {{ basic.input('', 'verbrauch.gas.zaehlerstand', 'number', '', '99999.999', '', '') }} Start Wert Eingabe
                      		
                      				
                      				
                      		</div>
                      	</div>
                      </div>
                      Allerdings musst ich den Wert vom Zähler mittels der ETS anpassen (das würde ich gerne vermeiden).

                      Kommentar


                        #12
                        versteh ich jetzt nicht ganz,
                        wie hast du die TS konfiguriert?
                        fortlaufender Zähler oder als impuls?

                        du müsstest nur initial einmal den aktuellen Zählerstand eintragen und dann sollte das ganze automatisch laufen ..

                        Kommentar


                          #13
                          Zitat von Bonze Beitrag anzeigen
                          fortlaufender Zähler
                          ... würde ich zumindest meinen... als ich "händisch" die 1000 gesendet habe wird bei Tasterdruck mit 1001...1002 usw. weitergezählt.


                          TS.png


                          GM.png



                          GA weicht ab, da das die "Test-TS im Büro" ist, um nicht immer in den Keller zu müssen.

                          Kommentar


                            #14
                            Update:

                            Ich habe die "Test-TS" auf "8-Bit Wert Flanke" geändert --> Kontakte geschlossen "1" Kontakte geöffnet "0"
                            Funktioniert soweit --> SHNG addiert immer schön auf.

                            Das wird in der ETS als 5.010 Zählimpuls (0-255) angegeben.



                            Das hat solange funktioniert bis ich das Komma verschieben wollte. Siehe Bild "G1"

                            image_120240.png


                            Noch katastrophaler wurde es als ich einen Startwert vergeben wollte. Siehe Bild "G2"

                            G2.png




                            Grundsätzlich wäre mir diese Variante lieber, da kein Eingriff der ETS notwendig ist.

                            Wahrscheinlich habe ich aber - wieder mal einen Fehler - in den Items gemacht...


                            Code:
                            # buero_test_gas.yaml
                            
                            test:
                            
                                kanalb:
                                    type: num
                                    #database: init
                                    knx_dpt: 5
                                    knx_cache: 11/5/45
                                    eval: value/100
                                    
                                
                                
                                
                                kanalbadd:
                                    type: num
                                    
                                    eval: 2320+sh.test.kanalb()+sh.test.kanalbadd()
                                    eval_trigger: test.kanalb
                                    
                                    database: init

                            Im Ersten Schritt hatte ich nur " eval: sh.test.kanalb()+sh.test.kanalbadd() " verwendet.



                            Vielleicht hat jemand eine Eingebung...


                            Schönen Sonntag
                            Zuletzt geändert von Maexle; 16.01.2022, 10:39.

                            Kommentar


                              #15
                              Update:
                              Code:
                              # buero_test_gas.yaml
                              
                              test:
                                  kanalb:
                                      type: num
                                      
                                      knx_dpt: 5
                                      knx_cache: 11/5/45
                                      eval: value/100
                                          
                                  kanalbadd:
                                      type: num
                                      eval: (sh.test.kanalb()+sh.test.kanalbadd())
                                      eval_trigger: test.kanalb
                                      database: init
                              Das reine Zählen funktioniert so - auch wird an der richtigen Kommastelle gezählt. Aber nachwievor gibt es mit dem Startwert grobe Probleme

                              Kommentar

                              Lädt...
                              X