[BETA] Alexa Modul Version 2.0

@1007
Jupp, In der alten Version müsste die „Geräte finden“ Funktion an die wand fahren

Aber ich bin bei dir es wird ein UTF8 Problem sein

Gesendet von iPhone mit Tapatalk

@Fonzo: Magst du im Utils Control mal schauen, ob du Umlaute zum korrigieren hast?

paresy

In der neuen Version funktionieren „Geräte“, „Außenbeleuchtung“ einwandfrei
wenn man sie in der Liste hinzufuegt. Problem ist wohl nur die Konventierung.

@1007
Solange es sauber UTF8 kodiert ist gibt es auch kein Problem

Gesendet von iPhone mit Tapatalk

Ich habe jetzt Utils Handler Umlaute korrigieren gedrückt. Dies macht bei mir aber keinen Unterschied Küche (war es schon vorher) ist immer noch Küche. Die Fehlermeldung im Modul kommt auch immer noch und die Instanz lässt sich nicht öffnen.

Nach der Korrektur musst du erst auf die Master Version und dann wieder Beta …

Gesendet von iPhone mit Tapatalk

Ok habe ich probiert, Fehler bleibt trotzdem bestehen. Rückmeldung der Property false und ansonsten die Fehlermeldung s.o. beim Versuch die Instanz zu öffnen.

@Fonzo
Wie schon geschrieben irgendein Objekt Name enthält ungültige Zeichen das musst du finden und anpassen!

Gesendet von iPhone mit Tapatalk

Und woran erkenne ich das ungültige Zeichen vorhanden sind? Betrifft das nur die Links oder auch Objekte auf die verwiesen wird?

Hallo
Sind nur die Links.

$scripts = IPS_GetProperty(46840 /*[Geräte\Amazon Echo Alexa\IQL4SmartHome]*/, "Scripts");
 var_dump($scripts);  

Liefert dir normalerweise ein Array aller Scripte mit folgendem Inhalt zB:

{"amzID":24092,"ID":46846,"ScriptType":"Legacy","Name":"Kaffeemaschine"},{"amzID":51909,"ID":46846,"ScriptType":"Legacy","Name":"Kaffeetassen"},{"amzID":50041,"ID":46846,"ScriptType":"Legacy","Name":"Kaffeestaerke"},{"amzID":30221,"ID":19686,"ScriptType":"Legacy","Name":"Computer"}]"

Da bei dir nichts steht konnte das Array nicht erstellt werden.
Mal alle Links auf Scripte durchsehen oder mal schnell dieses Script testen ob dir etwas auffaellt.

 	$instanceID = 28478;
	
	
    $oldDevices = GetChildrenIDsRecursive($instanceID);
 	
    if(count($oldDevices) >0) 
		{
        foreach($oldDevices as $device) 
			{
            if(IPS_GetObject($device)['ObjectType'] != 6)
            	continue;
			$targetID = IPS_GetLink($device)['TargetID'];
            $targetObject = IPS_GetObject($targetID);
	
			if($targetObject['ObjectType'] != 3 )
				continue;	
            $name = IPS_GetObject($device)['ObjectName'];
			echo "
[" . $name . "]";
			
			}
		} 


function GetChildrenIDsRecursive($parentID, $appendIDs = Array()) {
        foreach(IPS_GetChildrenIDs($parentID) as $childID) {
            if(IPS_GetObject($childID)['ObjectType'] == 0 /* Category */) {
                $appendIDs = GetChildrenIDsRecursive($childID, $appendIDs);
            } else {
                $appendIDs[] = $childID;
            }
        }
        return $appendIDs;
    }

Ich finde einfach nix aber wenn ich anderweitig bei der Fehlersuche im Modul helfen kann gerne.

Was mir auffällt ist das es wohl nach wie vor beim auslesen Probleme mit Umlauten gibt.

Wenn ich das ausführe


$scripts = IPS_GetProperty(46840 /*[Geräte\Amazon Echo Alexa\IQL4SmartHome]*/, "Scripts");
 var_dump($scripts);
 
 $variables = IPS_GetProperty(46840 /*[Geräte\Amazon Echo Alexa\IQL4SmartHome]*/, "Variables");
 var_dump($variables);
 
 $emulate = IPS_GetProperty(46840 /*[Geräte\Amazon Echo Alexa\IQL4SmartHome]*/, "EmulateStatus");
 var_dump($emulate);
 
 $multiplelinking = IPS_GetProperty(46840 /*[Geräte\Amazon Echo Alexa\IQL4SmartHome]*/, "MultipleLinking");
 var_dump($multiplelinking);

