Wochenprogramm aus externer Anwendung

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

sugar76
Beiträge: 4
Registriert: 02.01.2018, 12:58

Re: Wochenprogramm aus externer Anwendung

Beitrag von sugar76 » 11.01.2018, 18:07

Familienvater hat geschrieben: Das größte Problem ist aber doch, das die Raumverwaltung etc. nicht in der Haussteuerung stattfindet, sondern wie in jedem "Office" in einer bunten Excel-Liste. Und weder die Excel-Liste noch evtl. eine irgendwie geartete Praxis-Verwaltungssoftware bietet die Schnittstelle zur Haussteuerung.
Die Raumverwaltung ist eine Webanwendung und läuft übers Internet. Mein Plan ist, in die Praxis einen Raspberry hinzustellen, der die Raumbelegungen abruft und dann - falls sich die Belegung eines Raums geändert hat - per XMLRPC als Wochenprogramm an die CCU weiterreicht.

Die Thermostate und Homematic-Zentrale gibt es in der Praxis noch nicht, müssen also eh noch besorgt werden. Eine Möglichkeit ist daher auch, das mit FHEM umzusetzen. Dort ist dokumentiert, wie man eine Wochenbelegung ändert: https://wiki.fhem.de/wiki/HomeMatic_Typ ... aturlisten

Gemelon
Beiträge: 12
Registriert: 20.07.2012, 10:04

Re: Wochenprogramm aus externer Anwendung

Beitrag von Gemelon » 11.01.2018, 18:38

Hallo shugar76,
Ich bin mit meinen Recherchen jetzt schon etwas weiter gekommen. Ich habe herausgefunden das es da wohl mehrere Wege gibt. Am besten fand ich bis jetzt, die Möglichkeit über die XML-API. Man gibt im Browser einfach ein paar Zeilen wie diese ein:

Code: Alles auswählen

http://192.168.178.36/addons/xmlapi/mastervaluechange.cgi?device_id=1332&name=P1_ENDTIME_MONDAY_1&value=360
http://192.168.178.36/addons/xmlapi/mastervaluechange.cgi?device_id=1332&name=P1_TEMPERATURE_MONDAY_1&value=19.000000
http://192.168.178.36/addons/xmlapi/mastervaluechange.cgi?device_id=1332&name=P1_ENDTIME_MONDAY_1&value=1320
http://192.168.178.36/addons/xmlapi/mastervaluechange.cgi?device_id=1332&name=P1_TEMPERATURE_MONDAY_1&value=23.000000
http://192.168.178.36/addons/xmlapi/mastervaluechange.cgi?device_id=1332&name=P1_ENDTIME_MONDAY_1&value=1440
http://192.168.178.36/addons/xmlapi/mastervaluechange.cgi?device_id=1332&name=P1_TEMPERATURE_MONDAY_1&value=19.000000
.
.
.
http://192.168.178.36/addons/xmlapi/mastervaluechange.cgi?device_id=1332&name=WEEK_PROGRAM_POINTER&value=1
Das muss man dann natürlich für jeden schaltpunkt und für jeden Wochentag machen, womit man dann am besten ein C# oder VB Programm beschäftigen sollte. Ich werde das mit einem C# Programm via HttpWebRequest machen, da ich auch mehr als 3 Wochenprogramme benötige. Vermutlich gibt es da auch noch eine elegantere Art mehrere Parameter gleichzeitig zu setzten, aber da habe ich noch nichts gefunden.

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Wochenprogramm aus externer Anwendung

Beitrag von Familienvater » 11.01.2018, 18:51

Hi,

wenn das "so" einfach in FHEM geht, dann wird es keinen schnelleren Weg geben, als das so zu machen, weil für alles andere musst Du definitiv viel mehr Zeit aufwenden.

