WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

alternative Weboberfläche für die HomeMatic-Zentrale (CCU)

Moderator: Co-Administratoren

Uhlhorn
Beiträge: 72
Registriert: 23.02.2013, 17:16

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Uhlhorn » 11.04.2013, 17:31

Ja, hier ist das geänderte Script, und ich habe dort auch die Farben für die Solltemperaturfläche geändert. Einfach nach Farbe suchen lassen, ich habe es teilweise als Kommentare ran geschrieben. Und rund herum um diese Werte befinden sich auch die anderen Farben.

Alle Vorgaben sollten am Anfang des Sripts stehen, vielleicht kann das jemand mal ändern. Ich kenne mich leider nicht mit Java aus und kann das daher nicht machen.
Dateianhänge
webmatic.js.zip
(14.09 KiB) 236-mal heruntergeladen

Goglo
Beiträge: 610
Registriert: 14.04.2012, 18:34
Danksagung erhalten: 1 Mal

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Goglo » 12.04.2013, 00:28

KilamMalik hat geschrieben: Wenn das für Dich OK ist, nehme ich es in WebMatic mit auf, dann muss man das nicht immer wieder zusammenführen.
Klar, mach ruhig - so war es ja auch gedacht. "minimalinvasiv" halt ;-)

Zu den Farben: Die sind momentan fest im sourcecode drin. Einfach die folgende Stelle suchen:

Code: Alles auswählen

              series:[{
                  label: "Soll",
                  color: "#" + dColor,
                  fill: true
                  },{
                  label: "Ist",
                  color: "#81BEF7",
                  },{
                  label: "relF%",
                  color: "#58FAF4",
                  yaxis:'y2axis',
                  lineWidth: 3,
                  },{
                  label: "Ventil",
                  color: "#0020ff",
                  yaxis:'y2axis',
                  },{
                  label: "Ventil",
                  color: "#0040EE",
                  yaxis:'y2axis',
                }],
Da werden die Einstellungen für die einzelnen Graphen gemacht: Farbe, Bezeichnung des Graphen für die Legende und auf welcher y-Achse dieser Graph abgetragen werden soll. Weitere Optionen stehen in der jqplot-Doku.

Aber eigentlich wäre es schöner, wenn man die Formatierung in eine Systemvariable auslagern würde. Dann könnten auch nicht-Programmierer das eine oder andere einstellen.
83 Kanäle in 50 Geräten:
3x HM-LC-Sw1-Pl, 1x HM-WDS10-TH-O, 5x HM-PB-4-WM, 3x HM-PB-2-WM, 3x HM-LC-Dim1T-FM, 2x HM-Sec-SC, 4x HM-Sec-RHS, 5x HM-CC-VD, 4x HM-CC-TC, 5x HM-LC-Sw1-FM, 2x HM-Sec-MDIR, 1x HM-WDS30-T-O, 1x HM-LC-Sw1-Pl-2, 2x HM-PB-2-WM55, 1x HM-LC-Dim1L-CV, 1x HM-CCU-1, 1x HM-PBI-4-FM, 1x HM-LC-Dim1L-Pl-2, 1x HM-LC-Dim1T-CV, 1x HM-LC-Dim1L-Pl, 1x HM-LC-Sw2-FM, 1x HM-LC-Sw1-SM, 1x HM-Sec-WDS

82 Kanäle in 43 Geräten:
1x HM-PB-2-WM, 2x HM-LC-Bl1-FM, 3x HM-LC-Bl1PBU-FM, 3x HM-PB-2-WM55, 2x HM-PB-4-WM, 9x HM-CC-VD, 8x HM-CC-TC, 2x HM-LC-Sw2-FM, 1x HM-WDS10-TH-O, 1x HM-CCU-1, 1x HM-Sen-MDIR-O, 4x HM-LC-Sw1-FM, 2x HM-SwI-3-FM, 1x HM-LC-Sw4-SM, 1x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-WDS30-T-O

Uhlhorn
Beiträge: 72
Registriert: 23.02.2013, 17:16

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Uhlhorn » 12.04.2013, 01:20

Goglo hat geschrieben:Aber eigentlich wäre es schöner, wenn man die Formatierung in eine Systemvariable auslagern würde. Dann könnten auch nicht-Programmierer das eine oder andere einstellen.
Ja, eben, das finde ich auch. ;-) Es reicht ja, wenn alle Werte am Anfang des Scripts definiert und kommentiert werden.

