API für Kalenderabfrage zur Heizungssteuerung/Gebäudeautomatisierung.
-
Dann les dir mal dies hier durch, man braucht die Authentifizierung anscheinend nur per POST request mit der URL mitschicken.
https://intern.churchtools.de/?q=churchwiki#WikiView/filterWikicategory_id:10/doc:API/ -
Habe in der Richtung auch mal etwas ermittelt. Der Zugriff über die API, z.B. mit einem PHP-Skript, ist zwar hochinteressant und ermöglicht einiges, aber es müsste in jedem Fall noch ein bisschen was mit den Daten angestellt werden, um am Ende die Information zu erhalten, ob zum aktuellen Zeitpunkt die Heizung für Raum X ein- oder ausgeschaltet werden soll.
Ein Brückenglied zwischen CT und der Heizung ist also nötig. In dem Fall ist es m.E. einfacher, den iCal-Export des Raumes zu verwenden. Diesen kann man auch z.B. mit PHP einlesen und darin nach solchen Zweizeilern suchen:
DTSTART:20160428T150000
DTEND:20160428T170000Das sind dann die Belegungszeiten. Ob Du von den Zeiten (hier z.B.: T150000 = 15:00 Uhr) noch eine Zeitspanne abziehst, weil das Aufheizen ja einen zeitlichen Vorlauf benötigt, könntest Du über einen Aufrufparameter einstellbar machen. Die Logik wäre dann diese:
- alle enthaltenen Wertepaare (Zeiträume) aus der iCal-Datei ermitteln und die Zeiten ggfs. um die Vorlaufzeit korrigieren
- alle diese Zeiträume abklappern und prüfen, ob wir uns gerade innerhalb eines dieser Zeiträume befinden
- davon abhängig dann ein "Heizung EIN" oder "Heizung AUS" ausgeben in einer Form, mit der das Heizungssystem direkt arbeiten kann.
Hoffe, das hilft etwas weiter. Ein entsprechendes PHP-Skript (kann natürlich auch in einer anderen Programmiersprache sein) ist ziemlich schnell geschrieben und könnte auf Eurem normalen Webserver liegen.
-
@artus70 Falls du da mal ein fertiges skript hast, vielliecht könntest du es unter Tips & Tricks zur verfügung stellen, denn wir sind auch grad dabei für Loxon etwas ähnliches zu entwickeln, sind aber noch nicht soweit....
-
Ich verfolge mal weiter den Ansatz, die ICS Datei pro Raum abzurufen und auszulesen. Aber parallel möchte ich gerne auch folgendes klären:
@jmrauen Hallo Jens Martin,
kannst du abschätzen wie viel Aufwand (Manntage) folgende Erweiterung wäre.
-
Ressourcen -> Stammdaten -> Ressourcen-Typ
Maske und DB Erweitern um das Feld "Ressource für Gebäudesteuerung verwenden" (Boolscher Wert) -
Ressourcen -> Stammdaten -> Ressourcen
Maske und DB abhängig von dem Flag aus (1) um folgende Felder erweitern:
2.1 ID für Gebäudesteuerung
2.2 Vorlaufzeit für Gebäudesteuerung (positiver und negativer Wert möglich, ggfs. nur Minuten einzustellen)
2.3 Nachlaufzeit für Gebäudesteuerung (positiver und negativer Wert möglich, ggfs. nur Minuten einzustellen)
2.4 Kommentar -
Ressourcen Verwaltung
Jede Ressource vom Typ mit dem Flag Gebäudesteuerung erhält beim buchen drei Felder in der Datenbank
3.1 Startzeit Gebäudesteuerung (Berücksichtigt jeweils den gebuchten Zeitraum + Vorlaufzeit aus (2))
3.2 Nachlaufzeit Gebäudesteuerung (Berücksichtigt jeweils den gebuchten Zeitraum + Nachlaufzeit aus (2))
3.3 Kommentar: ausgefüllt durch Standardwert aus dem Stammdaten -
Mit Hilfe der API sollte dann ein Request möglich sein - mit folgenden Parametern
4.1 GetHomeAutomationData:ALL oder
----- Get HomeautomationData:ID=12345 (entspricht der HomeAutomationID)
4.2 StartTime:20160304T000000
4.3 EndTime:20160311T235959 -
Das Ergebnis könnte dann so aussehen
5.1 Nur Einträge liefern, bei denen gilt
HomeAutomationStart > StartTime und < EndTime oder
HomeAutomationEnd > StartTime und </endtime>
--
5.2 Die Antwort wäre dann
BEGIN:HOMEAUTOMATION
UID:
HOMEAUTOMATIONID: 12345
HOMEAUTOMATIONSTART:
HOMEAUTOMATIONEND:
HOMEAUTOMATIONCOMMENT:
END:HOMEAUTOMATION
Da wir bei uns pro Woche im Winter ca. 20 Events mit je 1-15 Räumen programmieren müssen, ist der Aufwand im Moment dafür sehr hoch. Im Moment kommt es immer wieder zu Abweichungen zwischen Kalender und Heizungsprogrammierung. (Räume bleiben kalt, oder werden überflüssig geheizt)
Danke für dein Feedback. Vielleicht findest sich auch jemand, der das praktisch oder monetär bei uns unterstützen würde.
-
-
Mir fällt noch ein, der ganze Export der Daten sollte auch abhängig sein vom Ressourcen Status. Evtl. könnte das als Parameter auch in dem Request mit übergeben werden. Es sollten in unserem all nur bestätigte Räume auch geheizt werden.
-
@MRBaum gibt es da jetzt nicht schon eine Funktionierende Lösung?
Die Ressourcen können ja schon per Ical abgefragt werden.
-
@merhard Ja, grundsätzlich kann man die Raumbelegungen per API abfragen, aber
- die für die Heizung notwendigen Vorlaufzeiten kann ich zur Zeit in ChurchTools nicht konfigurieren. Diese weichen von der Nutzungsvorlaufzeit ab.
- es wäre optimal, wenn ChurchTools feststellen könnte, wenn sich zwei Buchungen überlappen und bei der Abfrage nur ein Zeitraum übermittelt wird. Überlappen sich zwei Heizungszeiträume schaltet mir nämlich die Endezeit von Periode 1 die Heizung während Periode 2 aus.
Daher wäre ein bisschen "Heizungsintelligenz" optimal.
So werden wir das vorübergehend in einer Schnittstelle abbilden müssen, die jedoch keiner im Fokus hat bzw. an die nur ein Programmierer ran kommt. -
@MRBaum
Ok, hm das scheint tatsächlich ein Spezialfall zu sein.Welches Heizungsystem benutzt ihr denn generell um die Steuerung zu automatisieren?
Wir bauen nämlich gerade an und da wäre es eine ganz interessante Frage mal zu hören, wie ihr das gelöst habt. -
@merhard Also für dich ein kurzer Ausflug in unsere Heizungs-Welt:
Wir haben vor 15 Jahren ein ca. 50 Jahre altes Gebäude erworben, dass in allen Räumen klassische Rippenheizkörper mit normalen Thermostatköpfen hatte. Wir nutzen nun Raum-Thermostate, die per EIB/KNX vernetzt sind, das ist ein Datenprotokoll zur Gebäudesteuerung. In diesem "Netzwerk" befinden sich auch EIB Relais, jeder Relais-Kontakt steuert dann kleine Stellmotoren, die anstelle der alten Thermostatköpfen an jedem Heizkörper sitzen. Wie das Relais nun den Stellmotor ansteuert kann ich nicht genau sagen, aber es funktioniert ganz gut. Wir steuern ca. 12 Räumen mit insgesamt etwa 60 Heizkörpern. Grundsätzlich kann jedes Thermostat nun die Stellmotoren seines Raumes ansteuern, u.A. mit einer "Vor Ort" Steuerung. Im Netzwerk sitzt nun ein kleiner EIB-Server der über eine HTTP Oberfläche erreichbar ist. Hier wurde die Oberfläche für uns angepasst, damit wir es leicht bedienen können. Über eine Ablaufsteuerung können wir nun jedem Thermostat bis zu 7 Tage im Voraus sagen, ob er Tag- oder Nachtschaltung fahren soll. Diese Verwaltung ist aber nicht für jeden zugänglich und muss parallel zu ChurchTools gepflegt werden. Aktuell prüfen wir wie weit wir den iCal Kalender pro Raum so umarbeiten, dass daraus die Steuerung für die Heizung gespeist werden kann.
Das ganze ist also recht stark auf unsere alte Gebäude-Situation zugeschnitten. Für einen Neubau sollte man prüfen, ob Alternativ zu einer klassischen Heizung eine Lüftungsanlage mit Wärme-Rückgewinnung nicht wirtschaftlicher ist. Wenn du mehr Fragen hast schreib mich einfach direkt an. -
Dieser Beitrag wurde gelöscht!