Aber:
Auch mit FHEM wird Dir der bei einfachster Programmierung der DutyCycle um die Ohren fliegen, je nach dem, wieviele Thermostate es nachher im Endeffekt sind, und einfachste Programmierung heißt für mich, das um 0 Uhr für jeden Raum geschaut wird, wie der nächste Tag ist, und entsprechend ein Wochenprogramm zusammengebaut wird, und das an jeden betroffenen Thermostat gefunkt wird (Unabhängig davon, ob es Änderung gibt oder nicht). Die nächst cleverere Stufe ist, das z.B. nur noch Sonntags für eine Woche im Vorraus zu erledigen, dann fliegt einem nur einmal die Woche der DC um die Ohren, oder die eh zu erstellende Software auf dem Raspi muss clever genug sein, nur für die Räume ein Update für die Woche oder auch Täglich zu machen, wo sich eine Änderung ergibt (aber auch für diesen Vergleich muss irgendwoher das aktuelle Wochenprogramm kommen).
Aber da die Daten erst mal aus einer Webanwendung geholt werden müssen, die wahrscheinlich nicht einfach per user:password@ requestbar ist, sondern erst irgendwelche Anmelde-Token generiert, und dann entsprechend mitgesendet werden müssen, wird alleine schon das Beschaffen der Rohdaten ein Spaß, aber vielleicht gibt es ja auch JSON-Schnittstellen oder so, wo die Daten einfach und strukturiert abgerufen werden können.

Der Familienvater

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Wochenprogramm aus externer Anwendung

Beitrag von Xel66 » 11.01.2018, 20:04

sugar76 hat geschrieben:Das Heizungsprogramm soll automatisch anhand der Daten aus der Raumbelegungs-Software angepasst werden.
Warum muss das gemacht werden? Die Heizungsprofile sind viel mehr als Grundeinstellungen zu betrachten. Abweichungen in der Solltemperatur (z.B. zusätzliche Heizzeit) lassen sich jederzeit an die Thermostate übermitteln, ohne dass die Duty Cycle-belastende Grundprogrammierung neu übertragen werden muss. Warum muss für ein "einmaliges" Ereignis oder eine "einmalige" Konstellation die Grundeinstellung geändert werden?

Es gibt viele Beispiele hier im Forum, wie sich externe Webseiten abfragen lassen. Diese Zustände lassen sich jederzeit dann durch ein Script abfragen und entsprechenden Solltemperaturen in den Thermostaten setzen. Ich erkläre das mal an einem Beispiel. Bei mir bilden die Profile der Thermostate den kleinsten gemeinsamen Nenner der Familie ab. Morgens wird in den benutzten Räumen geheizt und dann ab frühen Nachmittag bis zum Abend alle Räume. Alle zusätzlichen Heizzeiten (und durch Schichtarbeit variiert das stark) werden in Abhängigkeit von Systemvariablen an die Thermostate bei Bedarf übermittelt. Hier kann man jederzeit auch im Automatikmodus eine andere Solltemperatur setzten. Stellt das Script nun fest, dass an diesem Tag ein bestimmter Raum genutzt wird, reicht es, diesen Raum auf z.B. Komforttemperatur zu setzen. Zu Feierabend (z.B. 18:00 Uhr) könnten dann alle Thermostate durch ihr jeweilig eigenes Profil auf Absenktemperatur geschaltet werden.