Beikomme ich das als Ausgabe:


string(5) "False"
string(1790) "[{"amzID":42537,"ID":44068,"Name":"Strom Beamer"},{"amzID":46238,"ID":36335,"Name":"Subwoofer"},{"amzID":46974,"ID":43591,"Name":"Akku Wandtablet"},{"amzID":35926,"ID":47971,"Name":"Dreambox"},{"amzID":19640,"ID":47616,"Name":"Deckenlampe Couch"},{"amzID":39898,"ID":32999,"Name":"Badzimmer Spiegelbeleuchtung"},{"amzID":25475,"ID":12374,"Name":"Terrasse"},{"amzID":19465,"ID":28222,"Name":"Apfelbaumbeleuchtung"},{"amzID":55362,"ID":25678,"Name":"Kugellampe"},{"amzID":17948,"ID":34534,"Name":"Flur Abstellkammer"},{"amzID":25079,"ID":36602,"Name":"Arbeitszimmer Licht"},{"amzID":34993,"ID":34433,"Name":"Deckenlampe Schlafzimmer"},{"amzID":15531,"ID":31263,"Name":"Deckenlampe Esstisch"},{"amzID":15305,"ID":50344,"Name":"Dekolicht"},{"amzID":30905,"ID":23991,"Name":"Eingangs Beleuchtung"},{"amzID":47837,"ID":27036,"Name":"Waschk\u00fcche"},{"amzID":35476,"ID":28799,"Name":"Deckenlampe Badezimmer"},{"amzID":24106,"ID":31560,"Name":"Brunnen Beleuchtung"},{"amzID":51385,"ID":57800,"Name":"Kellertreppe"},{"amzID":17936,"ID":18038,"Name":"Schlafzimmer Wandschrank"},{"amzID":27193,"ID":47150,"Name":"Rollladen Schlafzimmer Links"},{"amzID":14369,"ID":15835,"Name":"Rollladen Schlafzimmer Rechts"},{"amzID":45160,"ID":43704,"Name":"Kinderzimmer Vorne"},{"amzID":24996,"ID":35112,"Name":"Kinderzimmer Seite"},{"amzID":52761,"ID":27062,"Name":"Wohnzimmer Seite"},{"amzID":18961,"ID":19931,"Name":"K\u00fcche Rollladen"},{"amzID":56946,"ID":26490,"Name":"Rollladen Schlafzimmer Seite"},{"amzID":20753,"ID":48031,"Name":"Wohnzimmer Balkon Rechts"},{"amzID":39349,"ID":37228,"Name":"Wohnzimmer Balkon Links"},{"amzID":54116,"ID":58687,"Name":"Verst\u00e4rker Power Zone Mainzone"},{"amzID":39550,"ID":12374,"Name":"Terassenbeleuchtung"}]"
bool(true)
bool(true)


Auffällig ist hier das im Array alle Umlaute umkodiert wurden, das mag auch Absicht sein. Zumindest werden ja die Variablen sauber in ein Array geschrieben während das bei den Skripten nicht der Fall ist hier kommt ja nur false als Antwort. Die Umlaute selber sind zumindest in IP-Symcon sauber dargestellt

Siehe z.B.
darstellung ips.png

Bei dem Skript was Du gepostet hast kommt dies als Ausgabe



[WDR]
[VOX]
[Tagesschau 24]
[SUPER RTL]
[Sonnenklar TV]
[RTLNITRO]
[RTL2]
[r. t. l.]
[Pro7 MAXX Austria]
[NICKELODEON AT]
[MDR]
[KiKA]
[kabel eins]
[Euro News]
[Eins Festival]
[Drei Sat]
[Disney Channel]
[Das Erste]
[Bayern Drei]
[ARD Alpha]
[ZDF Info]
[zweites deutsches fernsehen]
[SUPER RTL Österreich]
[ZDF Kultur]
[Pro7 MAXX]
[z. d. f.]
[DMAX]
[SAT 1]
[Arte]
[PHOENIX]
[n-tv]
[Eins Plus]
[Nickelodeon]
[Pro Sieben]
[SWR]
[NDR]
[N24]
[ZDF Neo]
[YOMVI]
[TOGGO plus]
[TELE 5]
[Euro Sport]
[hr-fernsehen]
[Amazon Prime]
[TV Leinwand]
[Küche]
[Film FTV Leinwand]
[Spielen]
[AppleTV]
[Film Leinwand]
[Film anschauen]
[Wohnzimmer]
[Fernsehen]

