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:
Öffne im Browser:
http://RASPI:5000/lox/devicesKopiere alle IDs
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