Cuxd Zwischenstecker

Betriebssystem unabhängige Weboberfläche für die HomeMatic Steuerung

Moderator: Co-Administratoren

Antworten
HeikoSZ
Beiträge: 1
Registriert: 08.12.2020, 14:30
System: CCU

Cuxd Zwischenstecker

Beitrag von HeikoSZ » 08.12.2020, 14:40

Hallo Leute, ich benötige mal euer Wissen. Ich habe Gosund SP1 Dosen mit Tasmota geflascht. Dann in der CCU2 mit Cuxd einen Zwischenstecker erzeugt. Dieser wird mit 16 Känalen erzeugt. Habe die Gosund Dosen auf die Kanäle 1-4 verteilt. In der CCU lassen sie die Geräte bedienen. Nun möchte ich allerdings die Dosen über Cloudmaic mit Alexa steuern. In Cloudmatic ist das Cuxd Gerät (Zwischenstecker) auch sichtbar.Allerdings wird nur Kanal 1 angezeigt. Wie bekomme ich die anderen Kanäle angezeigt ? Ist das überhaupt möglich ? Oder muss ich für jede Gosund SP1 ein eigenes Cuxd Gerät erstellen?


gmp
Beiträge: 72
Registriert: 05.12.2020, 18:25
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Cuxd Zwischenstecker

Beitrag von gmp » 21.12.2020, 15:16

Hallo,

na, dann kann ich mir die Frage ja sparen, habe genau das gleiche Problem. :-)
Ein Tipp von mir an den Thread-Ersteller. Vielleicht passt Du die Überschrift noch mal an, denn Deine ist sehr oberflächlich gewählt.
Hier geht es ja speziell um CuxD-Geräte des Typs HM-LC-Sw1-Pl in Verbindung mit Cloudmatic und Alexa.

Ich bin jedenfalls noch Neuling im Bereich CCU und der Heimautomatisierung und dachte zuerst,
man müsse pro Steckdose ein eigenes Gerät via CuxD anlegen. Das hatte auch alles wunderbar geklappt. Selbst mit Alexa.
Vor kurzem dann die Erleuchtung, das man doch nur ein CuxD-Gerät benötigt, um bis zu 16 Aktoren mittels der darunter liegenden Kanäle anzusteuern.
Gesagt getan und heute alles geändert. Dann die Zentralen Daten in Cloudmatic neu einlesen lassen und was sehe ich, nur noch der erste Kanal da.
Das kann es doch nicht sein.
Hat vielleicht jemand eine Lösung für das Problem?

In den FAQs auf der Cloudmatic-Seite fand ich folgenden Hinweis:
http://kb.easy-smarthome.de/CloudMatic_Connect_-_Alexa

Auszug: "Wieso sehe ich nur den ersten Kanal meiner CUxDaemon-Geräte?

Auf Grund der speziellen Konfiguration von CUxDaemon-Geräten kann es vorkommen, dass nicht alle Kanäle eines angelegten Gerätes in der Alexa-Konfiguration aufgeführt werden. Wichtig ist hierbei zu beachten, dass CUxDaemon-Geräte wie native Geräte auf der CCU Zentrale angelegt werden müssen. D.h. für die Sprachsteuerung mehrerer Kanäle muss ein entsprechendes Gerät angelegt werden, das die Anzahl der Kanäle besitzt und die korrekte Funktionalität des original Gerätes aufweist.

Da diese Geräte zu speziell sind, können wir hierfür leider keinen ausführlichen Support bieten."

Eine weitere Begründung (auf FB) lag darin, das speziell dieses CuxD-Gerät (eigentlich) doch nur einen Kanal besäße und die Alexa-Cloud alle Weiteren nicht auslesen könne.

Eine sehr unbefriedigende Antwort.

VG
Thomas

Matten Matten
Beiträge: 278
Registriert: 09.12.2018, 17:14
System: CCU
Hat sich bedankt: 68 Mal
Danksagung erhalten: 21 Mal
Kontaktdaten:

Re: Cuxd Zwischenstecker

Beitrag von Matten Matten » 22.12.2020, 00:16

Das liegt höchstwarscheinlich aneurem ausgewählten Icon! wählt ein Geräte Icon was mehrere Kanäle im Original besitzt.
Dann werden auch die Anderen Kanäle sichtbar.
GOSUND.gif
Gruß
Matten Matten
Zuletzt geändert von Matten Matten am 22.12.2020, 00:22, insgesamt 1-mal geändert.

