[HowTo] Sonoff - 230V Relais mit ESP8266

Begonnen von gloob, 27 Juni 2016, 14:52:17

Vorheriges Thema - Nächstes Thema

flurin

@Lucky2k12:
Mit dem ds18b20 Sensor geht es auch, bei mir geht es jedoch nur mit einem 4.7K Pull-up Widerstand.
Das Relais lässt sich mit einer einfachen Regel (rule) steuern:


on ds18b20#temperature do
  if [ds18b20#temperature]>27
    gpio,12,1
    gpio,13,0
  else
    gpio,12,0
    gpio,13,1
  endif
endon


Wobei ds18b20 = Name (Task Settings) und temperature = Value Name (Optional Settings).
Falls die Steuerung erweitert werden soll, z.B. zeitabhängig oder Auto ein/aus, dann ist es besser die Steuerung mit FHEM zu lösen.
PS: für solche Fälle verwende ich mqtt und node-red.

JoWiemann

Zitat von: flurin am 21 Juli 2016, 11:44:58
@Lucky2k12:
Mit dem ds18b20 Sensor geht es auch, bei mir geht es jedoch nur mit einem 4.7K Pull-up Widerstand.

Hallo,

wie hast Du den ds18b20 angeschlossen. Parasitär?


Grüße Jörg

Gesendet von iPad mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

flurin

#32
ds18b20 pin1 (GND) an Sonoff pin 4 pin 2
ds18b20 pin2 (Data) an Sonoff pin 5 pin 1
ds18b20 pin3 (Vdd) an Sonoff pin 1 pin 5

Pull-up 4.7K zwischen Data und Vdd.

Also gleich wie bei einem Arduino oder einem Raspberry Pi.

Lucky2k12

Zitat von: flurin am 21 Juli 2016, 12:03:24
ds18b20 pin1 (GND) an Sonoff pin 4
ds18b20 pin2 (Data) an Sonoff pin 5
ds18b20 pin3 (Vdd) an Sonoff pin 1
Danke, werde ich so probieren!

Die Zählrichtung ist bei dir aber von unten nach oben, oder?
Im itead wiki http://wiki.iteadstudio.com/Sonoff_TH ist die Nummerierung anders.
1 - DHT11
2 - GND
3 - TX
4 - RX
5 - 3V3 (hier ist allerdings ein Rechteckiger Lötpad auf der Platine eingezeichnet!?)

Auch die Belegung fürs flashen im howto passt ja irgendwie nicht dazu.
Ich bin verwirrt!
HP T610, HM, Jeelink, LGW, mapleCUL868+434

flurin

#34
Die Nummerierung gemäss itead wiki ist richtig, ich habe es verwechselt! (es gibt leider auch andere Bilder mit der umgekehrten Nummerierung im Netz). Ich habs oben geändert.

Edit:

Im Bild ist entsprechend rot = 3V3, blau= GND und gelb = Data (GPIO14)

Lucky2k12

Heute habe ich mein sonoff endlich mit ESPeasy geflasht bekommen.
Ich hab mir dazu einen FTDI Adapter mit 3.3V Jumper bestellt.
Die Arduino IDE bringt allerdings diverse Fehler:
ESPEasy:99: error: variable or field 'SSDP_schema' declared void
ESPEasy:99: error: 'WiFiClient' was not declared in this scope
ESPEasy:1: error: 'define' does not name a type
In file included from ...

Also habe ich die R108 mit flash.cmd draufgebügelt.
MQTT ist auch auf dem Raspi gemäß Howto installiert.  :D
Jetzt brauche ich noch ein bisschen Hilfe, wie ich den sonoff mit FHEM gekoppelt bekomme.
im Wiki finde ich unter mqtt nicht wirklich was.
HP T610, HM, Jeelink, LGW, mapleCUL868+434

amithlon

Hallo,

MQTT in FHEM selbst:
define mqtt MQTT 127.0.0.1:1883

wenn es auf der selben Installation wie FHEM läuft, sonst natürlich die IP des Mosquitto-Brokers eintragen.

als Beispiel für eine Dose von mir.


# Funk Steckdose
define DOSE_6 MQTT_DEVICE
attr DOSE_6 IODev mqtt
attr DOSE_6 alias Funk 4
attr DOSE_6 devStateIcon .*aus:FS20.off:ein .*ein:FS20.on:aus
attr DOSE_6 group Schalter
attr DOSE_6 publishSet ein aus  Dose/4
attr DOSE_6 room Wohnzimmer
attr DOSE_6 stateFormat state
attr DOSE_6 webCmd :


publishSet bekommt die Payload-Daten, die geschickt werden sollen (ein aus bei mir), danach kommt der Topic, den die Dose subscribed hat (Dose/4 bei mir).

Mit obigen Daten sollte also set DOSE_6 ein und set DOSW_6 aus ausschalten.

Vielleicht hilft das ja erstmal, sonst fragen...

Gruß aus Berlin
Michael

flurin

#37
Es gibt mehrere Lösungen, um ein Sonoff mit oder ohne MQTT zu steuern.
Eine Variante (zur @amithion Lösung) mit ESPEasy und MQTT

Sonoff Konfiguration:

1. Config > Name: sonoff
2. Config > Protocol: OpneHAB MQTT
3. Config > Locate Controller: Use Ip address
4. Config > Controller IP: 192.168.0.32
5. Config > Controller Port: 1883
6. Tools > Advanced > Subscribe Template: %sysname%/control/#
Bemerkung: ohne "/" am Anfang.

In diesem Beispiel ist der MQTT Broker (mosquitto) auf einem RPi mit der IP Adresse 192.168.0.32 installiert.
Das Relais ist mit GPIO-12 fix verknüpft.

Fhem:

1. MQTT Broker definieren:

define mosquitto MQTT 192.168.0.32:1883


2. MQTT Device definieren:

define sonoff_relay MQTT_DEVICE
attr sonoff_relay IODev mosquitto
attr sonoff_relay eventMap /GPIO,12,1:on/GPIO,12,0:off/
attr sonoff_relay publishSet GPIO,12,1 GPIO,12,0 sonoff/control/cmd
attr sonoff_relay stateFormat state


Zum Testen/Debuggen finde ich node-red ideal (bei Raspbian Jessie vorinstalliert).

Z.B. lässt sich die Arbeitsweise von MQTT einfach darstellen und eine Verbindung debuggen (siehe Bild)
Im Debug Tab werden alle Messages protokolliert.

amithlon

Hallo,

zum Debug habe ich MQTT.fx unter Windows laufen.
Um die Zuordnung zwischen I/O und Aktor bzw. Sensor und die Vorverarbeitung muß sich ja sowieso der ESP im MQTT-Client kümmern.
ESPeasy ist mir persöhnlich zuviel "eierlegende Wollmilchsau", das ist keine Kritik. Die Problematik, es aktuell und stabil zu halten dürfte einigen Aufwand erfordern und es muß jemand machen wollen und können ist bei solchen Projekten real.

Außerdem will ich mir den Spaß am Selbermachen nicht nehmen.  ;)

