ESP RGBWW Wifi Led Controller - fhem - Modul

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

Vorheriges Thema - Nächstes Thema

Tom71

@vbs
Nein ich lösche nur das Off-Notify und lege es neu an: LedControllerBad_Off, damit das Licht nach 10 min wieder ausgeht. Ich wollte nicht das off vom Motion Detect benutzen.

Ich sehe aber in meinem Log-File öfter ein:

/opt/fhem/log/fhem-2018-05.log:2018.05.09 09:44:38 2: LedController2: error http://192.168.0.25/info?: empty answer received retrieving info
/opt/fhem/log/fhem-2018-05.log:2018.05.09 09:45:04 2: LedController2: error http://192.168.0.25/config?: empty answer received retrieving config
/opt/fhem/log/fhem-2018-05.log:2018.05.09 09:45:08 2: LedController2: EspLedController_ParseBoolResult error: http://192.168.0.25/config?: empty answer received
/opt/fhem/log/fhem-2018-05.log:2018.05.09 09:45:09 2: LedController2: error http://192.168.0.25/config?: empty answer received retrieving config

Homematic | RaspberryMatic

vbs

Achso ok, verstehe. Also ich hab das durchaus sporadisch auch schon erlebt, aber konnte mir darauf bisher noch keinen Reim machen. Ein Wireshark/tcpdump von dem Fall wäre mal interessant, ob es wirklich so passiert wie es sich anhört und der Controller eine komplett leere HTTP-Antwort liefert. Ich kann es bei mir aber nicht gezielt reproduzieren.

crispyduck

Hallo, mal eine Frage die indirekt mit dem Thema was zu tun hat.
Was benutzt ihr eigentlich alles zur Steuerung/zum manuell schalten ausser Tablet und Smartphone?

Gibt es irgend eine rgb wlan Fernbedienung,...?

Hätte gerne für meine Terassenbeleuchtung einen zusätzlichen Taster, Schalter, Touchpad,...

Einfachste Variante zum rein ein und ausschalten ohne viel Basteln wäre wohl ein Amazon Dash button.
Gibt es sonst irgendetwas, um relativ simpel meinen in FHEM eingebundenen ESP RGBWW Controller  anzusteuern, vielleicht sogar mit Touchpad,...?

Danke,
crispyduck

RaspiLED

Hi,

Du könntest diese Fernbedienung benutzen:
http://s.aliexpress.com/zayIFBz2

Die kann man über a-culfw oder Signalduino als 4 IT Devices hören und dann auf den Controller umsetzen.

Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

crispyduck

Danke, okay, von denen habe ich eh ein paar daheim.
Würde aber gerne irgendetwas einsetzen was direkt wlan kann.

Klar, könnte auch einen ESP her nehmen, paar Taster dran,... ist vielleicht mal ein Projekt für den Winter, eine Fernbedienung mit ESP8266 für alles mögliche im Haus.

Suche jetzt aber ersteinmal was einfaches ohne viel Basteln was ich neben die Balkontüre an die Wand kleben kann um zumindest ein und aus zu schalten oder vielleicht noch mehr.

Wollte mir dafür jetzt schon einen Dash button bestellen, aber dachte jetzt ich frage mal wie andere das so umgesetzt haben.

Lg,
crispyduck

Tom71

@vbs
Es ist kompliziert. Es hat auf alle Fälle mit meinem notify-Code zu tun. Ich habe ihn ändern müssen zu:
fhem 'set LedController3 rgb F7B00A; set LedController2 rgb F7B00A';

Damit werden beide Kommandos ausgeführt. Mein alter Code mit:
fhem("set LedController2 rgb $rgb ");;;;  \
        fhem("set LedController3 rgb $rgb ");;;;\

