Ankündigung

Einklappen
Keine Ankündigung bisher.

UZSU Widget - Datentypen beim Aufruf

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

    UZSU Widget - Datentypen beim Aufruf

    Hallo,

    nachdem das Widget jetzt grundsätzlich bei mir läuft (Danke für die Hilfe und Geduld), habe ich noch ein Problem bei meinem tatsächlichen Anwendungsfall: Ich schalte verschiedene Helligkeiten abhängig vom der Tageszeit. Dabei gibt es bei mir "Nacht", "Morgen", "Tag", "Abend" und "Aus". Das Ganze setze ich in einen einfachen 8-Bit Wert um (DTP 5) - und eine Logik (noch in Linknx) schaltet dann abhängig von diesem 8-Bit Wert die Helligkeiten ein.

    Soweit - so gut. Da ich bisher die Zeitschaltuhr aber immer per Hand in der Linknx xml ändern musste und das UZSU Widget (und auch sonst die SmartVisu) sehr schick ist, dachte ich mir, ich setze das mal auf der UZSU mit SmartVisu um. Nach einiger Recherche sollte das ja geradezu ideal gehen mit der SmartVisu und dem UZSU Widget. Leider bekomme ich den Aufruf nicht richtig hin, so dass das Widget das nicht annimmt.

    Ich habe folgende Items:
    Code:
    [Zentral]
        [[Zeitsteuerungen]]
            [[[NachtMorgenTagAbendAus]]]
                type = num
                visu_acl = rw
                knx_dpt = 5
                knx_listen = 1/3/11
                knx_send = 1/3/11
                sqlite = no
                   [[[[[Schaltuhr]]]]]
                        type=dict
                        uzsu_item=Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus
                        visu_acl=rw
                        cache = True
    Und der Aufruf geschieht folgendermaßen:
    Code:
    {{ uzsu.uzsu_icon('FlurSchaltuhr', 'Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus.Schaltuhr', 'NachtMorgenTagAbendAus', '0', clock, clock, 'list', ['Nacht:0','Morgen:1', 'Tag:2', 'Abend:3', 'Aus:4']) }}
    Beim Aufruf der UZSU bekomme ich folgende Fehlermeldung:
    Code:
    DOM Daten für UZSU nicht vorhanden in uzsuDomClick!
    Die JS-Console im Firefox sagt:
    Code:
    TypeError: response.list is undefined
    und das SH Debug-Log des betreffenden Aufrufs:
    Code:
    2015-06-28 12:20:33,793 DEBUG    Main         WebSocket: incoming connection from 192.168.1.31:51771 to 192.168.1.15:2424 -- connection.py:accept:188
    2015-06-28 12:20:36,977 DEBUG    Main         192.168.1.31:51771 sent '{"cmd":"proto","ver":3}' -- __init__.py:json_parse:270
    2015-06-28 12:20:36,987 DEBUG    Main         192.168.1.31:51771 sent '{"cmd":"monitor","items":["Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus.Schaltuhr"]}' -- __init__.py:json_parse:270
    2015-06-28 12:20:36,992 WARNING  Main         Client 192.168.1.31:51771 requested invalid item: Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus.Schaltuhr -- __init__.py:json_parse:294
    Ich bin leider mit meinen Ideen mal wieder am Ende ... SH melded ein "ivalid item" ... aber warum?

    Viele Grüße,

    Stefan
    Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

    #2
    Moin Stefan,
    das ist ein Copy&Paste Fehler.
    dein Item Schaltuhr ist auf Ebene 5, da es 5 eckige Klammern hat. Allerdings gibt es keine Ebene 4, da dein NachtMorgendingsbums auf Ebene 3 endet.
    Gruß, Sebastian
    Baustelle 2.0 (Detailprogrammierung und Restarbeiten)
    Ruhri? -> Komm zum Stammtisch

    Kommentar


      #3
      Hi, sh.py und die Klammern... Du hast bei Schaltuhr 5 eckige Klammern, brauchst aber nur 4. Gruß Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #4
        Mann - eh! Das ist das mit dem Wald und den Bäumen. Danke für den Hinweis!!!!!

        Jetzt funktioniert es schon FAST! Das Widget wird zwar aufgerufen, aber ich kann dennoch quasi nur bool Werte vergeben, die dann aber netterweise mit einem Text beschriftet sind:

        Zeischalt2_lobo.jpg

        Ich habe versucht, das zur besseren Erkennbarkeit beim Umschalten aufzunehmen. Normalerweise bleibt der Slider natürlich rechts oder links stehen ... Ich habe schon versucht, das "num" mit und ohne Hochkomma einzugeben, aber leider alles erfolglos.

        Also ... eine (hoffentlich letzte) Bitte nochmals: seht Ihr meinen Fehler?

        Viele Grüße und vielen Dank schon mal,

        Stefan
        Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

        Kommentar


          #5
          Wie gesagt, ich verwende das Widget derzeit nicht... aber ich kann hoffentlich helfen.
          Schließlich versuchst Du alles, um keine Fehler zu vermeiden

          Aus der Signatur, die ich Dir im anderen Thread geschickt habe, hast Du für die icons einfach clock genommen. Gemeint ist aber: Entweder man setzt da einen SmartVisu-Konformen Pfad zu einem Icon hin oder lässt den Parameter weg und bekommt dann den default "clock". Da Du den Parameter nicht weglassen kannst, musst Du an die Stelle jeweils '' setzen (zwei Hochkomma).

          Allerdings weiss ich nicht, ob das das Problem ist... ich habe mal bei mir geschaut und einen auskommentierten Aufruf gefunden:
          Code:
          {{ uzsu.uzsu_icon('Zeitschaltuhr', 'Zeitschaltuhr.Uzsu', 'UZSU', '0', '', '', 'list', ['frueh','spaet','aus']) }}"
          und der hat mal funktioniert.

          Hoffe es hilft,
          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #6
            Also so:

            Code:
             {{ uzsu.uzsu_icon('FlurSchaltuhr', 'Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus.Schaltuhr', 'NachtMorgenTagAbendAus', '0', clock, clock, 'list', ['Nacht','Morgen', 'Tag', 'Abend', 'Aus']) }}
            kann ich zwar schön die Zustände auswählen, aber es wird (logischerweise) ein String übergeben, der aber nicht zum Datentyp des Items passt:

            Code:
            2015-06-28 18:11:00,029 WARNING  uzsu_Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus.Schaltuhr Item Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus: value Morgen does not match type num. Via UZSU None -- item.py:__update:347
            Wenn ich stattdessen nur "num" als Datentyp angeben, funktioniert es aber:

            Code:
            {{ uzsu.uzsu_icon('FlurSchaltuhr', 'Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus.Schaltuhr', 'NachtMorgenTagAbendAus', '0', clock, clock, 'num', ['Nacht','Morgen', 'Tag', 'Abend', 'Aus']) }}
            So ignoriert das Widget die Texteinträge und ich kann als Datenwert "beliebige " Zahlen (sogar negative) angeben. Zumindest kann ich damit aber erst mal leben. Jetzt trage ich halt "0" für Nacht, "1" Für Morgen usw. ein ... darum heißt das Objekt auch so komisch, damit ich mir merken kann, welcher Zustand welcher Zahl entspricht.

            Vielleicht bekomme ich das mit der Umsetzung in die Zahlen ja noch hin ...

            ... ansonsten Danke mal wieder

            - p.s.: warum hast Du denn das Widget nicht mehr im Betrieb? Wegen Sunset?
            - pps: und wie machst Du es jetzt?


            Viele Grüße,

            Stefan

            ppps: ich finde das - zumindest von der Optik und Bedienbarkeit ganz schön geil ...
            Zuletzt geändert von lobo; 28.06.2015, 21:46. Grund: Im ersten Code block hatte ich versehentlich "num" statt "list" stehen ... wurde korrigiert.
            Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

            Kommentar


              #7
              Hallo lobo,

              Waldemar hatte Dir einen Hinweis gegeben. Der zielte vor allem einmal auf die Icons und deren Definition. Dort hattest du auf jeden Fall einen Fehler. Den hast Du bislang nicht behoben.

              Code:
              [FONT=Courier][SIZE=12px]{{ uzsu.uzsu_icon('FlurSchaltuhr', 'Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus.Schaltuhr', 'NachtMorgenTagAbendAus', '0', [/SIZE][/FONT][FONT=Courier][SIZE=20px][B]clock, clock[/B][/SIZE][/FONT][FONT=Courier][SIZE=12px], 'list', ['Nacht:0','Morgen:1', 'Tag:2', 'Abend:3', 'Aus:4']) }}[/SIZE][/FONT]
              Ich habe es jetzt nochmal ganz dick gemacht. Dann hast Du einen Hinweis, wie es bei Waldemar funktioniert hatte einfach ohne nachzudenken in Deinen Kontext reingenommen. Das 'Text' zu 'Num' nicht passt ist wohl offensichtlich, sonst bräuchte man Datentyp ja gar nicht.

              Wenn Du den Hinweis von Waldemar nochmal in Bezug Deines Problem ansiehst und mal ganz ruhig überlegst, kommst Du auf

              Code:
              [FONT=Courier][SIZE=12px]{{ uzsu.uzsu_icon('FlurSchaltuhr', 'Zentral.Zeitsteuerungen.NachtMorgenTagAbendAus.Schaltuhr', 'NachtMorgenTagAbendAus', '0', [/SIZE][/FONT][FONT=Courier][SIZE=20px][B]'',''[/B][/SIZE][/FONT][FONT=Courier][SIZE=12px], 'list', ['Nacht:0','Morgen:1', 'Tag:2', 'Abend:3', 'Aus:4']) }}[/SIZE][/FONT]
              also ersetze 'clock', was keine Referenz auf ein Icon ist am besten mit einem leeren Feld (zwei Hochkommas), und schon geht es.

              Bitte erst einmal in Ruhe überlegen und nicht sofort alles zusammenkleben.

              Grüsse

              Michel

              Kommentar


                #8
                Hi,

                string zu num könntest Du ja auch in sh.py lösen: Du machst in dem Item vom type num ein
                Code:
                eval = 0 if (value == 'Nacht') else 1 if (value == 'Morgen') else 2 if (value == 'Tag') else 3 if (value == 'Abend') else 4 if (value == 'Aus') else value
                und kannst so die 5 Strings auch an das Item schicken.

                Ansonsten hatte ich (bisher) die UZSU nur für meine Rolladensteuerung verwendet, dann aber über Scripts und inzwischen über das Autoblind-Plugin abgelöst. Irgendwann werde ich wahrscheinlich die UZSU wieder hervorkramen, wenn ich sie brauche - derzeit geht es sehr gut ohne...

                Gruß, Wademar

                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Sorry Michel,

                  aber das clock (ohne Anführungszeichen) hatte ich genommen aufgrund Deines Eintrags im Git auf: https://github.com/mworion/uzsu_widget

                  * @param pic on (optional), default = clock
                  * @param pic off (optional), default = clock
                  Natürlich habe ich probiert, ob es einen Unterschied macht, ob ich clock verwende, oder zwei Hochkomma ... und es hat eben keinen Unterschied gemacht, weshalb ich wieder zu meiner Ursprungsversion zurückgekehrt bin, welche ja aufgrund der Doku erstellt wurde. Du siehst, meine Überlegungen waren durchaus fundiert.

                  Leider geht die von Dir angebotene Zeile auch nicht, denn ich bekomme da die Fehlermeldung:

                  Code:
                  Fehlerhafte Einträge im Parameter valueParameterList !
                  ... und das auch, nachdem ich sämtliche Einträge gelöscht und smarthome neu gestartet habe.
                  ... gibt auch mit oder ohne Hochkomma die gleiche Fehlermeldung.

                  Michel, ich kann ja verstehen, dass Du genervt bist und ich verstehe sicher einiges des Gesamtkonzeptes nicht und sicher mache ich auch Flüchtigkeitsfehler (wie man gesehen hat), aber mir vorzuwerfen, dass ich mir keine Gedanken gemacht hätte ist nicht richtig. Wie gesagt, ich hatte die verfügbaren Hilfeseite gelesen, auch nach Fehlern gesucht, verschiedenes ausprobiert, versucht bestmöglich zu dokumentieren und dann meine Schlussfolgerungen getroffen, die ich oben begründet habe.

                  Viele Grüße,

                  Stefan

                  p.s.: hatte im Post #6 eine falsche Version reinkopiert (statt 'num' hätte es 'list' heissen müssen im ersten Code-Block) ... das habe ich oben korrigiert.
                  Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

                  Kommentar


                    #10
                    Hallo Stefan,

                    wir in versuchen ja alle zu helfen. das im Git ist wohl missverständlich, werde ich noch anpassen, hier war die Beschreibung für das default Icon gemeint.

                    Wegen en deinem noch aktuellen Problem: Dieße Fehlermeldung hattest du vorher noch nie oder ? Irgendwo muss bei dir noch durch die Veränderungen ein Fehler drin sein. Ich hätte dein Beispiel genommen, korrigiert und mir einem item von mir verknüpft es lief dann.

                    Am am besten nochmal in den Stand ansehen, dass alles im Zeichensatz korrekt übernommen ist.

                    Michel

                    Kommentar


                      #11
                      Hallo

                      Release v3.01 auf Master veröffentlicht. Korrektur der Doku und Korrektur der Fehlermeldungen im Popup. Sollte auch keine Fehlermeldungen im Browser Log mehr schreiben, die nicht durch Popup abgefangen wurden.

                      Keine Funktionsänderung, wer bislang mit v3 glücklich ist, braucht es nicht.

                      Michel

                      Kommentar


                        #12
                        Hallo

                        Ich bin absuluter Neuling, was smarthome und smartvisu angeht, und bräuchte daher eure Hilfe bei Grundlegenden Sachen.
                        Ich möchte gerne meine Lüftungsanlage über ein Zeitprogramm steuern. Manuell funktioniert es schon und zwar mit

                        Code:
                        {{ basic.switch('Stufe 0', 'kwl.level', icon1~'vent_ventilation_level_0.png', icon0~'vent_ventilation_level_0.png', '0', '0') }}
                            {{ basic.switch('Stufe 1', 'kwl.level', icon1~'vent_ventilation_level_1.png', icon0~'vent_ventilation_level_1.png', '0', '1') }}
                            {{ basic.switch('Stufe 2', 'kwl.level', icon1~'vent_ventilation_level_2.png', icon0~'vent_ventilation_level_2.png', '0', '2') }}
                            {{ basic.switch('Stufe 3', 'kwl.level', icon1~'vent_ventilation_level_3.png', icon0~'vent_ventilation_level_3.png', '0', '3') }}
                            {{ basic.switch('Stufe 4', 'kwl.level', icon1~'vent_ventilation_level_3.png', icon0~'vent_ventilation_level_3.png', '0', '4') }}
                        Nur mit dem Automatikprogramm -uzsu- hab ich da ein verständnisproblem. Ich habe mal alles nach Anleitung ausgeführt und in meine html Seite folgenden code eingebunden

                        Code:
                        {{ uzsu.uzsu_icon('Zeitschaltuhr', 'keller.lueftung.An_Aus.Schaltuhr', 'Schaltzeiten Lüftungsanlage', '0', '','', 'list', ['Stufe 0:0','Stufe 1:1', 'Stufe 2:2', 'Stufe 3:3', 'Stufe 4:4']) }}
                        Es öffnet sich auch ein Popup, wo ich die Zeiten und die Stufen einstellen kann, nur weiß ich jetzt leider nicht, wie ich das dann an meine Lüftung weiterschicke.
                        Ich weiß, das das eher Grundlegende Sachen sind und hier wahrscheinlich nicht hereinpassen, aber ich versuch mal mein Glück.

                        Vorerst schon mal Danke für eure Hilfe

                        lg
                        Gersch

                        Kommentar


                          #13
                          Hallo Gersch,

                          Ich gehe davon aus, dass du auch das UZSU Plugin installiert hast. Die Weiterleitung geschieht über items in der smarthome.py z.B. Per KNX. Wie steuerst du denn heute Deine Lüftungsanlage über smartvisu smarthome.py ? Dort mit einbauen. Wenn mehr Hilfe notwendig, bitte die Konfiguration (item.conf) usw. Posten.

                          Michel

                          Kommentar


                            #14
                            Hallo Michael

                            Meine Lüftungsanlage hat einen seriellen Ausgang, der über einen seriell/TCP wandler (Moxa) im Netz hängt. Die Items dazu schaun so aus:
                            Nur ein Auszug

                            Code:
                             
                             [kwl]     [[level]]         type = num         comfoair_send = WriteVentilationLevel         comfoair_read = ReadCurrentVentilationLevel         comfoair_read_afterwrite = 1 # seconds         comfoair_trigger = ReadSupplyAirRPM         comfoair_trigger_afterwrite = 6 # seconds         comfoair_init = true         sqlite = yes     [[extractair]]         [[[level]]]             type = num             comfoair_read = ReadExtractAirPercentage             comfoair_read_cycle = 60 # seconds             comfoair_init = true     [[supplyair]]         [[[level]]]             type = num             comfoair_read = ReadSupplyAirPercentage             comfoair_read_cycle = 60 # seconds             comfoair_init = true     [[filter]]         [[[reset]]]             type = bool             comfoair_send = WriteFilterReset
                            In der plugin.conf steht

                            Code:
                             
                             [comfoair]     class_name = ComfoAir     class_path = plugins.comfoair     kwltype = comfoair350       # Currently supported: comfoair350 and comfoair500     host = 192.168.123.6        # Provide host and port if you want to use TCP connection (for a TCP to serial converter)     port = 5555                 # Port
                            UZSU Plugin ist installiert und wie oben gezeigt in der html Seite eingebunden

                            Code:
                            {% import "widget_uzsu.html" as uzsu %}
                            Unter items/zeitprogramm.conf habe ich dann ein item nach Anleitung gemacht
                            Code:
                            [keller]
                                [[lueftung]]
                                    [[[An_Aus]]]
                                        type = bool
                                        [[[[Schaltuhr]]]]
                                            type=dict
                                            uzsu_item=keller.lueftung.An_Aus
                                            cache=True
                                            visu_acl=rw
                            Momentan Betreibe ich die Lüftung im Handbetreib so wie im vorigen Post beschrieben.
                            Ich weiß nur leider nicht, wie ich das Zeitprogramm jetzt da einbinden soll

                            lg
                            Gersch

                            Kommentar


                              #15
                              Gersch,

                              so wie Deine Konfiguration ist schaltest do aktuell das item "keller.lueftung.An_Aus". Das ist ein Bool, da solltest Du auch im Widget den Type bool auswählen.

                              Damit wird in der html-Datei
                              Code:
                              {{ uzsu.uzsu_icon('Zeitschaltuhr', 'keller.lueftung.An_Aus.Schaltuhr', 'Schaltzeiten Lüftungsanlage', '0', '','', 'list', ['Stufe 0:0','Stufe 1:1', 'Stufe 2:2', 'Stufe 3:3', 'Stufe 4:4']) }}
                              zu
                              Code:
                              {{ uzsu.uzsu_icon('Zeitschaltuhr', 'keller.lueftung.An_Aus.Schaltuhr', 'Schaltzeiten Lüftungsanlage', '0', '','', [COLOR=#FF0000]'bool', ['On', 'Off'[/COLOR]]) }}
                              Wenn Du die Stufen direkt angeben willst, dann bleibe bei Deinem Setup, du mußt dann aus
                              Code:
                              [keller]
                                  [[lueftung]]
                                      [[[An_Aus]]]
                                          type = bool
                                          [[[[Schaltuhr]]]]
                                              type=dict
                                              uzsu_item=keller.lueftung.An_Aus
                                              cache=True
                                              visu_acl=rw
                              irgenswas wie
                              Code:
                              [keller]
                                  [[lueftung]]
                                      [[[An_Aus]]]
                                          type = bool
                                          [[[[Schaltuhr]]]]
                                              type=dict
                                              [COLOR=#FF0000]uzsu_item=kwl.level [/COLOR]
                                              cache=True
                                              visu_acl=rw
                              machen, je nach dem, welches item Deine Lüftungsstufe stellt.

                              Michel

                              Kommentar

                              Lädt...
                              X