WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

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

Moderator: Co-Administratoren

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 » 05.04.2013, 14:12

Lass mal bitte folgendes laufen:

Code: Alles auswählen

   string logRooms = "Baden";
    ! 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(";")){
      var room = dom.GetObject(logVal);
      WriteLine("Raum: " # room.Name());

      !Alle Räume durchklappern
      foreach(chn_s, room.EnumUsedIDs()) {
        chn = dom.GetObject(chn_s);
        WriteLine("  Kanal: " # chn.Name());
        !und innerhalb eines Raums alle Kanäle
        foreach(dp_s, chn.DPs()){
          dp = dom.GetObject(dp_s);
          WriteLine("    Datenpunkt: " # dp.Name());
        }
      }
  }
Da müsste dann eine Liste bei rauskommen, die je Raum alle Kanäle und je Kanal alle Datenpunkt auswirft:
Raum:Baden
Kanal:Badheizung:1
DatenpunktBidCos-RF.JEQ0139247:1.VALVE_STATE
DatenpunktBidCos-RF.JEQ0139247:1.ERROR
Kanal:Badregler:1
DatenpunktBidCos-RF.JEQ0138236:1.TEMPERATURE
DatenpunktBidCos-RF.JEQ0138236:1.HUMIDITY
Kanal:Badregler:2
DatenpunktBidCos-RF.JEQ0138236:2.SETPOINT
DatenpunktBidCos-RF.JEQ0138236:2.ADJUSTING_COMMAND
DatenpunktBidCos-RF.JEQ0138236:2.ADJUSTING_DATA
DatenpunktBidCos-RF.JEQ0138236:2.STATE
Kanal:Badregler:3
Wenn es das nur für VALVE_STATE tut, stimmt die Zuordnung zum Raum nicht. Dann bitte im normalen webUI unter "Einstellungen - Geräte" die Zuordnung vornehmen: (Der Kanal 3 ist egal, den braucht's eigentlich nicht)
Dateianhänge
Baden.png
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

Berni
Beiträge: 425
Registriert: 18.07.2011, 15:35
Kontaktdaten:

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Berni » 05.04.2013, 14:25

Mit dem Raum "Bad":

Raum: Bad
Kanal: Bad Drehgriff
Datenpunkt: BidCos-RF.IEQ0206362:1.STATE
Datenpunkt: BidCos-RF.IEQ0206362:1.ERROR
Datenpunkt: BidCos-RF.IEQ0206362:1.INSTALL_TEST
Kanal: Bad Fensterkontakt
Datenpunkt: BidCos-RF.IEQ0060767:1.STATE
Datenpunkt: BidCos-RF.IEQ0060767:1.ERROR
Datenpunkt: BidCos-RF.IEQ0060767:1.INSTALL_TEST
Kanal: Bad Reserve
Datenpunkt: BidCos-RF.IEQ0151788:1.VALVE_STATE
Datenpunkt: BidCos-RF.IEQ0151788:1.ERROR
Kanal: Bad Thermostat Fensterkontakt
Kanal: Bad Thermostat Ist
Datenpunkt: BidCos-RF.IEQ0068618:1.TEMPERATURE
Datenpunkt: BidCos-RF.IEQ0068618:1.HUMIDITY
Kanal: Bad Thermostat Soll
Datenpunkt: BidCos-RF.IEQ0068618:2.SETPOINT
Datenpunkt: BidCos-RF.IEQ0068618:2.ADJUSTING_COMMAND
Datenpunkt: BidCos-RF.IEQ0068618:2.ADJUSTING_DATA
Datenpunkt: BidCos-RF.IEQ0068618:2.STATE
Raum: Office
Kanal: Office Stellantrieb
Datenpunkt: BidCos-RF.IEQ0069787:1.VALVE_STATE
Datenpunkt: BidCos-RF.IEQ0069787:1.ERROR
Kanal: Office Thermostat Ist
Datenpunkt: BidCos-RF.IEQ0068023:1.TEMPERATURE
Datenpunkt: BidCos-RF.IEQ0068023:1.HUMIDITY
Kanal: Office Thermostat Soll
Datenpunkt: BidCos-RF.IEQ0068023:2.SETPOINT
Datenpunkt: BidCos-RF.IEQ0068023:2.ADJUSTING_COMMAND
Datenpunkt: BidCos-RF.IEQ0068023:2.ADJUSTING_DATA
Datenpunkt: BidCos-RF.IEQ0068023:2.STATE
Datenpunkt: svBuero
250 Kanäle in 117 Geräten und 29 CUxD-Kanäle in 3 CUxD-Geräten

Berni
Beiträge: 425
Registriert: 18.07.2011, 15:35
Kontaktdaten:

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Berni » 05.04.2013, 16:57

Alles gelöscht (Variablen, Favoriten und Programm)
Variablen neu erstellt
Favoriten erstellt und Variablen eingefügt
Programm neu erstellt (script von hier kopiert, eingefügt und die Räume angepasst)

Das Ergebnis ist das selbe
Nur die Werte vom Bad werden korrekt dargestellt
die anderen 5 Räume zeigen nur den Stellantrieb richtig - Werte der Thermostate sind immer 0

:roll:
250 Kanäle in 117 Geräten und 29 CUxD-Kanäle in 3 CUxD-Geräten

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 » 05.04.2013, 17:22

Das ist mal wieder ein echter homematic ;-) Es liegt an der Systemvariablen svBuero, die dem Kanal2 des Reglers zugeordnet ist. Ohne die Variable funktioniert's. Mit Variable muss man auf das Kanalobjekt ein mal zusätzlich zugreifen, damit es funktionierte. Die eine zusätzliche Anweisung tut logisch nichts, ist dem Gesamtablauf des Skripts überaus zuträglich.

Hier das funktionierende Skript

Code: Alles auswählen

integer maxEntries = 384; ! max Eintraege im Umlaufpuffer festlegen. z.B. alle 5 Minuten für 24h = 288.
!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";
!Name der Systemvariablen ist prefix<raumname>
string prefix = "Heizung_";
!----------------------------------------------------------------------------------------------------------------------------

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 newEntry = now.ToString() # "," # setp # "," # temp # "," # hmdt # "," # vvs1;  
! WriteLine(newEntry); 
 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);
}
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

Berni
Beiträge: 425
Registriert: 18.07.2011, 15:35
Kontaktdaten:

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Berni » 05.04.2013, 17:38

Du bist ein Genie :D

Jetzt klappt es auch für das Büro
Heute Abend werde ich mal die anderen Räume "dran hängen"

Vielen Dank für die Hilfe
250 Kanäle in 117 Geräten und 29 CUxD-Kanäle in 3 CUxD-Geräten

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

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Uhlhorn » 10.04.2013, 03:26

Vielen Dank für WebMatic und Script für die Datenaufzeichnung! :-)

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

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Uhlhorn » 10.04.2013, 13:52