RoBra81
Beiträge: 31
Registriert: 12.06.2012, 11:37

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von RoBra81 » 18.04.2013, 07:49

Hallo,

ich bin auf diese super Auswertemöglichkeit gestoßen und musste das gleich mal ausprobieren - funktioniert sehr gut! Ich habe mir allerdings das Aufzeichnungsscript von Goglo etwas angepasst: Ich rufe es alle 5 Minuten auf, speichere den aktuellen Datensatz jedoch nur, wenn sich mindestens einer der Werte geändert hat. So kann ich mit der gleichen Anzahl Einträge im Puffer einer größeren Zeitraum abdecken. Falls jemand Interesse hat hier mein Script:

Code: Alles auswählen

!Skript zum protokollieren der Heizungsdate eines Raums. Je Raum darf dabei nur ein
!Regler vorhanden sein und die an diesen Regler angelernten Stellantriebe müssen 
!auch diesem Raum zugeordnet sein. Skript ist vorbereitet auf die max. vier Stellantriebe,
!ich glaube aber, dass die eh alle gleich geregelt werden, weshalb nur einer aktiv ist.

!Liste von Räumen mit Thermostatreglern und Stellantrieben zum Protokollieren
string logRooms = "Wohnzimmer;Kueche";
!Name der Systemvariablen ist prefix<raumname>
string prefix = "Log_Heizung_";
integer maxEntries = 288; ! max Eintraege im Umlaufpuffer festlegen. z.B. alle 5 Minuten für 24h = 288.
!----------------------------------------------------------------------------------------------------------------------------

time now = system.Date("%Y-%m-%d %H:%M:%S").ToTime();
! Zum durchhangeln durch die Kanäle eines Raums
string chn_s;
var chn;
! dito für die Datenpunkte des Kanals
string dp_s;
var dp;
string logVal;

