NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
geht über das xmlrpc object, ersatzweise über tcl.
wobei wenn du mehrere paramater im mastersatz umschreiben willst nehm ich das tcl script.
ein einzelner wert im Master Satz mache ich so:
// Konstanten für CCU Push var http = require('http'); var path = "/blabla.exe"; function setCCUscript (sDevice,wochenprog) { var data = 'object o1= devices.Get("' + sDevice + '");'; data +='string s2="";'; data +='if (o1) {'; data += 'xmlrpc.PutParamset (o1.Interface(), o1.Address(), "MASTER", "WEEK_PROGRAM_POINTER", '+ wochenprog.toString () +'); s2="SET";'; data += '} else { s2 = "NO DEVICE"; }'; return data } function setPushVar (data) { var options = { host: getObject('system.adapter.hm-rpc.0').native.homematicAddress, port: 8181, path: path, method: 'POST', headers: { 'User-Agent' : 'Mozilla/5.0', 'Content-Type': 'text/plain', 'Content-Length': data.length, } }; return options; } function httpPost (options,data) { var req = http.request(options, function(res) { var body=''; res.on('data', function(d) { body += d.toString (); }); res.on('end', function() { }); }); req.on('error', function(e) { log('ERROR: ' + e.message,"warn"); }); (data ? req.write(data) : log("Daten: keine Daten angegeben")); req.end(); } // Bei Änderung von Wochenprogramm Küche Push senden an CCU2 on ({id: "javascript.0.WEEKPROG.KUECHE", change: 'ne'}, function(obj) { var script = setCCUscript ("AI_KUECHE_TH",obj.state.val); httpPost (setPushVar (script),script); log ("Ändern Küche Wochenprog auf Programm " + obj.state.val); });
mit mehren parametern zugleich kennich nur die möglichkeit über die tcl api. ich benutz da ein etwas modifiziertes script:
`#!/bin/tclsh # # Aufruf für ein putParamset # Abgewandelte Form: ein oder mehrere parameter Möglich # ===================================================== # Black in November 2016 # # tclsh setparam <addresse> <paramset> <struct parameter=""> # z.B. # tclsh setparam GEQ004711 MASTER "{MODE_TEMPERATUR_REGULATOR {int 2}}" # adresse IMMER die Device Addy angeben, nie ein Channel, sonst tuts nicht # Der Parameter MUSS in dieser version ein STRUCT sein # heist "{par1 {Datatyp1 value1}{par2 {Datatyp2 value2}"... par3 bis parn in logischer folge # Datatyp bool, int , float, string load tclrpc.so set cmd [lindex $argv 2] puts $cmd #set cmd "{BACKLIGHT_ON_TIME {int 10}} {ENDTIME_SATURDAY_1 {int 440}}" xmlrpc http://127.0.0.1:2001/ putParamset ] ] </struct></paramset></addresse>` gruss, Black
-
Zuerst einmal gibt es beim hm-rpc Adapter schon ein issue das grundsätzlich einzubauen, von daher würde ich da jetzt keine sonderlösungen bauen.
Weiterhin wäre das einige was vllt gibt wäre den grundplan zu übertragen. Ob hm aber so viele schaltzeiten kann weiß ich nicht. Und ja Duty Cycle könnte bei einer Änderungs-Session interessant werden. Und es macht auch nur Sinn wenn alle aktoren bzw stellventile direktverknüpft sind … hm ...
-
Da ich ein Freund von im Notfall autark laufenden Systemen bin: wäre es nicht in einer zukünftigen version ein Ansatz, die Daten, welche für den Thermostaten eingestellt sind, via putParamset direkt in den Thermostaten zu schreiben. bzw dann auch via getParamset aus dem Thermostaten auszulesen `
Hi,
ich habe mich zwischenzeitlich intensiver mit dem Thema befasst.
Deine vorgeschlagene Lösung der Anforderung passt meiner Meinung nach nicht zum Konzept des Scriptes. Das Script soll helfen zu automatisieren, z.B. durch Kalendereintragungen, Abwesenheit/Anwesenheit Temperaturen, automatisierte Profilumschaltungen (Schichtarbeit), Feiertage.
All dies wird nicht oder nur ansatzweise von den HM Profilen unterstützt. Wie schon in der ersten Antwort geschrieben würde auch eine ständige Anpassung der Profile der Thermostate zu Problemen mit dem DC führen.
Um es kurz zu sagen. Das Script ersetzt nicht die GUI der Homematic sondern folgt einer erweiterten Logik
ABER
es gibt einen Ansatzpunkt und der beruht darauf, die Thermostate im Automatik Modus laufen zu lassen. Demnach würden sie für den Fall eines Systemproblems ihr Programm abspulen.
Hierfür muss zunächst für die Räume wo es relevant ist "erzwinge manuell Mode" ausgeschaltet werden (Raumprofil).
1. Gültigkeit in Minuten
Wenn die Gültigkeit in Minuten auf einen negativen Wert gesetzt ist (z.B. -1), dann werden alle manuellen Aenderungen (inkl des Thermostates sofort zurückgesetzt) Mit anderen Worten: Das Thermostat schaltet im Auto modus zum definierten Schaltpunkt und wird dann sofort wieder auf die momentan geplante SollTemp des Scriptes zurückgesetzt.
Nachteile: keine Manuellen Aenderungen am Thermostat möglich. Das kann aber durch andere Elemente Wettgemacht werden.
Es gibt hierbei auch etwas erhöhten Funkverkehr, weil ja das Script auf jeden Schaltpunkt des Thermostates reagiert.
ACHTUNG: beim Testen dieser Lösung ist mir noch ein Fehler aufgefallen, den ich für die nächste Version gefixt haben.
Ich kann aber bei Bedarf eine Zwischenversion per PN senden.
2. Nur zwei Homematic Schaltpunkte pro Tag und synch mit Script Schaltpunkten
Beispiel:
-
Homematic Schaltpunkt Morgens 6:00 auf 20 Grad und Abends 22:00 auf 18 Grad
-
Script Schaltpunkt Morgens 06:01 erster Synch Schaltpunkt und Abends 22:01 letzter Synch Schaltpunkt
Wenn die Einstellungen so gemacht werden, kann zu allen anderen Zeit beliebig geplant oder manuell geändert werdn.
Im Falle eines SystemDowns würde Morgens auf Tagestemp und Nachts auf AbsenkTemp geschaltet werden
Nachteil: Wenn innerhalb des Zeitraumes ein systemDown passiert wird die letzte Temperatur bis zum nächsten Auto Schaltpunkt gehalten
Ich sehe die Anpassungen für den Fallback auf der Homematic Seite eher als manuellen Aufwand, weil das ja nur einmalig passieren muss.
vG Looxer
-
-
Bzgl. Ausfall ioBroker, usw. habe ich bei mir zwei zusätzliche Schienen eingebaut:
Alle Heizungsprogramme (Notbetrieb) liegen noch auf der CCU und sind deaktiviert.
Im Fall der Fälle kann ich die Programme (2 pro Raum) aktivieren und habe einen halbwegs brauchbaren Betrieb (ohne den Komfort des Scriptes).
Und ich habe ein abgespecktes Notprogramm in den Geräten selber liegen, welches ja dann greift, wenn der Modus auf "Auto" geändert wird.
Das wäre dann pro Raum auch nur noch ein kleiner Eingriff.
Beides sind Notvarianten, die einen Standard-Tagesablauf abdecken.
Gruß,
Eric
-
Hi,
@eric2905:Im Fall der Fälle kann ich die Programme (2 pro Raum) aktivieren `
Ich glaube Black ging es um den den Betrieb nach Ausfall ohne manuellen Eingriff.
(oder ich habe zu viel interpretiert)
Daher ist der beschriebene Ansatz so gewählt. Thermostate sind dann IMMER auf Auto-Modus womit der Fallback greift sobald die Situation eintrifft.
Habe ich auch getestet ….funktionierte (mit den Einschränkungen)
EDIT: damit ist auch ein Ausfall der CCU abgedeckt.
vG Looxer
-
Ist mir schon klar.
Habe mir nur ein 3-stufiges System aufgebaut:
1. Alles ok = Steuerung hat ioBroker
2. ioBroker fällt aus = Steuerung übernimmt die CCU (Scripte aktivieren)
3. CCU fällt auch aus = Im Gerät hinterlegte Steuerung zieht (Auto-Modus aktiv)
Gruß,
Eric
-
Ich hätte da noch eine andere Frage. Ich Komme aus dem MSR Bereich und arbeite sehr gern mit Komfort und Eco Betrieb. Komfort ist ja schön für jeden Raum einstellbar, wäre es ein großer Aufwand die Absenkung auf einen einheitlichen wert zu bringen? Also nicht Absenkung um 2 Grad sonder zb auf 18 Grad?
Gruß Robert
Gesendet von meinem Redmi Note 4 mit Tapatalk
-
Habe mir nur ein 3-stufiges System aufgebaut: `
Jap, dann ist es eine dritte Variante.
Nachteil: manueller Eingriff (bei Situationen, die einen Fallback erfordern) notwendig
Vorteil: Script ist vollumfänglich nutzbar
und ich halte fest, dass es zahrleiche Möglichkeien gibt, einen oder mehrere Fallbacks einzubauen.
-
yap, das war meine intension, bei ausfall das ganze system trotzdem lebensfähig zu halten.
aber wenn sich etwas mit dem rpc adapter in der richtung tut, das er bei hm und hmip auch die mastersätze beherrscht, ist das glaub ich nicht nötig, in einem script nachzubilden.
Gruss, Black
-
wäre es ein großer Aufwand die Absenkung auf einen einheitlichen wert zu bringen? Also nicht Absenkung um 2 Grad sonder zb auf 18 Grad? `
Im Grunde kannst du es so einstellen, Die Minimaltemperatur ist dann die ECO Temperatur.
beispiel:
Eco Temp = Miniltemp 18 Grad
geplante Raumtemp = 21 Grad
Absenkung bei Abwesenheit 5 Grad
Absenkung bei Urlaub 5 Grad
jetzt zieht immer die Minimaltemp von 18 Grad.
oder spricht da was dagegen ?
vG Looxer
-
Nein, von der Seite nicht. Kenn nur meine Frau, die friert so leicht und bei eingestellten 24 greift dann die 18 nicht mehr. Aber dann Stelle ich die Absenkung größer den die Absenkung geht ja nicht tiefer als die mindest Temperatur, oder?
Gesendet von meinem Redmi Note 4 mit Tapatalk
-
ber dann Stelle ich die Absenkung größer den die Absenkung geht ja nicht tiefer als die mindest Temperatur, oder? `
Ja, ganz genau so war es gemeint. Wenn die Absenkung nur gross genug gewählt ist, dann entspricht die Mindesttemperatur der ECO Temp.Die Temperatur geht nicht unter Mindesttemp.
vG Looxer
-
Hi,
Super script und die erneuerungen in 2.0 sind merkbar danke !
Ich habe nur 1 problem mit de view was mich zum verzweifelen bringt :lol: :mrgreen: :lol:
Da ich so einige Zimer habe moechte ich die komplette heizungs steuerung in ein seperates VIS project verschieben.
Jedoch verhaut es mir dabei irgendwie die layouts der buttons.
Import im Main sieht so aus :
Genau die gleiche view (export/import) sieht in meinen 2ten project so aus :
Jemand eine ahnung warum und was ich daran machen kan ?
-
Hi,
das Problem ist leider schon sehr alt. siehe hier: http://forum.iobroker.net/viewtopic.php … =60#p84526
Habs auch seit dem schon im Trello. Ich muss aber auch sagen, dass ich nicht sicher war, ob das nur bei mir in der Form wie du es beschreibst auftritt.
Bei mir ist es so, dass sobald ich in einer anderen View den View mit den JQUI Widgets hinzfüge zerhaut es das Format inklusive aller anderen JQUIs aller Heizungsviews.
Kannst du das so bestätigen ? Dann können wir vielleicht den Aufbau besser beschreiben. Ich denke nur BF kann es am Ende fixen.
vG Looxer
-
Hi Dutch,
Wenn ich mir das jetzt so im Trello ansehe, dann sieht es so aus, dass dort mehrere Probleme beschrieben sind.
So funktioniert das wahrscheinlich nicht. Wir sollten ein neues Ticket aufmachen, dass exakt die Situation beschreibt bei dem die Widgets Ihre Groesse/Position ändern.
Bei mir ist es so.
1. 5 Heizungsviews gepackt in View in Widget (5 x View in Widget) in einer View (Obergeschoss)
2. Wenn ich dann eine neue Heizungsview in eine andere View (Untergeschoss) (importiere oder kopiere - das ist egal ) wieder in view in Widget, dann verschieben sich die Widgets. ABer nicht nur im neu erzeugten View sondern in allen Heizungsviews inklusive der 5 Views im Obergeschoss.
3. Die verschobenen Views lassen sich nicht mehr korrekt anzeigen, auch wenn die neue View gelöscht wird. Nichts geht mehr
4. Im VIS Editor erscheint alles korrekt.
Bei dem beschriebenen Aufbau musst du vorsichtig sein, denn ich habe noch keinen Weg gefunden die Views wieder vernünftig anzuzeigen. Da half nur Restore.
vG Looxer
-
hmm ok also ein algemeines problem mit vis wen ich richtig verstehe ?
Wurde dafuer auch ein bug report gemacht in Git ? Trello sehe ich meist mehr fuer features und git als issue reporter/tracker.
-
Hi,
ja mit VIS und speziell mit dem JQUI CTRL INPUT Widget.
Es gibt noch kein issue in GitHub.
Ich glaube, dass das nur auftritt, wenn du die Heizungsviews über mehrere VIS views verteilst.
Ist aber nur eine Theorie. Ich nutze view in Widget und rufe die Heizungsviews dann über einen transparenten Button auf.
Wie benutzt du die Widgets ? ebenfalls als "view in widget"
vG Looxer
-
Wie benutzt du die Widgets ? ebenfalls als "view in widget" `
Hey there, habe beides probiert also seperate views und view in widget, das letztere moechte ich benutzen und dan mit navigation die richtie view laden.
Btw: mir ist noch was aufgevallen, wen man die heizperiode deactiviert geht alles auf die eingestellete mindest temperatur (OK.
Activiert man diese wieder bleibt der SOLL wert abgesenkt und nicht conform zeitplan, triggert man z.b. manuell auf 0 wird die SOLL richtig eingestellt.
~Dutch
-
Btw: mir ist noch was aufgevallen, wen man die heizperiode deactiviert geht alles auf die eingestellete mindest temperatur (OK.
Activiert man diese wieder bleibt der SOLL wert abgesenkt und nicht conform zeitplan, triggert man z.b. manuell auf 0 wird die SOLL richtig eingestellt. `
Hi Dutch,
habs gerade mal getestet. Ich kann das Verhalten bei mir aber nicht bestaetigen.
Vielleicht hat es etwas mit der Zeit zu tun. Es braucht etwas bis alle Thermostate die updates bekommen.
Daher sollte zwischen aus- und einschalten einige Zeit gelassen werden. Direkt hintereinanderfolgendes schalten kann zu unerwarteten Ergebnissen führen.
Kannst du das nochmal so testen ?
habe beides probiert also seperate views und view in widget, das letztere moechte ich benutzen und dan mit navigation die richtie view laden. `
ich schreibe Morgen mal ein issue in GitHub
vG Looxer
-
Hi Dutch,
habs gerade mal getestet. Ich kann das Verhalten bei mir aber nicht bestaetigen.
Vielleicht hat es etwas mit der Zeit zu tun. Es braucht etwas bis alle Thermostate die updates bekommen.
Daher sollte zwischen aus- und einschalten einige Zeit gelassen werden. Direkt hintereinanderfolgendes schalten kann zu unerwarteten Ergebnissen führen.
Kannst du das nochmal so testen ?
vG Looxer `
Hey Looxer,
Na klar ! Also ich habe:
-
heizperiode deaktiviert
-
Soll wert springt sofort auf 4.5 (hab ich auch so eingestelt)
-
5 minuten gewartet
-
Heizperiode aktiviert
-
Soll wert bleibt auf 4.5 aber script wurde abgerufen, er uebernimmt halt nur nicht die richtige SOLL
Deaktivieren:
Activieren (5 min spaeter):
starte ich das script jetzt neu (oder setze manuel die temp auf 0) werde die werte des shedule uebernommen (wie gewolllt)
Edit: stimm nicht ganz, starte ich das script neu bleibt der wert 4.5 ! nur nach manuellen setzte der Man Temperatur auf 0 uebernimmt er wieder den wert des shedules.
-