App Update 1.42.5

Hallo alle zusammen,

ich habe soeben eine neue Version in die Stores (Beta) freigegeben. Sofern euch keine kritischen Fehler auffallen, wird diese Version zum Wochenende veröffentlicht und zum Start der Woche für alle zur Verfügung stehen :slight_smile:

  • Es ist nun möglich Gerätespezifische Definitionen in die eigenen Gerätedefinitionen zu übernehmen
  • Unter Windows können eigene Gerätedefinitionen nun direkt auf das System gespeichert werden
  • Über den Servermodus lässt sich nun die Steuerung eines beliebigen Gerätes öffnen
  • Die Suche in den Werten der Geräte wurde verbessert
  • Der dargestellte Wert der Variablen wurde von 40 Zeichen auf 400 erhöht (Beitrag)
  • Die interne Geräte-ID in der App kann nun kopiert werden
  • Die Familie „ZigBee“ wurde hinzugefügt
  • Die Familien werden nach Namen sortiert
  • Es wird nun angezeigt, ob das Senden der Logs erfolgreich war oder nicht (Beitrag)

– Eddy

2 „Gefällt mir“

Hallo Eddy,

wie ist das jetzt aktuell mit den CUXD Geräte? Kann meine CUXD Aktoren bei den Geräten nicht auswählen…

Hallo @emig,

was genau meinst Du damit? Tauchen die nicht in der Liste auf oder gibt es ein anderes Problem? Nenn mich mir bitte auch die Version der App die Du verwendest.

– Eddy

1.42.5

Zur Erläuterung: ich habe Somfy Rollläden und steuere diese über die CCU mit Hilfe eines 16fachen Rollladenaktor.

Ich hatte die Problematik ganz am Anfang mal beschrieben. Es war so, dass ich die 16 einzelnen Aktoren auswählen konnte, jedoch war das Problem, das egal welchen der 16 Kanäle ich gewählt habe, immer nur Kanal 1 gesteuert werden konnte.

Mittlerweile sehe ich die 16 Kanäle aber gar nicht mehr…

Hi @emig,

hm, das ist sehr komisch, denn die Werte werden jetzt per Skript ausgelesen und alles sollte drin sein.

Könntest Du das Skript manuell auf der CCU ausführen und mir das Ergebnis zuschicken oder selbst schauen, ob dort die Werte drin sind oder nicht? Wie das geht habe ich in diesem Beitrag beschrieben.

– Eddy

Der Link geht leider ins Leere…

https://forum.easy-smarthome.de/t/was-passiert-mit-nicht-eriannten-aktoren-und-kanaelen/39/4

Kann den Link auch nicht öffnen… da steht existiert nicht oder privat… kann es sein das ich keine Berechtigung für die Seite habe?

Bild

