Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin Siemens LOGO 0BA7

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

    #31
    Hallo zusammen,

    ich bin total neu in dem Thema und leider funktioniert bei mir irgendwie nichts.
    Ich habe versucht die verbindung mit der Logo herzustellen und einfach eine Lampe einzuschalten.
    Leier funktioniert es nicht.
    Ich hoffe Ihr konnt mir weiterhelfen.
    Zur info ich bin totaler Anfänger also nicht wundern wenn ich blöde fragen stelle
    Unterhalb findet ihr alles was ich bislang gemacht habe

    danke für eure Hilfe im Vorhinein

    ich habe folgende eingestellt:
    plugin.yaml
    logo1:
    class_name: LOGO
    class_path: plugins.logo
    host: 192.168.XXX.XXX
    version: 0BA8
    instance: logo1
    password: 'XXXXXXX'

    licht_item.yaml
    Licht_OG:
    Licht_Wonhzimmer:
    status_Licht_Wohnzimmer:
    type = bool
    logo_read@logo1 = I8
    visu = yes
    visu_acl = rw
    status_Licht_Wohnzimmer_VM:
    type = bool
    logo_read@logo1 = VM108.0
    visu = yes
    visu_acl = rw
    setze_Licht_Wohnzimmer:
    type = bool
    logo_write@logo1 = Q8
    visu = yes
    visu_acl = rw
    setze_Licht_Wohnzimmer_VM:
    type = bool
    logo_write@logo1 = VM101.0
    visu = yes
    visu_acl = rw
    Licht_Esszimmer:
    status_Licht_Esszimmer:
    type = bool
    logo_read@logo1 = I9
    visu = yes
    visu_acl = rw
    status_Licht_Esszimmer_VM:
    type = bool
    logo_read@logo1 = VM109.0
    visu = yes
    visu_acl = rw
    setze_Licht_Esszimmer:
    type = bool
    logo_write@logo1 = Q9
    visu = yes
    visu_acl = rw
    setze_Licht_Esszimmer_VM:
    type = bool
    logo_write@logo1 = VM3.0
    visu = yes
    visu_acl = rw

    logic.yaml
    Licht_Wohnzimmer:
    visu_acl: Licht
    filename: licht_wohnzimmer.py
    watch_item: licht_item

    logik

    if status_Licht_Wohnzimmer_VM():
    logger.debug('schalter ist gedrückt.')
    se.setze_Licht_Esszimmer_VM('on')



    bild von der logig ist unterhalb

    Kommentar


      #32
      in einem yaml file ein = verwenden ist schon mal falsch

      was sagt das log?

      ps: man kann hier code auch formatiert darstellen
      Zuletzt geändert von psilo; 10.05.2018, 17:01.

      Kommentar


        #33
        Was für eine Meldung erscheint im log? Am besten im debug Modus..
        Das Plugin benötigt eine library. (libnodave.so )
        wenn Raspy:
        ist die Datei libnodave.so ins lib Verzeichnis kopiert?(siehe readme.md im Logo Plugin Verzeichnis)
        Wenn kein Raspy dann muß die lib erst runtergeladen und kompiliert werden.
        Auf 64bit Systemen läuft die libnodave.so nicht..

        Gruß Ivan

        Kommentar


          #34
          du könntest im backend bei Deinen Item (Licht_OG.Licht_Wonhzimmer.status_Licht_Wohnzimmer ) nachsehen, ob in dieses auch der Zustand vom Logo-Eingang I8 ankommt. (I8 an der Logo ändern)
          wenn sich Licht_OG.Licht_Wonhzimmer.status_Licht_Wohnzimmer nicht ändert (aktualisiern - button im backend nicht vergessen)
          dann wird es noch an der Verbindung z.B: libnodave.so happern.

          in deiner Logik 'licht_wohnzimmer.py' sowie auch in der logic.yaml haben sich ein paar Fehler eingeschlichen:

          Zitat von Quote Beitrag anzeigen
          logic.yaml
          Licht_Wohnzimmer:
          visu_acl: Licht # True oder False?
          filename: licht_wohnzimmer.py
          watch_item: licht_item #ich sehe in deiner Item-Struktur kein licht_item- Item?
          evtl sollte es heißen:
          Code:
          logic.yaml
          Licht_Wohnzimmer:
              filename: licht_wohnzimmer.py
              # visu_acl: true
              watch_item: '*.status_Licht_Wohnzimmer' #bestimmt, welche Items die Logik aufrufen können
          Zitat von Quote Beitrag anzeigen
          if status_Licht_Wohnzimmer_VM(): # sh. vergessen + den ganzen Item-Pfad angeben:
          logger.debug('schalter ist gedrückt.')
          se.setze_Licht_Esszimmer_VM('on') # se. sollte wohl sh. sein?? auch hier den kompletten Item-pfad
          Code:
          if sh.Licht_OG.Licht_Wonhzimmer.status_Licht_Wohnzimmer_VM():
              logger.debug('schalter ist gedrückt.')
              sh.Licht_OG.Licht_Wonhzimmer.setze_Licht_Wohnzimmer(1)
          ich frag mich ob Du die Logik so überhaupt brauchst? den Zustand eines Items auf ein anderes Item zu "übertragen" könntest Du auch direkt in den Items mit eval und eval_trigger realisieren.
          siehe Beispiel dazu:
          SH-doku

          Code:
          licht_item.yaml
          Licht_OG:
              Licht_Wonhzimmer:
                  status_Licht_Wohnzimmer:
                      type: bool
                      logo_read@logo1: I8
                      visu_acl: rw
                  setze_Licht_Wohnzimmer:
                      type: bool
                      eval: value
                      eval_trigger: Licht_OG.Licht_Wonhzimmer.status_Licht_Wohnzimmer  # wenn sich status ändert wird das Item getriggert und nimmt den Wert (value) des triggernden Items an
                      logo_write@logo1: VM101.0 # logo_write würde ich immer auf einen VM-Merker machen, nicht direkt auf einen Ausgang, da dieser ja höchstwarscheinlich im LOGO-Programm ja auch geändert werden kann?
                      visu_acl: rw
          Gruß Ivan
          Zuletzt geändert von ivande; 10.05.2018, 20:32.

          Kommentar


            #35
            Danke für eure Hilfe.
            Ich wollte mit dem einfachen Programm nur überprüfen ob der Raspberry mit der Logo eine Verbindung hat.
            Es funktioniert jetzt. Ich kann über den Raspberry das Licht schalten .

            Ich habe den Wert im plugin.yaml für io_wait: auf 1 verkürzt kann, das Probleme machen? bzw. kann ich den auch auf 0.01 verkürzen oder wird es da mal ein Problem geben?

            Kommentar


              #36
              Beim Anfrageintervall von 0.01 wäre dieser ja wahrscheinlich kürzer als die Zykluszeit der LOGO..
              Meiner Meinung nach macht <1sec keinen Sinn.
              Gesendet wird immer bei Änderung des Item, die Frage deshalb nur wie schnell brauchst du die Änderung eines LOGO Eingang/Merker im SH.

              Kommentar


                #37
                ich habe den Anfrageintervall auf 0.1 gesetzt. Diese Einstellung funktioniert für mich.

                Leider habe ich jetzt ein weitere Problem.
                Ich möchte über smartVISU eine Lampe ein uns ausschalten.
                Sobald ich den button in der smartVISU drücke funktioniert er nur einmal.
                Wenn ich den Raspberry Pi reboote funktioniert sie wieder nur einmal.

                Des weitern möchte ich gerne den Ausgang von der Logo lesen und je nach Status die Lampe ein oder ausschalten.
                Nur leider der Status irgendwie nicht gelesen werden.

                Code:
                #item
                Licht_Wonhzimmer:
                
                    i_l_Wohnzimmer:
                        type: bool
                        logo_read@logo1: I8
                        visu_acl: r
                    l_Wohnzimmer_on:
                        type: bool
                        eval: value
                        eval_trigger: Licht_OG.Licht_Wonhzimmer.status_Licht_Wohnzimmer  
                        logo_write@logo1: VM108.1 
                        visu_acl: r
                    l_Wohnzimmer_off:
                        type: bool
                        eval: value
                        eval_trigger: Licht_OG.Licht_Wonhzimmer.status_Licht_Wohnzimmer 
                        logo_write@logo1: VM108.0 
                        visu_acl: r
                    q_l_Wohnzimmer:
                        type: bool
                        logo_read@logo1: VM108.3 
                        visu_acl: r
                Code:
                #smartVISU item
                
                Licht_Wonhzimmer:
                    name: Wohnzimmer
                    sv_page: room        
                    Smartvisu_l_Wohnzimmer_on:
                        name: Licht
                        sv_widget: "{{ basic.button('l_wz', 'item', 'On') }}"
                        visu_acl: rw
                Code:
                #logik
                if sh.Licht_Wonhzimmer.Smartvisu_l_Wohnzimmer_on():
                    logger.debug('smartvisu Licht Wohnzimmer true')
                    if sh.Licht_Wonhzimmer.q_l_Wohnzimmer == False:
                        sh.Licht_Wonhzimmer.l_Wohnzimmer_on(1)
                        sh.Licht_Wonhzimmer.l_Wohnzimmer_off(0)
                        time.sleep (0.2)
                        sh.Licht_Wonhzimmer.l_Wohnzimmer_on(0)
                    else:
                        sh.Licht_Wonhzimmer.l_Wohnzimmer_off(1)
                        sh.Licht_Wonhzimmer.l_Wohnzimmer_on(0)
                        time.sleep (0.2)
                        sh.Licht_Wonhzimmer.l_Wohnzimmer_off(0)
                Code:
                #logic.yaml in etc
                licht_wohnzimmer_schalten:
                    visu_acl: 'true'
                    filename: licht_wohnzimmer_schalten.py
                    watch_item: '*.Smartvisu_l_Wohnzimmer_on'
                Angehängte Dateien

                Kommentar


                  #38
                  Zitat von Quote Beitrag anzeigen
                  Leider habe ich jetzt ein weitere Problem.
                  Ich möchte über smartVISU eine Lampe ein uns ausschalten.
                  Sobald ich den button in der smartVISU drücke funktioniert er nur einmal.
                  Wenn ich den Raspberry Pi reboote funktioniert sie wieder nur einmal.

                  Des weitern möchte ich gerne den Ausgang von der Logo lesen und je nach Status die Lampe ein oder ausschalten.
                  Nur leider der Status irgendwie nicht gelesen werden.
                  So wie ich dein Vorhaben interpretiere, möchtest Du den Status der Lampe in der Visu anzeigen(Button), und beim Draufklicken auf den Button den Zustand der Lampe ändern können.

                  Deine Ausführung sieht dazu ziemlich komplex aus. Ich denke dies müsste mit einem einzigen Item und ohne Logik machbar sein:
                  Code:
                          Lampe_xy:  # dieses Item mit Button anzeigen und ändern
                              type: bool
                              logo_read@logo1: Q8           #Status der Leuchte 
                              logo_write@logo1:VM108.0           #Zustand Aendern
                  die Logik würde ich in die LOGO stecken.
                  Wenn Lampe brennt und es kommt eine fallende Flanke auf VM108.0 dann Reset Lampe
                  Wenn Lampe nicht brennt und es kommt eine steigende Flanke auf VM108.0 dann Set Lampe

                  Kommentar


                    #39
                    Zitat von ivande Beitrag anzeigen
                    die Logik würde ich in die LOGO stecken.
                    Wenn Lampe brennt und es kommt eine fallende Flanke auf VM108.0 dann Reset Lampe
                    Wenn Lampe nicht brennt und es kommt eine steigende Flanke auf VM108.0 dann Set Lampe
                    Ich habe es ausprobiert. nur war ich mit dem Ergebnis nicht zufrieden. In der smartVISU gibt es keinen einfachen Taster.
                    Wenn ich den basic.trigger verwende funktioniert es besser. Nur leider muss ich für jeden schalter eine Logik schreiben.

                    Ich habe zweimal die selbe Logik geschrieben mit jeweils einem anderen basic.trigger.
                    Die eine jedoch funktioniert eine Logik nicht richtig.
                    Wenn das Licht an ist und ich es ausschalten möchte werden immer V108.1 und V108.0 fast gleichzeitig ausgelöst und in Logging erhalte ich folgende Fehlermeldung.

                    ERROR logo1cycle logo1: write_cycle()VM108.0 write error dictionary changed size during iteration

                    Item:
                    Code:
                     
                     Licht:     i_l_Wohnzimmer:         type: bool         logo_read@logo1: I8         visu_acl: r     l_Wohnzimmer_on:         type: bool         logo_write@logo1: VM108.1          visu_acl: rw     l_Wohnzimmer_off:         type: bool         logo_write@logo1: VM108.0         visu_acl: rw     q_l_Wohnzimmer:         name: Q8         visu_acl: rw         type: bool         logo_read@logo1: Q8      i_l_Esszimmer:         type: bool         logo_read@logo1: I9         visu_acl: rw     l_Esszimmer_on:         type: bool         logo_write@logo1: VM109.1         visu_acl: rw     l_Esszimmer_off:         type: bool         logo_write@logo1: VM109.0         visu_acl: rw     q_l_Esszimmer:         type: bool         logo_read@logo1: Q9          visu_acl: rw
                    Logik:
                    Code:
                    output = sh.Licht.q_l_Wohnzimmer()
                    On = sh.Licht.l_Wohnzimmer_on
                    Off = sh.Licht.l_Wohnzimmer_off
                    
                    
                    if trigger['value'] == '1':
                        logger.info('trigger = 1')
                        if output == 0:
                            logger.info('Q = 0')
                            On(1)
                            time.sleep(0.2)
                            On(0)
                    
                        else:
                            logger.info('Q = 1')
                            Off(1)
                            time.sleep(0.2)
                            Off(0)
                    Item für smartVISU:
                    Code:
                    Wohnzimmer:
                        name: Wohnzimmer
                        sv_page: room
                        sv_licht_Wohnzimmer:    
                            name: Licht
                            visu_acl: rw
                            sv_blocksize: 1
                            sv_widget: "{{ basic.trigger('l_Wohnzimmer', 'l_Wohnzimmer', 'On/Off', '', 1, 'midi') }}
                                {{ basic.symbol('read_Q8', 'Licht.q_l_Wohnzimmer') }}"
                    
                    Esszimmer:
                        name: Esszimmer
                        sv_page: room
                        sv_licht_Esszimmer: 
                            visu_acl: rw
                            sv_blocksize: 1
                            sv_widget: "{{ basic.trigger('l_Esszimmer', 'l_Esszimmer', 'on', 'plus', 1, 'midi') }}
                                {{ basic.symbol('read_Q9', 'Licht.q_l_Esszimmer') }}"
                    Angehängte Dateien

                    Kommentar


                      #40
                      Doch es gibt dich den basic button . Zumindest funktioniert dieser bei mir als taster

                      Kommentar


                        #41
                        Zitat von Bonze Beitrag anzeigen
                        Doch es gibt dich den basic button . Zumindest funktioniert dieser bei mir als taster
                        Das ist interessant.

                        ich habe es gleich ausprobiert.

                        Leider wird bei mir der VM aktiviert jedoch nicht mehr deaktiviert somit ist er immer auf aktiv und der schalter funktioniert genau einmal und danach ist alles lahmgelegt.
                        Hast du irgend etwas anders gemacht? Habe ich was vergessen?

                        SmartVISU item:
                        Code:
                            Licht_buttonxxx:
                                name: xxx
                                visu_acl: rw
                                sv_widget: "{{ basic.button('id1', 'Licht.l_Wohnzimmer_on', 'On') }}
                                    {{ basic.button('id2', 'Licht.l_Wohnzimmer_off', 'Off') }}
                                    {{ basic.symbol('read_Q8', 'Licht.q_l_Wohnzimmer') }}"
                        Item mit LOGO verbindung:
                        Code:
                        Licht:
                            i_l_Wohnzimmer:
                                type: bool
                                logo_read@logo1: I8
                                visu_acl: r
                            l_Wohnzimmer_on:
                                type: bool
                                logo_write@logo1: VM108.1 
                                visu_acl: rw
                            l_Wohnzimmer_off:
                                type: bool
                                logo_write@logo1: VM108.0 
                                visu_acl: rw
                            q_l_Wohnzimmer:
                                name: Q8
                                visu_acl: rw
                                type: bool
                                logo_read@logo1: Q8   
                                visu_acl: r
                        LOGO Programierung22.jpg
                        Angehängte Dateien

                        Kommentar


                          #42
                          Zitat von thewastl Beitrag anzeigen
                          ERROR Connections LOGO: could not connect to b'192.168.1.205':102: 'str' object has no attribute 'connections'

                          Als Plattform ist bei mir debian in einer VM im Einsatz. So wie beschrieben hab ich auch die libnodave direkt geholt und nicht die für den Raspberry was im Plugin dabei ist verwendet.

                          Logo ist eine 0BA8, die Verbindungen habe ich wie beschrieben auf der Logo eingerichtet.
                          Hallo,

                          ist bei diesem Fehler noch was rausgekommen? Hab die selben Probleme.
                          VM mit Debian x32, libnodave.so mit "Make" erstellt und kopiert, Logo 0BA8

                          Bin mir nicht sicher ob ich bei der Logo die "Ethernet Verbindungen" richtig kofiguriert habe. Sieht scheinbar bei der neuen Logo Software anders aus.

                          Hat jemand nen Tipp wo ich bei der Fehlersuche ansetzen kann?

                          Fehlermeldung: "2018-08-07 21:56:35 ERROR plugins.logo logo1: could not connect to b'192.168.10.212':102: 'str' object has no attribute 'connections'"

                          Grüße

                          Dominik
                          MFG
                          Dominik Auhuber

                          Kommentar


                            #43
                            Hallo Dominik

                            das Plugin läuft bei mir auch auf einer VM mit Debian x32 - allerdings noch mit einer 0BA7
                            hier der Link zu meinem Plugin Dateien incl. libnodave.so: logo

                            Logo 0BA8 hab ich getestet, hier ist es wichtig bei den Plugin-Einstellungen die Version anzugeben.
                            plugin.yaml
                            Code:
                            logo:
                                class_name: LOGO
                                class_path: plugins.logo
                                host: 192.168.0.xxx # IP-Adresse der LOGO
                                version: 0BA8  #!! Wichtig bei LOGO 0BA8
                            Logo_Einstellungen.jpg
                            Was an der Logo 0BA8 selber einzustellen ist kann ich jetzt nicht ausprobieren, da ich keine 0BA8 im Haus habe.
                            Hats du vielleicht schon eine 8.2 (0BA0)? - Es kann sein dass sich an der letzten Version wieder etwas geändert hat...

                            Gruß Ivan
                            ..
                            Angehängte Dateien

                            Kommentar


                              #44
                              Hallo Ivan,

                              vielen Dank für deine Hilfe

                              Leider klappt es mit deiner libnodave.so auch nicht. Da bekomme ich sogar die Fehlermeldung " /lib/libnodave.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden"

                              Ersetzte ich diese wieder mit der selbst kompilierten, kommt wieder "'str' object has no attribute 'connections'" im Fehlerlog.

                              Komische geschichte.
                              Ist vieleicht das aktuelle Debian zu neu?

                              Hab ne "alte" 0BA8. Sollte also klappen...

                              Grüße Dominik
                              MFG
                              Dominik Auhuber

                              Kommentar


                                #45
                                sorry mein Fehler!
                                Ich hab dir nur die raspberry-libnodave.so in die Freigabe kopiert. Du könntest es nun nocheinmal mit der libnodave_debian32.so probieren. (umbenennen)

                                Gruß Ivan

                                Kommentar

                                Lädt...
                                X