Autor Thema: Schalten von GPIO's in ESPEasy durch Fhem  (Gelesen 500 mal)

Offline Gisbert

  • Sr. Member
  • ****
  • Beiträge: 625
  • Das Ziel ist das Ziel !
Schalten von GPIO's in ESPEasy durch Fhem
« am: 15 April 2018, 10:32:39 »
Hallo,

ich hab noch nicht die richtige Information gefunden, mit anderen Wort ich habe schon in der Commandref und Wiki gesucht, bin aber nicht weitergekommen.

Ich möchte auf ESP's, auf denen ESPEasy läuft, die GPIO's durch Fhem steuern.
Dies geht in der folgenden Form und kann in Fhem in der Kommandozeile, in einem DOIF oder notify genutzt werden:
"wget -qO /dev/null http://192.168.178.25/control?cmd=GPIO,0,0&"
In Fhem habe ich eine MQTT_DEVICE angelegt und kann Daten subscribieren, d.h. die Verbindung funktioniert und ich erhalte die gewünschten Informationen.
Ich erhalte bspw. Uptime, Wifi RSSI und den Status des GPIO0 (1 oder 0) vom ESP im Fhem-Device.

Wenn ich den GPIO0 schalten möchte, kommt der obige sperrige Befehl zum Zug.
Meine Frage: Was muss ich tun, damit ich einen einfacheren Befehl wie z.B. "set device on" bekomme?

Mein erfolgloser Versuch:
Im Device habe ich folgendes Attribut definiert:
attr Haushaltsraum.Ventilator publishSet 0 1 /Home/VentilatorIn ESPEasy ist das Subcribe Template entsprechend definiert:
Subcribe Template /Home/Ventilator
Im Log in ESPEasy sind folgende Einträge, wenn ich "set Haushaltsraum.Ventilator 0" sende, aber der Ventilator (GPIO0) wird nicht geschaltet:
1042244482 : MQTT : Topic: /Home/Ventilator
1042244482 : MQTT : Payload: 0

Gibt es eine Idee, wie ich mein Vorhaben umsetzten kann?

Viele Grüße Gisbert
Fhem 5.8 auf RPi3 B, Homematic, HMUART, ESP8266, Sonoff Basic und Dual, 1-Wire-Temperatursensoren, Wlan-Kamera, WH3080-Wettereinheit

Offline eisman

  • Full Member
  • ***
  • Beiträge: 210
Antw:Schalten von GPIO's in ESPEasy durch Fhem
« Antwort #1 am: 15 April 2018, 11:20:15 »
Hi,


z.B.: Rolladen

RO03:off set ESPEasy_ESP33 pcfpulse 2 0 500
gpio 2 für 500ms auf 0
set ESPEasy_ESP33 gpio 2 0 aus
set ESPEasy_ESP33 gpio 2 1 ein
 
oder
Licht

fhem("set ESPEasy_ESP33 nfx line 1 5 0000;");
gruss

ps: vergessen

MQTT:

defmod LED_Flur MQTT_BRIDGE LED_0306_F
attr LED_Flur IODev MQTT
attr LED_Flur devStateStyle style="color:aliceblue;;font-weight:bold;;text-align:right;;"
attr LED_Flur publishReading_FarbeMQTT Haus/ESP36/SK6812/cmd
attr LED_Flur qos 2
attr LED_Flur retain 1
attr LED_Flur room mqtt
attr LED_Flur stateFormat {ReadingsTimestamp($name,"transmission-state","")}

defmod LED_0301_F dummy
attr LED_0301_F alias Nachtlicht<br>Arbeitszimmer
attr LED_0301_F devStateIcon 000000:light_wire_system_1@gray ff0000:light_wire_system_1@red 00ff00:light_wire_system_1@green 0000ff:light_wire_system_1@blue ffff00:light_wire_system_1@yellow 00ffff:light_wire_system_1@cyan ffffff:light_wire_system_1@white
attr LED_0301_F group SK6812
attr LED_0301_F readingList state FarbeMQTT
attr LED_0301_F room nachtlicht
attr LED_0301_F setList state:colorpicker,RGB FarbeMQTT
attr LED_0301_F sortby Nacht0001
attr LED_0301_F stateFormat state
attr LED_0301_F userReadings FarbeMQTT {'nfx line '\
  .ReadingsVal("LED_0301_C","LED-start",1).' '\
  .ReadingsVal("LED_0301_C","LED-ende",1).' ' \
  .ReadingsVal("LED_0301_F","state",0)}
