Divoom Aurabox + Timebox + TimeboxEvo [Update, kommunizieren funktioniert]

Begonnen von schwatter, 25 Dezember 2017, 23:37:43

Vorheriges Thema - Nächstes Thema

schwatter

#60
Folder hatte vorher 755, jetzt 777 ohne Änderung.


root@raspiFhem:/opt/fhem/divoom# ls -ld /opt/fhem/divoom
drwxrwxrwx 3 fhem dialout 4096 Okt  3 19:49 /opt/fhem/divoom




Wenn ich das absetze, kommt keine Ausgabe. Also nix, nichtmal -1. Nicht wundern, hatte "Feuer" zu "feuer" umbenannt.

{qx("perl /opt/fhem/divoom/feuer.pl 2>&1")}

Die anderen Scripte, die noch auf lip.pl rennen habe ich auch nochmal ohne sudo probiert.
Funktioniert auch.

edit:

{qx("perl /pfad/zum/script.pl 2>&1")} gibt auch bei funktionierenden Scripten keinen Output.

edit2:

Habe auch mal bei allen funktionierenden Scripten den sudo-Aufruf gelöscht. Ist ja obsolete.



mumpitzstuff

Schau mal ins fhem Logfile, ob die Print Ausgaben dort landen.

schwatter

Da hab ich was,

ZitatModification of non-creatable array value attempted, subscript -1 at /opt/fhem/divoom/feuer.pl line 207.

Line 207 wäre diese bei mir

$imgData[-1] += ($image->findcolor(color=>$image->getpixel(x=>$x, y=>$y)) << 4);

mumpitzstuff

Das ist ein Bug. Weiter oben wo die Variable initialisiert wird muss eine 0 rein. Das sieht dann so aus:

my @imgData = (0);

schwatter

#64
Ok, jetzt läuft es durch, aber in Fhem zerhaut es das Bild. Nur 2 kleine Pixel oben links leuchten.
In der ssh-Konsole läuft es wie immer normal durch.

edit:

Hier der fhem.log

Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Use of uninitialized value in left bitshift (<<) at /opt/fhem/divoom/feuer.pl line 207.
Create RFCOMM client (11:75:58:45:59:81)...
Device answer: HELLO
done

Send plain command: 4500
Generated raw command: 0104004500490002
Send raw command: 0104004500490002
Device answer: 01
done

Send plain command: 44000A0A0400
Generated raw command: 01080044000A0A0400640002
Send raw command: 01080044000A0A0400640002
Device answer: 01
done

Send plain command: 4500
Generated raw command: 0104004500490002
Send raw command: 0104004500490002
Device answer: 01
done

mumpitzstuff

Ich habe mir noch mal den von dir geposteten Code angesehen. Dort fehlen ein paar Sicherheitsabfragen in der Funktion. Außerdem scheint der Palettenindex in deinem Bild Werte größer als 16 anzunehmen. Dadurch greift die Funktion auf einen nicht existierenden Index zu.

Nimm bitte noch mal exakt den Code aus meinem letzten Beitrag und das Original Bild example.bmp von derHeinz. Die Modifikation von vorhin bitte weg lassen, das hatte doch seine Richtigkeit.

schwatter

#66
Ok, Code aus dem letzten Beitrag. AuraBox bleibt schwarz bei dem example.bmp von derHeinz.

Fhem.log

Use of uninitialized value in numeric le (<=) at /opt/fhem/divoom/feuer.pl line 260.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 274.
Use of uninitialized value $index in numeric gt (>) at /opt/fhem/divoom/feuer.pl line 270.
Use of uninitialized value $index in array element at /opt/fhem/divoom/feuer.pl line 280.
Create RFCOMM client (11:75:58:45:59:81)...
Device answer: HELLO
done

Send plain command: 4500
Generated raw command: 0104004500490002
Send raw command: 0104004500490002
Device answer: 01
done

Send plain command: 44000A0A040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Generated raw command: 01390044000A0A040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000950002
Send raw command: 01390044000A0A040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000950002
Device answer: 01
done

Send plain command: 4500
Generated raw command: 0104004500490002
Send raw command: 0104004500490002
Device answer: 01
done



edit:

Hier nochmal der verwendetet Code. Nicht das es zu Missverständnissen kommt.


#!/usr/bin/perl
use strict;
use warnings;
use Net::Bluetooth;
use IO::Select;
use Imager;

sub listDevices();
sub connectDivoom($);
sub disconnectDivoom();
sub sendRaw($$);
sub sendPlain($$);
sub convertRawToPlain($);
sub convertImageTB($;$);
sub convertImageAB($;$);

my $socket;
my $TIMEBOX;

sub listDevices()
{
  print "Search for devices...\n\n"; 

  my $device_ref = get_remote_devices();
 
  foreach my $addr (keys %$device_ref)
  {
    print "Address: $addr Name: $device_ref->{$addr}\n";
  }

  print "done\n\n";
}