MQTT-Topics sind bei mir normalerweise <Sensortyp>/<Standort>/<Name> und der Payload enthält ein aus oder einen analogwert
Am "anderen Ende" ist mir das egal. ein publish SONOFF/Wohnzimmer/Dose_1 ein soll genau das machen.
Ein subscribe BME280/Balkon/# holt alles von dort: temperatur feuchte luftdruck beleuchtung spannung
In FHEM sind es dann eben Einzelreadings
subscribeReading_volt BME280/Balkon/Spannung
subscribeReading_tem BME280/Balkon/Temperatur
usw.

Wenn ich in FHEM umsortiere ist es so für mich lesbarer und wenn ich in MQTT.fx testen will auch.

Gruß aus Berlin
Michael

Lucky2k12

Hallo und Danke @amithlon , @flurin

Ich hab jetzt einen Breadboardaufbau und kann immerhin schon die Temperaturen im fhem sehen.
Das mit dem script im ESP funktioniert auch, aber ich will glaub ich schon von FHEM aus auch manuell schalten können.
Zudem müsste die Pumpe eine einstellbare Zeit laufen, dann wieder ausschalten, und die Logik für eine Abkühlphase aussetzen. Sonst läuft die Pumpe ja permanent, da Vorlauf>27°

Was mir noch gefehlt hat war, wo ich die rules eintragen muss. Es gibt unter Tools-Advanced eine Checkbox, die man aktivieren muss, dann kommt oben ein Reiter für die rules.
Überhaupt ist das Tools-Advanced wichtig, da werden auch die mptt topics eingestellt, die der ESP für die Kommunikation benutzt.
Das steht bei mir momentan so:
subscribe template: %sysname%/control/#
publish template: %sysname%/%valname%