Auf den ersten Blick sehe ich da also auch nicht wo da etwas außergewöhnlich sein sollte bzw. was dazu führt das es eben nicht funktioniert.

Das hier ist so korrekt im JSON:
K\u00fcche
Konnte man in der Scriptausgabe nicht Umschalten zwischen UTF8 und Plain?
Ist dann die Ausgabe von 1007 Scripts anders?
Michael

Das ist ja beruhigend, nur scheint dann ja die Ursache für den Fehler jetzt nicht die Umlaute per se zu sein, so wie ich das sehe.

Wenn Du mir jetzt noch verräts wo ich da was umstellen soll?
Das ist die HTML Ausgabe im Skript Fenster:


[WDR] [VOX] [Tagesschau 24] [SUPER RTL] [Sonnenklar TV] [RTLNITRO] [RTL2] [r. t. l.] [Pro7 MAXX Austria] [NICKELODEON AT] [MDR] [KiKA] [kabel eins] [Euro News] [Eins Festival] [Drei Sat] [Disney Channel] [Das Erste] [Bayern Drei] [ARD Alpha] [ZDF Info] [zweites deutsches fernsehen] [SUPER RTL Österreich] [ZDF Kultur] [Pro7 MAXX] [z. d. f.] [DMAX] [SAT 1] [Arte] [PHOENIX] [n-tv] [Eins Plus] [Nickelodeon] [Pro Sieben] [SWR] [NDR] [N24] [ZDF Neo] [YOMVI] [TOGGO plus] [TELE 5] [Euro Sport] [hr-fernsehen] [Amazon Prime] [TV Leinwand] [Küche] [Film FTV Leinwand] [Spielen] [AppleTV] [Film Leinwand] [Film anschauen] [Wohnzimmer] [Fernsehen]

Mehr habe ich nicht zur Auswahl außer Text und HTML.

Auffällig finde ich nur das in Zeile 44


if($this->ReadPropertyString("Scripts") != "")

abgefragt wird. Bei mir erzeugt die Abfrage ja aber false und nicht „“, wäre da nicht


if(!$this->ReadPropertyString("Scripts"))

korrekt?

Die Abfrage kann nicht false sein, da der Rückgabewert ein String ist. :slight_smile:

Kann mir jemand von euch (der dieses Problem hat) seine settings.json an office@symcon,de senden? Dann kann ich das bestimmt schnell mal Debuggen :slight_smile:

paresy

Korrekt, steht da ja auch Fonzo:
string(5) „False“
hast du geschrieben und nicht
bool(false)
:wink:
Das mit der Ausgabe der Console, kann auch zu 4.0 Zeiten gewesen sein, als die UTF8 Probleme auftauchten.

Michael

Ist unterwegs, viel Erfolg beim Fehler suchen.

Wo Du Recht hast hast Du Recht ;), ich gehe jetzt mal was Essen vielleicht funktioniert dann mein Hirn wieder besser und dann kann ich weiter schauen ob ich irgendwo den Grund für den Fehler finde, aber vielleicht wird von Euch ja jemand schneller fündig.

Mal ganz am Rande für den Fall das das nicht funktioniert, weil wohl irgendwas bei der Konvertierung schief läuft, kann ich dann nicht zum testen einfach alles unterhalb der Instanz löschen und diese von Hand konfigurieren? Oder wie ist das vorgesehen?

Wenn alles funktioniert hast du bei der Konfiguration zwei Listen.
Variablen und Scripte.
Da kannst du dann nach belieben die ID und den Namen waehlen und hinzufuegen.
Geraet wird dann von der ID genommen.
Kannst natuerlich alle deine ScriptLinks loeschen und alles haendisch nach der Konvertierung hinzufuegen.
Damit ist das Problem , fuer andere , natuerlich nicht gefunden.
Mal die mit „.-“ etc rausnehmen und dann Konvertieren ?

Ich habe jetzt mal die Instanz gelöscht und neu angelegt und dann die Links bis auf die Links zu den Skripten wieder darunter geschoben und auf Konvertieren gedrückt. Jetzt kommt zumindest keine komplette Fehlermeldung mit Verweis auf eine Zeilennummer mehr, aber immer noch eine saubere Meldung der Instanz:
Fehler, die Konvertierung konnte nicht durchgeführt werden.