attr LED_0301_F webCmd state:state 000000:state ffffff:state ff0000:state 00ff00:state 0000ff:state ffff00:state 00ffff

attr LED_Flur publishReading_FarbeMQTT Haus/ESP36/SK6812/cmd   wird als string übergeben
attr LED_0301_F userReadings FarbeMQTT  hier wirdder String zusammen gesetzt

defmod espBridge ESPEasy bridge 8383 geht es halt einfacher
« Letzte Änderung: 15 April 2018, 11:36:54 von eisman »
1x FHEM Debian, Homematic / 1x FHEM Debian, FS20 / 1X FHEM Raspberry ,i2c,onewire,gpio
1x MQTT auf Windows 2012 Hyper-V-Server / 5x ESP8266(ESPeasy,ESPlink) mit 7"HMI
1x FHEM Windows / 1x Arduino Mega mit Configurable Firmata 2.06V

Offline Gisbert

  • Sr. Member
  • ****
  • Beiträge: 625
  • Das Ziel ist das Ziel !
Antw:Schalten von GPIO's in ESPEasy durch Fhem
« Antwort #2 am: 15 April 2018, 11:47:03 »
Hallo eismann,

ich hab ESPEasy Build 136 auf dem ESP8266 laufen, ich nutze aber nicht das ESPEasy-Modul in Fhem.
Ich nehme an, dass dein Vorschlag sich auf das ESPEasy-Modul in Fhem bezieht.

Gibt es ohne das ESPEasy-Modul eine Lösung?
Ansonsten muss ich mich mal mit diesem Modul auseinandersetzen.
Bisher habe das ESPEasy-Modul (ohne MQTT) nicht genutzt, da ich eigentlich mit dem Modul MQTT_DEVICE zurecht kam - bis auf die sperrigen Schaltbefehle für die GPIO's.

Viele Grüße Gisbert

Edit: Ich hab zu spät gesehen, dass du deinen Beitrag noch editiert hast - schaue ich mir an.
Fhem 5.8 auf RPi3 B, Homematic, HMUART, ESP8266, Sonoff Basic und Dual, 1-Wire-Temperatursensoren, Wlan-Kamera, WH3080-Wettereinheit

Offline eisman

  • Full Member
  • ***
  • Beiträge: 210
Antw:Schalten von GPIO's in ESPEasy durch Fhem
« Antwort #3 am: 15 April 2018, 12:05:25 »
Hi,

ich gehe grade vom MQTT weg, weil es noch andere Problem gibt,
bei mir laufen auf alle ESP, ESPEasy 2.0 dev13
da hatte ich am anfang immer reboots jetzt laufen sie Perfekt (ipv6 rausgenommen aus dem Netzwerk)

bei dem ESP-Device geht das schalten einfacher.

bei mqtt unbeding die punkte
qos
retain
beachten, so das die nachricht nur einmal gesendet wird. (gab bei mir fehl Schaltung und beim Booten wurde geschaltet)

gruss
1x FHEM Debian, Homematic / 1x FHEM Debian, FS20 / 1X FHEM Raspberry ,i2c,onewire,gpio
1x MQTT auf Windows 2012 Hyper-V-Server / 5x ESP8266(ESPeasy,ESPlink) mit 7"HMI
1x FHEM Windows / 1x Arduino Mega mit Configurable Firmata 2.06V

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4071
    • tech_LogBuch