Um mal bei Deinem Beispiel (Montag 12-13/15-18, Di 13-18, Mi 10-13/14-16, Do 12-18, Sa 10-15) zu bleiben. Für Montag würden es reichen, rechtzeitig vor 12:00 Uhr die Heiztemperatur zu setzen und am Mittwoch dann vor 10:00 Uhr, denn eine kurzfristige Absenkung ist je nach Bausubstanz kaum sinnvoll, weil ein Abkühlen mit nachfolgenden Aufheizen mehr Energie benötigt, als ein Durchheizen. Je größer die Pausenzeiten natürlich sind, verschiebt sich diese Rechnung in Sparrichtung. Die Rückstellung ließe sich auch über vielleicht vorhandene Bewegungsmelder ab einer bestimmten Zeit initiieren (keine Bewegung nach bestimmter Uhrzeit, dann Absenktemperatur). Alternativ bekommen alle Thermostate in ihrer Programmierung um 18:00 Uhr die Absenktemperatur. Hierzu wird im Profil einfach von 0:00 Uhr bis 18:00 Uhr die Absenktemperatur im Profil hinterlegt und von 18:00 bis 24:00 Uhr nochmals. Soll ein Raum dann um 12:00 Uhr geheizt werden, dann wird die Solltemperatur durch ein Programm übermittelt und dann durch das Thermostat bis spätestens 18:00 Uhr gehalten. Diese Vorgehensweise erspart die ständige Änderung der Profile.

Es gibt auch im Forum Scriptbeispiele zum Auslesen eines Google-Kalenders, der sich auch zur Steuerung der Heizzeiten gebrauchen ließe, wenn das Auslesen der Webanwendung mit Problemen verbunden wäre.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Gemelon
Beiträge: 12
Registriert: 20.07.2012, 10:04

Re: Wochenprogramm aus externer Anwendung

Beitrag von Gemelon » 13.01.2018, 00:16

Prinzipiell sehe ich das wie Xel66, es macht keinen wirklich großen Sinn die Temperatur Halbstundenwiese anzupassen. Je nach Bausubstans, ist es sinnvoller die Räume durchgehend zu heizen. Es kann höchstens sinnvoll sein die Temperatur um ein paar Grad, abzusenken wenn die Räume an diesem Tag nicht verendet werden. Insgesamt sollten dafür die 3 Wochenprogrmme ausreichen.

Aber wie es so ist, langen mir die Drei Wochenprogramme auch nicht.

Ich hätte gerne mehr als 3 Wochenprogramme, was aber scheinbar nicht möglich ist, durch die begrenzte Größe des EEPRONM Speichers des Wandthrmostaten.

Es kommt jetzt darauf an wie gut du dich mit Programmierung auskennst und ob du selbst etwas programmieren möchtest. Ich habe jedenfalls herausgefunden, dass das was ich vorhabe mit einiger Programmiererei leicht möglich ist, aber dazu muss man einiges an eigener Programmierarbeit rein stecken.

Meine Idee ist ein C# Programm zu schreiben, das automatisch zwischen Frühschicht und Spätschicht wechselt (Wochenprogramm 1, Wochenprogramm 2) und dann im Wochenprogramm 3 die Parameter ändert, je nach dem wie ich es für meinen Urlaub brauche oder wenn ich den ganzen Tag Zuhause bin, oder für Situationen die ich jetzt noch nicht kenne. Ich würde also das Wochenprogramm 3 flexibel verwenden. Das Programm sollte im SysTray sein, und der Wechsel sollte über eine Rechtsklick auf das Icon Auswählbar sein.

Ich habe bis jetzt natürlich noch kein funktionierendes Programm, da ich gerade erst angefangen hab mich mit dem Thema zu beschäftigen.

Die Geschichten mit dem SysTray hab ich im Griff, aber die Sache mit dem senden der Daten für dass Wochenprogramm muss ich noch besser verstehen.

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Wochenprogramm aus externer Anwendung

Beitrag von Xel66 » 13.01.2018, 02:03

Gemelon hat geschrieben:Meine Idee ist ein C# Programm zu schreiben, das automatisch zwischen Frühschicht und Spätschicht wechselt (Wochenprogramm 1, Wochenprogramm 2) und dann im Wochenprogramm 3 die Parameter ändert,...
Die Schichtberechnung kannst Du auch in der CCU direkt machen. Hier habe ich mal eine Anleitung zum Setzen der Schichtsystemvariable geschrieben. Ich betreibe auch meine Heizung ohne jegliche Veränderung der Wochenprogramme in Abhängigkeit vom Schichtplan und berechneten Feiertagen und aus einem Google-Kalender ausgelesene Urlaubstagen. Man kann auch Kalender, die man im Smartphone führt durch Tasker auslesen lassen und entsprechende Systemvariablen setzen lassen. Hier habe ich mal meine Lösung für einen Müllkalender vorgestellt.

