Datenaustausch Raspberry mit IPS (IPSrpc senden und holen)

Nach intensivem Stöbern in diesem Forum habe ich eine Lösung gefunden, wie

  • Daten von einem Raspberry Pi nach Symcon übertragen und
  • Daten von Symcon durch einen Raspberry abgeholt werden können.

Zur Trennung von sensiblen Daten von normalen Daten habe ich Zugangsdaten usw. separat
als globale Variablen definiert. Dies ist im ersten Listing passiert.

Das zweite Listing zeigt die Funktion.
Das Senden von Daten nach Symcon funktionierte sofort, das Abholen erstmal gar nicht.
Durch das Einfügen von
response.json()[„result“]
res = response.json()[„result“]
return res
hat es dann endlich geklappt.

Nun können in Symcon Vorgaben gemacht werden, die durch einen Raspi umgesetzt werden, von Raspi
bereitgestellte Werte können in Symcon weiter verarbeitet werden.


##########################################################################################
#
# Globale Variablen
#
##########################################################################################

url       = 'http://aaa.bbb.ccc.ddd:3777/api/'
user      = 'ich@bin.es'
pwd       = 'meinpasswort'

debug     = False # True / False
show      = True  # Anzeige der Print-Zeilen

##########################################################################################

##########################################################################################
#
# Datenaustasuch Funktion IPSrpc
#
##########################################################################################
#
# Beispiele:
# IPSrpc("HM_WriteValueBoolean",[26407, "STATE", False]) # True / False
# IPSrpc("SetValue", [Variablennummer, Wert])
# BF_max = IPSrpc("GetValueFloat", [Variablennummer])
#
##########################################################################################

# JSON-RPC zu IPS definieren
def IPSrpc(methodIps, paramIps):
	try:
		auth=HTTPBasicAuth(user, pwd)
		headers = {'content-type': 'application/json'}

		payload = {
			"method": methodIps,
			"params": paramIps,
			"jsonrpc": "2.0",
			"id": "0",
		}
		if debug:
			print json.dumps(payload)
		response = requests.post(
			url, 
			auth=auth, 
			data=json.dumps(payload), 
			headers=headers, 
			stream=True)
		response.json()["result"]
		res = response.json()["result"]
		if debug:
			print(response)
	except:
		return False
	return res

##########################################################################################

Beispiel:
Daten aus IPS holen:

In IPS muss die Variable angelegt sein,
die Objekt-ID der Variable wird eingetragen und
der Variablen zugeordnet.
Hier werden z.B. Bodenfeuchte min. und max. aus IPS geholt.


##################################################################################
#
# Werte von Symcon holen
#
##################################################################################

BF_min = IPSrpc("GetValue", [46246]) # Bodenfeuchte min
BF_max = IPSrpc("GetValue", [34065]) # Bodenfeuchte max
if show:
	print (
	"SYMCON  Bodenfeuchte min: %s %%   " % BF_min +
	"max: %s %%" % BF_max)

##################################################################################

Daten an ISP senden

In IPS muss die Variable angelegt sein,
die Objekt-ID der Variable und
die Variable des Wertes werden zugeordnet.


##################################################################################

if AM2302:
	sensor = Adafruit_DHT.AM2302
	gpio = 17
	humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)
	if show:
		print(
		"AM2302  Lufttemperatur: %.2f  " % temperature +
		"Luftfeuchtigkeit: %.2f" % humidity)
	IPSrpc("SetValue", [29863, temperature])
	IPSrpc("SetValue", [15622, humidity])

##################################################################################

Wie könnte nun der Austausch zwischen Symcon und Raspberry per MQTT gestaltet werden?
Alles, was ich bisher hierzu las, hört sich einfach an, erfordert aber dann doch einiges an Installation.
Was ist auf einem Rasperry zu machen, damit im Prinzip mit einer Zeile Daten bereitgestellt bzw. abgeholt werden können?
Was ist auf Symcon zu tun?

Viele Grüße
Matthias

Hallo Matthias,

holst du die Daten vom Raspi mittlerweile per MQTT ab?

Gruß

Oliver