funktionierte nicht mehr. Es sah im tcp-Dump so aus, als ob der Befehl nicht richtig ausgeführt worden ist:
09:18:22.549733 IP fhem.fritz.box.38616 > ledcontroller3.fritz.box.http: Flags [S], seq 324373229, win 29200, options [mss 1460,sackOK,TS val 290342989 ecr 0,nop,wscale 7], length 0 E..<..@.@......&.......P.U........r.............NHM........
09:18:22.552686 IP ledcontroller3.fritz.box.http > fhem.fritz.box.38616: Flags [S.], seq 38711, ack 324373230, win 5560, options [mss 1390], length 0 E..,.y....9........&.P.....7.U..`...4u.....n..
09:18:22.552889 IP fhem.fritz.box.38616 > ledcontroller3.fritz.box.http: Flags [.], ack 1, win 29200, length 0 E..(..@.@......&.......P.U.....8P.r.....
09:18:23.856948 IP fhem.fritz.box.38616 > ledcontroller3.fritz.box.http: Flags [P.], seq 1:247, ack 1, win 29200, length 246: HTTP: POST /color HTTP/1.0 E.....@.@......&.......P.U.....8P.r.....POST /color HTTP/1.0
Host: 192.168.0.21
Accept-Encoding: gzip,deflate
User-Agent: fhem
Accept: application/json
Content-Type: application/json
Content-Length: 75

{"d":"1","t":"1000","hsv":{"h":42,"s":96,"v":97},"cmd":"fade","q":"single"}
09:18:23.863191 IP ledcontroller3.fritz.box.http > fhem.fritz.box.38616: Flags [F.], seq 1, ack 247, win 5314, length 0 E..(.z....9........&.P.....8.U..P...K.........
09:18:23.864789 IP fhem.fritz.box.38616 > ledcontroller3.fritz.box.http: Flags [F.], seq 247, ack 2, win 29200, length 0 E..(..@.@......&.......P.U.....9P.r.....
09:18:23.869308 IP ledcontroller3.fritz.box.http > fhem.fritz.box.38616: Flags [.], ack 248, win 5313, length 0 E..(.{....9........&.P.....9.U..P...K.........


Na. Egal. Jetzt geht es wieder und ich muss nicht im dunkeln tappen.
Gruss Thomas

 
Homematic | RaspberryMatic

vbs

Ok, danke dir! Was ist denn der maßgebliche Unterschied bei dem notify-Code? Die Reihenfolge der Geräte? Der Rest sieht ja erstmal inhaltlich gleich bzw. hinreichend ähnlich aus.

Der HTTP-Request sieht jetzt erstmal ok aus, bin ich der Meinung. Ist der Dump komplett? Also gab es daraufhin vom Controller überhaupt keine Antwort (abgesehen von ACK-Paketen)?

Tom71

#352
Richtig, da kam nichts weiter. Ein Vollständiger Aufruf, z.B. über curl sah so aus:
09:19:46.181168 IP fhem.fritz.box.38750 > ledcontroller3.fritz.box.http: Flags [S], seq 2307447724, win 29200, options [mss 1460,sackOK,TS val 290351353 ecr 0,nop,wscale 7], length 0 E..<.U@.@......&.....^.P..........r.............Nh.........
09:19:46.183573 IP ledcontroller3.fritz.box.http > fhem.fritz.box.38750: Flags [S.], seq 42171, ack 2307447725, win 5560, options [mss 1390], length 0 E..,.}....9........&.P.^........`..._x.....n..
09:19:46.183859 IP fhem.fritz.box.38750 > ledcontroller3.fritz.box.http: Flags [.], ack 1, win 29200, length 0 E..(.V@.@......&.....^.P........P.r.....
09:19:46.240583 IP fhem.fritz.box.38750 > ledcontroller3.fritz.box.http: Flags [P.], seq 1:247, ack 1, win 29200, length 246: HTTP: POST /color HTTP/1.0 E....W@.@......&.....^.P........P.r.....POST /color HTTP/1.0
Host: 192.168.0.21
Accept-Encoding: gzip,deflate
User-Agent: fhem
Accept: application/json
Content-Type: application/son
Content-Length: 75

{"q":"single","cmd":"fade","d":"1","t":"1000","hsv":{"v":97,"h":42,"s":96}}
09:19:46.265940 IP ledcontroller3.fritz.box.http > fhem.fritz.box.38750: Flags [.], seq 1:170, ack 247, win 5314, length 169: HTTP: HTTP/1.1 200 OK E....~....9........&.P.^........P...FP..HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json
Content-Length: 16
Connection: keep-alive
Server: HttpServer/Sming

{"success":true}
09:19:46.266110 IP fhem.fritz.box.38750 > ledcontroller3.fritz.box.http: Flags [.], ack 170, win 30016, length 0 E..(.X@.@......&.....^.P.......eP.u@....
09:19:47.576295 IP ledcontroller3.fritz.box.http > fhem.fritz.box.38750: Flags [F.], seq 170, ack 247, win 5314, length 0 E..(......9........&.P.^...e....P...vE........
09:19:47.620395 IP fhem.fritz.box.38750 > ledcontroller3.fritz.box.http: Flags [.], ack 171, win 30016, length 0 E..(.Y@.@......&.....^.P.......fP.u@....
09:19:47.624752 IP fhem.fritz.box.38750 > ledcontroller3.fritz.box.http: Flags [F.], seq 247, ack 171, win 30016, length 0 E..(.Z@.@......&.....^.P.......fP.u@....
09:19:47.629024 IP ledcontroller3.fritz.box.http > fhem.fritz.box.38750: Flags [.], ack 248, win 5313, length 0 E..(......9........&.P.^...f....P...vE........


Ich hatte vorher im notify-Code mehrere Aufrufe in der Form:
fhem("set LedController2 rgb  F7B00A");
fhem("set LedController3 rgb  F7B00A");

Da ist nach einem Fhem-Update vor ca. 3 Wochen dann nichts mehr passiert. Bis dahin funktionierte der Aufruf. Zum Vergleich nochmal der alte Code:

define Bewegungsmelder_Bad_On notify HM_Bad_Motion:motion:.on.*  {  \
    if($hour < 5)\
    {\
        fhem("set LedController2 rgb 130400");;;;\
        fhem("set LedController3 rgb 130400");;;;\
    }else {\
        fhem("set LedController2 rgb F7B00A");;;;  \
        fhem("set LedController3 rgb F7B00A");;;;\
   }\
   \
   fhem("delete LedControllerBad_Off");;;;\
   fhem("define LedControllerBad_Off at +00:10:00 set LedController2 off;;;; set LedController3 off")\
}


Wenn ich jetzt im notify mehrere einzelne fhem-Commands absetze, passiert eben der Fehler. Finde ich irgendwie komisch. Ich bekomme es aber nicht so einfach in eine Zeile. :-(
Und jetzt geht auch auch schon wieder nicht mehr. Ich bin am verzweifeln:

define Bewegungsmelder_Bad_On notify HM_Bad_Motion:on.* {  \

     if($hour < 5) {\
        if (defined("LedControllerBad_Off")) {\
           fhem 'set LedController3 rgb 130400;; set LedController2 rgb 130400;; delete LedControllerBad_Off;; define LedControllerBad_Off at +00:10:00 set LedController2 off;;;; set LedController3 off ';;\
       } else {\
           fhem 'set LedController3 rgb 130400;; set LedController2 rgb 130400;; define LedControllerBad_Off at +00:10:00 set LedController2 off;;;; set LedController3 off ';;\
       }\
     } else {\
        if (defined("LedControllerBad_Off")) {\
           fhem 'set LedController3 rgb F7B00A;; set LedController2 rgb F7B00A;; delete LedControllerBad_Off;; define LedControllerBad_Off at +00:10:00 set LedController2 off;;;; set LedController3 off ';;\
       } else {\
           fhem 'set LedController3 rgb F7B00A;; set LedController2 rgb F7B00A;; define LedControllerBad_Off at +00:10:00 set LedController2 off;;;; set LedController3 off ';;\
       }\
    }\
}

Es wird wieder nur ein Request rausgeschickt, aber keine Response bekommen. Führe ich nur einen Befehl aus, klappt es.


Update: Es scheint mit dem at-Timer zusammen zuhängen. Ich habe den erst einmal gelöscht und mich an den OFF-Notify vom Bewegungsmelder gehangen.
Schöner wäre es aber mit einem on-for-timer. So geht es auch:
fhem 'set LedController2,LedController3 rgb F7B00A';
fhem 'set LedController2,LedController3 on-for-timer 300';

Homematic | RaspberryMatic

Per

Zitat von: crispyduck am 10 Mai 2018, 09:10:01Wollte mir dafür jetzt schon einen Dash button bestellen, aber dachte jetzt ich frage mal wie andere das so umgesetzt haben.
WLAN ist suboptimal, weil zu energieintensiv. Schau, welches System du bereits verbaut hast (HM, IT o.ä.) oder welches dir sympathisch erscheint und besorg dir dafür Wandtaster und/oder Fernbedienungen. Ich bin dabei, auf EnOcean umzustellen, braucht nie wieder Batterien!
WLAN und (Deep-)Sleep spart zwar auch Strom, aber dann hast du keine prompte Rückmeldung, weil beim Schalten erst das Netz aufgebaut wird.
Interesseant wäre ne FB, die im Liegen "sleept" und beim Anheben schon Netz aufbaut. Die würde auch quasi sofort reagieren.

crispyduck

Hi,

Danke, ich habe allerdings keine anderen Funk Komponenten. Das meiste ist bei mir via LAN oder Modbus RTU angebunden, oder eben direkt an den GPIO Ports der Raspi.

Habe es übrigens auch schon gelöst, habe einen ESP8266 den ich ohnehin rum liegen hatte in das Gehäuse der ursprünglichen Fernbedienung meiner RGB Leuchte verbaut.

Anfangs habe ich die Schaltung noch komplett stromlos geschalten Energie zu sparen (Selbsthaltung mit P MOSFET), habe dann aber auf deep sleep gewechselt da es so nur etwas länger als 500ms dauert bis Verbindungsaufbau und Schaltbefehl durch sind.

Um alle 10 Tasten der Fernbedienung nutzen zu können habe ich diese teilweise mittels Dioden auf die GPIO ports geschalten, so werden z.B. bei Taste 8 und 9 zwei GPIO ports auf high geschalten.

Für meine Anwendung vollkommen ausreichend. Meine Leuchte kann ich damit ein und ausschalten, dimmen und durch die Farben schalten.

Mit den restlichen Rasten wird dann noch die Gartenbewässerung angesteuert.

Mit 2 AA Batterien die in das Gehäuse passen, sollte das eigentlich mindestens ein Jahr laufen.

Lg
Crispyduck

Per

Zitat von: crispyduck am 16 August 2018, 06:26:20Mit 2 AA Batterien die in das Gehäuse passen, sollte das eigentlich mindestens ein Jahr laufen.
Halt uns dazu mal auf dem Laufenden!

Frank_Huber

Hi,

kurzes Anliegen zum Modul,

Ich habe versucht mir ein "presence" UserReading anzulegen mit present/absent, aber da der Verbindungsstatus nur im Reading state steckt scheint das nicht zu funktionieren.
attr ESP_RGBWW_2 userReadings presence {ReadingsVal("$NAME","state","") eq "disconnected" ? "absent" : "present"}

wäre es daher eventuell möglich das "presence" reading direkt im Modul mit zu integrieren?

Oder mache ich mit dem UserReading etwas falsch?
in anderen Geräten (nicht auf "state") funktioniert es.

Danke & Grüße
Frank

vbs

Hi Frank, kannst du genauer sagen, was nicht funktioniert? Reading wird nicht geupdatet? Und ein List vom Device bitte.

Frank_Huber

Ja, Das Userreading wird nicht aktualisiert, es ging einmal auf "present" und ist seither stumm.

List:
Internals:
   DEF        192.168.12.17
   DeviceName 192.168.12.17:9090
   FUUID      5edd50b4-f33f-b480-b0bc-6c0243e04cd56c2e
   IP         192.168.12.17
   LAST_RECV  1595934828.57405
   NAME       ESP_RGBWW_2
   NEXT_OPEN  1595934895
   NR         224
   NTFY_ORDER 50-ESP_RGBWW_2
   PARTIAL   
   PORT       9090
   STATE      disconnected
   TYPE       EspLedController
   OLDREADINGS:
   READINGS:
     2020-07-26 22:44:25   colorMode       hsv
     2020-07-28 11:22:37   config-color-brightness-blue 100
     2020-07-28 11:22:37   config-color-brightness-cw 100
     2020-07-28 11:22:37   config-color-brightness-green 100
     2020-07-28 11:22:37   config-color-brightness-red 100
     2020-07-28 11:22:37   config-color-brightness-ww 100
     2020-07-28 11:22:37   config-color-colortemp-cw 6000
     2020-07-28 11:22:37   config-color-colortemp-ww 2700
     2020-07-28 11:22:37   config-color-hsv-blue 0
     2020-07-28 11:22:37   config-color-hsv-cyan 0
     2020-07-28 11:22:37   config-color-hsv-green 0
     2020-07-28 11:22:37   config-color-hsv-magenta 0
     2020-07-28 11:22:37   config-color-hsv-model 0
     2020-07-28 11:22:37   config-color-hsv-red 0
     2020-07-28 11:22:37   config-color-hsv-yellow 0
     2020-07-28 11:22:37   config-color-outputmode 3
     2020-07-28 11:22:37   config-color-startup_color last
     2020-07-28 11:22:37   config-events-color_interval_ms 500
     2020-07-28 11:22:37   config-events-color_mininterval_ms 500
     2020-07-28 11:22:37   config-events-server_enabled 1
     2020-07-28 11:22:37   config-events-transfin_interval_ms 1000
     2020-07-28 11:22:37   config-general-device_name ESP_RGBWW_2
     2020-07-28 11:22:37   config-general-pin_config 13,12,14,5,4
     2020-07-28 11:22:37   config-network-ap-password rgbwwctrl
     2020-07-28 11:22:37   config-network-ap-secured 0
     2020-07-28 11:22:37   config-network-ap-ssid RGBWW10982360
     2020-07-28 11:22:37   config-network-connection-dhcp 1
     2020-07-28 11:22:37   config-network-connection-gateway 0.0.0.0
     2020-07-28 11:22:37   config-network-connection-ip 0.0.0.0
     2020-07-28 11:22:37   config-network-connection-netmask 0.0.0.0
     2020-07-28 11:22:37   config-network-mqtt-enabled 0
     2020-07-28 11:22:37   config-network-mqtt-password
     2020-07-28 11:22:37   config-network-mqtt-port 1883
     2020-07-28 11:22:37   config-network-mqtt-server mqtt.local
     2020-07-28 11:22:37   config-network-mqtt-topic_base home/
     2020-07-28 11:22:37   config-network-mqtt-username
     2020-07-28 11:22:37   config-ota-url  http://rgbww.dronezone.de/release/version.json
     2020-07-28 11:22:37   config-security-api_secured 0
     2020-07-28 11:22:37   config-sync-clock_master_enabled 0
     2020-07-28 11:22:37   config-sync-clock_master_interval 30
     2020-07-28 11:22:37   config-sync-clock_slave_enabled 0
     2020-07-28 11:22:37   config-sync-clock_slave_topic home/led1/clock
     2020-07-28 11:22:37   config-sync-cmd_master_enabled 0
     2020-07-28 11:22:37   config-sync-cmd_slave_enabled 0
     2020-07-28 11:22:37   config-sync-cmd_slave_topic home/led1/command
     2020-07-28 11:22:37   config-sync-color_master_enabled 0
     2020-07-28 11:22:37   config-sync-color_master_interval_ms 0
     2020-07-28 11:22:37   config-sync-color_slave_enabled 0
     2020-07-28 11:22:37   config-sync-color_slave_topic home/led1/color
     2020-07-28 11:22:37   ct              0
     2020-07-28 11:22:37   hsv             271.96,100,0
     2020-07-28 11:22:37   hue             271.96
     2020-07-28 11:22:37   info-connection-dhcp 1
     2020-07-28 11:22:37   info-connection-gateway 192.168.12.254
     2020-07-28 11:22:37   info-connection-ip_address 192.168.12.178
     2020-07-28 11:22:37   info-connection-mac 840d8ea793d8
     2020-07-28 11:22:37   info-connection-netmask 255.255.255.0
     2020-07-28 11:22:37   info-connection-ssid W12_IoT
     2020-07-28 11:22:37   info-current_rom_slot 1
     2020-07-28 11:22:37   info-deviceid   10982360
     2020-07-28 11:22:37   info-event_num_clients 1
     2020-07-28 11:22:37   info-firmware   vbs35
     2020-07-28 11:22:37   info-heap_free  22032
     2020-07-28 11:22:37   info-sming_version 3.5.1
     2020-07-28 11:22:37   info-uptime     0
     2020-07-28 11:22:37   info-webapp_version 0.3.3-shojo7
     2020-07-28 11:22:37   pct             0
     2020-07-28 11:22:37   presence        present
     2020-07-28 11:22:37   raw_blue        0
     2020-07-28 11:22:37   raw_cw          0
     2020-07-28 11:22:37   raw_green       0
     2020-07-28 11:22:37   raw_red         0
     2020-07-28 11:22:37   raw_ww          0
     2020-07-28 11:22:37   rgb             000000
     2020-07-28 11:22:37   sat             100
     2020-07-28 13:13:55   state           disconnected
     2020-07-28 11:22:37   stateLight      off
     2020-07-26 22:42:51   tranisitionFinished Rainbow,requeued
     2020-07-28 11:22:37   val             0
   helper:
     isBusy     0
     oldVal     100
     cmdQueue:
     lastCall:
       NAME       
       addr       http://192.168.12.17:80
       auth       0
       displayurl http://192.168.12.17/config?
       errno      113
       header     User-Agent: fhem
Accept: application/json
Content-Type: application/json
       host       192.168.12.17
       loglevel   4
       method     GET
       path       /config?
       protocol   http
       redirects  0
       timeout    30
       url        http://192.168.12.17/config?
       hash:
       sslargs:
Attributes:
   DbLogExclude .*
   group      Hardware
   icon       light_led_stripe_rgb
   room       ESP_RGBWW
   stateFormat R=raw_red | G=raw_green | B=raw_blue | CW=raw_cw | WW=raw_ww
   userReadings presence {ReadingsVal($NAME,"state","") eq "disconnected" ? "absent" : "present"}
   userattr   room_map structexclude
   verbose    0
   webCmd     rgb:on:off:pct

vbs

Sorry, kriege es auch nicht hin mit "state".

Sowas hier funktioniert:
Zitatpresence {ReadingsVal("$NAME","pct","") > 50 ? "absent" : "present"}

Keine Ahnung, was bei state so besonders ist.