[BETA] Alexa Modul Version 2.0

Wenn ich mir die Konvertierungsfunktion ansehe , dann gibt es nur eine Moeglichkeit fuer diese Fehlermeldung.
Die beiden Property enthalten nicht „“.

  if($this->ReadPropertyString("Variables") == "[]" and $this->ReadPropertyString("Scripts") == "[]") 
    {
    
    // Konvertierung ........................
        
    }
  else 
    {
    echo "Fehler, die Konvertierung konnte nicht durchgeführt werden";
    return false;
    }

Mal das testen :

	$instance = 28478;
	$scripts = IPS_GetProperty($instance, "Scripts");
 	var_dump($scripts);  
	$scripts = IPS_GetProperty($instance, "Variables");
 	var_dump($scripts);  

Ja die Skripte habe ich jetzt ja erst mal gar nicht darunter abgelegt weil da ja der Fehler kommt also ist dies ja False und kann kein „“ enthalten. Und der andere Array beginnt mit [ und endet mit ].


scripts: 
string(5) "False"
variables: 
string(1790) "[{"amzID":58687,"ID":58687,"Name":"Verst\u00e4rker Power Zone Mainzone"},{"amzID":12374,"ID":12374,"Name":"Terassenbeleuchtung"},{"amzID":28222,"ID":28222,"Name":"Apfelbaumbeleuchtung"},{"amzID":36602,"ID":36602,"Name":"Arbeitszimmer Licht"},{"amzID":32999,"ID":32999,"Name":"Badzimmer Spiegelbeleuchtung"},{"amzID":31560,"ID":31560,"Name":"Brunnen Beleuchtung"},{"amzID":28799,"ID":28799,"Name":"Deckenlampe Badezimmer"},{"amzID":47616,"ID":47616,"Name":"Deckenlampe Couch"},{"amzID":31263,"ID":31263,"Name":"Deckenlampe Esstisch"},{"amzID":34433,"ID":34433,"Name":"Deckenlampe Schlafzimmer"},{"amzID":50344,"ID":50344,"Name":"Dekolicht"},{"amzID":23991,"ID":23991,"Name":"Eingangs Beleuchtung"},{"amzID":33014,"ID":33014,"Name":"Dach Deckenlicht"},{"amzID":34534,"ID":34534,"Name":"Flur Abstellkammer"},{"amzID":57800,"ID":57800,"Name":"Kellertreppe"},{"amzID":25678,"ID":25678,"Name":"Kugellampe"},{"amzID":18038,"ID":18038,"Name":"Schlafzimmer Wandschrank"},{"amzID":12374,"ID":12374,"Name":"Terrasse"},{"amzID":27036,"ID":27036,"Name":"Waschk\u00fcche"},{"amzID":47971,"ID":47971,"Name":"Dreambox"},{"amzID":35112,"ID":35112,"Name":"Kinderzimmer Seite"},{"amzID":43704,"ID":43704,"Name":"Kinderzimmer Vorne"},{"amzID":19931,"ID":19931,"Name":"K\u00fcche Rollladen"},{"amzID":47150,"ID":47150,"Name":"Rollladen Schlafzimmer Links"},{"amzID":15835,"ID":15835,"Name":"Rollladen Schlafzimmer Rechts"},{"amzID":26490,"ID":26490,"Name":"Rollladen Schlafzimmer Seite"},{"amzID":37228,"ID":37228,"Name":"Wohnzimmer Balkon Links"},{"amzID":48031,"ID":48031,"Name":"Wohnzimmer Balkon Rechts"},{"amzID":27062,"ID":27062,"Name":"Wohnzimmer Seite"},{"amzID":43591,"ID":43591,"Name":"Akku Wandtablet"},{"amzID":44068,"ID":44068,"Name":"Strom Beamer"},{"amzID":36335,"ID":36335,"Name":"Subwoofer"}]"
emulate: 
bool(true)
multiplelinking: 
bool(false)

Wenn ich bei mir eine neue Instanz anlege ,ohne irgendeinen Link , erhalte ich mit meinem Script folgende Ausgabe

string(2) "[]"
string(2) "[]"

Wenn ich jetzt einen Link auf eine Variable anlege bekomme ich folgendes:

string(2) "[]"
string(49) "[{"amzID":47576,"ID":47576,"Name":"Ger\u00e4te"}]"

Hab im Moment keine Ahnung wo dein FALSE herkommt.
Beim Anlegen der Instanz wird folgendes gemacht:


       $this->RegisterPropertyString("Scripts","[]");
        $this->RegisterPropertyString("Variables","[]");
 

Ich kann jetzt natürlich behelfsmäßig die Property auf „“ setzten dann lässt sich auch die Instanz öffnen und es kommt kein Fehler mehr und die Variablen wurden in eine Liste überführt. Das kann ja aber nicht die Lösung sein schließlich wurde für Scripts der Wert False gesetzt und nicht „“ dann ist die Abfrage an der Stelle einfach falsch.

Und der Fehler das aus den Skripten kein Array erstellt wird ist dadurch ja auch noch nicht weg.

Zumindest hat die Konvertierung, wenn man die Property manuell auf „“ setzt, schon mal zur Hälfte funktioniert, jetzt fehlt nur der Skriptteil oder man muss diesen halt von Hand anlegen weil die Konvertierung nicht funktioniert.

Beim Erstellen der Instanz wird das hier ausgefuehrt , also sollte am Anfang kein FALSE stehen.

       $this->RegisterPropertyString("Scripts","[]");
        $this->RegisterPropertyString("Variables","[]");
 