Matten Matten
Beiträge: 278
Registriert: 09.12.2018, 17:14
System: CCU
Hat sich bedankt: 68 Mal
Danksagung erhalten: 21 Mal
Kontaktdaten:

Re: Cuxd Zwischenstecker

Beitrag von Matten Matten » 22.12.2020, 00:20

HeikoSZ hat geschrieben:
08.12.2020, 14:40
Hallo Leute, ich benötige mal euer Wissen. Ich habe Gosund SP1 Dosen mit Tasmota geflascht. Dann in der CCU2 mit Cuxd einen Zwischenstecker erzeugt. Dieser wird mit 16 Känalen erzeugt. Habe die Gosund Dosen auf die Kanäle 1-4 verteilt. In der CCU lassen sie die Geräte bedienen. Nun möchte ich allerdings die Dosen über Cloudmaic mit Alexa steuern. In Cloudmatic ist das Cuxd Gerät (Zwischenstecker) auch sichtbar.Allerdings wird nur Kanal 1 angezeigt. Wie bekomme ich die anderen Kanäle angezeigt ? Ist das überhaupt möglich ? Oder muss ich für jede Gosund SP1 ein eigenes Cuxd Gerät erstellen?
Habe dafür ein kleines Script geschrieben
was auch die Einträge erledigt im Cuxd Device so wie Die Rules an das Tasmota Gerät überträgt und aktiviert.
(Script nur für Steckdosen mit maximal 2 Kanäle)

sobald das skript ausgeführt wurde muss gewartet werden bis etwas in der Ausgabe steht.

Code: Alles auswählen

!#      >>> Tasmota HM CCU Script V 1.3.0 <<<
!#
!#      >>> Bitte als erstes ein CUxD Gerät anlegen <<<
!#
!#  - CUxD Gerätetyp: "(28) System"
!#	- Funktion: "Exec"
!#  - Seriennummer: Zahl merken! und in Punkt (3) eintragen!
!#  - Name: leer lassen!
!#  - Geräte-Icon: "virtueller Schalter"
!#  - Control: "Schalter"
!#  - Gerät auf CCU erzeugen ! anklicken
!#  - dann im Geräte Posteingang das Gerät auf Fertig klicken.
!#  - jetzt die Punkte 1-6 ausfüllen und das skript ausführen.
!#
!#### Nur umbenennen wenn Name nicht automatisch erstellt ####
var new_cuxd_device = "";                                   !#
!#############################################################
!#
!#             >>> Geräte Variablen erstellen <<<
!#
!#   >>> Bitte die Punkte (1) bis (6) korrekt ausfüllen <<<
!#
!#
!##### Name der Steckdose ####################################
var dev_name = "Smart_Plug_XX";                             !# (1)
!#############################################################
!#
!#
!##### IP der Tasmota Steckdose ##############################
var dev_ip = "192.168.178.XXX";                              !# (2)
!#############################################################
!#
!#
!##### Cuxdeamon Seriennummer Nummer #########################
var new_cuxd_nr = "1";                                     !# (3)
!#############################################################
!#
!#
!##### IP der CCU3 ###########################################
var ccu_ip = "192.168.178.XXX";                               !# (4)
!#############################################################
!#
!#
!##### Steckdose mit Leistungsmessung "ja" oder "nein" #######
var dev_typ = "ja";                      										!# (5)
!#############################################################
!#
!#
!##### Steckdosen Schalt Kanäle Anzahl "1" oder "2" ##########
var dev_chanel = "1";                   										!# (6)
!#############################################################
!#
!#
!##### Steckdose Kanal 1 mit Leistungsmessung? "ja" oder "nein" ######
var dev_chanel_1 = "ja";                           									!# (6.1)
!#####################################################################
!#
!#
!##### Steckdose Kanal 2 mit Leistungsmessung? "ja" oder "nein" ######
var dev_chanel_2 = "nein";                           								!# (6.2)
!#####################################################################
!#
!#
!##### Steckdose Kanal 2 mit USB? "ja" oder "nein" ###################
var dev_chanel_2_usb = "nein";                     									!# (6.3)
!#####################################################################
!#
!#
!#
!#
!#   <<< !!! ab hier nichts mehr ändern !!!  >>>
!#
!##############################################################

WriteLine("Start...");