Bezüglich des Umschaltens der Parametersets wurde hier schon mal was geschrieben (habe ich in meinen Lesezeichen noch gefunden). Vielleicht ist das auch ein Lösungsansatz für Euch.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

EvertB
Beiträge: 5
Registriert: 25.01.2019, 10:12

Re: Wochenprogramm aus externer Anwendung

Beitrag von EvertB » 18.09.2020, 16:34

Code: Alles auswählen

object dev=devices.Get("Büro Heizungsregelung");
WriteLine(dev);
WriteLine(dev.Address());
WriteLine(dev.Interface());

xmlrpc.PutParamset(dev.Interface(), dev.Address(), "MASTER", "WEEK_PROGRAM_POINTER", "1");
WriteLine(xmlrpc.GetParamset(dev.Interface(), dev.Address(), "MASTER"));
Hallo Gemelon,

Mir reichen 3 WochenPrograms und das PutParamset command wirkt gut. Mit GetParamset bekomme ich leider die ganze Inhalt des MASTER Strukturs.
Ist es auch möglich nur die Wert des heutige WEEK_PROGRAM_POINTER zurück zu bekommen?

Vielen dank,
EvertB

Luapos
Beiträge: 40
Registriert: 13.09.2017, 22:14

Re: Wochenprogramm aus externer Anwendung

Beitrag von Luapos » 17.02.2021, 14:07

Hallo,
ich klinke mich hier mal mit ein, da das Thema sehr ähnlich ist.

Ich möchte die Wochenprogramme meiner WTH2's extern ändern können. Da geht es später darum, dass auch Frau/Kind aus z.B. der Mediola App Zeitewn und Temperaturen ändern können sollen ohne in die CCU zu müssen.
Derzeit hole ich mich die einzelnen Datenpunkte per XML-RPC in eine MySQL Datenbank.
Das sind bei 6 Programmen und 13 Zeitabschnitten 1638 Daten pro WTH2.
Da das ganze per PHP auf einem Webserver passiert würde ich gerne auch von dort aus die neuen Werte schreiben.
Ist es überhaupt möglich und auch sinnvoll das per URL-Aufruf (http://ccu3-webui:8181/x.exe?x=xmlrpc.PutParamset(...)) zu erledigen?

Danke

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Wochenprogramm aus externer Anwendung

Beitrag von Xel66 » 17.02.2021, 17:11

Luapos hat geschrieben:
17.02.2021, 14:07
Ist es überhaupt möglich und auch sinnvoll das per URL-Aufruf (http://ccu3-webui:8181/x.exe?x=xmlrpc.PutParamset(...)) zu erledigen?
Ich bezweifle die Sinnhaftigkeit des Unterfangens als solches. Wozu müssen die Anwender die Grundprogrammierung ändern können? Sie können jederzeit bei Bedarf die entsprechende Solltemperatur ändern, wenn mal temporär eine andere Solltemperatur gewünscht sein. Wenn sich im Nachgang ergibt, solche temporären Änderungen in die Grundprogrammierung permanent zu übernehmen, kann man das (als Admin des Systems) immer noch tun. Ich glaube nicht, dass Frau und Kind sich mit solchen Dingen auseinandersetzen (wollen). An Grundeinstellungen des Systems hat nur der Admin was rumzufummeln, oder würdest Du die Justage der Heizkurve auch in die Hand von Frau und Kind geben? Aber jeder kann sich sein System so wie er will auf den Bauch legen lassen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“