Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Wie tauschen zwei smarthomeNG Instanzen Daten aus?
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
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")
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.
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?
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..
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!
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
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.
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:
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.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar