[Modul] Sonoff

Hallo,

ich habe mal für die Sonoff Geräte ein Modul geschrieben, bzw. zur Zeit ist es nur für den Sonoff Switch, da ich bis jetzt nur diesen besitze.

Das Modul kommuniziert über MQTT mit dem Sonoff Gerät, dazu nutze ich das Modul von thomasf68.
Dieses Modul habe ich ein wenig umgeschrieben, ich stehe aber schon mit ihm in Kontakt, wir wollen aus unseren beiden MQTT Clients einen bauen. Aber vorerst gibt es jetzt erstmal eine abgeänderte Version von mir, damit ihr das mal testen könnt.

Die Installationsanleitung findet ihr hier: GitHub - Schnittcher/IPS-Sonoff

Funktionen:

[ul]
[li]Schalten via MQTT über IPS
[/li][li]Statusmeldungen des Sonoff Gerätes über MQTT zu IPS
[/li][/ul]

Screenshots:

Viel Spaß beim testen.

Grüße,
Kai

reserviert

Wie Mosquitto installiert wird ist unter anderem von dheiss hier beschrieben.

Danke!

Hat auf Anhieb funktioniert, ich habe einen S20 eingebunden, mehr werden folgen.

Ich hatte nur das Problem dass ich den MQTT Dienst nicht auf dem Symcon Raspi zum laufen bekommen habe („Connection refused“) danach einfach auf einem weiteren Raspi der für Unifi sowieso läuft installiert und siehe da, keine Probleme.

@KaiS

… leider funktioniert die Variablenänderung beim manuellen schalten nicht. Sie kommt zwar in IPS an:

04.06.2017 23:04:02*| SonoffSwitch*| {„TOPIC“:„stat/led_pool/RESULT“,„MSG“:"{„POWER“:„ON“}",„SENDER“:„MQTT_GET_PAYLOAD“}

04.06.2017 23:04:02*| SonoffSwitch*|
{„TOPIC“:„stat/led_pool/POWER“,„MSG“:„ON“,„SENDER“:„MQTT_GET_PAYLOAD“}

aber die Variable bleibt auf aus.

auch die Abfrage durch den Ping:

SonoffSwitch*| {„TOPIC“:„tele/led_pool/STATE“,„MSG“:"{„Time“:„2017-06-04T22:06:28“, „Uptime“:1, „Vcc“:3.082, „POWER“:„ON“, „Wifi“:{„AP“:1, „SSID“:"#", „RSSI“:96, „APMac“:"#"}}",„SENDER“:„MQTT_GET_PAYLOAD“}

bringt zwar das „ON“ aber auch hier wird die Variable nicht verändert.

Hast du eine Idee woran das liegen könnte ?
Danke

Hallo,

zeig mir doch mal bitte die MQTT Konfiguration im Sonoff Switch und ein mal die in IPS.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

… gerne

ips.png

danke

Hallo,
schreib mal bei Power On: ON
Und bei Power Off: OFF

Dann sollte es gehen.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

… DANKE (hatte schon On und Off probiert :rolleyes: )

funktioniert :slight_smile:

Hi,

hab dein Modul installiert, konfiguriert und funktionierte sofort…Danke dafür.

Besteht die Möglichkeit das noch zu erweitern ,ich habe ein Sonoff Pow der die Verbrauchsdaten per MQTT liefert.
Das sieht dann folgendermaßen aus:

16.06.2017 12:48:41*| SonoffSwitch*| {„TOPIC“:„tele/sonoffpow1/ENERGY“,„MSG“:"{„Time“:„2017-06-16T11:48:40“, „Total“:0.086, „Yesterday“:0.000, „Today“:0.086, „Period“:5, „Power“:54, „Factor“:0.96, „Voltage“:220, „Current“:0.258}",„SENDER“:„MQTT_GET_PAYLOAD“}

Das wäre doch einfach zu implementieren, oder? Mir ginge es vorrangig um den Power Wert, also 54!

Danke
spooniester

Sonoff Pow ist ein Modul was ich mir demnächst besorgen muss.
Wenn das hier im Haus ist, wird das Kai bestimmt einbauen.:smiley:

Ich schaue mir das mal an, ich habe zur Zeit leider kein Gerät und will nicht in China bestellen.
Mal schauen ob ich es so hin bekomme, ohne zu testen.

Grüße,
Kai

Mal blöd gefragt, aber wie „gut“ sind die itead sonoff teile denn was die elektrische Absicherung angeht?
Ich überlege mir von itead die 4 Kanal 230v Variante in hutschienenform zu bestellen.
Im Angebot für knapp 18€ zu haben…

Damit möchte ich bis zu vier LEDs im Außenbereich schalten können (wegebeleuchtung).
Das sonoff Teil wäre in der trockenen Garage…

Gesendet von meinem Redmi Note 2 mit Tapatalk

Hallo Zusammen!

Das Modul für Energie zu erweitern, ist trivial:

Die Statusvariablen:

      $variablenID = $this->RegisterVariableBoolean("SonoffStatus", "Status", "~Switch");
      $this->EnableAction("SonoffStatus");
      $variablenID = $this->RegisterVariableFloat("SonoffPower", "Power", "~Watt.3680");
      $variablenID = $this->RegisterVariableFloat("SonoffTotal", "Total", "~Electricity");
      $variablenID = $this->RegisterVariableFloat("SonoffToday", "Today", "~Electricity");
      $variablenID = $this->RegisterVariableFloat("SonoffYesterday", "Yesterday", "~Electricity");
      $variablenID = $this->RegisterVariableFloat("SonoffCurrent", "Current", "~Ampere");
      $variablenID = $this->RegisterVariableFloat("SonoffVoltage", "Voltage", "~Volt");

Die erweiterte Werteauswertung:

		if (fnmatch("*POWER", $Buffer->TOPIC)) {
			$this->SendDebug("Power", $Buffer->MSG,0);
			switch ($Buffer->MSG) {
				case $off:
					SetValue($this->GetIDForIdent("SonoffStatus"), 0);
					break;
				case $on:
					SetValue($this->GetIDForIdent("SonoffStatus"), 1);
					break;
			}
		}

		if (fnmatch("*ENERGY", $Buffer->TOPIC)) {
			$myBuffer = json_decode($Buffer->MSG);
			SetValue($this->GetIDForIdent("SonoffPower"), $myBuffer->Power);
			SetValue($this->GetIDForIdent("SonoffTotal"), $myBuffer->Total);
			SetValue($this->GetIDForIdent("SonoffToday"), $myBuffer->Today);
			SetValue($this->GetIDForIdent("SonoffYesterday"), $myBuffer->Yesterday);
			SetValue($this->GetIDForIdent("SonoffCurrent"), $myBuffer->Current);
			SetValue($this->GetIDForIdent("SonoffVoltage"), $myBuffer->Voltage);
		}

Bitte gerne!

Hallo,

ich baue das in mein Modul mit ein, hatte es schon fast komplett drin.

Grüße,
Kai

Ich hab die Erweiterung von robi mal manuell eingetragen und es funktioniert!
Danke euch beiden!!

Hallo zusammen,

heute sind 2 POW Module angekommen, das Modul habe ich erweitert.
Es gibt ein neues Modul IPS-SonoffPow.

Mit cmnd/sonoff/TelePeriod sec (Sec gegen eine Zahl und Sonoff gegen den Namen tauschen) kann man einstellen, wie oft das Sonoff Modul neue Werte senden soll.

Grüße,
Kai

Und die Firmware von den POW’s von Kai ist von Sonoff Pow · arendst/Sonoff-Tasmota Wiki · GitHub
ACHTUNG, nie mit 230V Anschluß versuchen zu flashen !!! Sonst ist alles hin.
Ich verbinde die Module nur mit 3.3V,GND ,RX und TX zum Programmer !!

Schön das es Teamwork hier im Haus gibt.:smiley:

Hi vielen Dank für deine Mühe !

Könntest du mal ein allgemeines Modul schreiben, damit man egal ob es ein Sonoff oder ein selbstgebautes MQTT Gerät einfach in IPS als Instanz anlegen kann ?

Mann muss ja nicht viel ändern, es braucht ja nur folgende Daten:

Abo Topic (das was in ips verarbeitet werden soll, was das MQTT Gerät schickt, bei einer Änderung)

Push Topic (das was ips dann an das MQTT Gerät schickt, wenn z.b. den Button drückt)

Befehle, am besten so, das man so viele anlegen kann wie man will, z.b. für einen 4 Fach Dimmer sind es 4 x Levelvariable und 4 Boolean Variable

Was noch toll wäre, wenn man angeben könnte ob es ein String oder im JSON Format empfangen und gesendet werden soll…
Nice to have eine Heartbeat Variable :wink:

So müssen wir nicht für jedes 0815 MQTT Gerät ein eigenes Modul bauen :wink:

Ich hoffe, ich habe es einigermassen verständlich geschrieben :wink:

Ließ doch einfach mal den ersten Post, Absatz 3.
Genau das haben die doch vor.
Michael