WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

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

Moderator: Co-Administratoren

Ratzinger
Beiträge: 164
Registriert: 03.03.2013, 23:26
System: CCU
Wohnort: Villingen-Schwenningen
Kontaktdaten:

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Ratzinger » 27.03.2013, 14:47

Hallo Big L,

der Wahnsinn. Daran lags tatsächlich. Jetzt läuft es. Super, ich danke Dir!
248 Kanäle in 57 Geräten: (seit 20.02.2013):

16x HM-LC-Sw1-Pl-2, 4x HM-Sec-MDIR, 2x HM-RC-19, 1x HmIP-RCV-50, 2x HM-OU-CFM-Pl, 2x HmIP-eTRV-B, 1x HM-EM-CMM, 4x VIR-LG-DIM, 7x VIR-LG-RGBW-DIM, 1x VIR-HUE-GTW, 1x HM-Sec-WDS, 1x HM-OU-LED16, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Sw1PBU-FM, 1x HM-RC-12-B, 2x HM-PB-2-WM55, 2x HM-CC-TC, 2x HM-Sec-SC, 1x HmIP-SWDM, 1x HM-Sec-SC-2, 1x HM-ES-PMSw1-Pl

(Stand 15.07.2023)

Die erste twitternde Wohnung aus DE: http://twitter.com/dominikswohnung (vorübergehend offline)

Big L
Beiträge: 84
Registriert: 08.02.2012, 11:09

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Big L » 27.03.2013, 14:48

Kein Problem. Freue mich, wenn ich auch mal was beitragen kann.

Ratzinger
Beiträge: 164
Registriert: 03.03.2013, 23:26
System: CCU
Wohnort: Villingen-Schwenningen
Kontaktdaten:

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Ratzinger » 27.03.2013, 14:56

Noch eine Frage: Welchen Code, muss ich denn verwenden, wenn ich eine normale Systemvariable loggen möchte? Geht das mit

Code: Alles auswählen

dom.GetObject("blablaaa")
?
248 Kanäle in 57 Geräten: (seit 20.02.2013):

16x HM-LC-Sw1-Pl-2, 4x HM-Sec-MDIR, 2x HM-RC-19, 1x HmIP-RCV-50, 2x HM-OU-CFM-Pl, 2x HmIP-eTRV-B, 1x HM-EM-CMM, 4x VIR-LG-DIM, 7x VIR-LG-RGBW-DIM, 1x VIR-HUE-GTW, 1x HM-Sec-WDS, 1x HM-OU-LED16, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Sw1PBU-FM, 1x HM-RC-12-B, 2x HM-PB-2-WM55, 2x HM-CC-TC, 2x HM-Sec-SC, 1x HmIP-SWDM, 1x HM-Sec-SC-2, 1x HM-ES-PMSw1-Pl

(Stand 15.07.2023)

Die erste twitternde Wohnung aus DE: http://twitter.com/dominikswohnung (vorübergehend offline)

Big L
Beiträge: 84
Registriert: 08.02.2012, 11:09

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Big L » 27.03.2013, 14:59

Probier mal aus:

Code: Alles auswählen

string logValues = "Verlauf Temp Wohnzimmer,Name der Variablen";
EDIT: Probiert und klappt.

Ratzinger
Beiträge: 164
Registriert: 03.03.2013, 23:26
System: CCU
Wohnort: Villingen-Schwenningen
Kontaktdaten:

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Ratzinger » 27.03.2013, 15:40

Big L, Du bist super. Danke für Deine Hilfe. Da hätte ich ja auch mal drauf kommen können. Dabei habe ich ewig mit diesem domObject rumgemacht...
248 Kanäle in 57 Geräten: (seit 20.02.2013):

16x HM-LC-Sw1-Pl-2, 4x HM-Sec-MDIR, 2x HM-RC-19, 1x HmIP-RCV-50, 2x HM-OU-CFM-Pl, 2x HmIP-eTRV-B, 1x HM-EM-CMM, 4x VIR-LG-DIM, 7x VIR-LG-RGBW-DIM, 1x VIR-HUE-GTW, 1x HM-Sec-WDS, 1x HM-OU-LED16, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Sw1PBU-FM, 1x HM-RC-12-B, 2x HM-PB-2-WM55, 2x HM-CC-TC, 2x HM-Sec-SC, 1x HmIP-SWDM, 1x HM-Sec-SC-2, 1x HM-ES-PMSw1-Pl