foreach(logVal, logRooms.Split(";"))
{
    ! Die zu protokollierenden Datenpunkte initialisieren
    string vvs1 = "";
    string vvs2 = "";
    string vvs3 = "";
    string vvs4 = "";
    string setp = "";
    string temp = "";
    string hmdt = "";
    ! Die Systemvariable, wohin gespeichert wird ermitteln
    var sysVar = dom.GetObject(prefix # logVal);
    var room = dom.GetObject(logVal);

    !Alle Räume durchklappern
    foreach(chn_s, room.EnumUsedIDs())
    {
        chn = dom.GetObject(chn_s);
        !und innerhalb eines Raums alle Kanäle
        foreach(dp_s, chn.DPs())
        {
            dp = dom.GetObject(dp_s);
            string dpType = dp.HssType(); ! <<<<------------ irre wichtig. ehrlich.
            if(dp.HssType() == "VALVE_STATE")
            { 
                if(vvs1 == "")
                {
                    vvs1 = dp.Value().ToString();
                }
                else
                {
                    if(vvs2 == "")
                    {
                        vvs2 = dp.Value().ToString();
                    }
                    else
                    {
                        if(vvs3 == "")
                        {
                            vvs3 = dp.Value().ToString();
                        }
                        else
                        {
                            if(vvs4 == "")
                            {
                                vvs4 = dp.Value().ToString();
                            }
                        }
                    }
                }
            }
            if(dp.HssType() == "SETPOINT")
            {
                setp = dp.Value().ToString();
                !Kürzen auf eine Nachkommastelle
                setp = setp.Substr(0, setp.Find(".")+2);
            }
            if(dp.HssType() == "TEMPERATURE")
            {
                temp = dp.Value().ToString();
                !Kürzen auf eine Nachkommastelle
                temp = temp.Substr(0, temp.Find(".")+2);
            }
            if(dp.HssType() == "HUMIDITY")
            {
                hmdt = dp.Value();
            }
        }
    }
    !Nicht gefundene Stellregler mit 0 initialisieren
    if(vvs1 == "") {vvs1="0";}
    if(vvs2 == "") {vvs2="0";}
    if(vvs3 == "") {vvs3="0";}
    if(vvs4 == "") {vvs4="0";}

    !Hier wird der neue Eintrag zusammengebastelt
    string newEntryValue = setp # "," # temp # "," # hmdt # "," # vvs1;
    string newEntry = now.ToString() # "," # newEntryValue;  
    string newString;
    string clpString;
    string oldString = sysVar.Variable();

    if(sysVar.Variable() == "???")
    {
        newString = "1;"#newEntry;
        sysVar.State(newString);
    }
    else
    {
        ! erstes Feld enthält den Zähler aktuell
        integer cnt = oldString.StrValueByIndex(";",0).ToInteger();
        string oldValueString = oldString.StrValueByIndex(";", cnt);
        string oldValue = oldValueString.Substr(oldValueString.Find(",")+1,oldValueString.Length()-oldValueString.Find(","));
        if (oldValue <> newEntryValue)
        {
            ! cnt entfernen: alles ab dem ersten ";"
            integer i = oldString.Find(";");
            integer l = oldString.Length();
            clpString = oldString.Substr(i+1,l-i+1);
            if(cnt < maxEntries)
            {
                cnt = cnt + 1;
            }
            else
            {
                !Umlaufpuffer voll, erstes Element entfernen
                i = clpString.Find(";");
                l = clpString.Length();
                clpString = clpString.Substr(i+1,l-i+1);
            }
            !neues Element hinten dranhängen
            newString = cnt # ";" # clpString # ";" # newEntry;
            sysVar.State(newString);
        }
    }
}
Ronny

Goglo
Beiträge: 610
Registriert: 14.04.2012, 18:34
Danksagung erhalten: 1 Mal

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Goglo » 22.04.2013, 23:31

Genau sowas hatte ich auch schon überlegt zu programmieren - allerdings nicht, um mehr Zeit abzudecken, sondern um die Aktivität der Stellantriebe genauer zu analysieren: Sozusagen auf Änderung irgendeiner der Werte. Leider funktioniert das mit dem webUI nicht so, denn nur "auf Aktualisierung" lässt einen eine potentielle Änderung mitbekommen. Ob sich nun wirklich was geändert hat, muss dann selbst rausfinden, genau wie in dem Skript gemacht.

Danke dafür - die nächste Heizperiode kommt bestimmt ;-)
83 Kanäle in 50 Geräten:
3x HM-LC-Sw1-Pl, 1x HM-WDS10-TH-O, 5x HM-PB-4-WM, 3x HM-PB-2-WM, 3x HM-LC-Dim1T-FM, 2x HM-Sec-SC, 4x HM-Sec-RHS, 5x HM-CC-VD, 4x HM-CC-TC, 5x HM-LC-Sw1-FM, 2x HM-Sec-MDIR, 1x HM-WDS30-T-O, 1x HM-LC-Sw1-Pl-2, 2x HM-PB-2-WM55, 1x HM-LC-Dim1L-CV, 1x HM-CCU-1, 1x HM-PBI-4-FM, 1x HM-LC-Dim1L-Pl-2, 1x HM-LC-Dim1T-CV, 1x HM-LC-Dim1L-Pl, 1x HM-LC-Sw2-FM, 1x HM-LC-Sw1-SM, 1x HM-Sec-WDS

82 Kanäle in 43 Geräten:
1x HM-PB-2-WM, 2x HM-LC-Bl1-FM, 3x HM-LC-Bl1PBU-FM, 3x HM-PB-2-WM55, 2x HM-PB-4-WM, 9x HM-CC-VD, 8x HM-CC-TC, 2x HM-LC-Sw2-FM, 1x HM-WDS10-TH-O, 1x HM-CCU-1, 1x HM-Sen-MDIR-O, 4x HM-LC-Sw1-FM, 2x HM-SwI-3-FM, 1x HM-LC-Sw4-SM, 1x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-WDS30-T-O

Uhlhorn
Beiträge: 72
Registriert: 23.02.2013, 17:16

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Uhlhorn » 18.05.2013, 18:36

Was noch unbedingt geändert werden müsste ist, dass die Beschriftung für die Luftfeuchtigkeit links steht, und die für die Temperatur rechts. Denn die Temperatur liesst man dauernd ab, die Feuchtigkeit nur selten. Und jetzt muss man entweder mit dem Auge immer ganz nach links gehen oder zu der Zahl unter dem Diagramm.