mein Problem ist momentan noch, dass das Relais nicht schaltet (ausser per rule). Also weder von FHEM aus, noch mit dem Taster.
Der Tasterstatus wird auch nicht gesendet, das Relais schon (Wenn per rule geschaltet)
das MQTT_DEVICE habe ich so definiert, wie flurin zwei posts weiter oben vorgeschlagen hat.

Gruß
Ludwig
HP T610, HM, Jeelink, LGW, mapleCUL868+434

amithlon

Hallo,

installiere Dir z.B. MQTT.fx auf Deinem PC, das ist ein MQTT-Client. Mit dem MQTT-Broker connecten und dann kannst Du Deine subscribes des ESP abbonieren und mitlesen. Dann siehst Du auch, was FHEM wirklick sendet. Mit publush kannst Du dann auch einfach den Topic aus MQTT.fx rausschicken und schauen, ob was passiert.

Gruß aus Berlin
Michael

flurin

@Lucky2k12

hier ist ein list von meinem sonoff_relay:

Internals:
   CFGFN
   IODev      mosquitto
   NAME       sonoff_relay
   NR         1852
   STATE      off
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Readings:
     2016-07-26 17:12:14   state           GPIO,12,0
     2016-07-26 17:12:14   transmission-state outgoing publish sent
   Publishsets:
     :
       topic      sonoff/control/cmd
       values:
         GPIO,12,1
         GPIO,12,0
   Sets:
     GPIO,12,0
     GPIO,12,1
   subscribe:
   subscribeExpr:
Attributes:
   IODev      mosquitto
   eventMap   /GPIO,12,1:on/GPIO,12,0:off/
   publishSet GPIO,12,1 GPIO,12,0 sonoff/control/cmd
   room       esp
   stateFormat state


Bei mir funktioniert es, ev. hast du einen Tippfehler.

Lucky2k12

Das sieht bei mir so aus:
Internals:
   IODev      mqtt
   NAME       ESP_Pumpe
   NR         175
   STATE      on
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Readings:
     2016-07-26 17:22:11   Temperature     25.19
     2016-07-26 17:40:23   state           GPIO,12,1
     2016-07-26 17:40:23   transmission-state outgoing publish sent
   Message_ids:
   Publishsets:
     :
       topic      ESP_Pumpe/control/cmd
       values:
         GPIO,12,1
         GPIO,12,0
   Sets:
     0
     1
     GPIO,12,0
     GPIO,12,1
   subscribe:
     ESP_Pumpe/Temperature
   subscribeExpr:
     ^ESP_Pumpe\/Temperature$
   Subscribereadings:
     ESP_Pumpe/Temperature Temperature
Attributes:
   IODev      mqtt
   devStateIcon On:on:off Off:off:on
   eventMap   /GPIO,12,1:on/GPIO,12,0:off/
   publishSet GPIO,12,1 GPIO,12,0 ESP_Pumpe/control/cmd
   stateFormat state
   subscribeReading_Temperature ESP_Pumpe/Temperature
HP T610, HM, Jeelink, LGW, mapleCUL868+434

Lucky2k12

@flurin :
Kannst du bitte noch etwas zu deiner Devices Config im ESPeasy schreiben?
Wie hast du GPIO-12 - 14 definiert?
und die Tools-Advances Seite?
Danke.

Gruß
Ludwig
HP T610, HM, Jeelink, LGW, mapleCUL868+434

flurin

mache ich gleich aber versuch mal in einem Browser diese http-Adresssen für on/off einzugeben:

ändere die IP-Adresse entsprechend deiner ESP-Adresse.


http://192.168.0.53/control?cmd=GPIO,12,1


http://192.168.0.53/control?cmd=GPIO,12,0


Damit solltest du das Relais schalten können.

...