Inventur-Skript

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

sambasamba
Beiträge: 1600
Registriert: 16.08.2009, 23:18
Wohnort: Landau/Südpfalz
Hat sich bedankt: 20 Mal
Danksagung erhalten: 4 Mal

Re: Inventur

Beitrag von sambasamba » 16.02.2010, 18:30

Moment ich guck nach.... Stimmt, steht nicht in der Liste!
Mal sehen ob ich den Anlernknopf finde.... steht wie üblich nicht in der Anleitung... :mrgreen: :mrgreen: :mrgreen:
Volkmar

..und ich dachte immer, wired-Komponenten lernen sich automatisch an???

teddy278

Re: Inventur

Beitrag von teddy278 » 15.05.2010, 13:01

Dieser Beitrag wurde durch den Autor entfernt.
Zuletzt geändert von teddy278 am 12.06.2011, 00:40, insgesamt 1-mal geändert.

chrisu
Beiträge: 549
Registriert: 29.12.2009, 12:43
Wohnort: Österreich / Geras
Danksagung erhalten: 2 Mal

Re: Inventur

Beitrag von chrisu » 22.05.2010, 22:12

teddy278 hat geschrieben: - ausgeblendete Geräte/Kanäle werden gar nicht/unvollständig aufgelistet
Hi,

gäbe es für das Problem eine Lösung?
Ich habe bei mir nämlich alle Eingänge ausgeblendet, damit die nicht in den Räumen und Gewerken aufscheinen... :roll:
lg
Christian
-----------------------------------------------------------------------------------------------------
2x CCU3, über 100 HM und HmIP-Aktoren/Sensoren Wired+RF, selbst Gebautes und IP-Symcon...

chrisu
Beiträge: 549
Registriert: 29.12.2009, 12:43
Wohnort: Österreich / Geras
Danksagung erhalten: 2 Mal

Re: Inventur

Beitrag von chrisu » 23.05.2010, 20:29

teddy278 hat geschrieben: Ich fürchte nicht. Zumal ich alle Geräte ausgeblendet habe, die ich auch in der Inventur nicht unbedingt sehen will. :mrgreen:
Hi,

das läuchtet ein, macht Sinn 8)

Dann werd ich mit der falschen Kanalanzahl leben, wichtig is ja eh nur wie viele Devices :mrgreen:
lg
Christian
-----------------------------------------------------------------------------------------------------
2x CCU3, über 100 HM und HmIP-Aktoren/Sensoren Wired+RF, selbst Gebautes und IP-Symcon...

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Inventur

Beitrag von JPS » 24.09.2010, 21:01

So eine Signatur braucht wirklich kein Mensch, ich finde es aber trotzdem ziemlich cool 8)

Danke dafür... :D
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

EnergyStar
Beiträge: 1276
Registriert: 27.07.2010, 11:38
Danksagung erhalten: 1 Mal

Re: Inventur

Beitrag von EnergyStar » 13.10.2010, 09:11

Hallo teddy,
ich finde Dein Script zur Durchführung einer Inventur prima. Mich hat aber immer gestört, das in der Auflistung meiner Geräte zwar die Gruppe der Rauchmelder auftaucht, aber die Rauchmelder selbst nicht.
Der Grund war schnell gefunden: Du hast eine Überprüfung eingebaut, die das doppelte Aufführen eines Gerätetyps verhindert. Diese berücksichtigt aber nicht, dass die Typbezeichnung der Rauchmelder ein Teilstring der Rauchmeldergruppe darstellt. Wird nun die Rauchmeldergruppe zuerst gefunden, werden die Rauchmelder selbst nicht mehr berücksichtigt.
Um dieses Problem zu umgehen, habe ich geändert, dass immer gleich das Komma hinter den Gerätetyp aufgeführt wird. So kann man bei der Prüfung auch auf dieses Komma mitprüfen und umgeht so das Teilstring-Problem. Zu Schluss entferne ich das letzte unnötige Komma vor der Ausgabe.
Die geänderten Zeilen habe ich markiert.
Gruß
EnergyStar