Antw:Schalten von GPIO's in ESPEasy durch Fhem
« Antwort #4 am: 15 April 2018, 13:15:08 »
ich gehe grade vom MQTT weg, weil es noch andere Problem gibt
EspEasy-spezifisch oder MQTT generell? Hast du ein Beispiel?
In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Offline eisman

  • Full Member
  • ***
  • Beiträge: 210
Antw:Schalten von GPIO's in ESPEasy durch Fhem
« Antwort #5 am: 15 April 2018, 13:20:22 »
hi,

ja, direkt geht schneller und der Aufwand ist geringer

beispiel ist das LED nachtlicht. (open)

neu
sub ledBewegung($$$)
{
  my ($Raum,$Regler,$Farbe) = @_;
  my $Start = ReadingsVal($Raum,"LED-start","");
  my $Ende  = ReadingsVal($Raum,"LED-ende","");
  my $Dim   = ReadingsVal($Raum,"dim","");
 
  fhem("set " . $Regler ." nfx dim " . $Dim . ";");
  fhem("set " . $Regler ." nfx line " . $Start . " " . $Ende . " " . $Farbe . ";");
  return 0;
}

damit steuer ich 5 Räume mit bewegungsmelder und Nachtlicht

gruss
1x FHEM Debian, Homematic / 1x FHEM Debian, FS20 / 1X FHEM Raspberry ,i2c,onewire,gpio
1x MQTT auf Windows 2012 Hyper-V-Server / 5x ESP8266(ESPeasy,ESPlink) mit 7"HMI
1x FHEM Windows / 1x Arduino Mega mit Configurable Firmata 2.06V

Offline eisman

  • Full Member
  • ***
  • Beiträge: 210
Antw:Schalten von GPIO's in ESPEasy durch Fhem
« Antwort #6 am: 15 April 2018, 13:51:45 »
EspEasy-spezifisch oder MQTT generell? Hast du ein Beispiel?

hi,

@hexenmeister

nein mit MQTT habe ich keine Probleme das läuft klasse (ps:hatte von anfang an keine Probleme)

es geht nur den Aufwand und nutzen (Systempflege,Programierung usw.)
und mit ESP Easy kann ich auch zwei Systeme bedienen, ich nutze MQTT z.Z. für einen Raspberry(FHEM) zum daten austausch.
dieser wird aber in nächster Zeit durch einen ESP ersetzt (der CUL USB wird durch MapleCUN netzwerk ersetzt)

gruss
1x FHEM Debian, Homematic / 1x FHEM Debian, FS20 / 1X FHEM Raspberry ,i2c,onewire,gpio
1x MQTT auf Windows 2012 Hyper-V-Server / 5x ESP8266(ESPeasy,ESPlink) mit 7"HMI
1x FHEM Windows / 1x Arduino Mega mit Configurable Firmata 2.06V

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4071
    • tech_LogBuch
Antw:Schalten von GPIO's in ESPEasy durch Fhem
« Antwort #7 am: 15 April 2018, 19:20:49 »
So hat jeder seine Vorlieben. Ich finde MQTT einfacher und übersichtlicher. Zugegeben, die Fummelei mit MQTT_DEVICE und _BRIDGES in FHEM war nicht wirklich ideal, daher schreibe ich gerade ein neues Modul (MQTT_GENERIC_BRIDGE). Damit kann man die MQTT-Einstellungen direkt an den betroffenen Devices konfigurieren.
In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Offline eisman

  • Full Member
  • ***
  • Beiträge: 210
Antw:Schalten von GPIO's in ESPEasy durch Fhem
« Antwort #8 am: 15 April 2018, 19:30:21 »
hi,

das finde ich auch klasse und werde ich mir auch anschauen.
vielleicht macht es dann einige Sachen auch einfacher.
ein paar Projekte habe ich ja auch noch.

gruss
1x FHEM Debian, Homematic / 1x FHEM Debian, FS20 / 1X FHEM Raspberry ,i2c,onewire,gpio
1x MQTT auf Windows 2012 Hyper-V-Server / 5x ESP8266(ESPeasy,ESPlink) mit 7"HMI
1x FHEM Windows / 1x Arduino Mega mit Configurable Firmata 2.06V