Ankündigung

Einklappen
Keine Ankündigung bisher.

Heizungs-Plugin

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

    Heizungs-Plugin

    Hi,

    mal eine Frage :

    Gibt es ein Plugin/Logik zum Steuern von Heizungsaktoren ohne Eigene Logik? Also wenn der Aktor nur über die Stellgröße (0-100%) angesprochen werden kann.

    Hab über die Suche mit Heizung und RTR hier im Forum leider nichts gefunden.

    Gruß

    Gesendet von meinem GT-I9100 mit Tapatalk

    #2
    Danach suche ich ebenfalls. Ich habe das Problem, dass meine Sensoren nur Prozentstellwerte auf den KNX Bus senden, ich muss aber 2 Stellantriebe an einen UP-Schaltaktor anschließen (also nur an/aus oder PWM).
    Gibt es da schon was oder muss ich mir die Logik über die Soll und Istwert Vergleich selber basten?

    Kommentar


      #3
      Heizung

      Habt ihr es schonmal mit einen Byte in Bit umwandler gearbeitet? der kann eure Prozente doch in einen Bit wert umwandeln also in Null oder Eins.


      Was wollt ihr generell mit dem Stellantrieb anstellen ? Nur 0 und 1 schalten?

      Kommentar


        #4
        Ich will aus dem Prozentwert ein ein/aus Wert machen, weiß aber nicht wie da der beste / einfachste Weg ist.

        Kommentar


          #5
          Ich habe mittlerweile ein Plugin dazu Programmiert und es hier im Forum publiziert. Allerdings funktioniert es nur mit einem Stellglied das 0-100% verarbeitet.
          Vielleicht kann ich - wenn ich nächstes Jahr wieder etwas Zeit habe - das ganze für ein Bit gesteuerten Aktor erweitern.

          https://knx-user-forum.de/showthread.php?t=30669

          Gesendet von meinem GT-I9100 mit Tapatalk

          Kommentar


            #6
            Umwandeln würde man ja bei 0% zu 0 und bei >1% zu 1. Das ganze ist ganz einfach über ein enum = von sh.py zu realisieren. Aber ob da der Regler noch zuverlässig arbeitet kann ich nicht beurteilen.

            Gesendet von meinem GT-I9100 mit Tapatalk

            Kommentar


              #7
              Vielen Dank für den Link zum Plugin, ich schaue mir das Plugin und Enum mal an.
              Den Regler bräuchte ich ja dann eigentlich nicht, da ich ja bereits eine Einzelraumregelung über die Thermostate habe. Der ein/aus Befehl muss nur zuverlässig erfolgen.

              Kommentar


                #8
                Wie gesagt bin ich mir nicht sicher ob das wirklich gut geht, kann mir gut vorstellen dass es da effektivere Regelungen für gibt. Aber probieren kann man es.

                Gesendet von meinem GT-I9100 mit Tapatalk

                Kommentar


                  #9
                  Zwar nicht Heizungs-Plugin, aber sehr ähnliche Baustelle

                  Servus

                  Ich kram den mal wieder vor, weil ich so etwas (ähnliches?) auch brauche.
                  Meine Regler senden ja 8 Bit an die Stellmotoren (Stetigregler) und diese senden die Ist-Position natürlich ebenfalls als 8 Bit zurück. Das RTR Widget der smartVISU will aber wohl ein 1-Bit item zur Anzeige des Status "Heizt/Heizt nicht".
                  Also genau das Problem, wenn 8 Bit Wert = 0, brauch ich nen 1 Bit = 0 und wenn 8 Bit Wert > 0 dann 1 Bit = 1.

                  Ich habe das mal in eine Logik gepackt, mit meinen rudimentären Python Kenntnissen, und im Prinzip klappt das:

                  logic.conf:
                  Code:
                  [RTR_Status]
                      filename = logic_rtr_status.py
                      watch_item = *.Raumtemperatur.Istposition
                  Items (Beispiel):
                  Code:
                  [Schlafzimmer]
                      [[Raumtemperatur]]
                          [[[Ist]]]
                              type = num
                              knx_dpt = 9
                              knx_cache = 3/1/19
                              sqlite = yes
                          [[[Soll]]]
                              type = num
                              knx_dpt = 9
                              knx_send = 3/1/23
                              knx_cache = 3/1/27
                              sqlite = yes
                          [[[Komfortbetrieb]]]
                              type = bool
                              knx_dpt = 1
                              knx_send = 3/2/13
                              knx_cache = 3/2/13
                          [[[Nachtbetrieb]]]
                              type = bool
                              knx_dpt = 1
                              knx_send = 3/2/14
                              knx_cache = 3/2/14
                          [[[Frostschutz]]]
                              type = bool
                              knx_dpt = 1
                              knx_send = 3/2/15
                              knx_cache = 3/2/15
                          [[[Istposition]]]
                              type = num
                              knx_dpt = 5
                              knx_cache = 3/1/7
                          [[[Status]]]
                              type = bool
                  Logic:
                  Code:
                  #!/usr/bin/env python3
                  # 8 Bit Ist-Position der Stellmotoren in 1 Bit Status umwandeln
                  if sh.Schlafzimmer.Raumtemperatur.Istposition() > 0:
                      sh.Schlafzimmer.Raumtemperatur.Status('1')
                  else:
                      sh.Schlafzimmer.Raumtemperatur.Status('0')
                  Widget in smartVISU:
                  Code:
                      <div class="block">
                          <div class="set-1" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                              <div data-role="collapsible" data-collapsed="false">
                                  <h3>Raumtemperatur</h3>
                                  {{ device.rtr('SZ_Heizung', 'Heizung', 'Schlafzimmer.Raumtemperatur.Ist', 'Schlafzimmer.Raumtemperatur.Soll',
                                  'Schlafzimmer.Raumtemperatur.Komfortbetrieb', 'Schlafzimmer.Raumtemperatur.Nachtbetrieb', 'Schlafzimmer.Raumtemperatur.Frostschutz', 'Schlafzimmer.Raumtemperatur.Status', '', '0.2') }}
                              </div>
                          </div>
                      </div>
                  Habe aber noch Warnungen im Log (warum das zwei sind weiß ich nicht. Selber Client, anderer Port, 11min dazwischen. Hab aber nichts gemacht):
                  Code:
                  2014-03-18 12:04:56 WARNING  Main         Client 192.168.178.20:52380 requested invalid series: Schlafzimmer.Raumtemperatur.Status.
                  2014-03-18 12:15:58 WARNING  Main         Client 192.168.178.20:52503 requested invalid series: Schlafzimmer.Raumtemperatur.Status.
                  Das liegt wohl daran, dass das Status Item beim sh.py Start noch keinen Wert hat. Es in den Items auf einen default Wert zu setzen bringt aber irgendwie auch nix, oder? Schließlich ist ja beim Start nicht klar ob der Regler grad heizt oder nicht. Wie löst man das elegant?

                  Das zweite Problem: Wenn ich sieben Regler habe, wie erweitere ich die Logik ebenfalls so elegant wie möglich? Sowas in der Art wie das watch_item = *..... in der logic.conf. Da fällt mir grad auch nichts ein

                  Last but not least noch ein smartVISU Problem in dem Zusammenhang, bevor ich da einen eigenen Thread aufmache. Ich bekomme den Status zwar schön im RTR Widget angezeigt, das Symbol lässt sich aber anklicken und ändert somit auch den Status. Unschön. Sehe auch keinen Grund warum das so sein sollte, oder habe ich den Sinn des Icons falsch verstanden? Läßt sich das verhindern ohne das Widget selbst zu ändern?

                  Oder geht das alles viel einfacher, z.B. als Einzeiler in smartVISU?

                  Gruß, Martin

                  Kommentar


                    #10
                    Wenn es nur um die smartVISU geht, ich glaube die interpretiert alles was keine 0 ist als 1. Sprich, einfach die Stellgröße auf gad_state legen. Wird 0% gesendet ist das Icon weiß, sonst ist es farbig.

                    Ansonsten, für die Items, braucht man nicht gleich eine Logik definieren, es reicht auch ein eval und eval_trigger:

                    Code:
                    [Schlafzimmer]
                        [[Raumtemperatur]]
                    ...
                            [[[Istposition]]]
                                type = num
                                knx_dpt = 5
                                knx_cache = 3/1/7
                            [[[Status]]]
                                type = bool
                                eval = true if sh.Schlafzimmer.Raumtemperatur.Istposition() else false
                                eval_trigger = Schlafzimmer.Raumtemperatur.Istposition
                                visu_acl = true
                    Achtung: ungetestet. Sollte aber so in etwa gehen.

                    EDIT: wegen des "request invalid item" Fehlers, du musst Items die über die smartVISU gelesen und gesetzt werden sollen das visu_acl Attribut setzen. Entweder visu_acl = true für readonly oder visu_acl = rw für zusätzlichen schreibenden Zugriff auf ein Item.
                    Mit freundlichen Grüßen
                    Niko Will

                    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                    Kommentar


                      #11
                      Hi Niko

                      Wenn es nur um die smartVISU geht, ich glaube die interpretiert alles was keine 0 ist als 1. Sprich, einfach die Stellgröße auf gad_state legen. Wird 0% gesendet ist das Icon weiß, sonst ist es farbig.
                      Schaut nicht so aus. Zumindest klappt es mit dem 8 Bit Wert nicht, mit dem 1 Bit Status zeigt er richtig an.

                      wegen des "request invalid item" Fehlers, du musst Items die über die smartVISU gelesen und gesetzt werden sollen das visu_acl Attribut setzen. Entweder visu_acl = true für readonly oder visu_acl = rw für zusätzlichen schreibenden Zugriff auf ein Item.
                      Da verwende ich den Globalen in der plugin.conf. Klappt einwandfrei mit allen anderen Items.

                      Den eval und eval_trigger versuch ich mal, das schaut gut aus. Danke!

                      Gruß, Martin

                      Kommentar


                        #12
                        8 Bit Istposition von Stellmotoren in 1 Bit Status umwandeln

                        Ok, ich habe das mit eval und eval_trigger versucht. Klappt nicht (Im Log steht, dass er false nicht kennt). Habe auch mit der Syntax ein wenig gespielt und mehrere plausibel aussehende Varianten getestet. Leider ist die Dokumentation zu eval und eval_trigger recht spärlich und ein zumindest ähnliches und funktionierendes Beispiel wie man if/else einbettet habe ich nicht gefunden.

                        Deshalb habe ich es jetzt - vielleicht für Ästhetiker zu primitiv - per Logik gelöst und es funktioniert so wie ich es erwarte.
                        Hier nochmal die nötigen Files:

                        logic.conf
                        Code:
                        [RTR_Status]
                            filename = logic_rtr_status.py
                            watch_item = *.Raumtemperatur.Istposition
                        Mit dem * kann man elegant alle Items auf einmal behandeln die mit .Raumtemperatur.Istposition enden.

                        logic_rtr_status.py
                        Code:
                        #!/usr/bin/env python3
                        # 8 Bit Ist-Position der Stellmotoren in 1 Bit Status umwandeln
                        # Alles groesser 0 wird als 1 interpretiert -> es wird geheizt
                        
                        if sh.Schlafzimmer.Raumtemperatur.Istposition() > 0:
                            sh.Schlafzimmer.Raumtemperatur.Status('1')
                        else:
                            sh.Schlafzimmer.Raumtemperatur.Status('0')
                        
                        if sh.Badezimmer.Raumtemperatur.Istposition() > 0:
                            sh.Badezimmer.Raumtemperatur.Status('1')
                        else:
                            sh.Badezimmer.Raumtemperatur.Status('0')
                        
                        if sh.Gaestezimmer.Raumtemperatur.Istposition() > 0:
                            sh.Gaestezimmer.Raumtemperatur.Status('1')
                        else:
                            sh.Gaestezimmer.Raumtemperatur.Status('0')
                        
                        if sh.Galerie.Raumtemperatur.Istposition() > 0:
                            sh.Galerie.Raumtemperatur.Status('1')
                        else:
                            sh.Galerie.Raumtemperatur.Status('0')
                        
                        if sh.Flur.Raumtemperatur.Istposition() > 0:
                            sh.Flur.Raumtemperatur.Status('1')
                        else:
                            sh.Flur.Raumtemperatur.Status('0')
                        
                        if sh.Wohnzimmer.Raumtemperatur.Istposition() > 0:
                            sh.Wohnzimmer.Raumtemperatur.Status('1')
                        else:
                            sh.Wohnzimmer.Raumtemperatur.Status('0')
                        Beispiel-Raum (Items für den RTR)
                        Code:
                        [Schlafzimmer]
                            [[Raumtemperatur]]
                                [[[Ist]]]
                                    type = num
                                    knx_dpt = 9
                                    knx_cache = 3/1/19
                                    sqlite = yes
                                [[[Soll]]]
                                    type = num
                                    knx_dpt = 9
                                    knx_send = 3/1/23
                                    knx_cache = 3/1/27
                                    sqlite = yes
                                [[[Komfortbetrieb]]]
                                    type = bool
                                    knx_dpt = 1
                                    knx_send = 3/2/13
                                    knx_cache = 3/2/13
                                [[[Nachtbetrieb]]]
                                    type = bool
                                    knx_dpt = 1
                                    knx_send = 3/2/14
                                    knx_cache = 3/2/14
                                [[[Frostschutz]]]
                                    type = bool
                                    knx_dpt = 1
                                    knx_send = 3/2/15
                                    knx_cache = 3/2/15
                                [[[Istposition]]]
                                    type = num
                                    knx_dpt = 5
                                    knx_cache = 3/1/7
                                [[[Status]]]
                                    type = bool
                                    sqlite = yes
                        Meine Warnung im Logfile ist auch gelöst, ich hatte bei einem copy/paste das sqlite = yes für den Status vergessen, daher ging dann der RTR Plot nicht mehr.

                        Gruß, Martin

                        Kommentar


                          #13
                          Zitat von Sipple Beitrag anzeigen
                          Ok, ich habe das mit eval und eval_trigger versucht. Klappt nicht (Im Log steht, dass er false nicht kennt).
                          Ja, mein Fehler... das kommt davon, wenn man jeden Tag fünf verschiedene Programmiersprachen vor sich hat. Muss natürlich True und False heißen (Anfangsbuchstabe groß).
                          Mit freundlichen Grüßen
                          Niko Will

                          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                          Kommentar


                            #14
                            Hi

                            Funktioniert trotzdem nicht.
                            Macht aber nichts, hab ja ne Lösung.
                            Trotzdem danke.

                            Gruß, Martin

                            Kommentar


                              #15
                              Rein aus Interesse, welche Fehlermeldung kommt denn?
                              Mit freundlichen Grüßen
                              Niko Will

                              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                              Kommentar

                              Lädt...
                              X