sub connectDivoom($)
{
  my $device = shift;
  my $ret;
  my $success = 0;

  print "Create RFCOMM client ($device)...\n";

  $socket = Net::Bluetooth->newsocket("RFCOMM");
  return $success unless(defined($socket));
 
  if (0 != $socket->connect($device, 4))
  {
    $socket->close();
    return $success;
  }

  $TIMEBOX = $socket->perlfh();
 
  sysread($TIMEBOX, $ret, 256);
  if (defined($ret))
  {
    $ret =~ s/[^[:print:]]//g;
    print "Device answer: $ret";

    if ('HELLO' eq $ret)
    {
      $success = 1;
    }
    else
    {
      close($TIMEBOX);
      $socket->close();
    }
  }
 
  print "\ndone\n\n";

  return $success;
}

sub disconnectDivoom()
{
  close($TIMEBOX);
  $socket->close();
}

sub sendRaw($$)
{
  my $data = shift;
  my $timeout = shift;
  my $ret;
  my $retry = 0;
  my $select = IO::Select->new($TIMEBOX);
 
  print "Send raw command: $data\n";

  $data =~ s/((?:[0-9a-fA-F]{2})+)/pack('H*', $1)/ge;
 
  do
  {
    syswrite($TIMEBOX, $data);

    if ($select->can_read(0.1))
    {
      sysread($TIMEBOX, $ret, 256);
      if (defined ($ret))
      {
        $ret = unpack('(H2)*', $ret);
        $ret =~ s/[^[:print:]]+//g;
        print "Device answer: $ret";
      }
    }

    $retry++;
  } while (($retry <= 3) && (!defined($ret) || '01' ne $ret));

  if ($retry > 3)
  {
    print "Failed!";
  }
  else
  {
    sleep($timeout);
  }

  print "\ndone\n\n";
}

sub sendPlain($$)
{
  my $data = shift;
  my $timeout = shift;
  my $crc = 0;
  my $ret;
  my $retry = 0;

  print "Send plain command: $data\n";

  # add length (length of data + length of checksum)
  $_ = (length($data) + 4) / 2;
  $data = sprintf("%02x", ($_ & 0xFF)).sprintf("%02x", (($_ >> 8) & 0xFF)).$data;

  # calculate crc
  while ($data =~ /(..)/g)
  {
    $crc += hex($1);
  }

  # add crc
  $data .= sprintf("%02x", ($crc & 0xFF)).sprintf("%02x", (($crc >> 8) & 0xFF)); 

  # escape data
  $data =~ s/(01|02|03)(?{ if (0 == ($-[0] & 1)) {'030'.(3+$1)} else {$1} })/$^R/g;

  # add prefix and postfix
  $data = '01'.$data.'02';

  print "Generated raw command: $data\n";

  sendRaw($data, $timeout);
}

sub convertRawToPlain($)
{
  my $data = shift;

  print $data."\n";

  # remove prefix and postfix
  $data = substr($data, 2, -2);

  # unescape data
  $data =~ s/(03(04|05|06))(?{ if (0 == ($-[0] & 1)) {'0'.($2-3)} else {$1} })/$^R/g;
 
  #remove length
  $data = substr($data, 4);

  # remove checksum
  $data = substr($data, 0, -4);

  print $data."\n";

  return $data;
}

sub convertImageTB($;$)
{
  my $file = shift;
  my $size = shift;
  my @imgData = (0);
  my $image = Imager->new;
 
  $size = 11 if (!defined($size));
  $image->read(file=>$file);
 
  if (!$@)
  {
    my ($r, $g, $b, $a);
    my $flicflac = 0;   
    my $imageResized = $image->scaleX(pixels=>$size)->scaleY(pixels=>$size);

    for (my $y = 0; $y < $size; $y++)
    {
      for (my $x = 0; $x < $size; $x++)
      {
        ($r, $g, $b, $a) = $imageResized->getpixel(x=>$x, y=>$y)->rgba();
       
        if (0 == $flicflac)
        {
          if ($a > 32)
          {
            $imgData[-1] = (($r & 0xF0) >> 4) + ($g & 0xF0);
            push(@imgData, (($b & 0xF0) >> 4));
          }
          else
          {
            $imgData[-1] = 0;
            push(@imgData, 0);
          }

          $flicflac = 1;
        }
        else
        {
          if ($a > 32)
          {
            $imgData[-1] += ($r & 0xF0);
            push(@imgData, (($g & 0xF0) >> 4) + ($b & 0xF0));
          }
          else
          {
            $imgData[-1] += 0;
            push(@imgData, 0);
          }
          push(@imgData, 0);

          $flicflac = 0;
        }
      }
    }
  }

  $_ = '';
  foreach my $byte (@imgData)
  {
    $_ .= sprintf("%02x", ($byte & 0xFF));
  }

  return $_;
}

