FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: sim am 07 November 2018, 22:29:31

Titel: Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: sim am 07 November 2018, 22:29:31
Hallo zusammen,

momentan versuche ich einen Pin per PWM zu steuern und den PWM Wert auszulesen.

In Easyesp ist der Pin als Switch Input definiert.
Das Ansteuern funktioniert auch, momentan händisch durch set pwm xx wert im Device.
Der Status der mir angezeigt wird wechselt dann halt dauernt von on / off.

Statt dem binärsignal würde ich halt gerne den Wert anzeigen.
Auslesen kann ich den PWM Status per IP\control?cmd=status,pwm xx

Mein Problem ist wie ich das mit dem Device verknüpfe.
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: r00t2 am 08 November 2018, 09:56:11
Zitat von: sim am 07 November 2018, 22:29:31
Hallo zusammen,

momentan versuche ich einen Pin per PWM zu steuern und den PWM Wert auszulesen.
Zum Verständnis:
1) Soll ein Pin am ESP dafür verwendet werden ein PWM Signal auszugeben (davon gehe ich mal schwer aus) oder
2) Soll ein Pin am ESP dafür verwendet werden, um ein dort angelegtes PWM Signal auszulesen?

Denn davon ist abhängig, ob:
Zitat von: sim am 07 November 2018, 22:29:31
In Easyesp ist der Pin als Switch Input definiert.
das hier richtig ist. Und das ist ziemlich sicher falsch, wenn ein PWM Signal ausgegeben werden soll, denn dann muss der Pin wohl ein PWM Output sein.

Und Du meinst "ESPEasy", nicht "Easyesp", oder?

Außerdem: Soll das ganze aus FHEM heraus funktionieren oder geht es Dir lediglich darum, wie man es auf dem ESP direkt implementiert?

Zitat von: sim am 07 November 2018, 22:29:31
Das Ansteuern funktioniert auch, momentan händisch durch set pwm xx wert im Device.
Der Status der mir angezeigt wird wechselt dann halt dauernt von on / off.
Was ja prinzipiell mal nicht falsch ist, da die PWM dafür sorgt, dass regelmäßig an/aus geschaltet wird.

BTW: Schon mal auf das Wiki geschaut? => https://www.letscontrolit.com/wiki/index.php/GPIO
Auch das Forum ist aufschlussreich: https://www.letscontrolit.com/forum/viewtopic.php?t=320

Daraus:

There's a 'status' command for plugins that handle GPIO's and it returns a json format pinstate.

Sample:
status,gpio,2

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:

{
"log": "",
"plugin": 1,
"pin": 2,
"mode": "PWM",
"state": 512
}
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: sim am 09 November 2018, 00:21:15
Hallo root2,

danke für deine Antwort.
ESPEasy ist richtig, das drehe ich irgentwie gerne rum..

Der "Ausgang" ist als Switch Input definiert damit er in FHEM angelegt wird.
(Ausgang gibts bei ESPEasy nicht)

Mit webCmd pwm 14 0:pwm 14 400 kann ich den ausgang jetzt ansteuern.

Durch set status gpio 14 bekomme ich z.Bsp. als Rückmeldung:
GPI: 400 Swi: pwm 14 1

Der Status Swi wechselt dann von "pwm 14 1" zu "pwm:0" (im PWM Takt),
GPI bleibt unverändert auch wenn ich die ansteuerung ändere. Bei einer Änderung verschwindet der GPI Status dann.
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: sparkiie am 08 Mai 2019, 21:37:36
Konntest du das Problem lösen?
Mir geht es gerade ähnlich. PWM senden geht, empfangen leider nicht...
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: DasQ am 09 Mai 2019, 04:56:50
Nur kurz da vom handy. Im Reiter Hardware lassen sich ein.- und Ausgänge konfigurieren. PWM würde ich am analogeingang auslesen.
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: sparkiie am 09 Mai 2019, 05:48:59
Mir geht es eher darum den von FHEM gesetzten PWM Wert als Reading von ESPEASY bestätigt zu bekommen.

Das funktioniert bei mir leider nicht.
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: Wernieman am 09 Mai 2019, 08:35:31
Sofern ich weiß geht es so nicht ...
wenn  es Dir nur um die Bestätigung des befehlsempfang geht, mußt Du dann doch wohl etwas basteln:
Eine Grundidee: Baue Dir eine Rul in espeasy, welche Du aus FHEM ansprichst. In dieser Rule setzt Du den PWM Wert und einen passenden Dummy, den Du zurücksenden lässt.