Frag mich nicht wo das herkommt das verstehe ich auch nicht aber der Wert ist nun mal so.

Helfen kann man sich indem man den Wert von Hand abändert.


$iql4smarthomeid = 58567 /*[IQL4SmartHome Beta]*/;

 IPS_SetProperty($iql4smarthomeid, "Scripts", "[]"); 
IPS_ApplyChanges($iql4smarthomeid); //Neue Konfiguration übernehmen

Aber interessieren würde es mich ja schon wo der String „False“ herkommt.

Ist es möglich die Liste gesamt breiter zu machen und die Spalten Gerät und Name in den Standardeinstellungen zu vergrößern? Dann könnte man das besser lesen. Gibt es eine Möglichkeit das eine Liste einfach die Seitenbreite des Formulars (Fensters) in der Management Console einnimmt?

Können die Links später gelöscht werden unterhalb der Instanz oder sollen diese dort erhalten bleiben? Gibt es eine Möglichkeit wegen der Übersichtlichkeit das irgendwie weiter zu untergliedern? In der alten Version konnte man ja Kategorien benutzten das hat das ganze imho übersichtlicher gemacht. Das ganze jetzt in einer Liste macht das zwar schön sichtbar im Modul ist aber deutlich unübersichtlicher bei vielen Einträgen als mit Unterpunkten und Kategorien zu sortieren.

Im Moment bestimmt der Programmierer die Breiten der Spalten. Schau dir die „form.json“ an.
Bzw: https://www.symcon.de/forum/threads/33751-Listen-in-PHP-Modulen?p=314829#post314829

Links kannst du dann loeschen wenn konvertiert.

Wenn ich ein Skript per Hand der Liste hinzufüge wird dies auch übernommen.

Der Wert bei Gerät bleibt aber leer und Name wird auch nicht übernommen den muss man dann von Hand setzten.
Scripts Liste 1.png

Gibt es eine Möglichkeit das so zu ergänzen das der Gerätename angezeigt wird und auch der Name zunächst ausgelesen wird? Ändern kann man dies ja dann immer noch, das entspräche dem Anpassen des Link Namens. Ansonsten finde ich persönlich, abgesehen davon das jetzt eben Listen benutzt werden weil diese jetzt verfügbar sind, die Einrichtung zum jetzigen Zeitpunkt komplizierter und zeitaufwändiger als einen Link zu setzten und unübersichtlicher ist es imho zur Zeit auch. Ist aber wie gesagt mein ganz persönlicher Eindruck.

Nun das ist dann sicher ein anders Thema und an IP Symcon das zu lösen ich würde mir hier aber nicht eine absolute Angabe wünschen sondern die Möglichkeit für den Entwickler das wie in HTML auch auch in % und nicht absolut angeben zu müssen. Dazu müsste halt von IP Symcon die aktuelle Fensterbreite ausgelesen werden und dann das Formular entsprechenden gesetzt. Ist vielleicht nicht trivial aber so funktionieren auch Internetseiten.

Ein Vorschlag von meiner Seite. Könnte man nicht in der Liste noch eine neue Spalte Kategorie ergänzen? Dann kann ich durch klicken auf den Spaltenkopf zumindest auch nach Kategorie sortieren und finde so zumindest etwas schneller, wie bei echten Kategorien auch, sonst muss bei vielen Einträgen die gesamte Liste durchsuchen werden.

Ich denke einen guten Fix für das Umlaute-Problem gefunden zu haben. Der PR an Dave ist auch schon unterwegs: check if convert was successful and take care of utf-8 issues by paresy · Pull Request #5 · IQLiving/IQL4Symcon · GitHub

paresy

Hallo zusammen,

gibt es aktuell noch Probleme mit der Aktuellen Beta ?

Grüße
Dave

Ich muss das noch mal testen ob das jetzt mit den Skripten funktioniert. Ich gebe morgen Rückmeldung.

Version 4.3, Konvertierung und Betrieb funktioniert ohne Probleme. Vielen Dank

cool Alexa kann jetzt auch bald push nachrichten empfangen, wenn IPS endlich durch Alexa reden kann wird es richtig schön werden. Ist sowas mit dem Modul dann auch denkbar?

Alexa sagt Amazon-Pakete an | heise online

Gesendet von meinem SM-G930F mit Tapatalk

@PhilippS
Im Prinzip ist das denkbar, liegt an Amazon das ins Skills Kit aufzunehmen

Grüße
Dave

Gesendet von iPhone mit Tapatalk

Ich kann das nicht mehr testen, ist das übliche Problem das ich nicht weis wie man Werte in IP-Symcon endgültig löscht. Ich hatte die Instanz noch mal gelöscht die alte Master drauf gemacht die Links drunter kopiert und dann wieder auf Beta umgestellt. Da habe ich aber jetzt gar kein Konvertieren Button zur Verfügung sondern IP-Symcon hat sofort wieder die alten Werte die bereits im Modul ein gestellt waren hinterlegt. Na ja ich würde mich wie gesagt noch über breitere Spalten freuen damit man auch was lesen kann und noch eine weitere Spalte Kategorie damit man besser sortieren kann ansonsten scheint es ja zu funktionieren. Ob die Konvertierung jetzt geht kann ich nicht nachvollziehen.

@Fonzo
dann wirst du denke ich manuell migrieren müssen, automatisch wird da nix mehr gehen…

Hi Fonzo,

du kannst das Importieren wieder freischalten, indem du die Eigenschaften zurücksetzt.


IPS_SetProperty($id, "Scripts", "[]");
IPS_SetProperty($id, "Variables", "[]");
IPS_ApplyChanges($id);

paresy