Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie tauschen zwei smarthomeNG Instanzen Daten aus?

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

    Wie tauschen zwei smarthomeNG Instanzen Daten aus?

    Hallo,

    ich plane im Haus zwei Raspberrys mit SmarthomeNG einzubauen.

    Ein Gerät hängt am KNX, das andere häng an zwei Lüftungsanlagen.

    Gibt es eine Möglichekeit die Items untereinander zu auszutauschen bzw. zu synchronisiren?

    Gruß

    Sebastian

    #2
    Guckst Du z.B. hier.
    /tom

    Kommentar


      #3
      Danke für den Link.

      Könnetst Du mir ein Code Snipped zur Verfügung stellen in dem ich sehen kann wie du genau die Items austauschst?

      Kommentar


        #4
        Habe die verteilte Datenerfassung (noch) nicht produktiv im Einsatz, aber schau nochmal unter dem Link, da war jemand, bei dem das zwischen 2 Raspi's stabil läuft ...
        /tom

        Kommentar


          #5
          Ich habe eine ähnliche Situation. Auf einem Pi läuft die Hauptinstanz, auf einer anderen nur 2 Plugins, die räumlich bedingt einfach dort sein müssen (Wärmepumpe).
          Nutze folgende Logik:
          Code:
          #!/usr/bin/env python
          #
          # Realisiert einen generischen UDP Sender.
          # 
          # logik nur, wenn von Item getriggert
          if trigger['by'] == 'Item':
              lItemName = trigger['source']
              lItem = sh.return_item(lItemName)
              sh.nw.udp('10.0.0.150', 9999, 'item|{0}|{1}'.format(lItemName, lItem()))
              logger.info("udpSend: {0}, {1}".format(lItemName, lItem()))
          else:
              logger.debug("Keine Triggerung udpSend von Item")
          logic.conf:
          Code:
          [nw]
          filename = nw.py
          watch_item = *:send_nw
          visu_acl = yes
          plugin.conf:
          Code:
          [nw]
              class_name = Network
              class_path = plugins.network
              ip = 10.0.0.152
              port = 9999
              tcp = yes
              #tcp_acl= 127.0.0.1 | 10.0.0.150
              udp = yes
              http = 8888
          Das war's eigentlich. Ein Item, das sendet, sieht dann so aus:
          Code:
          [WP]
          type = foo
              [[Aussentemperatur]]
                  name = Temperatur aussen
                  visu_acl = r
                  type = num
                  cache = true
                  DuW_WP_register = 202
                  nw = yes
                  send_nw = 1
          Auf dem Haupt-Pi sieht es exakt gleich aus.

          Kommentar


            #6
            Wie sieht auf dem Empfänger "Haupt-Pi" die"plugin.conf" sowie das "Empfangs-Item" aus?

            Kommentar


              #7
              Wie gesagt, genau gleich. Bei mir sind einige Items auch wirklich so definiert, dass sie in beide Richtungen gehen. Also vom Neben-Pi lesen, neuer Wert an Haupt-Pi. Aber auch: Am Haupt-Pi den Wert ändern, an den Neben-Pi weiterleiten, damit der dann die Wertänderung an die Wärmepumpe weitergibt.

              Kommentar


                #8
                Onkelandy : Klasse, danke für's teilen, genau das was mir noch für den Sync. gefehlt hat. Hatte da bisher für simple Items auf Dummy-KNX-Adressen zurückgegriffen, für Statustexte war das aber nix. Nun via NW-plugin und mit der Logik mit Watch_Item, genial.

                Hätte allerdings noch eine blöde Frage bzw. habe evtl. noch einen Knoten im Hirn... Gibt es eine Möglichkeit das NW-Plugin als Multiinstance laufen zu lassen?

                Kommentar


                  #9
                  Ich fürchte nicht.. dazu müsste man ein Smartplugin draus machen. Was generell nicht so viel Aufwand wäre.. aber ich brauch's nicht Warum genau willst du mehrere Instanzen? Um die Items gleich an mehrere Instanzen zu schicken bzw. von versch. was zu empfangen? Das müsste ja eigtl. auch so gehen..

                  Kommentar


                    #10
                    THX. Naja, wie gesagt, ich hab da grad nen Knoten im Hirn und verwende das NW-Plugin für meinen EKEY und dort schon strict bzgl. Port, udp und acl.... Umschreiben hatte ich auch schon überlegt, bringt mir aber auch nix da die Prod. noch auf 1.1 läuft. Ich mach mir evtl. temporär nen Clone vom Plugin bis ich alles auf 1.2x habe oder bohre einfach die Restrictions in der Conf. auf.
                    Anyway, gut gelöst, danke!

                    Kommentar


                      #11
                      um das mal wieder auszugraben: ich baue mir gerade das gleiche setting, um mit einem raspi im whz einige pflanzensensoren auszulesen (plugin dazu ist in erstellung). in dem rahmen werde ich aller vorraussicht nach + wenn es keine unerwarteten probleme gibt - das network plugin portieren

                      Kommentar


                        #12
                        Um offener zu bleiben und mir auch die Integration anderer System zu erlauben habe ich auf MQTT gesetzt. In Produktion nutze ich es um von einer smarthome Enocean RPi die Werte an die smarthome KNX RPi zu übermitteln. Funktioniert einwandfrei und hat mir bereits die Möglichkeit eröffnet um andere Visus zu testen.

                        Kommentar


                          #13
                          knxmfbp kannst du deinen Ansatz hier mal ein bisschen erläutern? Lassen sich über das mqtt Plugin Items synchronisieren?
                          Zuletzt geändert von Onkelandy; 30.12.2016, 10:44.

                          Kommentar


                            #14
                            Da in unserem Haus fasst keine Funkprotokolle Etage übergreifend funktionieren habe ich im Erdgeschoß eine sh.py Instanz die über Enocean Temperatur- und Feuchtigkeitswerte empfängt.
                            Im Keller sitzt die sh.py Instanz welchen am KNX Bus hängt. Beides sind RPi2 mit einer lokalen Mosquitto Installation um die Daten über MQTT auszutauschen. Es würde aber auch mit einer Mosquitto Instanz funktionieren wo beide sh.py drauf zugreifen. Ich möchte hier nicht weiter die Vor- oder Nachteile dieser Installation diskutieren.

                            Auf beiden RPi die Konfiguration für das MQTT Plugin:
                            HTML-Code:
                            [mqtt]
                                class_name = Mqtt
                                class_path = plugins.mqtt
                                host = 'localhost'
                                port = 1883
                            Am Enocean-RPi hier die Items für die Küche:

                            HTML-Code:
                            [sensor]
                                [[gf]]
                                    [[[kitchen]]]
                                        enocean_rx_id = 01234567
                                        enocean_rx_eep = A5_04_01
                                        [[[[hum]]]]
                                            type = num
                                            influx = true
                                            enocean_rx_key = HUM
                                            mqtt_topic_out = "iot/sensors/gf/kitchen/hum"
                                            enforce_updates = true
                                        [[[[temp]]]]
                                            type = num
                                            influx = true
                                            enocean_rx_key = TMP
                                            mqtt_topic_out = "iot/sensors/gf/kitchen/temp"
                                            enforce_updates = true
                            Un am KNX-RPi die Items um die Werte zu empfangen:

                            HTML-Code:
                            [sensor]
                                [[iot]]
                                    [[[gf]]]
                                        [[[[kitchen]]]]
                                            [[[[[temp_recv]]]]]
                                                visu_acl = ro
                                                type = foo
                                                mqtt_topic_in = "iot/sensors/gf/kitchen/temp"
                                            [[[[[temp]]]]]
                                                type = num
                                                knx_dpt = 9
                                                knx_send = 2/1/51
                                                knx_reply = 2/1/51
                                                sqlite = true
                                            [[[[[hum_recv]]]]]
                                                visu_acl = ro
                                                type = foo
                                                mqtt_topic_in = "iot/sensors/gf/kitchen/hum"
                                            [[[[[hum]]]]]
                                                type = num
                                                sqlite = true
                                            [[[[[dew]]]]]
                                                type = num
                                                eval = sh.tools.dewpoint(sh.sensor.iot.gf.kitchen.temp(), sh.sensor.iot.gf.kitchen.hum())
                                                eval_trigger = sensor.iot.gf.kitchen.temp | sensor.iot.gf.kitchen.hum
                                                sqlite = true
                            Hier werden die Werte empfangen und von einer Logik auf Zweikommastellen umgeschrieben bevor sie auf den Bus gehen und an der Visu angezeigt werden.
                            An sich kann hier kombiniert werden mqtt_topic_in und mqtt_topic_out auf den gleichen Items, bzw. kürzer für in und out als mqtt_topic definieren. Ab hier würden die Werte synchronisiert werden zwischen beiden Instanzen.

                            Ich hoffe das Beispiel kann Nachvollzogen werden.

                            Guten Rutsch,
                            Raoul

                            Kommentar

                            Lädt...
                            X