(Stand 15.07.2023)

Die erste twitternde Wohnung aus DE: http://twitter.com/dominikswohnung (vorübergehend offline)

Big L
Beiträge: 84
Registriert: 08.02.2012, 11:09

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Big L » 27.03.2013, 15:43

Das sind auch keine wirklichen Programmierkenntnisse von mir- Schande über mein Haupt.
Versuch macht kluch ;-)

EDIT: Mit der fehlerhaften Darstellung auf dem Samsung Tablett bin ich in sofern weitergekommen, dass es mit Firefox Mobile läuft. Keine Ahnung wo der Fehler des Standard Browsers liegt. Könnte aber imho ein Cache Problem sein.

Ratzinger
Beiträge: 164
Registriert: 03.03.2013, 23:26
System: CCU
Wohnort: Villingen-Schwenningen
Kontaktdaten:

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Ratzinger » 30.03.2013, 11:44

Da kommt mir doch auch gleich schon die nächste Frage. Ich meine mal irgendwo was gelesen zu haben, dass die Diagramme ziemlich angepasst werden können. Meint ihr, dass man sie auch auf z.B. 90% skalieren könnte, den so habe ich es aktuell auch bei meinen Webcams eingestellt. Aber das IMG SRC-Tag wird hier nicht funktionieren...

Anyone ideas...!?
248 Kanäle in 57 Geräten: (seit 20.02.2013):

16x HM-LC-Sw1-Pl-2, 4x HM-Sec-MDIR, 2x HM-RC-19, 1x HmIP-RCV-50, 2x HM-OU-CFM-Pl, 2x HmIP-eTRV-B, 1x HM-EM-CMM, 4x VIR-LG-DIM, 7x VIR-LG-RGBW-DIM, 1x VIR-HUE-GTW, 1x HM-Sec-WDS, 1x HM-OU-LED16, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Sw1PBU-FM, 1x HM-RC-12-B, 2x HM-PB-2-WM55, 2x HM-CC-TC, 2x HM-Sec-SC, 1x HmIP-SWDM, 1x HM-Sec-SC-2, 1x HM-ES-PMSw1-Pl

(Stand 15.07.2023)

Die erste twitternde Wohnung aus DE: http://twitter.com/dominikswohnung (vorübergehend offline)

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 » 02.04.2013, 23:16

Aber sicherlich kann in den Diagrammen frei herumgestellt werden. Nur muss man dafür in die webmatic.js rein und an der richtigen Stelle herumschrauben. Momentan ist die Größe der Grafiken fest vorgegeben. Aber ein Lesen der Doku zum verwendeten jqplot ist durchaus erhellend ;-) (wie ich feststellen durfte)
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

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 » 03.04.2013, 00:19

So, angeregt durch den ganzen Thread hier habe ich mir mal KilamMaliks Coding angeschaut und minimalinvasiv so ein wenig erweitert, dass es mit "(h)"-Systemvariablen umgehen kann. Dadurch sind nun Heizungsgrafiken möglich, die Soll-und Ist-Temperatur, Luftfeuchte und die Stellantriebe gemeinsam in einer Verlaugsgrafik darstellen. (Die Beispielgrafik zeigt noch verunfallte Werte aus dem Logging-Skript, deshalb nicht zu ernst nehmen) Die Graphen sind eigentlich auch ohne Legende zu erkennen:
1) Solltemperatur als ausgefüllter Graph wie auch die "(d)"-Grafiken
2) Isttemperatur etwas dunkler im oberen Grenzbereich der Solltemperatur
3) Luftfeuchte in % als heller Graph irgendwo in der Mitte
4) Die Öffnung des Stellantriebs im Bild ganz unten in Dunkelblau, wird beim Hochheizen sicherlich auch mal ganz nach oben auf die 80-100% schnellen ;-)

Momentan ist nur ein Stellantrieb geloggt, da ich bei zwei Stellantrieben immer nur gleiche Öffnungswerte gesehen habe. Da doppelte Werte doppelt Platz kosten, wird protokolliere ich nur einen. Hier erst einmal das Protokollierungsskript:

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 = "Baden;Wohnen;Schlafen";
!Name der Systemvariablen ist prefix<raumname>
string prefix = "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);
      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 newEntry = now.ToString() # "," # setp # "," # temp # "," # hmdt # "," # vvs1;  
  string newString;
  string clpString;
  string oldString = sysVar.Variable();

  if(sysVar.Variable() == "???"){
    newString = "1;"#newEntry;
  }
  else{
    ! erstes Feld enthält den Zähler aktuell
    integer cnt = oldString.StrValueByIndex(";",0).ToInteger();
    ! 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;
  }
