ESP RGBWW Wifi Led Controller - fhem - Modul

Begonnen von pjakobs, 28 Juni 2016, 10:31:13

Vorheriges Thema - Nächstes Thema

pjakobs

das ist echt ein bisschen merkwürdig. Ich hab jede Menge der FTDI Adapter und kein Problem. Vielleicht sind die unterschiedlichen flash-Tools mit unterschiedlichen Chips mehr oder weniger kompatibel.
Probleme hatte ich immer nur, wenn ich die 3,3V Versorgung aus dem Adapter ziehen wollte, da  braucht der ESP einfach marginal zu viel Strom.

pj

Kuse

#226
Zitat von: pjakobs am 18 April 2017, 23:28:52
moin Kuse,

sorry, ich hatte Deinen Post gestern Abend schon gesehen, aber leider war mein fhem raspi an defekter SD-Karte gestorben und ich konnte nichts nachsehen...

versuche doch mal bitte (gilt für raspbian, andere Distros ggf. abweichend)

dpkg-query -l|grep -i json|grep perl

das Ergebnis ist die Liste der installierten  perl json Pakete. Bei mir sieht das so aus:

ii  libjson-any-perl                      1.38-1                                    all          wrapper class for the various JSON classes
ii  libjson-perl                          2.61-1                                    all          module for manipulating JSON-formatted data
ii  libjson-xs-perl                       2.340-1+b2                                armhf        module for manipulating JSON-formatted data (C/XS-accelerated)

Das Modul importiert json-xs, ich vermute, dass es das ist, dass bei Dir fehlt.

Grüße

pj

Ich habe nun nochmal alles entfernt und neu definiert.
Die Meldung von JSON kommt immer noch.


2017.04.19 12:02:05 0: Server started with 19 defined entities (fhem.pl:14001/2017-04-15 perl:5.020002 os:linux user:fhem pid:4815)
2017.04.19 12:02:05 2: LED_Stripe_CW: error decoding config response Can't locate object method "new" via package "JSON" at ./FHEM/32_LedController.pm line 428.

2017.04.19 12:02:05 3: LED_Stripe_CW DEBUG: doInternalReadingsUpdate: no hsv in cmd hash.
2017.04.19 12:02:05 2: LED_Stripe_WW: error decoding config response Can't locate object method "new" via package "JSON" at ./FHEM/32_LedController.pm line 428.

2017.04.19 12:02:05 3: LED_Stripe_WW DEBUG: doInternalReadingsUpdate: no hsv in cmd hash.
2017.04.19 12:02:05 2: LED_Stripe_RGB: error decoding config response Can't locate object method "new" via package "JSON" at ./FHEM/32_LedController.pm line 428.

2017.04.19 12:02:05 3: LED_Stripe_RGB DEBUG: doInternalReadingsUpdate: no hsv in cmd hash.
2017.04.19 12:02:34 4:
global LogLevel: 3
module LogLevel: 5
compound LogLevel: 5
2017.04.19 12:02:34 5: LED_Stripe_RGB (Set) called with rgb, busy flag is 0
name is LED_Stripe_RGB, args $VAR1 = 'ffffff';