Ist mir persönlich aber Oversized. Entweder bekommt er espeasy den PWM, dann geht es komplett sauber durch, oder die Übertragung schlägt fehl, das sollte/muß aber fhem selber merken.
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: sparkiie am 09 Mai 2019, 17:35:47
Mir geht es eigentlich wirklich nur darum, dass ich in FHEM den aktuellen PWM Wert sehen möchte. Es geht um eine Lüftersteuerung, die von verschiedenen notifys gesteuern wird.
Das mit der Rule hatte ich mir auch bereits überlegt, allerdings werden für 'normale' Devices ja auch Readings angelegt, wieso dann nicht für GPIOs die PWM steuern?!

Ich lassen nun im notify, wenn der PWM Wert an ESPEasy gescickt wird, ein weiteres Reading mit dem PWM Wert im ESP Devive anlegen...
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: DasQ am 09 Mai 2019, 17:52:41
Und wie kommuniziert dein espeasy mit FHEM? Mqtt? HTTP? Telepathie? Briefeschreiben?
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: sparkiie am 09 Mai 2019, 18:01:43
FHEM HTTP Protocol
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: DasQ am 09 Mai 2019, 18:24:30
Dann versteh ich den Satz nicht.

Zitat von: sparkiie am 09 Mai 2019, 17:35:47
allerdings werden für 'normale' Devices ja auch Readings angelegt, wieso dann nicht für GPIOs die PWM steuern?!
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: sparkiie am 09 Mai 2019, 18:32:42
Weil hier nur ein Reading angelegt und aktualisiert wird, wenn GPIO on/off ist - aber nicht wenn es PWM steuert...
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: Wernieman am 09 Mai 2019, 18:45:32
Eben weil PWM mehr als eine GPIO Steuerung. Eigentlich mißbrauchst Du auch beim Rückkanal GPIO das "Schalterdevice". Der Schalter ist ein Input-Gerät, Wenn Du denn GPIO setzt, verwendest Du aber ein Outputgerät. Dann es trotzdem funktioniert .... ist eigentlich der "Zufall".
Kurzgefasst: Es könnte durchaus sein, das es in einer Zukünftigen Version von ESPEasy nicht mehr so funktionieren wird .... weil es eigentlich der Logik widerspricht.

Du hast doch bestimmt innerhalb von FHEM den PWM-Wert. Warum brauchst Du Ihn dann nochmals vom Gerät? Schließlich mupt Du den Wert haben, bevor Du Ihn zum ESPEasy schickst ...
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: sparkiie am 09 Mai 2019, 18:48:51
So mache ich es ja nun auch.
Ich bin halt vom ESPeasy mit ESPEasy FHEM Modul verwöhnt....

Btw. ich nutze natürlich kein GPIO Device gleichzeitig zum PWM steuern, war nur beispielhaft!
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: DasQ am 10 Mai 2019, 08:53:21
ja da wirst wohl um die rules (https://www.letscontrolit.com/wiki/index.php/Tutorial_Rules#SendToHTTP) nicht rum kommen.

ZitatSendToHTTP

To send a message to another device, like a command to switch on a light to Domoticz

On System#Boot do    //When the ESP boots, do
   timerSet,1,10      //Set Timer 1 for the next event in 10 seconds
endon

On Rules#Timer=1 do  //When Timer1 expires, do
   SendToHTTP 192.168.0.243,8080,/json.htm?type=command&param=switchlight&idx=174&switchcmd=On
endon

Many users have reported problems with commands being truncated, particularly when trying to send commands to domoticz. It seems to be a parsing error. There is the following workaround

  SendToHTTP 192.168.0.243,8080,/json.htm?type=param=switchlight&command&idx=174&switchcmd=On

da ich aber von dem espeasy-fhemmodul kein plan habe, da ich selbst nur mqtt einsetz, kann ich dir bei der formulierung des links nicht weiter helfen.
und wie du das feedback triggerst musst halt selbst entscheiden.
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: frank am 10 Mai 2019, 09:30:54
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.
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: dev0 am 10 Mai 2019, 11:36:30
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
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: stefanru am 22 Januar 2020, 12:50:54
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
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: dev0 am 22 Januar 2020, 15:59:10
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.
Titel: Antw:Easyesp Pin mit PWM ansteuern und auslesen
Beitrag von: stefanru am 22 Januar 2020, 20:55:12
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