Ankündigung

Einklappen
Keine Ankündigung bisher.

Verbrauchszähler / Wasseruhr mit binärem Item

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

    Verbrauchszähler / Wasseruhr mit binärem Item

    Hallo,

    ich möchte meine analoge Wasseruhr mit einbinden. Dazu habe ich einen Reed-Kontakt auf der Uhr befestigt, der von dem Magneten auf dem 0,1m³ Rädchen betätigt wird. Somit wird alle 50l der Reed-Kontakt geöffnet bzw. geschlossen. Das ganze hängt an einem KNX Binäreingang bzw. Tasterschnittstelle. Der Eingang der Tasterschnittstelle kann nur definierte Werte (0, 1 etc) senden. Er hat keinen integrierten Zähler. Aktuell habe ich es so eingestellt, dass immer eine 1 gesendet wird.

    Ich möchte nun in shNG die Impulse zählen und den Zählerstand berechnen.

    Aktuell habe ich es so implementiert.
    Code:
    wasserzaehler:
    
        bezug:
            type: num
            knx_dpt: 1
            knx_cache: 0/6/5
            cache: yes
            on_update: round(.zaehlerstand = sh..zaehlerstand() + 0.05, 2)
    
            zaehlerstand:
                type: num
                visu_acl: 'rw'
                database: 'init'
    Jetzt wird hier geschrieben, dass ein Neustart alle Items triggert, was den Zählerstand verfälschen würde.

    Wie habt ihr das gelöst bzw. mit welchen Items würdet ihr das realisieren?

    Danke für Eure Hinweise!

    Michael

    PS: Hier gibt es ein altes Plugin, was genau das zu tun scheint. Ist das auch Teil von shNG?
    Zuletzt geändert von Sisamiwe; 10.11.2019, 21:05.

    #2
    Wenn du bei   bezug  das   cache  weglässt und   knx_cache  durch   knx_listen  ersetzt, müsste das Item beim Start mit 0 statt mit 1 initialisiert werden.
    Im   on_update  kannst du dann explizit nur auf 1 reagieren mit   .zaehlerstand = round(sh..zaehlerstand() + 0.05, 2) if sh..() else None .

    P.S.: Das   round  in deinem   on_update  steht an der falschen Stelle (vergleiche meinen Ausdruck oben).

    P.P.S.: Das   round  macht da allgemein wenig Sinn. Wozu rundest du, wenn du eh nur eine Zahl mit zwei Dezimalstellen hinzuzählst?

    P.P.P.S.: Der Typ von   bezug  sollte   bool  sein.

    Kommentar


      #3
      smai
      Vielen Dank. Ich habe die Verbesserungen eingebaut. Klappt nun besser.

      So sieht es nun aus:
      Code:
      wasserzaehler:
      
          bezug:
              type: bool
              knx_dpt: 1
              knx_listen: 0/6/5
              on_update: .zaehlerstand = round(sh..zaehlerstand() + 0.05, 2) if sh..() else None
      
              zaehlerstand:
                  type: num
                  visu_acl: 'rw'
                  database: 'init'
      Das wäre auch was für die Doku unter Tipps&Tricks

      Beste Grüße

      Kommentar


        #4
        OT: poste doch mal ein Photo vom Aufbau bzw. den Typ vom Wasserzähler und Reedkontakt

        Kommentar


          #5
          gama ma

          Gern.
          Hier ein Bild vom "nackten" Wasserzähler:
          IMG_20170409_143332.jpg
          Auf dem Drehrad 0,01 siehst Du den Magenten, der sich mit dem Rad dreht.

          Hier das Bild vom "bestückten" Wasserzähler:
          IMG_20191115_211834.jpg Da ist der Reedkontakt direkt über dem Magenten fixiert. Der Magent schaltet alle 2x pro Radumdrehung um, also lassen sich 50l erfassen.
          Klappt ganz gut.

          Michael

          Kommentar

          Lädt...
          X