sub convertImageAB($;$)
{
  my $file = shift;
  my $size = shift;
  my @imgData = ();
  my $image = Imager->new;
  my @color = (0, 1, 2, 11, 4, 5, 2, 5, 8, 1, 2, 3, 4, 13, 6, 7);

  $size = 10;# if (!defined($size));
  $image->read(file=>$file);

  #print $image->maxcolors."\n";
  #print $image->getcolorcount()."\n";

  if (!$@ && ($image->getcolorcount() <= 16))
  {
    my $flicflac = 0;
    #my $imageResized = $image->scaleX(pixels=>$size)->scaleY(pixels=>$size);

    for (my $y = 0; $y < $size; $y++)
    {
      for (my $x = 0; $x < $size; $x++)
      {
        my $index = $image->findcolor(color=>$image->getpixel(x=>$x, y=>$y));
        $index = 15 if ($index > 15);
               
        if (0 == $flicflac)
        {
          push(@imgData, $color[$index]);

          $flicflac = 1;
        }
        else
        {
          $imgData[-1] += ($color[$index] << 4);

          $flicflac = 0;
        }
      }
    }
  }

  $_ = '';
  foreach my $byte (@imgData)
  {
    $_ .= sprintf("%02x", ($byte & 0xFF));
  }

  return $_;
}

my $example = convertImageAB('example.bmp', 10);

if (connectDivoom('11:75:58:45:59:81'))
{
  #sendPlain('4509', 5);
  #sendPlain('4508', 5);
  #sendPlain('4507', 5);
  #sendPlain('4506', 5);
  #sendPlain('4505', 5);
  #sendPlain('4504', 5);
  #sendPlain('4503', 5);
  #sendPlain('4502', 5);
  #sendPlain('4501', 5);
  sendPlain('4500', 5);
  sendPlain('44000A0A04'.$example, 5);
  sendPlain('4500', 5);
  disconnectDivoom();
}

mumpitzstuff

Das Bild wird nicht geladen und dann geht alles danach schief.

mumpitzstuff

So habe jetzt noch mal genau nachgesehen und das Script jetzt mit ein paar mehr Sicherheitsabfragen versehen und auch ein paar Angaben werden ausgegeben, wieviel Farben das Bild enthält usw. Mir ist dabei aufgefallen, das ich nur das Bild example.bmp aus den Beispielen von derHeinz laden konnte. Die anderen bmp Dateien konnte das Imager Modul gar nicht richtig laden. Ich habe deshalb alle Bilder mit Paint geöffnet und dann als 16 Farben bmp wieder gespeichert. Die Größe der Bilder hat sich dadurch von 266 auf 198 Byte reduziert. Diese dateien kann Imager jetzt einwandfrei laden.

Alle Bilder und das Testscript habe ich hier im zip angehängt.

Ich hoffe damit kommen wir des Rätsels Lösung etwas näher...

Weiterhin habe ich noch gefunden, dass du pip für die Installation vom Imager verwendet hast. Ich habe Imager so installiert (vielleicht ist das eine andere Version?):

sudo apt install libimager-perl

schwatter

#69
In der Konsole läuft alles sauber durch. Fhem meldet im Log,

Can't read image example.bmp (Could not open example.bmp: No such file or directory)

Habe alles 1zu1 auf den Pi kopiert.


edit:

Mit dem Install von libimager-perl warte ich noch.


edit2:

Alle Files incl. Script habe ich Rechte 777, Gruppe dialout und Besitzer fhem verpasst. Ohne Besserung.


edit3:

Habe my@color getweaked.

Vorher:
my @color = (0, 1, 2, 11, 4, 5, 2, 5, 8, 1, 2, 3, 4, 13, 6, 7);

Nachher:
my @color = (0, 1, 2, 11, 4, 5, 2, 15, 8, 1, 2, 3, 4, 13, 6, 7);


Ist das für dich nachvollziehbar?


edit4:

ändere ich das


my $file = shift;


in das


my $file = '/opt/fhem/divoom/example.bmp';


läuft es in Fhem. Aber wie angegeben nur die example.bmp.

mumpitzstuff

Sprechen wir von einem einzigen Raspberry wenn du von Konsole bzw. von Fhem redest?

Wenn unter Fhem eine Datei nicht gefunden wird, dann wird das Script an dieser Stelle abgebrochen. Wenn du exakt auf die selben Dateien von der Konsole aus bzw. von Fhem aus zugreifst (ohne vorher irgendwas irgendwohin zu kopieren), dann kann es nur an den Rechten der Datei example.bmp liegen oder aber das im Skript der Pfad fehlt.
Ersetz doch mal example.bmp durch /opt/fhem/divoom/example.bmp. Ergänz den Pfad auch mal bei den anderen Dateien.

@color kann bzw. darf sich nicht ändern. Ich greife lediglich lesend auf das Array zu. Aus meiner Sicht ist es deshalb nicht nachvollziehbar.

mumpitzstuff

#71
Okay dann ist des Rätsels Lösung im Skript die kompletten Pfade anzugeben! Nur nicht unten in der Funktion sondern beim Übergabeparameter der Funktion convertImageAB('/opt/fhem/divoom/example.bmp', 10).

schwatter


mumpitzstuff

Puhhh das war zu einfach um gleich darauf zu kommen...  ;)

schwatter

Kleine Scriptsammlung auf mumpitzstuff letzten Stand

- Funktionen in einzelne Scripte ausgelagert.
- MAC muss nur einmal in lib2 eingetragen werden.
- 2 neue Animationen erstellt (Fire/Washer).