Uhlhorn
Beiträge: 72
Registriert: 23.02.2013, 17:16

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Uhlhorn » 18.05.2013, 18:56

Noch was:
Wie kann ich die Anzahl der Unterteilungen einstellen? Ich habe die Temperatur jetzt nämlich von 10°…25° C, und das ergibt doofe Abstufungen (Raster):
25,0° C ———————
21,3° C ———————
17,5° C ———————
13,8° C ———————
10,0° C ———————

pruse
Beiträge: 223
Registriert: 03.02.2012, 22:41

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von pruse » 23.06.2013, 20:41

Hallo
Zeichne momentan sechs Temperatur Kanäle auf,habe alle zu einem Favoriten zusammengefügt leider wird nur bei den ersten drei eine Linie angezeigt die anderen drei bleiben leer.
Teile ich die Temperatur Kanäle in zwei Favoriten mit je drei Kanälen auf werden alle Linien angezeigt.
Gibt es eine Möglichkeit sechs oder mehr Kanäle in einem Favoriten anzuzeigen.

Gruß Jens
LXCCU im Standby,Yahm auf Raspberry Pi3, 3xHomeduino, 1xHM-Sen-LI-O, 1xHM-WDS10-TH-O, 1xHM-PBI-4-FM, 4xHM-LC-Bl1-FM, 3xHM-LC-Sw1-FM, 2xHM-WDS40-TH-I,
2x HM-Sen-MDIR-O, 6xHMW-IO-12-Sw14-DR, 1xHM-RC-4-2, 1xHM-LC-Sw4-PCB, 1xHM-ES-PMSw1-Pl, 1xHM-WDS30-OT2-SM,
1xHM-LC-Bl1PBU-FM, 1xHM-WDS30-T-O, 1xHM-TC-IT-WM-W-EU, 1xHM-Sen-MDIR-WM55, 1xHM-LC-Bl1PBU-FM

dac
Beiträge: 11
Registriert: 31.08.2012, 20:57
Danksagung erhalten: 1 Mal

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von dac » 02.09.2013, 19:50

Ich melde mich hier ja äußerst selten zu Wort (aber lese fleißig mit), doch möchte ich kurz an dieser Stelle sagen:
Saugut gemacht!!!

Auch an RoBra81 ein dickes Lob - Dein überarbeitetes Script habe ich übernommen, wenn auch nur die Hälfte davon verstanden - und habe die Verlaufsdiagramme nun
funktionierend einbinden können.

Ich bin begeistert.


Was allerdings eine Höllentour für mich war: Die Einrichtung der Scripts / Parameter etc.
Den einzigen Verbesserungsvorschlag, den ich an dieser Stelle daher habe: Eine einfache, strukturierte Anleitung.
Besonders für Anwender, die nur hin und wieder was umkonfigurieren, würde es das wesentlich einfacher machen.
Falls es sowas gibt: Asche über mein Haupt - ich habe nichts dergleichen gefunden.

Also nochmal abschließend: Danke für die ganze bisherige Mühe und tolle Umsetzung! :D

Grüße
Daniel

Benutzeravatar
maxmillennium
Beiträge: 39
Registriert: 18.02.2013, 13:22

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von maxmillennium » 18.09.2013, 20:46

dac hat geschrieben:Was allerdings eine Höllentour für mich war: Die Einrichtung der Scripts / Parameter etc.
Den einzigen Verbesserungsvorschlag, den ich an dieser Stelle daher habe: Eine einfache, strukturierte Anleitung.
Besonders für Anwender, die nur hin und wieder was umkonfigurieren, würde es das wesentlich einfacher machen.
Mir ging es wie dir :) Das Ergebnis war die Mühe jedoch wert. Kann mich deinem Lob nur anschließen!!

Ich weiß nicht genau wie du dir eine einfache strukturierte Anleitung vorgestellt hast aber ich hab mal aus meinen Erfahrungen und Erkenntnissen versucht eine zusammenzustellen. Für dich wahrscheinlich zu spät :wink:

Guckst du hier:
WebMatic Verlaufsdiagramme - Eine Kurzanleitung
http://homematic-forum.de/forum/viewtop ... 39&t=14385
HomeMatic IP - Einfache Alarmanlage - Rolltorsteuerung - Rauchmelder

Antworten

Zurück zu „WebMatic“