WISER by Feller

WISER by Feller

Das Schalten von Wiser Lasten (loads) über Virtuelle Ausgänge geht direkt über die API ansteuerung.

 

1.Generieren des Token im Wiser. Login über IP des Wiser: unten links auf LIVE API Schnittstelle, dort kann die API getestet werden und die Code’s ausgelesen werden.

2.Virtueller Ausgang Öffnen: Adresse: http://{IP von Wiser}

3.Virtueller Ausgang Befehl: Dies entnehmt ihr der WISER API Dok.

z.Bsp: Schalter Ein Aus:

Befehl bei EIN+AUS:/api/loads/{Load Nummer}/target_state

HTTTP header bei Ein+Aus:

accept:application/json

Content-Type:application/json

Authorization:Bearer {Token aus Wiser}

 

HTTP body bei Ein:{ "bri":10000}

HTTP body bei Aus:{ "bri":0}

HTTP Methode bei Ein / Aus: PUT

 

Falls Sensoren und Temperaturen ausgelesen werden sollen, geht dies nicht direkt, da ein Bearer gebraucht wird, Loxone unterstützt dies bei den Eingängen aber nicht.

 

Daher ist eine Umleitung über einen Py möglich anbei eine mögliche Programmierung: (ChatGPT)

🚀 1️⃣ AUTO-MAPPING SCRIPT (ALLE GERÄTE AUTOMATISCH)

👉 Dieses Script erzeugt automatisch:

  • alle Loads

  • alle Sensoren

  • saubere Loxone URLs


🧾 Script (Upgrade)

from flask import Flask, jsonify, request import requests app = Flask(__name__) WISER_IP = "192.168.1.112" TOKEN = "DEIN_TOKEN" HEADERS = { "Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json", "Accept": "application/json" } # Cache devices = { "loads": [], "sensors": [] } # ----------------------------- # DATEN LADEN # ----------------------------- def refresh(): global devices try: devices["loads"] = requests.get( f"http://{WISER_IP}/api/loads", headers=HEADERS).json() devices["sensors"] = requests.get( f"http://{WISER_IP}/api/sensors", headers=HEADERS).json() except: pass # ----------------------------- # AUTO MAPPING # ----------------------------- @app.route("/lox/devices") def list_devices(): refresh() result = [] for l in devices["loads"]: result.append({ "type": "load", "id": l["id"], "name": l.get("name", f"Load_{l['id']}"), "state_url": f"/lox/load/{l['id']}/state", "on_url": f"/lox/load/{l['id']}/on", "off_url": f"/lox/load/{l['id']}/off" }) for s in devices["sensors"]: result.append({ "type": "sensor", "id": s["id"], "name": s.get("name", f"Sensor_{s['id']}"), "value_url": f"/lox/sensor/{s['id']}" }) return jsonify(result) # ----------------------------- # LOAD FUNKTIONEN # ----------------------------- @app.route("/lox/load/<int:load_id>/state") def load_state(load_id): r = requests.get( f"http://{WISER_IP}/api/loads/{load_id}/state", headers=HEADERS) return "1" if r.json().get("state") else "0" @app.route("/lox/load/<int:load_id>/on") def load_on(load_id): requests.put( f"http://{WISER_IP}/api/loads/{load_id}/target_state", headers=HEADERS, json={"bri": 10000} ) return "1" @app.route("/lox/load/<int:load_id>/off") def load_off(load_id): requests.put( f"http://{WISER_IP}/api/loads/{load_id}/target_state", headers=HEADERS, json={"bri": 0} ) return "0" # ----------------------------- # SENSOR # ----------------------------- @app.route("/lox/sensor/<int:sensor_id>") def sensor(sensor_id): r = requests.get( f"http://{WISER_IP}/api/sensors/{sensor_id}", headers=HEADERS) data = r.json() for key in ["temperature", "humidity", "value"]: if key in data: return str(data[key]) return "0" # ----------------------------- # SERVER # ----------------------------- if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)

📊 Ergebnis testen

👉 Im Browser:

http://RASPI:5000/lox/devices

➡ Du bekommst automatisch sowas:

[ { "type": "load", "id": 1, "name": "Wohnzimmer Licht", "state_url": "/lox/load/1/state", "on_url": "/lox/load/1/on", "off_url": "/lox/load/1/off" } ]

👉 DAS ist dein automatisches Mapping 🎉


🧠 2️⃣ Loxone Config (fertige Struktur)

Jetzt kommt die direkte Umsetzung 👇


🔌 Virtuelle Eingänge

Für jeden Load:

Name: Licht_Wohnzimmer_Status URL: http://RASPI:5000/lox/load/1/state Typ: Zahl

🔘 Virtuelle Ausgänge

Name: Licht_Wohnzimmer_EIN URL: http://RASPI:5000/lox/load/1/on Name: Licht_Wohnzimmer_AUS URL: http://RASPI:5000/lox/load/1/off

🌡 Sensor

Name: Temperatur_Wohnzimmer URL: http://RASPI:5000/lox/sensor/1

🎛 Empfohlene Bausteine in Loxone

👉 Für Licht:

  • Baustein: Lichtsteuerung

  • Eingang:

    • Status → Virtueller Eingang

  • Ausgang:

    • EIN/AUS → Virtueller Ausgang


🔥 BONUS: SUPER EASY IMPORT (Quick Setup)

👉 So sparst du dir Arbeit:

  1. Öffne im Browser:

http://RASPI:5000/lox/devices
  1. Kopiere alle IDs

  2. Erstelle in Loxone:

    • 1x Vorlage (Load)

    • dann duplizieren und nur ID ändern


🏁 Fertig

Du hast jetzt:

✅ Automatische Geräte-Erkennung
✅ Saubere API ohne Token
✅ Perfekte Loxone Integration
✅ Skalierbar für dein ganzes Haus

 

Viel Spass beim Rumspielen