!  WriteLine(newString);
  sysVar.State(newString);
}
Wesentliche Änderung zum vorherigen ist das Kürzen der Temperaturwerte auf nur eine Nachkommastelle und vielleicht eine schnellere Ausführungsgeschwindigkeit, da ich zum rotieren einfach vorne einen Teilstring abschneide und hinten den neuen drantackere.

Nun noch zur veränderten webmatic.js: Diese Version muss anstelle der aktuellen auf die CCU unter /etc/config/addons/www/webmatic/webmatic.js gelegt werden. Den Rest bitte wie in der beta IV lassen.

@KilamMalik: Alle beiden veränderten Stellen im Coding habe ich mit "// Goglo" kenntlich gemacht, der eigentliche Aufbau der Grafik ist ein Insert zwischen "//begin Goglo" und "//end Goglo" - sollte also recht einfach ins nächste Release rüberzuretten sein. An dieser Stelle auch von mir vielen Dank für dieses tolle Addon. Ich hatte schon vor einiger Zeit solche Grafiken auf meiner Wunschliste, hier war die Einstiegshürde dank Deiner Vorarbeit angenehm gering. (Ist ja schließlich mein allererstes javascript...)

Als ganz großes ToDo bleibt natürlich noch, das Ding parametrierbar zu machen. Momentan ist bis auf den Temperaturbereich alles hard-coded. Am besten gefiel mir die Idee, die Parameter in eine Systemvariable zu legen, auf die in "(h,p=Heizung_GrafikStyle)" verwiesen wird. In der Variablen müsste dann sowas drin stehen, was einfach an jqplot als Option verfütterbar ist. (Dazu fehlt mir die JS-Erfahrung und ausserdem wären da mehr als nur die drei Code-Änderungen notwendig)

Kurzanleitung:
0) webmatic 1.24 beta installieren
1) das hier beigepackte webmatic.js per ftp auf die CCU in das richtige Verzeichnis laden (s.o.)
2) Systemvariablen "Heizung_Wohnzimmer" o.ä. etc erstellen, in die Beschreibung muss (h) oder sowas wie (h,l=12;h=18) rein
3) Favoriten mit den neuen Systemvariablen erstellen
4) HM-Skript anpassen und alle paar Minuten laufen lassen
5) warten, bis in den Systemvariablen erste Werte angekommen sind und mit webmatic den neuen Favoriten aufrufen.
Dateianhänge
webmatic.js
Das erweiterte Hauptskript von KilamMalik
(77.51 KiB) 102-mal heruntergeladen
Bildschirmfoto 2013-04-03 um 00.06.11.png
Beispielgrafik mit vermatschten Daten; 15°C und 23°C sind die Defaults - ein einfaches (h) hätte also gereicht
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

LarsM
Beiträge: 202
Registriert: 08.05.2009, 22:36

Re: AW: WebMatic Beta: Verlaufsdiagramme auf der CCU berechn

Beitrag von LarsM » 03.04.2013, 21:50

Genial, ich habe alle bisherigen Variablen eingefroren und logge nur noch nach dem neuen Konzept.
Bitte unbedingt als Standard übernehmen (und ggf. die Farben anpassen (habe ich zumindest gemacht, weil ich bei den vielen Blau-Tönen keinen Durchblick mehr hatte)).

Gesendet von meinem MB526 mit Tapatalk 2
Gruß
Lars

84 Kanäle in 39 Geräten und 29 CUxD-Kanäle in 14 CUxD-Geräten:
2x HM-Sec-SC, 8x HM-CC-VD, 8x HM-CC-TC, 3x HM-Sec-WDS, 5x HM-Sec-RHS, 1x CUX28, 1x CUX40, 1x HM-WDS10-TH-O, 8x CUX02, 2x CUX06, 1x HM-CCU-1, 2x HM-RC-Key3-B, 3x HM-Sec-SD, 2x CUX03, 1x HM-WDS100-C6-O, 1x HM-Sec-SD-Team, 1x HM-OU-LED16, 2x HM-Sec-MDIR, 1x HM-WDC7000

Antworten

Zurück zu „WebMatic“