Jetzt müsste die Anzeige nur noch für das Status Board (http://panic.com/statusboard/) angepasst werden, oder Status Board für die aufgezeichneten Werte. ;-)
Status Board gibt es seit heute.

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

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Uhlhorn » 10.04.2013, 18:47

Vielleicht sollte man die Farben so ändern, dass sie intuitiv zu erfassen sind.

Bei den Ursprünglichen Farben weiß man nicht auf Anhieb was nun was ist. Deswegen habe ich die Temperatur jetzt in Rot (rot = Wärme, Feuer) und Luftfeuchtigkeit in Blau (blau = Wasser, Wolken, Himmel, Meer). Die Solltemperatur ist in leicht grau und transparent, damit man das Gitter noch sehen kann. Die Ventilstellung ist in einem mittleren Grau sozusagen als Guide Line. Ich würde die Linienstärke gerne auch stärker machen, aber sie müsste dann hinter den anderen Linien sein und eine leichte wg. Gitter Transparenz haben.
Dateianhänge
Bildschirmfoto 2013-04-10 um 17.50.01.PNG
Neue Farben

KilamMalik
Beiträge: 152
Registriert: 31.12.2011, 11:12
Wohnort: Augschburg

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von KilamMalik » 10.04.2013, 23:58

Hallo Goglo,

sieht Klasse aus mit dem kombinierten Diagramm :-) Wenn das für Dich OK ist, nehme ich es in WebMatic mit auf, dann muss man das nicht immer wieder zusammenführen.

Grüße,
Kilam.

Berni
Beiträge: 425
Registriert: 18.07.2011, 15:35
Kontaktdaten:

Re: WebMatic Beta: Verlaufsdiagramme auf der CCU berechnet

Beitrag von Berni » 11.04.2013, 09:30

Uhlhorn hat geschrieben:Vielleicht sollte man die Farben so ändern, dass sie intuitiv zu erfassen sind.
Kannst du mir sagen wo und wie du die Farben für die Linien umgestellt hast?
Denn Sollwert habe hinbekommen - aber ich weiss nicht wo ich die Werte für die Linien ändern kann.
250 Kanäle in 117 Geräten und 29 CUxD-Kanäle in 3 CUxD-Geräten

Antworten

Zurück zu „WebMatic“