Write(’{’);

boolean dFirst = true;

Write(’„Devices“:[’);

string deviceId;
foreach (deviceId, root.Devices().EnumUsedIDs())
{
object oDevice = dom.GetObject(deviceId);
boolean bDevReady = oDevice.ReadyConfig();

string sDevInterfaceId = oDevice.Interface();
string sDevInterface   = dom.GetObject(sDevInterfaceId).Name();
string deviceAddress = oDevice.Address();

if (bDevReady) 
{
    if (dFirst) 
    {
        dFirst = false;
    } 
    else 
    {
        WriteLine(',');
    }

    Write('{');
    Write('"ID":"' # oDevice.ID());
    Write('","Name":"' # oDevice.Name());
    Write('","HssType":"' # oDevice.HssType() # '","Address":"' # oDevice.Address() # '","Interface":"' # sDevInterface);
    Write('","Datapoints":[');

    boolean dpFirst = true;

    string sValue;
    string sValueType;
    string channelId;
    foreach(channelId, oDevice.Channels()) 
    {
     	object oChannel = dom.GetObject(channelId);
        string channelName = oChannel.Name();
        string channelAddress = oChannel.Address();

        integer iChnDir = oChannel.ChnDirection();
        if (iChnDir == 2) 
        {
            object oWork = oChannel.DPByHssDP('WORKING');
            if (oWork) 
            {
                if (dpFirst) 
                {
                    dpFirst = false;
                } 
                else 
                {
				    WriteLine(',');
                }
                oWId = oWork.ID();

				Write('{');
		        Write('"ID":"' # oWork.ID());
		        Write('","Name":"' # oWork.Name());
				Write('","TypeName":"HSSDP","Operations":"5",');
				Write('"ValueType":2,"ValueUnit":"","Timestamp":"' # oWork.Timestamp());
                Write('","Value":null');

                Write(',"ChannelName":' # '"' # channelName # '"');
                Write(',"ChannelAddress":' # '"' # channelAddress # '"');
                Write(',"DeviceAddress":' # '"' # deviceAddress # '"');
                Write(',"ChannelId":' # '"' # channelId # '"');
                Write(',"DeviceId":' # '"' # deviceId # '"');
                Write('}');
            }

            object oDir = oChannel.DPByHssDP('DIRECTION');
            if (oDir) 
            {
                if (dpFirst) 
                {
                    dpFirst = false;
                }
                else 
                {
				    WriteLine(',');
                }

				Write('{');
		        Write('"ID":"' # oDir.ID());
		        Write('","Name":"' # oDir.Name());
				Write('","TypeName":"HSSDP","Operations":"5",');
				Write('"ValueType":16,"ValueList":"' # oDir.ValueList() # '","Timestamp":"' # oDir.Timestamp());
                Write('","Value":null');

                Write(',"ChannelName":' # '"' # channelName # '"');
                Write(',"ChannelAddress":' # '"' # channelAddress # '"');
                Write(',"DeviceAddress":' # '"' # deviceAddress # '"');
                Write(',"ChannelId":' # '"' # channelId # '"');
                Write(',"DeviceId":' # '"' # deviceId # '"');
                Write('}');
            }
        }

        if (oChannel.HssType() == "SMOKE_DETECTOR") 
        {
    	    object oDP = oChannel.DPByHssDP('STATE');
        	if(oDP.ID()) 
            {
                if (dpFirst) 
                {
                    dpFirst = false;
                } 
                else 
                {
					WriteLine(',');
                }

				Write('{');
		        Write('"ID":"' # oDP.ID());
		        Write('","Name":"' # oDP.Name());
				Write('","TypeName":"HSSDP');
				Write('","Operations":5');
				Write(',"ValueType":2');
				Write(',"ValueUnit":"');
				Write('","Timestamp":"' # oDP.Timestamp());
                Write('","Value":');

				sValue = oDP.Value();
                
				if (sValue) 
                {
					Write('"' # 'true' # '"');
                } 
                else 
                {
					Write('"' # 'false' # '"');
                }

                Write(',"ChannelName":' # '"' # channelName # '"');
                Write(',"ChannelAddress":' # '"' # channelAddress # '"');
                Write(',"DeviceAddress":' # '"' # deviceAddress # '"');
                Write(',"ChannelId":' # '"' # channelId # '"');
                Write(',"DeviceId":' # '"' # deviceId # '"');
                Write('}');
            }
        }

        string sDPId;
        foreach(sDPId, oChannel.DPs().EnumUsedIDs()) 
        {
            object oDP = dom.GetObject(sDPId);
            if (oDP.ID()) 
            {
                if (oDP.TypeName() != "VARDP") 
                {
                    if (dpFirst) 
                    {
                        dpFirst = false;
                    } 
                    else 
                    {
					    WriteLine(',');
                    }
                    sValueType = oDP.ValueType();

					Write('{');
			        Write('"ID":"' # oDP.ID());
			        Write('","Name":"' # oDP.Name());

					Write('","TypeName":"' # oDP.TypeName());
                    Write('","Operations":' # oDP.Operations());
                    Write(',"ValueType":' # sValueType);

                    if (sValueType == 16)
					{
						Write(',"ValueList":"');
						WriteURL(oDP.ValueList());
						Write('"');
					}

					if(oDP.ValueUnit() == '""') 
                    {
						Write(',"ValueUnit":"' # "");
					} 
                    else 
                    {
						Write(',"ValueUnit":"' # oDP.ValueUnit());
					}
                    
					Write('",');
                    Write('"Timestamp":"' # oDP.Timestamp());
                    Write('","Value":');

                    if (sValueType == 20) 
                    {
						Write('"');
						WriteURL(oDP.Value());
						Write('"');
                    } 
                    else 
                    {
                        sValue = oDP.Value();
                        if (sValueType == 2) 
                        {
                            if (sValue) 
                            {
								Write('"' # 'true' # '"');
                            } 
                            else 
                            {
								Write('"' # 'false' # '"');
                            }
                        } 
                        else 
                        {
                            if (sValue == "") 
                            {
                                Write('"' # '0' # '"');
                            } 
                            else 
                            {
						        Write('"' # sValue # '"');
                            }
                        }
                    }
                    Write(',"ChannelName":' # '"' # channelName # '"');
                    Write(',"ChannelAddress":' # '"' # channelAddress # '"');
                    Write(',"DeviceAddress":' # '"' # deviceAddress  # '"');
                    Write(',"ChannelId":' # '"' # channelId # '"');
                    Write(',"DeviceId":' # '"' # deviceId # '"');
                    Write('}');
                }
            }
        }
    }
    Write(']}');
}

}
Write(’]}’);

Hier noch der Link zum Script:

https://control.easy-smarthome.de/download/GetAll.txt