! "HM-ES-PMSw1-Pl CUX2801 000"
if ( new_cuxd_nr.Length() == 1 ){
  new_cuxd_nr = "00" + new_cuxd_nr;
  ! WriteLine("HM-ES-PMSw1-Pl CUX2801"#new_cuxd_nr);
}
if ( new_cuxd_nr.Length() == 2 ){
  new_cuxd_nr = "0" + new_cuxd_nr;
  ! WriteLine("HM-ES-PMSw1-Pl CUX2801"#new_cuxd_nr);
} else {
  ! WriteLine("HM-ES-PMSw1-Pl CUX2801"#new_cuxd_nr);
}

var cuxd_id = "CUxD.CUX2801" + new_cuxd_nr;

! HM-ES-PMSw1-Pl
! var cuxd_id_alt = "HM-ES-PMSw1-Pl CUX2801" + new_cuxd_nr;
! VIR-LG-ONOFF
var cuxd_id_alt = "VIR-LG-ONOFF CUX2801" + new_cuxd_nr;

var dev_info = "Wifi Steckdose";


! CuxDevice umbenennen
if (new_cuxd_device==""){
	string sAltName = cuxd_id_alt;
} else {
	string sAltName = new_cuxd_device;
}
string sNeuName= dev_name;
string sCHN;
object oCHN;
object oDEV= devices.Get (sAltName);

if (oDEV) {
  if (oDEV.Type()==OT_DEVICE) {
     
    ! Device umbenennen wenn NeuerName ungleich dem Istnamen
    if (sNeuName!=oDEV.Name()) {
      oDEV.Name(sNeuName);
      WriteLine("CuxD Gerät umbenannt in "#sNeuName);
    }
    ! Device Name Ende
    
    ! CH1
    oCHN = dom.GetObject(oDEV.Channels().GetAt(1));
    if (oCHN) {
      if (oCHN.Type()==OT_CHANNEL) {
        WriteLine("Chanel 1 umbenannt in "#sNeuName#":1_Steckdose");
        oCHN.Name(sNeuName#":1_Steckdose");
		var cuxd_name = sNeuName#":1_Steckdose";
      }
    }
    ! CH1 Ende
    
	if ( dev_chanel == "2" ){
		
	if ( dev_chanel_2_usb == "ja" ){
		
    ! CH2
    oCHN = dom.GetObject(oDEV.Channels().GetAt(2));
    if (oCHN) {
      if (oCHN.Type()==OT_CHANNEL) {
        WriteLine("Chanel2 umbenannt in "#sNeuName#":2_USB");
        oCHN.Name( sNeuName # ":2_USB" );
      }
    }
    ! CH2 Ende
	
	} else {
		
    ! CH2
    oCHN = dom.GetObject(oDEV.Channels().GetAt(2));
    if (oCHN) {
      if (oCHN.Type()==OT_CHANNEL) {
        WriteLine("Chanel 2 umbenannt in "#sNeuName#":2_Steckdose");
        oCHN.Name( sNeuName # ":2_Steckdose" );
      }
    }
    ! CH2 Ende
	
	}
	
	! CH3 RESET
	oCHN = dom.GetObject(oDEV.Channels().GetAt(3));
    if (oCHN) {
      if (oCHN.Type()==OT_CHANNEL) {
        WriteLine("Chanel 3 umbenannt in "#sNeuName#":3_RESET");
        oCHN.Name( sNeuName # ":3_RESET" );
      }
    }
	! CH3 RESET ENDE
	
	! Rest leeren
	foreach (sCHN,system.GenerateEnum (4,oDEV.Channels().Count()-1)) {
		oCHN=dom.GetObject (oDEV.Channels().GetAt (sCHN.ToInteger () ));
		if (oCHN) {
		    if (oCHN.Type()==OT_CHANNEL) {
			   WriteLine (oCHN.Name () # " umbenannt in " # sNeuName # ":" # oCHN.ChnNumber().ToString () );
			   oCHN.Name (sNeuName # ":" # oCHN.ChnNumber().ToString () );
			}
		}
	}
	! leeren ende
	} else {
		
		! CH2 RESET
		oCHN = dom.GetObject(oDEV.Channels().GetAt(2));
		if (oCHN) {
			if (oCHN.Type()==OT_CHANNEL) {
				WriteLine("Chanel 2 umbenannt in "#sNeuName#":2_RESET");
				oCHN.Name( sNeuName # ":2_RESET" );
			}
		}
		! CH2 RESET ENDE
		
		! Rest leeren
		foreach (sCHN,system.GenerateEnum (3,oDEV.Channels().Count()-1)) {
			oCHN=dom.GetObject (oDEV.Channels().GetAt (sCHN.ToInteger () ));
			if (oCHN) {
				if (oCHN.Type()==OT_CHANNEL) {
					WriteLine (oCHN.Name () # " umbenannt in " # sNeuName # ":" # oCHN.ChnNumber().ToString () );
					oCHN.Name (sNeuName # ":" # oCHN.ChnNumber().ToString () );
				}
			}
		}
		! leeren ende
	}
	
  }
} 

! Datenpunkte anlegen CH1
if ( dev_chanel_1 == "ja" ){
	string  svName = dev_name + "_POWER";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("Watt");
		svObj.ValueMin(0);
		svObj.ValueMax(4000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _POWER
	
	string  svName = dev_name + "_CURRENT";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("A");
		svObj.ValueMin(0);
		svObj.ValueMax(10000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _CURRENT
	
	string  svName = dev_name + "_VOLTAGE";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("Volt");
		svObj.ValueMin(0);
		svObj.ValueMax(250);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _VOLTAGE
	
	string  svName = dev_name + "_ENERGY_YESTERDAY";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("kWh");
		svObj.ValueMin(0);
		svObj.ValueMax(10000000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _ENERGY_YESTERDAY
	
	string  svName = dev_name + "_ENERGY_TODAY";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("kWh");
		svObj.ValueMin(0);
		svObj.ValueMax(10000000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _ENERGY_TODAY
	
	string  svName = dev_name + "_ENERGY_TOTAL";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("kWh");
		svObj.ValueMin(0);
		svObj.ValueMax(10000000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _ENERGY_TOTAL
}
! Ende Datenpunkte anlegen CH1

! Datenpunkte anlegen CH2
if ( dev_chanel_2 == "ja" ){
	string  svName = dev_name + "_2_POWER";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("Watt");
		svObj.ValueMin(0);
		svObj.ValueMax(4000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _2_POWER
	
	string  svName = dev_name + "_2_CURRENT";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("A");
		svObj.ValueMin(0);
		svObj.ValueMax(10000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _2_CURRENT
	
	string  svName = dev_name + "_2_VOLTAGE";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("Volt");
		svObj.ValueMin(0);
		svObj.ValueMax(250);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _2_VOLTAGE
	
	string  svName = dev_name + "_2_ENERGY_YESTERDAY";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("kWh");
		svObj.ValueMin(0);
		svObj.ValueMax(10000000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _2_ENERGY_YESTERDAY
	
	string  svName = dev_name + "_2_ENERGY_TODAY";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("kWh");
		svObj.ValueMin(0);
		svObj.ValueMax(10000000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _2_ENERGY_TODAY
	
	string  svName = dev_name + "_2_ENERGY_TOTAL";
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		svObj.ValueType(ivtFloat);
		svObj.ValueSubType(istGeneric);
		svObj.DPInfo(dev_info);
		svObj.ValueUnit("kWh");
		svObj.ValueMin(0);
		svObj.ValueMax(10000000);
		svObj.DPArchive(false);
		svObj.State(0);
		svObj.Internal(false);
		svObj.Visible(true);
		dom.RTUpdate(0);
		object oChan= channels.Get (cuxd_name);
		object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (svName);
		oChan.DPs().Add (oSys);
		oSys.Channel (oChan.ID());
		WriteLine("Datenpunkt "#svName#" angelegt & verknüpft");
	} else {
		WriteLine("Geräte Variable mit dem Namen:" + svName + " existiert bereits!");
	}! Ende _2_ENERGY_TOTAL
}! Ende Datenpunkte anlegen CH2

!#########################################################################################################
! auf tasmota Device zugreifen und Einstellungen vor nehmen

! mem1 CUX2801XXX
WriteLine("Setze mem1 auf: "#"CUX2801"#new_cuxd_nr);
var url = "\'http://"#dev_ip#"/cm?cmnd=mem1%20CUX2801"#new_cuxd_nr#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);

! mem2 192.168.XXX.XXX
WriteLine("Setze mem2 auf: "#ccu_ip);
var url = "\'http://"#dev_ip#"/cm?cmnd=mem2%20"#ccu_ip#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);

! mem3 0
WriteLine("Setze mem3 auf: 0");
var url = "\'http://"#dev_ip#"/cm?cmnd=mem3%200\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);

! mem4 Gosund_Plug_X
WriteLine("Setze mem4 auf: "#dev_name);
var url = "\'http://"#dev_ip#"/cm?cmnd=mem4%20"#dev_name#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);

! mem5 0
WriteLine("Setze mem5 auf: 0");
var url = "\'http://"#dev_ip#"/cm?cmnd=mem5%200\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);

! DeviceName Gosund_Plug_X
WriteLine("Setze DeviceName auf: "#dev_name);
var url = "\'http://"#dev_ip#"/cm?cmnd=DeviceName%20"#dev_name#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);

! FriendlyName1 CUX2801XXX
WriteLine("Setze FriendlyName1 auf: "#"CUX2801"#new_cuxd_nr);
var url = "\'http://"#dev_ip#"/cm?cmnd=FriendlyName1%20CUX2801"#new_cuxd_nr#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);

! Rules
if ( dev_chanel == "2" ){
	var rule1 = "Rule1 on Power1#State do backlog mem3 %value%; WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('CUxD.%mem1%:1.SET_STATE').State(%value%) endon on Power2#State do backlog mem5 %value%; WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('CUxD.%mem1%:2.SET_STATE').State(%value%) endon";
	var rule2 = "Rule2 on Wifi#Connected do backlog WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('CUxD.%mem1%:1.SET_STATE').State(%mem3%); Delay 40; WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('CUxD.%mem1%:1.STATE').State(%mem3%); WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('CUxD.%mem1%:2.STATE').State(%mem5%); endon";
} else {
	var rule1 = "Rule1 on Power1#State do backlog mem3 %value%; WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('CUxD.%mem1%:1.SET_STATE').State(%value%) endon";
	var rule2 = "Rule2 on Wifi#Connected do backlog WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('CUxD.%mem1%:1.SET_STATE').State(%mem3%); Delay 40; WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('CUxD.%mem1%:1.STATE').State(%mem3%); endon";
}
var rule3 = "Rule3 on Tele-Energy#Power do WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('%mem4%_POWER').State(%value%) endon on Tele-Energy#Current do WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('%mem4%_CURRENT').State(%value%) endon on Tele-Energy#Voltage do WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('%mem4%_VOLTAGE').State(%value%) endon on Tele-Energy#Total do WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('%mem4%_ENERGY_TOTAL').State(%value%) endon on Tele-Energy#Today do WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('%mem4%_ENERGY_TODAY').State(%value%) endon on Tele-Energy#Yesterday do WebSend [%mem2%:8181] /cuxd.exe?ret=dom.GetObject('%mem4%_ENERGY_YESTERDAY').State(%value%) endon";

! Rule1
var url = "\'http://"#dev_ip#"/cm?cmnd="#rule1.UriEncode()#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);
WriteLine("Rule1 übertragen");

var url = "\'http://"#dev_ip#"/cm?cmnd=Rule1%201\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);
WriteLine("Rule1 aktiviert");

! Rule2
var url = "\'http://"#dev_ip#"/cm?cmnd="#rule2.UriEncode()#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);
WriteLine("Rule2 übertragen");

var url = "\'http://"#dev_ip#"/cm?cmnd=Rule2%201\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);
WriteLine("Rule2 aktiviert");

! Rule3
var url = "\'http://"#dev_ip#"/cm?cmnd="#rule3.UriEncode()#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);
WriteLine("Rule3 übertragen");

var url = "\'http://"#dev_ip#"/cm?cmnd=Rule3%201\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);
WriteLine("Rule3 aktiviert");

! Ende Rules

!#########################################################################################################

! Pollintervall auf 1 min
var poll = "TelePeriod%2060";
var url="\'http://"#dev_ip#"/cm?cmnd="#poll#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);
WriteLine("Pollintervall auf 1 Minute gesetzt");

! Wificonfig auf wait(5) stellen
var wificonf = "WifiConfig%205";
var url="\'http://"#dev_ip#"/cm?cmnd="#wificonf#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);
WriteLine("Bei Wlan Abbruch wartet das Gerät auf Wiederverbindung.");

! HostName CUX2801XXX
WriteLine("Setze HostName auf: "#"CUX2801"#new_cuxd_nr);
var url = "\'http://"#dev_ip#"/cm?cmnd=HostName%20CUX2801"#new_cuxd_nr#"\'";
dom.GetObject("CUxD.CUX2801"#new_cuxd_nr#":1.CMD_EXEC").State("wget -q -O /dev/null " # url);

! Ende tasmota Device zugreifen und Einstellungen vor nehmen

! automatisch füllen von cuxd CMD_SHORT/CMD_LONG & Parameter

var cmdip = dev_ip;

! IP in PARAM1 setzen
var devcmd = "CUX2801" + new_cuxd_nr;
var cmdipx = "\""#cmdip#"\"";
object i1 = dom.GetObject("CUxD");
xmlrpc.PutParamset(i1,devcmd,"CMD","PARAM1",cmdipx);
WriteLine("CuxD PARAM1 auf "#cmdip#" gesetzt");

! UNREACH setzen
var devcmd = "CUX2801" + new_cuxd_nr;
var cmdUN = -1;
object i1 = dom.GetObject("CUxD");
xmlrpc.PutParamset(i1,devcmd,"CMD","UNREACH",cmdUN);
WriteLine("CuxD UNREACH auf -1 gesetzt");

! CHANNELS setzen
var devcmd = "CUX2801" + new_cuxd_nr;
var cmdCH = dev_chanel.ToFloat()+1;
object i1 = dom.GetObject("CUxD");
xmlrpc.PutParamset(i1,devcmd,"CMD","CHANNELS",cmdCH);
WriteLine("CuxD CHANNELS auf "#cmdCH.ToString(0)#" gesetzt");


! CH1
var cmdip = dev_ip;
var devcmd = "CUX2801" + new_cuxd_nr + ":1";

var cmdshort = "\"/usr/local/addons/cuxd/curl -s http://$_P1$/cm?cmnd=Power1%20false\"";
object i1 = dom.GetObject("CUxD");
xmlrpc.PutParamset(i1,devcmd,"SWITCH","CMD_SHORT",cmdshort);
WriteLine("CuxD Parameter für Tasmota CH1 'CMD_SHORT' auf 'AUS' gesetzt");

var cmdlong = "\"/usr/local/addons/cuxd/curl -s http://$_P1$/cm?cmnd=Power1%20true\"";
object i1 = dom.GetObject("CUxD");
xmlrpc.PutParamset(i1,devcmd,"SWITCH","CMD_LONG",cmdlong);
WriteLine("CuxD Parameter für Tasmota CH1 'CMD_LONG' auf 'EIN' gesetzt");

var timeout = "2";
object i1 = dom.GetObject("CUxD");
xmlrpc.PutParamset(i1,devcmd,"SWITCH","EXEC_TIMEOUT",timeout);
WriteLine("CuxD Parameter für Tasmota CH1 'EXEC_TIMEOUT' auf '2' gesetzt");

var bidi = true;
object i1 = dom.GetObject("CUxD");
xmlrpc.PutParamset(i1,devcmd,"SWITCH","BIDI",bidi);
WriteLine("CuxD Parameter für Tasmota CH1 'BIDI' auf 'true' gesetzt");


! CH2
if ( dev_chanel == "2" ){
	
	var cmdip = dev_ip;
	var devcmd = "CUX2801" + new_cuxd_nr + ":2";
	
	var cmdshort = "\"/usr/local/addons/cuxd/curl -s http://$_P1$/cm?cmnd=Power1%20false\"";
	object i1 = dom.GetObject("CUxD");
	xmlrpc.PutParamset(i1,devcmd,"SWITCH","CMD_SHORT",cmdshort);
	WriteLine("CuxD Parameter für Tasmota CH2 CMD_SHORT auf 'AUS' gesetzt");
	
	var cmdlong = "\"/usr/local/addons/cuxd/curl -s http://$_P1$/cm?cmnd=Power1%20true\"";
	object i1 = dom.GetObject("CUxD");
	xmlrpc.PutParamset(i1,devcmd,"SWITCH","CMD_LONG",cmdlong);
	WriteLine("CuxD Parameter für Tasmota CH2 CMD_LONG auf 'EIN' gesetzt");
	
	var timeout = "2";
	object i1 = dom.GetObject("CUxD");
	xmlrpc.PutParamset(i1,devcmd,"SWITCH","EXEC_TIMEOUT",timeout);
	WriteLine("CuxD Parameter für Tasmota CH2 'EXEC_TIMEOUT' auf '2' gesetzt");

	var bidi = true;
	object i1 = dom.GetObject("CUxD");
	xmlrpc.PutParamset(i1,devcmd,"SWITCH","BIDI",bidi);
	WriteLine("CuxD Parameter für Tasmota CH2 'BIDI' auf 'true' gesetzt");
}

! EnergyReset
if ( dev_chanel == "1" ){
	
	var cmdip = dev_ip;
	var devcmd = "CUX2801" + new_cuxd_nr + ":2";
	
	var cmdreset = "\"/usr/local/addons/cuxd/curl -s http://$_P1$/cm?cmnd=EnergyReset%200\"";
	object i1 = dom.GetObject("CUxD");
	xmlrpc.PutParamset(i1,devcmd,"SWITCH","CMD_SHORT",cmdreset);

	object i1 = dom.GetObject("CUxD");
	xmlrpc.PutParamset(i1,devcmd,"SWITCH","CMD_LONG",cmdreset);
	WriteLine("CuxD Parameter für Tasmota EnergyReset gesetzt");

}
if ( dev_chanel == "2" ){
	
	var cmdip = dev_ip;
	var devcmd = "CUX2801" + new_cuxd_nr + ":3";
	
	var cmdreset = "\"/usr/local/addons/cuxd/curl -s http://$_P1$/cm?cmnd=EnergyReset%200\"";
	object i1 = dom.GetObject("CUxD");
	xmlrpc.PutParamset(i1,devcmd,"SWITCH","CMD_SHORT",cmdreset);

	object i1 = dom.GetObject("CUxD");
	xmlrpc.PutParamset(i1,devcmd,"SWITCH","CMD_LONG",cmdreset);
	WriteLine("CuxD Parameter für Tasmota RESET gesetzt");

}
! ENDE RESET

! Ende automatisch füllen von cuxd CMD_SHORT/CMD_LONG/PARAM1


! Ende Script
var testmode = "1";
if (testmode=="1"){
var textende = "\n\n\nDeine Tasmota Steckdose ist jetzt mit dem CUxD Gerät verbunden.\nNun kannst du dir die Werte auf der CCU anzeigen lassen und schalten,";
var textende2 = " in dem du unter Status und Bedienung Auf Geräte gehst und dir das Gerät " + dev_name + " anwählst.";
WriteLine(textende#textende2);
}

! Ende <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
vielleicht erleichtert es auch deine Integration.

Gruß
Matten Matten
Zuletzt geändert von Matten Matten am 31.03.2022, 12:45, insgesamt 2-mal geändert.

gmp
Beiträge: 72
Registriert: 05.12.2020, 18:25
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Cuxd Zwischenstecker

Beitrag von gmp » 22.12.2020, 07:41

Matten Matten hat geschrieben:
22.12.2020, 00:16
Das liegt höchstwarscheinlich aneurem ausgewählten Icon! wählt ein Geräte Icon was mehrere Kanäle im Original besitzt.
Dann werden auch die Anderen Kanäle sichtbar.
GOSUND.gif
Gruß
Matten Matten
Hi,
Du hast vollkommen Recht. Die Geräte werden nach den Icons, bzw. nach der im Anschluß vergebenen Bezeichnung unterschieden.
Anstatt sich an die Vorgaben von CuxD zu halten, machen die Leute von Easy Smarthome eher ihr eigenes Ding und kappen alle weiteren Kanäle. Was für ein Quatsch.
Ich hatte dazu gestern übrigens ein Gespräch mit denen und der Mitarbeiter (Azubi???) am anderen Ende meinte zu mir, das sie die CuxD-Geräte zukünftig sowieso nicht mehr unterstützen wollen. Zitat: "Dieses Zusatzfeature werde nicht so häufig genutzt."

VG
Thomas

Matten Matten
Beiträge: 278
Registriert: 09.12.2018, 17:14
System: CCU
Hat sich bedankt: 68 Mal
Danksagung erhalten: 21 Mal
Kontaktdaten:

Re: Cuxd Zwischenstecker

Beitrag von Matten Matten » 31.03.2022, 12:44

Matten Matten hat geschrieben:
22.12.2020, 00:20
Habe dafür ein kleines Script geschrieben...
Moin,

Ich habe das Script angepasst und verbessert CuxD Version 2.7 minimum (wegen der bidi funktion)

wenn das script ausgefüllt & ausgeführt wird sollte folgendes in der Ausgabe stehen:

Code: Alles auswählen

Start...
CuxD Gerät umbenannt in Smart_Plug_XX 
Chanel 1 umbenannt in Smart_Plug_XX :1_Steckdose
Chanel 2 umbenannt in Smart_Plug_XX :2_RESET
VIR-LG-ONOFF CUX2801XXX:3 umbenannt in Smart_Plug_XX :3
VIR-LG-ONOFF CUX2801XXX:4 umbenannt in Smart_Plug_XX :4
VIR-LG-ONOFF CUX2801XXX:5 umbenannt in Smart_Plug_XX :5
VIR-LG-ONOFF CUX2801XXX:6 umbenannt in Smart_Plug_XX :6
VIR-LG-ONOFF CUX2801XXX:7 umbenannt in Smart_Plug_XX :7
VIR-LG-ONOFF CUX2801XXX:8 umbenannt in Smart_Plug_XX :8
VIR-LG-ONOFF CUX2801XXX:9 umbenannt in Smart_Plug_XX :9
VIR-LG-ONOFF CUX2801XXX:10 umbenannt in Smart_Plug_XX :10
VIR-LG-ONOFF CUX2801XXX:11 umbenannt in Smart_Plug_XX :11
VIR-LG-ONOFF CUX2801XXX:12 umbenannt in Smart_Plug_XX :12
VIR-LG-ONOFF CUX2801XXX:13 umbenannt in Smart_Plug_XX :13
VIR-LG-ONOFF CUX2801XXX:14 umbenannt in Smart_Plug_XX :14
VIR-LG-ONOFF CUX2801XXX:15 umbenannt in Smart_Plug_XX :15
VIR-LG-ONOFF CUX2801XXX:16 umbenannt in Smart_Plug_XX :16
Datenpunkt Smart_Plug_XX _POWER angelegt & verknüpft
Datenpunkt Smart_Plug_XX _CURRENT angelegt & verknüpft
Datenpunkt Smart_Plug_XX _VOLTAGE angelegt & verknüpft
Datenpunkt Smart_Plug_XX _ENERGY_YESTERDAY angelegt & verknüpft
Datenpunkt Smart_Plug_XX _ENERGY_TODAY angelegt & verknüpft
Datenpunkt Smart_Plug_XX _ENERGY_TOTAL angelegt & verknüpft
Setze mem1 auf: CUX2801XXX
Setze mem2 auf: 192.168.178.1 (ccu)
Setze mem3 auf: 0
Setze mem4 auf: Smart_Plug_XX 
Setze mem5 auf: 0
Setze DeviceName auf: Smart_Plug_XX 
Setze FriendlyName1 auf: CUX2801XXX
Rule1 übertragen
Rule1 aktiviert
Rule2 übertragen
Rule2 aktiviert
Rule3 übertragen
Rule3 aktiviert
Pollintervall auf 1 Minute gesetzt
Bei Wlan Abbruch wartet das Gerät auf Wiederverbindung.
Setze HostName auf: CUX2801XXX
CuxD PARAM1 auf 192.168.178.XXX gesetzt
CuxD UNREACH auf -1 gesetzt
CuxD CHANNELS auf 2 gesetzt
CuxD Parameter für Tasmota CH1 'CMD_SHORT' auf 'AUS' gesetzt
CuxD Parameter für Tasmota CH1 'CMD_LONG' auf 'EIN' gesetzt
CuxD Parameter für Tasmota CH1 'EXEC_TIMEOUT' auf '2' gesetzt
CuxD Parameter für Tasmota CH1 'BIDI' auf 'true' gesetzt
CuxD Parameter für Tasmota EnergyReset gesetzt



Deine Tasmota Steckdose ist jetzt mit dem CUxD Gerät verbunden.
Nun kannst du dir die Werte auf der CCU anzeigen lassen und schalten, in dem du unter Status und Bedienung Auf Geräte gehst und dir das Gerät Smart_Plug_XX anwählst.

Heinz_Walter
Beiträge: 6
Registriert: 01.01.2023, 11:46
System: CCU
Hat sich bedankt: 1 Mal

Re: Cuxd Zwischenstecker

Beitrag von Heinz_Walter » 01.01.2023, 23:25

Ich habe mir einfach für jedes Shelly-Gerät ein eigenes CUX-D Gerät erzeugt. Das funktioniert bei mir, allerdings hat jedes so erstellte Gerät auch wieder 16 Unterkanäle. Aber so bleibt die Übersicht in der Ansicht "Geräte" übersichtlicher.
Danach hatte ich alle Geräte in der Cloudmatic.

Gruß

Antworten

Zurück zu „CloudMatic“