2017.04.19 12:02:34 3: LED_Stripe_RGB (Set) called with rgb, busy flag is 0
2017.04.19 12:02:34 1: PERL WARNING: Use of uninitialized value $a in concatenation (.) or string at ./FHEM/32_LedController.pm line 945.
2017.04.19 12:02:34 1: PERL WARNING: Use of uninitialized value $b in concatenation (.) or string at ./FHEM/32_LedController.pm line 945.
2017.04.19 12:02:34 5: LED_Stripe_RGB extended args raw: a=, b=
2017.04.19 12:02:34 5: LED_Stripe_RGB t= 1800
2017.04.19 12:02:34 1: PERL WARNING: Use of uninitialized value $a in pattern match (m//) at ./FHEM/32_LedController.pm line 958.
2017.04.19 12:02:34 1: PERL WARNING: Use of uninitialized value $a in pattern match (m//) at ./FHEM/32_LedController.pm line 959.
2017.04.19 12:02:34 5: LED_Stripe_RGB extended args: t = 1800, q = false, d = 1
2017.04.19 12:02:34 5: LED_Stripe_RGB raw: ffffff, r: 255, g: 255, b: 255
2017.04.19 12:02:34 5: LED_Stripe_RGB: called SetHSVColor 0, 0, 100, 2700, 1800, fade, false, 1)
2017.04.19 12:02:34 2: LED_Stripe_RGB: error encoding HSV color request Can't locate object method "new" via package "JSON" at ./FHEM/32_LedController.pm line 554.


Bei mir hatte das Paket 'libjson-any-perl' gefehlt, wurde nun aber installiert und FHEM neu gestartet und das Modul neu geladen.


dpkg-query -l|grep -i json|grep perl
ii  libjson-any-perl                      1.38-1                                    all          wrapper class for the various JSON classes
ii  libjson-perl                          2.61-1                                    all          module for manipulating JSON-formatted data
ii  libjson-xs-perl                       2.340-1+b2                                armhf        module for manipulating JSON-formatted data (C/XS-accelerated)


Danke & LG

pjakobs

hmm... ich kann nicht sagen, dass ich das verstehe...

Ich schau mal alle json packages durch:


dpkg-query -l|grep -i json
ii  libjson-any-perl                      1.38-1                                    all          wrapper class for the various JSON classes
ii  libjson-c2:armhf                      0.11-4                                    armhf        JSON manipulation library - shared library
ii  libjson-glib-1.0-0:armhf              1.0.2-1                                   armhf        GLib JSON manipulation library
ii  libjson-glib-1.0-common               1.0.2-1                                   all          GLib JSON manipulation library (common files)
ii  libjson-perl                          2.61-1                                    all          module for manipulating JSON-formatted data
ii  libjson-xs-perl                       2.340-1+b2                                armhf        module for manipulating JSON-formatted data (C/XS-accelerated)
ii  libyajl2:armhf                        2.1.0-2                                   armhf        Yet Another JSON Library
ii  php5-json                             1.3.6-1                                   armhf        JSON module for php5
ii  syslog-ng-mod-json                    3.5.6-2                                   armhf        Enhanced system logging daemon (JSON plugin)


also möglicherweise brauchst Du noch die libjson-c2 und libjson-glib Pakete, wobei ich vermuten würde, dass die von apt-get automatisch installiert werden.
Wie hast Du die Pakete nachinstalliert? Normalerweise tut's imho ein

apt-get install libjson-any-perl libjson-xs-perl


wobei mich auch wundert, dass Du den Fehler erst beim Aufruf des new bekommst und nicht beim include...
Worauf betreibst Du das? Ist das ein Raspberry? Mit Raspbian?

pj

Kuse

Ja, ist ein Raspi...

Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie


Folgendes ist nun installiert, Rspi wurde neu gebootet:

ii  libjson-any-perl                      1.38-1                                    all          wrapper class for the various JSON classes
ii  libjson-c2:armhf                      0.11-4                                    armhf        JSON manipulation library - shared library
ii  libjson-glib-1.0-0:armhf              1.0.2-1                                   armhf        GLib JSON manipulation library
ii  libjson-glib-1.0-0-dbg:armhf          1.0.2-1                                   armhf        GLib JSON manipulation library (debug symbols)
ii  libjson-glib-1.0-common               1.0.2-1                                   all          GLib JSON manipulation library (common files)
ii  libjson-perl                          2.61-1                                    all          module for manipulating JSON-formatted data
ii  libjson-xs-perl                       2.340-1+b2                                armhf        module for manipulating JSON-formatted data (C/XS-accelerated)
ii  libyajl2:armhf                        2.1.0-2                                   armhf        Yet Another JSON Library
ii  php5-json                             1.3.6-1                                   armhf        JSON module for php5


Hier wieder das Log nach einem Restart:

2017.04.19 13:00:02 0: Server started with 19 defined entities (fhem.pl:14001/2017-04-15 perl:5.020002 os:linux user:fhem pid:1058)
2017.04.19 13:00:02 2: LED_Stripe_RGB: error decoding config response Can't locate object method "new" via package "JSON" at ./FHEM/32_LedController.pm line 428.

2017.04.19 13:00:02 3: LED_Stripe_RGB DEBUG: doInternalReadingsUpdate: no hsv in cmd hash.
2017.04.19 13:00:02 2: LED_Stripe_WW: error decoding config response Can't locate object method "new" via package "JSON" at ./FHEM/32_LedController.pm line 428.

2017.04.19 13:00:02 3: LED_Stripe_WW DEBUG: doInternalReadingsUpdate: no hsv in cmd hash.
2017.04.19 13:00:02 2: LED_Stripe_CW: error decoding config response Can't locate object method "new" via package "JSON" at ./FHEM/32_LedController.pm line 428.

2017.04.19 13:00:02 3: LED_Stripe_CW DEBUG: doInternalReadingsUpdate: no hsv in cmd hash.
2017.04.19 13:00:10 4:
global LogLevel: 3
module LogLevel: 5
compound LogLevel: 5
2017.04.19 13:00:10 5: LED_Stripe_RGB (Set) called with rgb, busy flag is 0
name is LED_Stripe_RGB, args $VAR1 = 'ff0000';

2017.04.19 13:00:10 3: LED_Stripe_RGB (Set) called with rgb, busy flag is 0
2017.04.19 13:00:10 1: PERL WARNING: Use of uninitialized value $a in concatenation (.) or string at ./FHEM/32_LedController.pm line 945.
2017.04.19 13:00:10 1: PERL WARNING: Use of uninitialized value $b in concatenation (.) or string at ./FHEM/32_LedController.pm line 945.
2017.04.19 13:00:10 5: LED_Stripe_RGB extended args raw: a=, b=
2017.04.19 13:00:10 5: LED_Stripe_RGB t= 1800
2017.04.19 13:00:10 1: PERL WARNING: Use of uninitialized value $a in pattern match (m//) at ./FHEM/32_LedController.pm line 958.
2017.04.19 13:00:10 1: PERL WARNING: Use of uninitialized value $a in pattern match (m//) at ./FHEM/32_LedController.pm line 959.
2017.04.19 13:00:10 5: LED_Stripe_RGB extended args: t = 1800, q = false, d = 1
2017.04.19 13:00:10 5: LED_Stripe_RGB raw: ff0000, r: 255, g: 0, b: 0
2017.04.19 13:00:10 5: LED_Stripe_RGB: called SetHSVColor 0, 100, 100, 2700, 1800, fade, false, 1)
2017.04.19 13:00:10 2: LED_Stripe_RGB: error encoding HSV color request Can't locate object method "new" via package "JSON" at ./FHEM/32_LedController.pm line 554.



Hilft es evtl. wenn ich die Konfiguration des Controllers poste?

vbs

Kannst du schon machen, schadet sicherlich nicht, aber ich kann mir echt nicht vorstellen, dass das was mit deiner Config zu tun hat.

Ich würde jetzt mal versuchen, das Problem etwas einzugrenzen. Zum Beispiel mal ein einfaches Beispiel-Perl-Script laufen lassen, dass JSON::XS benutzt.
ZB sowas hier:
http://stackoverflow.com/questions/14291605/jsonxs-usage-croak

Also:
use JSON::XS;
my $array = ['foo', 'bar'];
print encode_json($array);


Weitere Ideen:
- liegen die Module im Dateisystem wirklich da, wo Perl sie sucht?
- stimmen die Rechte?
- wird die richtige Perl-Binary verwendet oder liegt evtl. noch eine andere (alte) irgendwo im Pfad?

pjakobs

Das sieht alles gut aus.
Ich kann es gerade nicht testen, magst Du mal folgendes versuchen bitte?
In der Datei

/opt/fhem/FHEM/32_LedController.pm


such Dir mal folgende Zeilen:

   31 use Time::HiRes;
   32 use Time::HiRes qw(usleep nanosleep);
   33 use Time::HiRes qw(time);
   34 use JSON::XS;
   35 use Data::Dumper;

(die Zeilennummern bekommst Du in vi, wenn Du :set number eingibst)

und füge vor "use JSON::XS;" eine Zeile "use JSON" ein. etwa so:

   31 use Time::HiRes;
   32 use Time::HiRes qw(usleep nanosleep);
   33 use Time::HiRes qw(time);
   34 use JSON;
   35 use JSON::XS;
   36 use Data::Dumper;


Danach sollest Du fhem neu starten.

Ich habe den Eindruck, dass das vielleicht ein Bug ist. Fhem ist ja ein monolithisches System und im gesamten Kontext muss ein Modul nur einmal eingebunden sein, damit es gefunden wird. Wenn jetzt in meinem - recht kompelxen - Setup json schon irgendwo anders definiert ist, dann braucht ich das nicht mehr und es ist mir nie aufgefallen.

@herrmanj kannst Du da ggf mal drauf sehen? Wie gesagt, ich kann wegen Datenbank Migration gerade nicht testen.

grüße

pj

Kuse

Aha...sieht schon mal anders aus!

Folgende Ausgabe im Log:

2017.04.19 14:48:10 5: LED_Stripe_RGB: calculated RGB as ff0000
2017.04.19 14:48:10 4: LED_Stripe_RGB: begin Readings Update
   hue: 0
   sat: 100
   val:100
   ct : 2700
   HSV: 0,100,100
   RGB: ff0000
2017.04.19 14:48:10 4: LED_Stripe_RGB: got HSV color response
2017.04.19 14:48:10 2: LED_Stripe_RGB: error decoding HSV color response malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<H2 color='#444'>401...") at ./FHEM/32_LedController.pm line 670.

2017.04.19 14:48:10 4: LED_Stripe_RGB: begin Readings Update
   hue: 0
   sat: 100
   val:100
   ct : 2700
   HSV: 0,100,100
   RGB: ff0000
2017.04.19 14:51:11 3: LED_Stripe_CW (Set) called with on, busy flag is 0
2017.04.19 14:51:11 3: LED_Stripe_CW DEBUG: Internal hue - helper: 0 and direct: 20
2017.04.19 14:51:12 2: LED_Stripe_CW: error decoding HSV color response malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<H2 color='#444'>401...") at ./FHEM/32_LedController.pm line 670.

2017.04.19 14:51:16 3: LED_Stripe_WW (Set) called with dimup, busy flag is 0
2017.04.19 14:51:16 1: PERL WARNING: Use of uninitialized value $dim in addition (+) at ./FHEM/32_LedController.pm line 274.
2017.04.19 14:51:16 3: LED_Stripe_WW DEBUG: Internal hue - helper: 0 and direct: 0
2017.04.19 14:51:16 2: LED_Stripe_WW: error decoding HSV color response malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<H2 color='#444'>401...") at ./FHEM/32_LedController.pm line 670.


Folgendes wurde geändert...
Berechtigungen geprüft:

-rw-r--r-- 1 fhem dialout  50787 Apr 19 14:46 32_LedController.pm


Code-Zeile in '/opt/fhem/FHEM/32_LedController.pm' eingefügt:
34   use JSON;

FHEM neu gestartet:


Modul-Definition:

defmod LED_Stripe_RGB LedController 192.168.2.40 RGB
attr LED_Stripe_RGB alias LED_260
attr LED_Stripe_RGB colorTemp 2700
attr LED_Stripe_RGB defaultRamp 1800
attr LED_Stripe_RGB defaultSat 100
attr LED_Stripe_RGB defaultVal 20
attr LED_Stripe_RGB group Aquarium
attr LED_Stripe_RGB icon black_FS20.on
attr LED_Stripe_RGB room Wohnzimmer
attr LED_Stripe_RGB verbose 5
attr LED_Stripe_RGB webCmd rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb
attr LED_Stripe_RGB widgetOverride rgb:colorpicker,rgb

setstate LED_Stripe_RGB on
setstate LED_Stripe_RGB 2017-04-19 14:48:10 ct 2700
setstate LED_Stripe_RGB 2017-04-19 14:48:10 hsv 0,100,100
setstate LED_Stripe_RGB 2017-04-19 14:48:10 hue 0
setstate LED_Stripe_RGB 2017-04-19 14:48:10 rgb ff0000
setstate LED_Stripe_RGB 2017-04-19 14:48:10 sat 100
setstate LED_Stripe_RGB 2017-04-19 14:48:10 state on
setstate LED_Stripe_RGB 2017-04-19 14:48:10 val 100



defmod LED_Stripe_CW LedController 192.168.2.40 WHITE
attr LED_Stripe_CW alias LED_ColdWarm
attr LED_Stripe_CW colorTemp 2700
attr LED_Stripe_CW defaultRamp 1800
attr LED_Stripe_CW defaultSat 100
attr LED_Stripe_CW defaultVal 20
attr LED_Stripe_CW group Aquarium
attr LED_Stripe_CW room Wohnzimmer
attr LED_Stripe_CW stateFormat state
attr LED_Stripe_CW webCmd dimup:dimdown:on:off

setstate LED_Stripe_CW on
setstate LED_Stripe_CW 2017-04-19 14:51:11 ct 2700
setstate LED_Stripe_CW 2017-04-19 14:51:11 hsv 0,100,20
setstate LED_Stripe_CW 2017-04-19 14:51:11 hue 0
setstate LED_Stripe_CW 2017-04-19 14:51:11 rgb 330000
setstate LED_Stripe_CW 2017-04-19 14:51:11 sat 100
setstate LED_Stripe_CW 2017-04-19 14:51:11 state on
setstate LED_Stripe_CW 2017-04-19 14:51:11 val 20

pjakobs

#232

(before "<H2 color='#444'>401...")


da kommt irgendwo ein Stück html rein?

Welchen Befehl rufst Du auf?

ich schau gerade mal auf Deine Definitionen... ok, Du bist uns voraus!

Wir wollen, für die Zukunft, die Möglichkeit schaffen, einen Controller auf mehrere fhem-Devices aufzuteilen, aktuell kann das weder die Firmware noch das fhem Modul. Ich fürchte, wir haben Dich mit unserer Entwickler-Diskussion da verwirrt.

die korrekte Definition aktuell wäre:


defmod LED_Stripe_RGB LedController 192.168.2.40
attr LED_Stripe_RGB alias LED_260
attr LED_Stripe_RGB colorTemp 2700
attr LED_Stripe_RGB defaultRamp 1800
attr LED_Stripe_RGB defaultSat 100
attr LED_Stripe_RGB defaultVal 20
attr LED_Stripe_RGB group Aquarium
attr LED_Stripe_RGB icon black_FS20.on
attr LED_Stripe_RGB room Wohnzimmer
attr LED_Stripe_RGB verbose 5
attr LED_Stripe_RGB webCmd rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb
attr LED_Stripe_RGB widgetOverride rgb:colorpicker,rgb


Wenn Du einen RGBCW Strip daran hängen hast, dann musst Du auf der Oberfläche des Controllers selbst noch das Farbmodell auf "RGBCW" umstellen, danach kannst Du von Fhem aus mit

set LED_Stripe_RGB hsv 0,100,100

zum Beispiel voll gesättigtes rot in maximaler Helligkeit produzieren.

set LED_Stripe_RGB hsv 0,50,100

hingegen würde die Rot und Weiß LED jeweils zu 50% betreiben.

Aber ich denke, die JSON Sache ist auf alle Fälle ein Bug, den ich flink mal beheben werden. Danke für's Troubleshooten :d

pj

[edit]
Was versuchst Du mit den setstate Kommandos zu erreichen? Ich hab das noch nie benutzt und wenn ich die Doku nicht falsch verstehe, setzen die nur den STATE ...?

Kuse

Zitat von: pjakobs am 19 April 2017, 15:21:32

(before "<H2 color='#444'>401...")


da kommt irgendwo ein Stück html rein?
Welchen Befehl rufst Du auf?

Ich habe ehrlich gesagt keinen Plan wo das herkommt, bin wie gesagt noch FHEM-Beginner.
Zum posten der Logdatei habe ich nur eine der vordefinierten Schaltflächen gedrückt.
siehe ,WebCMD / rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb'

Zitat von: pjakobs am 19 April 2017, 15:21:32
ich schau gerade mal auf Deine Definitionen... ok, Du bist uns voraus!

Wir wollen, für die Zukunft, die Möglichkeit schaffen, einen Controller auf mehrere fhem-Devices aufzuteilen, aktuell kann das weder die Firmware noch das fhem Modul. Ich fürchte, wir haben Dich mit unserer Entwickler-Diskussion da verwirrt.
Irgendsowas hab ich mir schon fast gedacht. Da hab ich mir aus den 236 Seiten zu dem Controller wohl ,,etwas" zu viel  rauskopiert. ::)

Zitat von: pjakobs am 19 April 2017, 15:21:32
die korrekte Definition aktuell wäre:


defmod LED_Stripe_RGB LedController 192.168.2.40
attr LED_Stripe_RGB alias LED_260
attr LED_Stripe_RGB colorTemp 2700
attr LED_Stripe_RGB defaultRamp 1800
attr LED_Stripe_RGB defaultSat 100
attr LED_Stripe_RGB defaultVal 20
attr LED_Stripe_RGB group Aquarium
attr LED_Stripe_RGB icon black_FS20.on
attr LED_Stripe_RGB room Wohnzimmer
attr LED_Stripe_RGB verbose 5
attr LED_Stripe_RGB webCmd rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb
attr LED_Stripe_RGB widgetOverride rgb:colorpicker,rgb


Danke, schau ich mir an.

Zitat von: pjakobs am 19 April 2017, 15:21:32
Wenn Du einen RGBCW Strip daran hängen hast, dann musst Du auf der Oberfläche des Controllers selbst noch das Farbmodell auf "RGBCW" umstellen, danach kannst Du von Fhem aus mit

set LED_Stripe_RGB hsv 0,100,100

zum Beispiel voll gesättigtes rot in maximaler Helligkeit produzieren.

set LED_Stripe_RGB hsv 0,50,100

hingegen würde die Rot und Weiß LED jeweils zu 50% betreiben.

Ich möchte an dem Controller einen RGB-Stripe, einen Warm-Weiß-Stripe und einen Kalt-Weiß-Stripe betreiben.
Die Stripes möchte ich jeweils getrennt ansteuern können. Ziel ist es eine Sonnenaufgang bzw. -untergang sowie Mondlicht zu simulieren.
Geht das dann so überhaupt?

Zitat von: pjakobs am 19 April 2017, 15:21:32
Aber ich denke, die JSON Sache ist auf alle Fälle ein Bug, den ich flink mal beheben werden. Danke für's Troubleshooten :d

Freut mich das ich durch mein Unwissen etwas beitragen konnte.  ;D

Zitat von: pjakobs am 19 April 2017, 15:21:32
[edit]
Was versuchst Du mit den setstate Kommandos zu erreichen? Ich hab das noch nie benutzt und wenn ich die Doku nicht falsch verstehe, setzen die nur den STATE ...?

Eigentlich möchte ich über DOIF steuern.
z.B.
DOELSEIF ([10:00]) (set LED_RGB RGB FFFFFF 1800)
DOELSEIF ([10:01]) (set LED_Stripe_CW pct 10 q; set LED_Stripe_WW pct 10)

die ,setstate' habe ich nicht aktiv gesetzt sondern aus der Definition des Buttons ,Raw definition' kopiert.

Nur zur Sicherheit...
Der Contoller in FHEM muss so definiert werden:
-  'define LED_Stripe_RGB LedController 192.168.X.XXX RGB' oder
-  'define LED_Stripe_RGB LedController 192.168.X.XXX RGBCW' oder
-  'define LED_Stripe_RGB LedController 192.168.X.XXX RGBCWWW'

Wenn ich direkt am Controller in den ,Color Setting' das Output-Model auf ,RGBWWCW' umstelle kommt folgende Meldung nachdem ich den Haken zum Bestätigen gedrückt habe.
,something went wrong while saving the configuration'

Ihr seht schon...schwierig mit mir!  :-\

pjakobs

Also vorneweg:

nein, aktuell kannst Du unterschiedliche Leuchtmittel an einem Controller nicht aufteilen.
Aber: Du kannst alle fünf Farben (R,G,B,WW,CW) als eine einzige Leuchte betreiben und ziemlich frei nutzen.

Ein Beispiel:


define LED_Wo LedController 192.168.29.55
attr LED_Wo colorTemp 2700
attr LED_Wo defaultColor 0,10,80
attr LED_Wo defaultRamp 6000
attr LED_Wo room Licht,Wohnzimmer
attr LED_Wo verbose 2
attr LED_Wo webCmd rgb:rgb FFFFFF:rgb AFAFAF:rgb 7F7F7F:rgb 3F3F3F:rgb 000000:rgb 401020
attr LED_Wo widgetOverride rgb:colorpicker,HSV


das ist mein Wohnzimmerlicht.

Wie Du siehst hat die "define" Zeile erstmal, außer der IP-Adresse, keine Parameter. (Was Du geschrieben hattest ist zwar angedacht, aber noch nicht umgesetzt, wir sind da noch am diskutieren, wie wir das sinnvollerweise machen).

Ich habe an meinen Controllern RGBWW Streifen dran, also nur Warmweiß. Für Wohnräume genügt das völlig.

ein

set LED_Wo 30,50,80

schaltet das Licht ein und zwar mit einer Gesamthelligkeit von 80%, einem leicht gelben Farbton (rot+grün) und einer Farbintensität von 50%, die restlichen 50% Helligkeit kommen von den warmweiß LEDs.

Wenn Du nun WW und CW dran hängen hast, dann wird die colorTemp relevant, denn diese bestimmt das Mischungsverhältnis zwischen den beiden.

Sonnenauf- und Untergänge mache ich hiermit: der Code sollte dann in Deiner 99_myUtils.pm liegen.


sub
sun(@) {
     # Dauer in Minuten (minimum 4 min)
     my $dauer = $_[0];
     my @farben;
     # Initialisiern des Lichterarrays
     my @lichter = ($_[2],$_[3],$_[4],$_[5]);

     if($_[1] eq "Sunrise"){
         @farben = (
             ["240,100,2",1],
             ["240,100,1",1],
             ["240,100,2",20],
             ["240,100,5",20],
             ["240,100,8",20],
             ["210,100,6",30],
             ["190,100,8",1],
             ["90,100,14",1],
             ["70,100,16",1],
             ["10,100,34",2],
             ["30,100,40",30],
             ["40,100,60",30],
             ["45,100,80",30],
             ["50,100,100",30],
             #["50,19,75",3],
             ["50,0,100",30]
         );
     } elsif ($_[1] eq "Sunset"){
         my $val = ReadingsVal($_[2],"val",50);
         @farben = (
             # ["60,70,".$val,60],
             # ["0,50,".$val*0.8,360],
             # ["200,50,".$val*0.5,600],
             # ["240,100,".$val*0.2,600],
             # ["240,100,0",900]
             # sunset in blue
             # ["220,12,".$val*0.95,60],
             # ["228,12,".$val*0.94,60],
             # ["230,44,".$val*0.88,60],
             # ["220,60,".$val*0.79,60],
             # ["223,65,".$val*0.62,60],
             # ["218,66,".$val*0.19,120],
             # ["219,44,".$val*0.06,60],
             # ["219,40,".$val*0.05,60],
             # ["219,50,0",60]
             ["360,45,".$val*0.93,5],
             ["360,48,".$val*0.96,5],
             ["360,59,".$val*0.79,5],
             ["355,63,".$val*0.74,5],
             ["350,57,".$val*0.57,5],
             ["310,22,".$val*0.16,10],
             ["237,26,".$val*0.07,5],
             ["219,31,0",10]

         );
     }

     my $gesamtdauersek = $dauer*60;

     my $dauerfarben = 0;
     foreach my $farbe ( @farben ) {
         $dauerfarben+=$farbe->[1];
     }

     my $anteiligedauer = $gesamtdauersek/$dauerfarben;

     Log3 (undef, 3, "Sun: start $_[1], angegebene Gesamtdauer in Sekunden $gesamtdauersek, Dauer Farben $dauerfarben, Anteil $anteiligedauer");

     # Durchlauf der Farbsimulation
     my $i = 0;
     foreach my $farbe ( @farben ) {
         foreach my $licht ( @lichter ) {
             if(defined $licht) {
                 if($i == 0) {
                     Log3(undef,3,"Sun: set $licht hsv ".($farben[$i][0])." ".ceil($anteiligedauer*($farben[$i][1])));
                     fhem("set $licht hsv ".($farben[$i][0])." ".ceil($anteiligedauer*($farben[$i][1])));
                 } else {
                     Log3(undef,3,"Sun: set $licht hsv ".($farben[$i][0])." ".ceil($anteiligedauer*($farben[$i][1]))." q");
                     fhem("set $licht hsv ".($farben[$i][0])." ".ceil($anteiligedauer*($farben[$i][1]))." q");
                 }
             }
         }
         $i++;
     }
}


Teile des Codes stammen von Sandra Ohmayer (http://www.animeschatten.net)

In meinem Fall triggere ich Sonnenaufgang und Sonnenuntergang per Tasker von meinem Mobiltelefon abhängig von meinem Schlafphasenwecker.

Du kannst noch über das Kommando "raw" alle Kanäle direkt einzeln ansteuern, dann musst Du Dich aber auch vollständig um die Farbmischung kümmern.
Wie gesagt, mehr Funktionalität ist angedacht aber noch nicht umgesetzt. Ich vermute aber, dass das, was Du willst, schon jetzt funktioniert.

Grüße

pj

Kuse

#235
Vielen herzlichen Dank für die Erläuterungen, klasse Support.
Ohne das wäre ich echt am Verzweifeln gewesen.

Ich bau das jetzt mal nach und hoffe das alles so funktioniert.

Edith:
Die Modifikation im Modeul zwecks JSON lass ich vorerst so bis eine neue Version kommt, oder?
Muss ich mir nun noch Gedanken zwecks dem HTML-Fragment machen?

Grüße
Kuse

pjakobs

Zitat von: Kuse am 19 April 2017, 22:28:55
Vielen herzlichen Dank für die Erläuterungen, klasse Support.
Ohne das wäre ich echt am Verzweifeln gewesen.

Ich bau das jetzt mal nach und hoffe das alles so funktioniert.
Edith:
Die Modifikation im Modeul zwecks JSON lass ich vorerst so bis eine neue Version kommt, oder?
yo
Zitat von: Kuse am 19 April 2017, 22:28:55
Muss ich mir nun noch Gedanken zwecks dem HTML-Fragment machen?

Zitat von: Kuse am 19 April 2017, 22:28:55

Grüße
Kuse

MacReiner

Hey Peter

nachdem das flashen mit dem CP2104 gut gelaufen ist, ist einer der Controller mausetot.
Nach dem Anlegen von 12V blinkt die eine blaue LED wunschgemäß auf. Insoweit ist die Welt in Ordnung.
Die 3,3V werden auch erzeugt.
Per WLan ist er nicht erreichbar. Weder macht er sein ursprüngliches WLan auf, noch geht die 192.168..4.1.
Auch die von mir vergebene 192.168.1.102 ist nicht erreichbar.
Neu flashen geht auch nich:
sh-3.2# esptool.py --p /dev/tty.SLAB_USBtoUART -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
sh-3.2# esptool.py --p /dev/tty.usbserial-A50285BI -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Invalid head of packet ('\x16')
sh-3.2# esptool.py --p /dev/tty.usbserial-A50285BI -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Invalid head of packet ('\x00')
sh-3.2# esptool.py --p /dev/tty.usbserial-A50285BI -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
sh-3.2# esptool.py --p /dev/tty.usbserial-A50285BI -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header


Mir gehen die Ideen aus.
Gibt es vielleicht einen Reset durch Drücken der beiden Tasten auf dem Controller?
Hab schon probiert, aber der Kollege schaltet auf stur...
viele Grüße
Reiner

pjakobs

Zitat von: MacReiner am 19 April 2017, 23:26:52
Hey Peter

nachdem das flashen mit dem CP2104 gut gelaufen ist, ist einer der Controller mausetot.
Nach dem Anlegen von 12V blinkt die eine blaue LED wunschgemäß auf. Insoweit ist die Welt in Ordnung.
Die 3,3V werden auch erzeugt.
Per WLan ist er nicht erreichbar. Weder macht er sein ursprüngliches WLan auf, noch geht die 192.168..4.1.
Auch die von mir vergebene 192.168.1.102 ist nicht erreichbar.
Neu flashen geht auch nich:
sh-3.2# esptool.py --p /dev/tty.SLAB_USBtoUART -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
sh-3.2# esptool.py --p /dev/tty.usbserial-A50285BI -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Invalid head of packet ('\x16')
sh-3.2# esptool.py --p /dev/tty.usbserial-A50285BI -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Invalid head of packet ('\x00')
sh-3.2# esptool.py --p /dev/tty.usbserial-A50285BI -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
sh-3.2# esptool.py --p /dev/tty.usbserial-A50285BI -b 115200 write_flash -fm qio 0x00000 rboot.bin
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header


Mir gehen die Ideen aus.
Gibt es vielleicht einen Reset durch Drücken der beiden Tasten auf dem Controller?
Hab schon probiert, aber der Kollege schaltet auf stur...
clr+rst löscht die Konfiguration des Controllers aber nicht den Flash Speicher, aber einen Versuch wäre es wert, vielleicht macht er danach den AP auf.
Dass er sich nicht mehr flashen lässt hab ich noch nicht gesehen. Bist Du sicher, dass alle Verbindungen richtig sind (TR/TX getauscht), dass die Spannung des USB converters auf 3,3V steht? (5V könnte den ESP8266 zerstören).
Du kannst mal ein Terminal aufmachen und schauen, ob Du Boot messages bekommst.

pj

Kurz da auf dem Telefon getippt


MacReiner

Bist du 24h online??  8)

Die Anschlüsse habe ich richtig gesteckt, mehrfach neu gesteckt...
5V hat er nicht gesehen.
Reset ist erfolglos.
Einen anderen Controller kann ich flashen, ich stecke nur die vier Leitungen um...
Er mag mich nicht mehr...
viele Grüße
Reiner