+ Antworten
Ergebnis 1 bis 10 von 10
  1. #1
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    1,717

    Standard bestehendes Property umbenennen

    Ich möchte gerne im Rahmen einer Modulweiterentwicklung ein bestehendes Property umbenennen. Dabei sollen die vom Anwender eingegebenen Values erhalten bleiben.

    Geht das überhaupt? Wenn ja, hätte da jemand für mich einen Tipp oder ein Beispiel wie es geht?

    Viele Grüße

    Burkhard
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | Koubachi | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.1 Testing

  2. #2
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    5,861

    Zitat Zitat von bumaas Beitrag anzeigen
    Ich möchte gerne im Rahmen einer Modulweiterentwicklung ein bestehendes Property umbenennen. Dabei sollen die vom Anwender eingegebenen Values erhalten bleiben.

    Geht das überhaupt? Wenn ja, hätte da jemand für mich einen Tipp oder ein Beispiel wie es geht?
    Ich hatte ähliches Problem bei mir, ich habe das so gelöst das ich eine neue Property angelegt habe bzw. ein Attribute. Im Konfigurationsformular habe ich die alte Property rausgenommen. Sollte jetzt in der alten Property ein Wert stehen und die neue noch leer sein wird der Wert automatisch einmalig in die neue Property bzw. Attribute überführt. So kannst Du dann mit Attributen oder einer neuen Property weiterarbeiten, aber die Werte, die im Modul gespeichert sind, bleiben erhalten.

  3. #3
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    1,717

    Besten Dank! So sollte es auch bei mir gehen. Die Überführung von alt nach neu macht man dann im Create()?

    Gruß

    Burkhard
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | Koubachi | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.1 Testing

  4. #4
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    5,861

    Zitat Zitat von bumaas Beitrag anzeigen
    Die Überführung von alt nach neu macht man dann im Create()?
    Nein, ich habe das bei mir so gelöst das im Create ja die alte und die neue Property angelegt werden. Das Konfigurartionsformular ist dynamisch. Wenn dies geöffnet wird, wird zunächst geprüft ob in der alten Property ein Wert steht und die neue Property leer ist. Wenn das der Fall ist zeigt das Konfigurationsformular ein Label und einen Button an. Dann muss man einmalig auf den Button drücken. Durch den Druck auf den Button wird dann die alte Property ausgelesen und in die neue übergeben mit anschließend Apply Changes. Sobald in der neuen Property ein Wert drinnen steht wird auch kein Button mehr im Konfiguartionsformular angezeigt sondern ganz normal die Werte der neuen Property.

  5. #5
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    1,717

    Achso, du hast eine extra Funktion dafür und bittest den Anwender um Übernahme.

    Das wollte ich vermeiden. Es soll eine interne Konvertierung werden.
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | Koubachi | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.1 Testing

  6. #6
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    1,717

    Zitat Zitat von bumaas Beitrag anzeigen
    Es soll eine interne Konvertierung werden.
    Ich vermute, es geht nicht, da es ja keine Methode zum Setzen einer Property gibt ...
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | Koubachi | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.1 Testing

  7. #7
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    5,861

    Zitat Zitat von bumaas Beitrag anzeigen
    Es soll eine interne Konvertierung werden.
    Das wird schwierig da Du ja ein Apply Changes brauchst, insofern würde ich das vielleicht einmalig bestätigen lassen. Solltest Du eine interne Konvertierungsmöglichkeit finden ohne eine Endlosschleife durch Aplly Changes zu produzieren lass es uns wissen, das wäre noch praktischer ohne Button.

  8. #8
    Registriert seit
    Oct 2014
    Beiträge
    448

    Im Alarmierungs-Modul von Symcon Misc wird auch etwas konvertiert. Vielleicht hilft das ja.

    Uli


    Gesendet von iPhone mit Tapatalk

  9. #9
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    8,280

    Ja das sollte (ungetestet) funktionieren.
    Kurzer Abriss.
    Neues Property im Create erstellen.
    Altes nicht mehr erstellen.
    Im Applychanges prüfen ob das alte vorhanden ist (IPS_GetConfiguration, json_decode, array_key_exists).
    Wenn vorhanden, dann alten Wert in neues Property überführen.
    Altes Value vom Key mit neuen Key im Array hinzufügen und alten Key löschen im Array.
    Das Array wieder mit json_encode und IPS_SetConfiguration als neue Einstellung setzen.
    Die Config mit IPS_Applychanges übernehmen, und die Methode verlassen(!).
    Dadurch wird natürlich die Applychanges Methode vom Modul erneut aufgerufen, nun sollte aber die alte Property nicht mehr existieren und die erste Abfrage verhindert eine Endlosschleife.
    Achtung, nicht testen wenn IPS läuft und du in der Konsole einfach Übernehmen klickst.
    Da dann die neue Property ja nicht registriert ist, hagelt es Fehler und mit Pech eine Endlosschleife
    Die Konvertierung läuft nur, wenn IPS startet (Modul wurde also im Dateisystem verändert) oder das Modul neu geladen wird (Module Control bzw. Store).
    Michael
    Geändert von Nall-chan (15.03.19 um 16:26 Uhr)
    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

  10. #10
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    1,717

    Danke für eure Ansätze!

    Es sieht so aus, als ob es wohl keinen einfacheren Weg gibt. Gut zu wissen, wie es funktioniert. In meinem konkreten Fall werde ich wohl erst einmal darauf verzichten, um das Modul (das noch keine weite Verbreitung hat) unnötig zu verkomplizieren.

    Gruß

    Burkhard
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | Koubachi | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.1 Testing

Ähnliche Themen

  1. Property in eigener Funktion setzen
    Von DerStandart im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 11
    Letzter Beitrag: 31.05.17, 09:53
  2. Trying to get property of non-object
    Von oheidinger im Forum Allgemeine Diskussion
    Antworten: 5
    Letzter Beitrag: 14.07.15, 22:33
  3. howto: bestehendes iis zertifikat im ips2 webserver weiterverwenden
    Von pleibling im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 9
    Letzter Beitrag: 04.10.14, 13:36
  4. IPS in bestehendes Z-Wave System
    Von Marko im Forum Z-Wave
    Antworten: 3
    Letzter Beitrag: 12.06.10, 07:10
  5. Problem mit Property Editor
    Von Ferengi-Master im Forum Dashboard
    Antworten: 2
    Letzter Beitrag: 14.08.07, 11:54