+ Antworten
Seite 2 von 2 ErsteErste 1 2
Ergebnis 11 bis 12 von 12
  1. #11
    Registriert seit
    Jan 2019
    Beiträge
    73

    Hi Michael,
    danke für die schnelle Antwort.
    Es funktioniert nun:
    Mit
    PHP-Code:
    foreach (IPS_GetInstanceListByModuleID("{5C71DE68-3DB9-2B14-58E3-C3A6D5A426C2}") as $guid_instance_id) {
                    
    $CreatedInstances[IPS_GetProperty($guid_instance_id"HclId")] = $guid_instance_id;
                    } 
    baue ich mir ein Array mit der InstanceID und der ID im HCL. Beim Anlegen der Instanz-Liste im Konfigurator weise ich dann den entsprechenden HCL-Devices die InstanzID zu:
    PHP-Code:
    foreach (json_decode($response) as $entity) {
                    
    IPS_LogMessage("HCLCONF return id"$entity->id);
                    if (isset(
    $CreatedInstances[$entity->id])) {
                        
    $dummy $CreatedInstances[$entity->id];
                        } 
                    else {
                        
    $dummy 0;
                    }
                    if (
    $entity->parentId>=1) {
                        
    $AddValue = [
                            
    'instanceID' => $dummy,
                            
    'zid' => $entity->id,
                            
    'name' => $entity->name,
                            
    'company' =>  $entity->properties->zwaveCompany,
                            
    'zwaveinfo' => $entity->properties->zwaveInfo,
                            
    'softwareversion' => $entity->properties->zwaveVersion,
                            
    'create' => [
                                
    'moduleID' => '{5C71DE68-3DB9-2B14-58E3-C3A6D5A426C2}',
                                
    'configuration' => [
                                        
    'HclId' => $entity->id,
                                        
    'zwaveCompany' => $entity->properties->zwaveCompany
                                
    ],
                                
    'location' => $tree_position,
                                ]
                            ];
                        
    $Form['actions'][0]['values'][] = $AddValue;
                        }
                    } 
    Wenn nun aber ein User händisch eine Instanz doppelt anlegt, gewinnt die Instanz, die von IPS_GetInstanceListByModuleID als letztes aufgelistet wird. Muß so etwas abgefangen werden?

    Und gleich noch eine Frage. Es gibt ja eine unüberschaubare Fülle an Zwave-Geräten. Würdest Du jedes Gerät über ein eigenes Modul abbilden oder mit einem "Universal-Modul" beim Anlegen die entsprechenden Eigenschaften setzen?

    Grüße Detlev.
    Platform: Raspberry Pi 3B , Symcon 5.3, Z-Wave, HUE, HomeMatic, Shelly, ESP-Eigenbasteleien,...

  2. #12
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,050

    Zitat Zitat von boni127 Beitrag anzeigen
    Wenn nun aber ein User händisch eine Instanz doppelt anlegt, gewinnt die Instanz, die von IPS_GetInstanceListByModuleID als letztes aufgelistet wird. Muß so etwas abgefangen werden?
    Ja. Ist ja auch kein großes Problem.
    Ich habe es so umgesetzt, das ich alle gemeldeten Geräte von der Hardware durchgehe und mit der Config bestücke, dabei wird eine eventuelle vorhande Instanz ID zugeordnet.
    Diese Instanz ID entferne ich dann aus dem Array der bekannten Instanzen.
    Der Rest des Array wird dann ohne Create der Liste hinzugefügt, somit sind die Einträge rot. Das sind dann alle doppelte Instanzen wie auch Instanzen welche in der Hardware nicht mehr vorhanden sind.
    Beispiel:
    VeluxKLF200/module.php at 40422704a9fd86a2d59e6f85bb42aafadd5f7a8e · Nall-chan/VeluxKLF200 · GitHub
    Zitat Zitat von boni127 Beitrag anzeigen
    Und gleich noch eine Frage. Es gibt ja eine unüberschaubare Fülle an Zwave-Geräten. Würdest Du jedes Gerät über ein eigenes Modul abbilden oder mit einem "Universal-Modul" beim Anlegen die entsprechenden Eigenschaften setzen?

    Grüße Detlev.
    Pauschal schwer zu sagen.
    Sofern es der Datenaustausch mit der Hardware hergibt das möglichst universell zu bauen; dann nur eine generische Instanz.
    Wenn jeder Typ aber ganz anders zu händeln ist, dann nach einzelne nach Typ.
    VELUX und Xiaomi Aqara Module sind generische Device Instanzen.
    Einzelnen Device Instanzen habe ich bisher eigentlich nur in Modulen benutzt, wo eine Hardware zu viele gemischte Funktionen hat, um eine logisch sinnvolle Trennung zu bekommen.
    So zum Beispiel bei Kodi oder den Onkyo/Pioneer Receiver.
    Dort wären alle Funktionen in einer Instanz einfach zu viel.
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

Ähnliche Themen

  1. neue PHP-Module als Ersatz meiner Delphi-Module
    Von tommi im Forum PHP-Module
    Antworten: 203
    Letzter Beitrag: 01.05.20, 19:42
  2. PHP-Module (JSON-Dateien) mit dem Module Validator überprüfen
    Von paresy im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 0
    Letzter Beitrag: 25.10.19, 14:05
  3. PHP-Module schneller entwickeln mit dem Module Generator
    Von paresy im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 2
    Letzter Beitrag: 09.10.19, 20:09
  4. Womit Native Module entwickeln
    Von axelp im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 16
    Letzter Beitrag: 24.12.12, 14:14
  5. Vorgehen beim Entwickeln neuer Module
    Von 1007 im Forum IPSLibrary
    Antworten: 7
    Letzter Beitrag: 06.03.12, 21:21