Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei NW-Plugin Austausch Items zwischen zwei Raspberry

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

    #16
    Hi Manuel,

    sorry, ich habe das "sh." wirklich vergessen, aber natürlich nur im 2. Teil, nicht im String. Also explizit:
    Code:
    sh.nw.udp('192.168.178.70', 8020, 'item|{0}|{1}'.format('ventilation.outside_temp', sh.ventilation.outside_temp()))
    Und lies bitte die von mir verlinkte Doku zum Plugin! Die Logik ist ein generischer UDP-Sender, der den generischen Listener des Network-Plugin nutzt. Damit - wie im Anfangsthread gewünscht - nicht für jedes Item eine Logik oder ein Port "verschwendet" werden muss. Das ist doch bereits dokumentiert und funktioniert auch. Im Zielsystem-Plugin port = 2727 und udp = yes definieren, beim Zielitem ein nw = yes und Deinen Test an den Port 2727 schicken.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #17
      Hallo Waldemar,

      ich ich habe meine Raspberry´s so konfiguriert:
      Rasp 192.168.178.70 das ist der Raspberry, der die Daten empfangen soll.

      Code:
      [nw]
          class_name = Network
          class_path = plugins.network
          ip = 192.168.178.70
          port = 2727
          tcp = yes
          tcp_acl= 192.168.178.71
          udp = yes
          udp_acl= 192.168.178.71
      Das Item sieht so aus:

      Code:
      # smarthome/items/helios.conf Rasp 70
      
      [ventilation]
      
            [[outside_temp]]
              name = DIN/EN: Außenluft, outdoor air / ODA, grün; Luft von draussen
              type = num
              helios_var = outside_temp
              visu_acl = r
              knx_dpt = 9
              nw = yes
              nw_udp_listen = 192.168.178.70
      Rasp 192.168.178.71. Das ist der Raspberry der per Plugin die Daten aus der Lüftungsanlage ausließt und dann die Daten per Netzwerk-Plugin versenden soll:

      Code:
      [nw]
          class_name = Network
          class_path = plugins.network
          ip = 192.168.178.71
          port = 2727
          tcp = yes
          tcp_acl= 192.168.178.70
          udp = yes
          udp_acl= 192.168.178.70
      Das Item sieht so aus:

      Code:
      # smarthome/items/helios.conf Rasp 71
      
      [ventilation]
      
          [[outside_temp]]
              name = DIN/EN: Außenluft, outdoor air / ODA, grün; Luft von draussen
              type = num
              helios_var = outside_temp
              visu_acl = r
              nw = yes
              nw_tcp_send = 192.168.178.70
      Die Readme habe ich gelesen. Nur werde ich da nicht schlau draus, wie ich die Werte aus einem Item versende.
      Ich habe nun deinen Vorschlag noch einmal getestet:

      Code:
      sh.nw.udp('192.168.178.70', 2727, 'item|{0}|{1}'.format('ventilation.outside_temp', sh.ventilation.outside_temp()))
      Jedoch verändert sich das Item auf dem Zielsystem nicht.

      Was mir im Log aufgefallen ist:

      Code:
      2016-07-04 17:40:31 ERROR    Main         UDPDispatcher: problem binding 0.0.0.0:192.168.178.70 (UDP): [Errno -8] Servname not supported for ai_socktype
      2016-07-04 17:40:31 WARNING  Main         Could not add listener udp:0.0.0.0:192.168.178.70 for ventilation.outside_temp
      Gruß Manuel





      Kommentar


        #18
        Hallo Manuel,

        Du bist doch in der Testphase - warum machst Du es Dir unnötig schwer, indem Du gleich IP's angibst und mit acl (Access Control List = Zugriffseinschränkungen) arbeitest?

        Mache bitte auf BEIDEN RasPi folgende Network-Plugin-Konfig:
        Code:
        [nw]
            class_name = Network
            class_path = plugins.network
            # ip = 0.0.0.0
            # port = 2727
            #tcp = yes
            #tcp_acl= 127.0.0.1 | 192.168.0.34
            udp = yes
            # udp_acl= *
        Das Item, das die Werte empfangen soll (auf dem .70 RasPi), definierst Du folgendermaßen:
        Code:
        [ventilation]
              [[outside_temp]]
                name = DIN/EN: Außenluft, outdoor air / ODA, grün; Luft von draussen
                type = num
                helios_var = outside_temp
                visu_acl = r
                knx_dpt = 9
                nw = yes
        (Ich kenne das helios_var-Attribut nicht, ich vermute, das kommt von einem Helios-Plugin und so wie ich es verstehe läuft dieses Plugin auf dem .71 RasPi, warum setzt Du es dann auch auf dem .70er?)

        Jetzt solltest Du auf dem .71-Raspi den obigen Befehl absetzen können und das Item ändern können:
        Code:
        sh.nw.udp('192.168.178.70', 2727, 'item|{0}|{1}'.format('ventilation.outside_temp', 33))
        (der Einfachheit halber schicken wir hier nur den konstanten Wert 33).

        Dein sendender RasPi (.71) sollte das Sende-Item auch korrekt definiert haben:
        Code:
        # smarthome/items/helios.conf Rasp 71
        [ventilation]
            [[outside_temp]]
                name = DIN/EN: Außenluft, outdoor air / ODA, grün; Luft von draussen
                type = num
                helios_var = outside_temp
                visu_acl = r
                send_to_70 = 1
        Damit die Logik von Item getriggert wird, muss natürlich noch in der Logik.conf der Trigger spezifiziert werden, der ist generisch, damit man das auch einfach mit anderen Items machen kann:
        Code:
        [udpSend]
            filename = udpSend.py
            watch_item = *:send_to_70
        Gruß, Waldemar



        OpenKNX www.openknx.de

        Kommentar


          #19
          Hallo Waldemar,

          ich habe gerade nochmal folgendes probiert:

          Code:
           sh.nw.udp('192.168.178.70', 2727, 'item|{0}|{1}'.format('ventilation.outside_temp', 1))
          Dieser Wert kommt beim richtigen Item an. Jedoch nicht wenn ich schreibe:
          Code:
            
           sh.nw.udp('192.168.178.70', 2727, 'item|{0}|{1}'.format('ventilation.outside_temp', sh.ventilation.outside_temp()))
          Das bedeutet für mich, dass er "sh.ventilation.outside_temp()" nicht versteht.

          Wie könnte man das lösen?

          Gruß Manuel
          Zuletzt geändert von manu241; 04.07.2016, 18:22.

          Kommentar


            #20
            Hallo Manuel,

            Zitat von manu241 Beitrag anzeigen
            Das bedeutet für mich, dass er "sh.ventilation.outside_temp()" nicht versteht.
            das kann nicht sein, denn dann gäbe es eine Fehlermeldung. Hat man gesehen, als ich das sh. vergessen hatte. Welchen Wert hat denn sh.ventilation.outside_temp()?

            Ich weiß auch nicht, wie ich Dir noch weiter helfen soll. Ich habe Dir inzwischen das gesamte Coding incl. Item- und Logik-Setup geliefert. Wende das einfach alles an, falls es noch Fehler gibt, poste das Log hier. Ansonsten wird das funktionieren, ich nutzte früher ähnliches, um fhem und sh.py zu synchronisieren, das funktionierte mehr als ein Jahr ohne Fehler.

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #21
              Hallo Waldemar,

              ich habe gestern den ganzen Abend noch weiter getestet und versucht es ans laufen zubekommen. Nun habe ich es geschafft.

              - Es läuft :-)

              Eigentlich habe ich nichts mehr verändert. Was ich nur angepasst habe war das knx_dpt = 5. Das habe ich in beiden Items gleich gezogen und auf einmal lief es.

              Ich bedanke mich recht herzlich bei dir. Du warst mir eine super Hilfe.

              Gruß und nochmal Danke

              Manuel

              Kommentar


                #22
                Hi Manuel,

                da hab ich nicht aufgepasst, ich ging davon aus, dass Du den Wert auch auf den Bus schicken willst. Für die reine Synchronisation zwischen den RasPi ist gar kein dpt (bei keinem Item) notwendig.

                Freut mich dass es läuft,
                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #23
                  Na siehe da - Ich stehe wieder vor einem Problem und sehe wieder Dich mumpf.

                  Vielleicht kannst Du mir ja auch hier weiterhelfen


                  Ich möchte gerne das meine Mobotix T25 beim klingeln eine Textnachricht über TCP/IP an smarthomeNG über das nw plugin sendet. Hierbei scheint es als hätte ich die Mobotix T25 richtig eingestellt - sodass diese mir eine Textnachricht angewünschte IP und Port zusendet.

                  Jedoch, wird diese Nachricht nicht in mein Beispiel item gesetzt und somit auch nicht die Logik ausgelöst.

                  Nachdem ich Deine Kommentare gelesen habe - habe ich die Plugin Konfiguration schlank gehalten

                  etc/plugin.yaml

                  Code:
                  nw:
                      plugin_name: network
                      # port: 2727
                      tcp: 'yes'
                  etc/logic.yaml
                  Code:
                  klingel:
                      filename: klingel.py
                      nw: 'yes'
                      watch_item:
                      -   test.item1
                  items/klingel.yaml

                  Code:
                  test:
                      item1:
                          type: str
                          nw: 'yes'
                          #nw_acl:
                          #-   192.168.1.105
                          #nw_tcp_listen: 192.168.1.105:2727
                  erfolgreich gesendete Textnachricht von der Mobotix T25

                  klingel_test_text.PNG

                  Kommentar


                    #24
                    Ok,

                    shNG ist jetzt echt lange her, aber ich versuche es mal...

                    Zitat von brunosa3 Beitrag anzeigen
                    Hierbei scheint es als hätte ich die Mobotix T25 richtig eingestellt - sodass diese mir eine Textnachricht angewünschte IP und Port zusendet.
                    Nö! Du hast "ding_dong" an das nw-Plugin gesendet. Woher soll das wissen, an welches Item die Nachricht gehen soll?

                    Die Nachricht muss lauten:
                    Code:
                    item|test.item1|ding_dong
                    Beim item1 musst Du noch enforce_updates setzen, damit bei jedem ding_dong die Logik getriggert wird. Eigentlich kannst Du Dir das Item sparen und gleich die Logik über das nw-Plugin triggern, da weiß ich die Syntax der Nachricht nicht mehr auswendig. Das kannst Du aber in der Doku vom nw-Plugin finden.

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      #25
                      mumpf - juhu Du hast es wieder geschafft - es funktioniert Zumindest wenn ich es über
                      Code:
                      "item|test.item1|123" | nc -w 1 192.168.1.134 2727
                      teste. Jedoch wenn ich es über die Mobotix auslöse wird das item nicht verändert. Wahrscheinlich stimmen meine Settings für die Mobotix noch nicht wirklich.

                      Ich schau Mal im Forum wer die Mobotix bereits erfolgreich eingestellt hat. Vielen Dank

                      Kommentar


                        #26
                        funktioniert jetzt

                        Musste die EInstellung an der Mobotix ändern - bin von TCP/IP Datenprotokoll auf http-01 request gegangen und des funktioniert soweit.

                        Vielen Dank mumpf für den entscheidenden Hinweis

                        Kommentar


                          #27
                          Mal so nebenbei, da ich eine ähnliche Konstellation habe - ein Server mit der VISU + shNG und ein Raspi mit shNG der an der Heizung hängt und per WLAN in beide Richtungen mit dem Server kommuniziert. Dazu habe ich das MQTT Plugin verwendet.

                          https://smarthomeng.de/user/plugins_...nfig/mqtt.html bzw. https://knx-user-forum.de/forum/supp...es-mqtt-plugin
                          Das ganze braucht dann natürlich einen MQTT Session Broker (mosqutto), aber da ich auch Shellys verwende, habe ich den sowieso am Start gehabt.

                          Im Support Thread habe ich auch meine Konfig gepostet.

                          Gruß

                          Kommentar

                          Lädt...
                          X