Code: Alles auswählen

    string s_device;
    object o_device;
    integer i_devices = 0;

    string s_channel;
    object o_channel;
    integer i_channels = 0;

    string s_typelist = "";

    string s_temp;

    foreach(s_device, dom.GetObject(ID_DEVICES).EnumUsedIDs()) {
      var o_device = dom.GetObject(s_device);
      if ((o_device.Address() != "BidCoS-Wir") && (o_device.Address() != "BidCoS-RF")) {
        i_devices = i_devices + 1;
        s_temp = i_devices.ToString();
        if (i_devices < 10) { s_temp = " " # s_temp; }
        if (i_devices < 100) { s_temp = " " # s_temp; }
        WriteLine (s_temp # " " # o_device.Address () # " " # o_device.HssType () # " (" # o_device.Name() # ")");
        s_typelist = s_typelist # o_device.HssType () # "\t";
        foreach(s_channel, o_device.Channels().EnumUsedIDs()) {
          i_channels = i_channels + 1;
          o_channel = dom.GetObject(s_channel);
          s_temp = "               :" # o_channel.Address().StrValueByIndex(":",1);
          WriteLine(s_temp # " " # o_channel.Name() );
        }
      }
    }

    WriteLine("--------------------------------------------");

    WriteLine(i_channels # " Kanäle in " # i_devices # " Geräten:");

    string s_typeidx;
    string s_typeidx2;
    string s_typechecked = "";
    integer i_subcount;
    foreach (s_typeidx, s_typelist) {
! EnergyStar 13.10.2010 vvv
! den Suchstring um ein Komma und ein Leerzeichen erweitern um kein Teilstringproblem zu bekommen
      if (s_typechecked.Find(s_typeidx # ", ") == -1) {
! EnergyStar 13.10.2010 ^^^
      i_subcount = 0;
      foreach (s_typeidx2, s_typelist) {
        if (s_typeidx2 == s_typeidx) {
          i_subcount = i_subcount + 1; }
        }
! EnergyStar 13.10.2010 vvv
! immer ein Komma und ein Leerzeichen anfügen
        s_typechecked = s_typechecked # i_subcount # "x " # s_typeidx # ", ";
! EnergyStar 13.10.2010 ^^^
      }
    }

! EnergyStar 13.10.2010 vvv
! überflüssiges Komma und Leerzeichen am Ende entfernen
    WriteLine (s_typechecked.Substr(0, s_typechecked.Length() - 2));
! EnergyStar 13.10.2010 ^^^

    WriteLine("--------------------------------------------");
--------------------------------------------
CCU1 mit 1.514, CUxD 0.59b, Historian V0.7.6hf1
161 Kanäle in 35 Geräten
in schrittweiser Migration auf die
CCU2 mit 2.15.5, CUxD 0.68, Historian V0.7.6hf1
254 Kanäle in 88 Geräten
gesamte Funktionalität über die
CL-Box mit homeputer CLX Ver. 4.0 Rel. 150625
Ansichten: 17, Objekte: 882, Zeilen: 19863, Variablen: 1966

Benutzeravatar
uwe111
Beiträge: 4808
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 240 Mal
Kontaktdaten:

Re: Inventur

Beitrag von uwe111 » 29.04.2013, 14:16

Hallo,

ich habe das Script noch einmal etwas angepasst und dabei die CUxD-Geräte getrennt von den HM-Geräten aufgeführt.
Dadurch wird das ganze beim Einsatz vom CUxD etwas übersichtlicher.

Code: Alles auswählen

string s_device;
object o_device;
integer i_devices = 0;
integer i_cdevices = 0;

string s_channel;
object o_channel;
integer i_channels = 0;
integer i_cchannels = 0;

string s_typelist = "";

string s_temp;

foreach(s_device, dom.GetObject(ID_DEVICES).EnumUsedIDs()) {
  var o_device = dom.GetObject(s_device);
  boolean is_cux = o_device.Address().Substr(0,3) == "CUX";
  if ((o_device.Address() != "BidCoS-Wir") && (o_device.Address() != "BidCoS-RF")) {
    if (is_cux) {
      i_cdevices = i_cdevices + 1;
      s_temp = i_cdevices.ToString();
    } else {
      i_devices = i_devices + 1;
      s_temp = i_devices.ToString();
    }
    if (i_devices < 10) { s_temp = " " # s_temp; }
    if (i_devices < 100) { s_temp = " " # s_temp; }
    if (is_cux) { s_temp = "C" # s_temp; }
    else { s_temp = " " # s_temp; }
    WriteLine(s_temp # " " # o_device.Address() # " " # o_device.HssType() # " (" # o_device.Name() # ")");
    if (is_cux) { s_typelist = s_typelist # o_device.Address().Substr(0,5) # "\t"; }
    else { s_typelist = s_typelist # o_device.HssType() # "\t"; }
    foreach(s_channel, o_device.Channels().EnumUsedIDs()) {
      if (is_cux) { i_cchannels = i_cchannels + 1; }
      else { i_channels = i_channels + 1; }
      o_channel = dom.GetObject(s_channel);
      s_temp = "               :" # o_channel.Address().StrValueByIndex(":",1);
      WriteLine(s_temp # " " # o_channel.Name() );
    }
  }
}

WriteLine("--------------------------------------------");

Write(i_channels # " Kanäle in " # i_devices # " Geräten");
if (i_cdevices > 0) { Write(" und "#i_cchannels # " CUxD-Kanäle in " # i_cdevices # " CUxD-Geräten"); }
WriteLine(":");

string s_typeidx;
string s_typeidx2;
string s_typechecked = "";
integer i_subcount;
foreach (s_typeidx, s_typelist) {
! EnergyStar 13.10.2010 vvv
! den Suchstring um ein Komma und ein Leerzeichen erweitern um kein Teilstringproblem zu bekommen
      if (s_typechecked.Find(s_typeidx # ", ") == -1) {
! EnergyStar 13.10.2010 ^^^
      i_subcount = 0;
      foreach (s_typeidx2, s_typelist) {
        if (s_typeidx2 == s_typeidx) {
          i_subcount = i_subcount + 1; }
        }
! EnergyStar 13.10.2010 vvv
! immer ein Komma und ein Leerzeichen anfügen
        s_typechecked = s_typechecked # i_subcount # "x " # s_typeidx # ", ";
! EnergyStar 13.10.2010 ^^^
      }
    }

! EnergyStar 13.10.2010 vvv
! überflüssiges Komma und Leerzeichen am Ende entfernen
    WriteLine(s_typechecked.Substr(0, s_typechecked.Length() - 2));
! EnergyStar 13.10.2010 ^^^

    WriteLine("--------------------------------------------");
Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

raschl
Beiträge: 34
Registriert: 23.03.2013, 12:26
System: Alternative CCU (auf Basis OCCU)

Re: Inventur-Skript

Beitrag von raschl » 08.07.2013, 17:56

Hallo Uwe,


habe seit ein paar Tagen eine CCU2 im Einsatz, die noch nicht gelistet wird.

Kannst Du die vielleicht noch mit aufnehmen.

Gruß

RaSchl
Gruß

RaSchl

Seit 2011 dabei mit 170 Geräten (RasperryMatic als CCU und Lan Gateway, Wetterstation, Heizung mit Fenster, Bewässerung im Garten, Licht, Rolläden/Markisen, Rauchmelder, Energieverbrauchsablesung und alles per Funk und ohne Fremdgeräte)

Benutzeravatar
uwe111
Beiträge: 4808
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 240 Mal
Kontaktdaten:

Re: Inventur-Skript

Beitrag von uwe111 » 08.07.2013, 18:19

Hallo RaSchl,

ich denke das ist so, weil die CCU2 im Gegensatz zur CCU1 keine eigenen Geräte bereitstellt.

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Slice
Beiträge: 1195
Registriert: 03.02.2016, 14:44
System: Alternative CCU (auf Basis OCCU)
Wohnort: irgendwo aus Süd BaWü
Hat sich bedankt: 135 Mal
Danksagung erhalten: 83 Mal

Re: Inventur-Skript

Beitrag von Slice » 08.02.2016, 11:36

Super Idee, hab das Skript bei mir mal laufen lassen, siehe Signatur! :D

Danke und Grüße,
Slice
----------------------------------------------------------------------------------------
Raspi3B+ Bullseye mit HB-RF-ETH und RPI-RF-MOD auf piVCCU-FW 3.73.9 / Addons: CuxD v2.11 - E-Mail v1.7.6 - Patcher v1.0.0 - Philips Hue v3.2.5 - Programme drucken v2.6 - Scriptparser v1.11 - XML-API v2.3
Geräte: 141 / Kanäle: 791 / Datenpunkte: 6080 / SysVars: 275 / Programme: 161 / Regadom IDs: 14010 / 48 CUxD-Kanäle in 3 CUxD-Geräten
Intel NUC i3-5010U @ 2,1 GHz mit 16 GB RAM & 512 GB SSD für Proxmox mit ioBroker VM und CCU-Historian/InfluxDB/Grafana VM
----------------------------------------------------------------------------------------
Projekte im Forum: HomeHub v4.1 / Fritzbox-Anruferliste für HomeHub
----------------------------------------------------------------------------------------

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“