Easyesp Pin mit PWM ansteuern und auslesen

Begonnen von sim, 07 November 2018, 22:29:31

Vorheriges Thema - Nächstes Thema

frank

falls ich es richtig verstanden habe, wäre ja auch folgendes möglich:
das erzeugte pwm signal für den lüfter führst du zusätzlich, zb über eine RC-kombination, auf einen analogeingang. bei guter dimensionierung erhälst du am analogeingang eine konstante spannung, wenn der lüfter aktiv ist.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

dev0

Command.ref/ESPEasy:
Zitat
Attribut parseCmdResponse (deprecated, may be removed in later versions)
Used to parse response of commands like GPIO, PWM, STATUS, ...
Specify a module command or comma separated list of commands as argument. Commands are case insensitive.
Only necessary if ESPEasy software plugins do not send their data independently. Useful for commands like STATUS, PWM, ...
Possible values: <set cmd>[,<set cmd>][,...]
Default: status
Eg. attr ESPxx parseCmdResponse status,pwm

Ich habe mich länger nicht mit dem ESPEasy Firmware Quellcode beschäftigt, aber PWM ist mWn zZ. leider nur halbherzig implementiert. Sprich: Die Controller schicken die Werte nicht... Das wurde vor kurzem schon einmal angegangen ist aber wieder zurück gezogen worden, da es Seiteneffekte gab.
Noch gibt es im ESPEasy FHEM Modul aber die Möglichkeit (Workaround), das über den status Befehl abzufragen bzw. das Attribut parseCmdResponse zu setzen. Siehe oben. Das og. Attribut werde ich ggf. aus dem Modul entfernen nachdem die ESPEasy Firmware GPIO/PWM/etc korrekt handhabt, deshalb habe ich es als deprecated markiert

stefanru

Hi,

gibt es hier etwas neues?
Ich bekomme auch keinen PWM Wert.
Im ESPEasy Forum habe ich aber gefunden dass er geliefert werden sollte:
It also works for PWM settings and it does not depend on having a specific task. If you have set a certain IO pin with a remote command, you should be able to retrieve status with the status command. So after using "pwm,2,512", running "status,gpio,2" results into:
CODE: SELECT ALL

{
"log": "",
"plugin": 1,
"pin": 2,
"mode": "PWM",
"state": 512
}
It's a system wide command and should work on serial, http and mqtt.
For mqtt, send the command as payload to <subscription template>/cmd


Siehe:
https://www.letscontrolit.com/forum/viewtopic.php?t=320

Gruß und Danke,
Stefan

dev0

Die gezeigte Rückmeldung scheint immer noch die HTTP Response zu sein, die ich schon als Workaround oben ansprach... Frag die ESP Easy Entwickler auf Github doch besser um Klarheit zu bekommen und eröffne ggf. einen Issue dazu.

stefanru

#19
Ah ok, ich verstehe.

Könnte man es über ein Dummy Device im ESP lösen.
Diese bekommt den Wert von 0 - 1023. Per rule im ESP wird diese an den GPIO per pwm gesetzt.
Somit hätte ich ein Device das den Wert hält und der ESP würde das pwm Gerät nach dessen Wert steuern.

Das müsste doch gehen, oder übersehe ich etwas?

P.S.:
Habe das mal Versucht umzusetzen.
Leider klappt es noch nicht ganz.
Mit der ESPRule:
on dim do
  TaskValueSet 5,1,%eventvalue%
endon
setze ich in ein dummy den Wert den ich mit
userSetCmds
(
on             => { url=>"/control?cmd=event,dim=1023", args => -1},
off            => { url=>"/control?cmd=event,dim=0", args => -1},
dim            => { url=>"/control?cmd=event,dim=", args => -1, widget => "slider,0,1,1023"}
)
setzen will on, off funktioniert auch. Aber wie bekomme ich den Wert des Sliders übertragen?

P.P.S:
Mittlerweile weiß ich dass es am ESP so ankommt:
86728854: EVENT: dim=,271
Das geht natürlich nicht.
Wie bekomme ich das , weg?
Ich versuche mal etwas mit set event rumzuspielen.

P.P.P.S:
Über einen Trick habe ich es jetzt hinbekommen.
Ich übergebe 2 Values. Diese sind Komma getrennt.
(
on             => { url=>"/control?cmd=event,dim=0,1023", args => -1},
off            => { url=>"/control?cmd=event,dim=0,0", args => -1},
dim            => { url=>"/control?cmd=event,dim=0", args => -1, widget => "slider,0,1,1023"}
)

Ich nehme dann nur das 2te in der Rule.
on dim do
  TaskValueSet 5,1,%eventvalue2%
endon

Gibt es einen besseren Weg?

Gruß und Danke,
Stefan