Ankündigung

Einklappen
Keine Ankündigung bisher.

Struktur für RTR

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

    #31
    Struktur für RTR

    Hi Hendrik,

    Um den Modus zu ändern!? Irgendwie versteh ich die Frage nicht...
    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


      #32
      Ne, klar.
      Brett vorm Kopf... (nutze bisher nur Tag/Nacht und das per Zeitschaltuhr, daher musste ich mich erst eindenken.

      Sorry und Danke!

      Kommentar


        #33
        Hi Niko,

        versuch mich gerade wieder ein wenig am RTR.

        Ich möchte mir noch eine Stellventil zu/offen (bool 0/1) schaffen.

        Ich hab folgendes versucht:

        Code:
        [[[[stellwert]]]]
                        type = num
                        visu = yes
        				history = true
                        knx_dpt = 5001
                        knx_init = 5/2/84
        				sqlite = yes
        [[[[heizen]]]]
                        type=bool
                        visu=true
                        eval= 0 if value = 0 else 1
                        eval_trigger=EG.Buero.Temperatur.stellwert
        Der Gedanke dahinter:
        - Stellwert kommt über DPT 5
        - value, wenn stellwert 0
        - 1, für alle anderen zustände

        Kommt aber ein Fehler im Log:

        Code:
        2013-11-13 13:04:47,434 EG.Buero.Temperatur.heizen WARNING  Method EG.Buero.Temperatur.heizen exception: invalid syntax (<string>, line 1) -- scheduler.py:_task:300
        Was mache ich falsch?

        Gruß Thomas

        Kommentar


          #34
          Versuch mal:

          Code:
          eval= 0 if value == 0 else 1
          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


            #35
            ohne worte.

            Danke.

            Kommentar


              #36
              Hallo,

              ich find den Fehler nicht :-(

              Code:
              2013-11-14 21:34:28 WARNING  eg.Gaeste.heizung.nacht Item eg.Gaeste.heizung.nacht: problem evaluating value if value < 2 else ((sh.eg.Gaeste.heizung.modus() & 0x02) >> 2): unorderable types: NoneType() < int()
              Code:
                          [[[[modus]]]]
                              type = num
                              knx_send = 3/2/149
                              knx_dpt = 20
                              knx_init = 3/2/149
                              sqlite = yes
                              type = num
              Code:
                          [[[[nacht]]]]
                              type = bool
                              knx_send = 3/2/152
                              knx_dpt = 1
                              eval = value if value < 2 else ((sh.eg.Gaeste.heizung.modus() & 0x02) >> 2)
                              eval_trigger = sh.eg.Gaeste.heizung.modus
                              sqlite = yes
                              type = num
              Das sieht doch eigentlich richtig aus?!

              An der Kommandozeile sieht es so aus:
              Code:
              >>> sh.eg.Kueche.heizung.modus()
              0
              >>> ((sh.eg.Kueche.heizung.modus() & 0x02) >> 1)
              0
              >>> type((sh.eg.Kueche.heizung.modus() & 0x02))
              <class 'int'>
              Da ist's int. Warum oben im Log "nonetype"?

              Gruß,
              Hendrik

              Kommentar


                #37
                Hallo Hendrik,

                probier mal:
                Code:
                eval_trigger = eg.Gaeste.heizung.modus
                Bis bald

                Marcus

                Kommentar


                  #38
                  Hallo,

                  ja, das hatten wir ja schonmal (ist halt unintuitiv. Ich schreib es mir aber hinter die Löffel und verstehe die Hintergründe).

                  Aber das hat nicht geholfen, das Problem besteht immernoch:
                  Code:
                  Restarting SmartHome smarthome.py
                  2013-11-19 21:56:18 INFO     1w-sen       1-Wire: path not found for og.Till.heizung.estrich
                  2013-11-19 21:56:18 INFO     1w-sen       1-Wire: path not found for Daten.Kinderbad_hum
                  2013-11-19 21:56:18 INFO     1w-sen       1-Wire: path not found for Daten.Kessel_Ruecklauf
                  2013-11-19 21:56:18 INFO     1w-sen       1-Wire: path not found for Daten.Kessel_Vorlauf
                  2013-11-19 21:56:18 INFO     1w-sen       1-Wire: path not found for Daten.Elternbad_hum
                  2013-11-19 21:56:20 INFO     1w-sen       1-Wire: path not found for Daten.Kinderbad_Wasserleitung
                  2013-11-19 21:56:20 WARNING  Daten.Keller_hum_abs Item Daten.Keller_hum_abs: problem evaluating sh.tools.rel2abs(sh.Daten.Keller_temp(),sh.Daten.Keller_hum()/100.0): 'Item' object has no attribute 'Keller_hum'
                  2013-11-19 21:56:20 INFO     1w-sen       1-Wire: path not found for Daten.Kessel
                  2013-11-19 21:56:20 INFO     1w-sen       1-Wire: path not found for Daten.Gaestebad_Wasserleitung
                  2013-11-19 21:56:21 WARNING  aktuelles_wetter.relative_luftfeuchte-eval Item aktuelles_wetter.relative_luftfeuchte: problem evaluating sh.aktuelles_wetter.relative_luftfeuchte_perc() * 0.01: 'Item' object has no attribute 'relative_luftfeuchte_perc'
                  2013-11-19 21:57:38 INFO     Main         Number of Threads: 7
                  2013-11-19 21:57:38 INFO     Main         Stop Plugins
                  Killing smarthome.py
                  Init SmartHome.py 0.9-464-ga68dc36+
                  2013-11-19 21:57:44 INFO     Main         Start SmartHome.py 0.9-464-ga68dc36+
                  2013-11-19 21:57:44 INFO     Main         Init Scheduler
                  2013-11-19 21:57:44 INFO     Main         Init Plugins
                  2013-11-19 21:57:45 INFO     Main         Init Items
                  2013-11-19 21:57:45 ERROR    Main         Problem parsing '/usr/local/smarthome/items/Licht.bkup.conf' invalid character in line 90: [[[Lina ]]]. Valid characters are: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
                  2013-11-19 21:57:45 ERROR    Main         Problem parsing '/usr/local/smarthome/items/Licht.conf' invalid character in line 82: [[Lina ]]. Valid characters are: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
                  2013-11-19 21:57:45 INFO     Main         1-Wire: unknown sensor specified for Daten.Keller_VDD using path: /26.A1B930010000/VDD
                  2013-11-19 21:57:45 INFO     Main         1-Wire: unknown sensor specified for Daten.Elternbad_VDD using path: /28.219A1B030000/VDD
                  2013-11-19 21:57:45 INFO     Main         1-Wire: unknown sensor specified for Daten.Flur_temporaer_VDD using path: /26.4AA02E010000/VDD
                  2013-11-19 21:57:45 INFO     Main         1-Wire: unknown sensor specified for Daten.AbstellKeller_VDD using path: /26.7ED96B010000/VDD
                  2013-11-19 21:57:45 WARNING  og.Till.heizung.komfort Item og.Till.heizung.komfort: problem evaluating value if value < 2 else (sh.og.Till.heizung.modus() & 0x01): unorderable types: NoneType() < int()
                  2013-11-19 21:57:45 WARNING  og.Till.heizung.standby Item og.Till.heizung.standby: problem evaluating value if value < 2 else (sh.og.Till.heizung.modus() & 0x02) >> 1: unorderable types: NoneType() < int()
                  :-(

                  Hast du noch eine Idee?

                  Gruß,
                  Hendrik

                  Kommentar


                    #39
                    ... ich häng mich mal an

                    Hallo,

                    ich mache gerade meine ersten Gehversuche mit smarthome.py und smartvisu, und komme bei der Heizungssteuerung nicht weiter. Ich verwende ebenfalls die MDT Heizungsaktoren. Ich bin nach längerem rumprobieren nicht mehr sicher, ob ich die richtigen GAs und DPTs zugeordnet habe. Mein Problem ist, dass beim Start von smarthome.py der folgende Fehler ausgegeben wird:

                    Code:
                    2013-11-22 23:34:03 WARNING  OG.Tim.Klima.Heizung.komfort Item OG.Tim.Klima.Heizung.komfort: problem evaluating value if value < 2 else (sh.OG.Tim.Klima.Heizung.modus() & 0x01): unorderable types: NoneType() < int()
                    2013-11-22 23:34:03 WARNING  OG.Tim.Klima.Heizung.standby Item OG.Tim.Klima.Heizung.standby: problem evaluating value if value < 2 else ((sh.OG.Tim.Klima.Heizung.modus() & 0x02) >> 1): unorderable types: NoneType() < int()
                    2013-11-22 23:34:04 WARNING  OG.Tim.Klima.Heizung.nacht Item OG.Tim.Klima.Heizung.nacht: problem evaluating value if value < 2 else ((sh.OG.Tim.Klima.Heizung.modus() & 0x04) >> 2): unorderable types: NoneType() < int()
                    2013-11-22 23:34:04 WARNING  OG.Tim.Klima.Heizung.frostschutz Item OG.Tim.Klima.Heizung.frostschutz: problem evaluating value if value < 2 else ((sh.OG.Tim.Klima.Heizung.modus() & 0x08) >> 3): unorderable types: NoneType() < int()
                    
                    ....
                    Meine Konfiguration für diesen Abschnitt sieht wie folgt aus:

                    Code:
                    [OG]
                    	[[Tim]]
                    		[[[Klima]]]
                    			[[[[Heizung]]]]
                    				name = Temperatur
                    				type = num
                    				sqlite = yes
                    				sv_widget = {{ device.rtr('TimRTR', 'Temperatur', 'OG.Tim.Klima.Heizung.ist', 'OG.Tim.Klima.Heizung.soll', 'OG.Tim.Klima.Heizung.sollwertverschiebung', 'OG.Tim.Klima.Heizung.stellwert', 'OG.Tim.Klima.Heizung.modus') }} | {{ plot.rtr ('TimPLOT', 'OG.Tim.Klima.Heizung.ist', 'OG.Tim.Klima.Heizung.soll', 'OG.Tim.Klima.Heizung.stellwert') }}
                    				[[[[[ist]]]]]
                    					type=num
                    					visu=yes
                    					knx_dpt=9
                    					knx_listen=3/1/8
                    					cache=true
                    					sqlite=true
                    				[[[[[soll]]]]]
                    					type=num
                    					acl=rw
                    					knx_dpt=9
                    					knx_init=3/2/8
                    					sqlite=true
                    				[[[[[sollwertverschiebung]]]]]
                    					type=num
                    					acl=rw
                    					knx_dpt=9
                    					knx_send=3/6/9
                    				[[[[[stellwert]]]]]
                    					type=num
                    					acl=rw
                    					knx_dpt=5001
                    					knx_init=3/3/55
                    					sqlite=true
                    				[[[[[modus]]]]]
                    					type=num
                    					acl=rw
                    					knx_dpt=20
                    					knx_send=3/4/8
                    					knx_init=3/4/8
                    				[[[[[komfort]]]]]
                    					type=bool
                    					visu=true
                    					knx_dpt=1
                    					knx_send=3/7/3
                    					eval=value if value < 2 else (sh.OG.Tim.Klima.Heizung.modus() & 0x01)
                    					eval_trigger=OG.Tim.Klima.Heizung.modus
                    				[[[[[standby]]]]]
                    					type=bool
                    					visu=true
                    					eval=value if value < 2 else ((sh.OG.Tim.Klima.Heizung.modus() & 0x02) >> 1)
                    					eval_trigger=OG.Tim.Klima.Heizung.modus
                    				[[[[[nacht]]]]]
                    					type=bool
                    					visu=true
                    					knx_dpt=1
                    					knx_send=3/7/4
                    					eval=value if value < 2 else ((sh.OG.Tim.Klima.Heizung.modus() & 0x04) >> 2)
                    					eval_trigger=OG.Tim.Klima.Heizung.modus
                    				[[[[[frostschutz]]]]]
                    					type=bool
                    					visu=true
                    					knx_dpt=1
                    					knx_send=3/7/5
                    					eval=value if value < 2 else ((sh.OG.Tim.Klima.Heizung.modus() & 0x08) >> 3)
                    					eval_trigger=OG.Tim.Klima.Heizung.modus
                    				[[[[[frostalarm]]]]]
                    					type=bool
                    					visu=true
                    					eval=(sh.OG.Tim.Klima.Heizung.modus() & 0x80) >> 7
                    					eval_trigger=OG.Tim.Klima.Heizung.modus
                    				[[[[[heizen]]]]]
                    					type=bool
                    					visu=true
                    					eval=(sh.OG.Tim.Klima.Heizung.modus() & 0x20) >> 5
                    					eval_trigger=OG.Tim.Klima.Heizung.modus
                    Hier die Gruppenadressen. Sind die überhaupt richtig zugeordnet? Wenn ich das bisher gelesene richtig verstehe, kann man die Modi entweder per DPT=20 über die HVAC Rückmeldung oder über die 1-Bit-Objekte steuern. Ist das richtig?



                    Noch zwei Fragen:
                    Muss der Parameter "Status auf Objekt 10 "Betriebsartvorwahl" senden" aktiv sein?
                    Wird "Sollwert" oder "Sollwert Komfort" verknüpft?

                    Danke euch schonmal!
                    Angehängte Dateien

                    Kommentar


                      #40
                      Hi Hendrik,

                      Zitat von henfri Beitrag anzeigen
                      Hast du noch eine Idee?
                      pack es in eine kleine Logik. Dort kannst Du es besser debuggen und eine Fehlerbehandlung implementieren.

                      Bis bald

                      Marcus

                      Kommentar


                        #41
                        @tobo

                        ich hab das gleiche Problem und das besteht erst seit der Umstellung auf die neue 1.0 Version. Offensichtlich hat sich die eval Anweisung geändert.

                        Ich verstehe aber zugegebener Maßen die Fehlermeldung ebenfalls nicht.

                        Code:
                        2013-12-01 23:28:05,991 WARNING  EG.Buero.Temperatur.komfort-eval Item EG.Buero.Temperatur.komfort: problem evaluating value if value < 2 else (sh.EG.Buero.Temperatur.modus() & 0x01): unorderable types: str() < int() -- item.py:__run_eval:331
                        Kann hier jemand helfen?

                        Zur Frage zum Objekt 10, diese Möglichkeit gibt es bei meinem Aktor nicht. Offensichtlich verwendest du eine neuere Revision.
                        Zur zweiten Frage. Ich hab Sollwert Komfort verknüpft und das hat bisher (vor dem Update) funktioniert.

                        Danke und Gruß

                        Kommentar


                          #42
                          Für Objekt 10 musst du den Modus des Kanal ändern (ETS).

                          "Sollwertverschiebung über 2Byte objekt" meine ich war es.

                          @tobo:
                          Ich denke, du solltest Sollwert Komfort verknüpfen.

                          Gruß,
                          Hendrik

                          Kommentar


                            #43
                            gibt es eine Doku dazu?

                            Ich hab noch nicht verstanden was - was ist:
                            okay:
                            "mode" ist der Betriebsmodus
                            "state" ist der Status
                            was ist set? Sollwertverschiebung? Sollwert?

                            ps.: kann ich in der xy.conf (im Order Items) Kommentare machen? //* dies ist der Bertriebsmodus. oder sowas? das würde mir - Anfänger sehr sehr weiterhelfen. WÜrde ne offizielle Doku auch, aber da hab ich mich schon blöd-gesucht....

                            Kommentar


                              #44
                              Zitat von NeMeSiStm Beitrag anzeigen
                              gibt es eine Doku dazu?
                              Wozu? Zitieren hilft..
                              Meinst du das?
                              Zitat von henfri Beitrag anzeigen
                              Für Objekt 10 musst du den Modus des Kanal ändern (ETS).

                              "Sollwertverschiebung über 2Byte objekt" meine ich war es.
                              Das war ein Irrtum, Objekt 10 gibt es unabhängig davon.


                              Ich hab noch nicht verstanden was - was ist:
                              okay:
                              "mode" ist der Betriebsmodus
                              "state" ist der Status
                              was ist set? Sollwertverschiebung? Sollwert?
                              Set=Sollwert im Aktuellen Modus.
                              Beispiel: Du Bist in Komfort und hast 19°C eingestellt. Jetzt wechselst du nach Standby --> der Wert wird vom Aktor auf 17°C aktualisiert. Jetzt erhöhst du um 0.5°C --> set=17.5°C. Jetzt wechselst du nach Komfort --> 19.5°C.




                              sehr weiterhelfen. WÜrde ne offizielle Doku auch, aber da hab ich mich schon blöd-gesucht....
                              Doku wozu?

                              @tobo:
                              Ich denke, du solltest Sollwert Komfort verknüpfen.
                              War falsch. Richtig ist "Aktueller Sollwert". Sollwert Komfort wird in dieser Spielart nicht genutzt.

                              Zitat von firefox Beitrag anzeigen
                              @tobo

                              ich hab das gleiche Problem und das besteht erst seit der Umstellung auf die neue 1.0 Version. Offensichtlich hat sich die eval Anweisung geändert.

                              Ich verstehe aber zugegebener Maßen die Fehlermeldung ebenfalls nicht.

                              Code:
                              2013-12-01 23:28:05,991 WARNING  EG.Buero.Temperatur.komfort-eval Item EG.Buero.Temperatur.komfort: problem evaluating value if value < 2 else (sh.EG.Buero.Temperatur.modus() & 0x01): unorderable types: str() < int() -- item.py:__run_eval:331
                              Na, dann sind wir ja zu dritt.
                              Da es bei dir vor der Umstellung auf 1.0 lief, wissen wir auch, dass wir nicht einfach zu dusselig waren.


                              Zur Frage zum Objekt 10, diese Möglichkeit gibt es bei meinem Aktor nicht. Offensichtlich verwendest du eine neuere Revision.
                              Zur zweiten Frage. Ich hab Sollwert Komfort verknüpft und das hat bisher (vor dem Update) funktioniert.
                              Ich glaube aber das ist falsch:
                              So wird in dem Widget immer der Sollwert Komfort angezeigt.
                              Wenn du "Aktueller Sollwert" verknüpfst, dann wird z.B. im Frostschutz Modus auch 7°C angezeigt, statt 19°C.

                              "Funktionieren" tut's beides. Aber ich find schöner, wenn der aktuelle Sollwert angezeigt wird, mit dem der Regler auch gerade arbeitet, also unter Berücksichtigung des Modus.

                              Zu unserem Problem:
                              Code:
                               og.Elternbad.heizung.komfort-eval Item og.Elternbad.heizung.komfort: problem evaluating value if value < 2 else (sh.og.Elternbad.heizung.modus() & 0x01): unorderable types: str() < int()
                              Code:
                               
                              [og]
                                [[Elternbad]]
                                      [[[heizung]]]
                                          [[[[modus]]]]
                                              type = num
                                              knx_send = 3/2/29
                                              knx_dpt = 20
                                              knx_init = 3/2/29
                                              sqlite = cache
                                          [[[[komfort]]]]
                                              type = num
                                              knx_send = 3/2/31
                                              knx_dpt = 1
                                              sqlite = cache
                                              eval = value if value < 2 else (sh.og.Elternbad.heizung.modus() & 0x01)
                                              eval_trigger = og.Elternbad.heizung.modus
                              Code:
                               sh.og.Elternbad.heizung.komfort()
                              0
                              >>> type(0x01)
                              <class 'int'>
                              >>> type(sh.og.Elternbad.heizung.komfort())
                              <class 'int'>
                              >>> type(sh.og.Elternbad.heizung.komfort() & 0x01)
                              <class 'int'>
                              >>> type(sh.og.Elternbad.heizung.modus() & 0x01)
                              <class 'int'>
                              >>> type(sh.og.Elternbad.heizung.modus() )
                              <class 'int'>
                              >>> sh.og.Elternbad.heizung.modus()
                              40
                              Woher kann das type "str()" kommen?

                              Moment...
                              Das kann es nicht sein, oder?
                              Code:
                              type(sh.og.Elternbad.heizung.komfort)
                              <class 'lib.item.Item'>
                              Nee, ich denke nicht...
                              Das einzige, das ich nicht prüfen kann ist "value". Aber das sollte ja
                              sh.og.Elternbad.heizung.komfort()
                              sein, oder?

                              Gruß,
                              Hendrik

                              Kommentar


                                #45
                                Danke für die Antwort. Hat funktioniert. Doku = Dokumentation zu den Funktionen. Es ist, wie ich finde, sauschwierig hier "einzusteigen" manche Beispiele stammen aus früheren Versionen und sind jetzt nicht mehr lauffähig oder ein mischmasch. Ich sehe das an den beispiel-vorlagen. Hat niemand eine durchgehendes howto? Versuche grad die lofiken zu verstehen, doch dazu gibts noch weniger info als der visu. (Logiken von Smarthome.pi wohlgemerkt)

                                Kommentar

                                Lädt...
                                X