[Modul] Shelly

Hallo Kai,
der Shelly 1PM scheint nun auch den Energy-Wert zu liefern, müsste Verbrauch Total zu sein.
Ob dieser beim FW-Update zurück gesetzt wird kann ich nicht sagen, könnte man aber schnell selbst abfangen.

Der Wert wird geliefert als ->energy1603. Dies sind 16,03 W/h.
In kW/h wäre sinnvoller und da reichen locker 3 Nachkommastellen,

Könntest du den Wert noch einbauen?

Wichtig ist, das dieser nur geliefert wird, wenn Energie verbraucht wird und nur dann.
Beim Ausschalten sendet er dann auch nochmal den aktuellen Stand, aber wiederum nur wenn vorher was verbraucht wurde. Also nicht wie Tasmota, da wird im Zeitzyklus immer übertragen.

Dump vom MQTT hängt an.

Gruß Achim

Shelly 1PM Energy.txt (26.6 KB)

Hallo Experten!

habe offenbar etwas zu viel herumexperimentiert. Habe IPS 5.1 und IPS Shelly installiert. Es hat schon einmal funktioniert, dann aber plötzlich nicht mehr. Durch das viele herumexperimentieren habe ich vermutlich etwas in der __generatet.inc.php zerschossen.

Wenn ich den Befehl

Shelly_SwitchMode(15948,0 ,true);

ausführe, kommt folgende Fehlermeldung:

Fatal error: Uncaught Exception: Instance does not implement this function in C:\IP-Symcon\scripts__generated.inc.php:710
Stack trace:
#0 C:\IP-Symcon\scripts\35156.ips.php(3): SHELLY_SwitchMode(15948, 0, true)
#1 {main}
thrown in C:\IP-Symcon\scripts__generated.inc.php on line 710
Abort Processing during Fatal-Error: Uncaught Exception: Instance does not implement this function in C:\IP-Symcon\scripts__generated.inc.php:710
Stack trace:
#0 C:\IP-Symcon\scripts\35156.ips.php(3): SHELLY_SwitchMode(15948, 0, true)
#1 {main}
thrown
Error in Script C:\IP-Symcon\scripts__generated.inc.php on Line 710

in der __generated.inc.php stehen alle Funktionen von Shelly mehrfach drin:

function SHELLY_SwitchMode($InstanceID, $relay, $Value)
{
	if(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{9E5FA0B2-AA98-48D5-AE07-78DEA4B0370A}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly1\module.php');
		$result = (new IPS_Shelly1($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{BE266877-6642-4A80-9BAA-8C5B3B4DAF80}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly2\module.php');
		$result = (new IPS_Shelly2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{F56CC544-581D-42EB-AAF0-F5E9E908916C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly4Pro\module.php');
		$result = (new IPS_Shelly4Pro($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{ED5E1057-C47A-4D73-A130-B4E2912A026C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyPlug\module.php');
		$result = (new IPS_ShellyPlug($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{3286C438-2174-E03B-85CE-B6B7C1A685D0}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyRGBW2\module.php');
		$result = (new IPS_ShellyRGBW2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{9E5FA0B2-AA98-48D5-AE07-78DEA4B0370A}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly1\module.php');
		$result = (new IPS_Shelly1($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{BE266877-6642-4A80-9BAA-8C5B3B4DAF80}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly2\module.php');
		$result = (new IPS_Shelly2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{F56CC544-581D-42EB-AAF0-F5E9E908916C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly4Pro\module.php');
		$result = (new IPS_Shelly4Pro($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{ED5E1057-C47A-4D73-A130-B4E2912A026C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyPlug\module.php');
		$result = (new IPS_ShellyPlug($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{3286C438-2174-E03B-85CE-B6B7C1A685D0}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyRGBW2\module.php');
		$result = (new IPS_ShellyRGBW2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{9E5FA0B2-AA98-48D5-AE07-78DEA4B0370A}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly1\module.php');
		$result = (new IPS_Shelly1($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{BE266877-6642-4A80-9BAA-8C5B3B4DAF80}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly2\module.php');
		$result = (new IPS_Shelly2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{F56CC544-581D-42EB-AAF0-F5E9E908916C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly4Pro\module.php');
		$result = (new IPS_Shelly4Pro($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{ED5E1057-C47A-4D73-A130-B4E2912A026C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyPlug\module.php');
		$result = (new IPS_ShellyPlug($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{3286C438-2174-E03B-85CE-B6B7C1A685D0}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyRGBW2\module.php');
		$result = (new IPS_ShellyRGBW2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{9E5FA0B2-AA98-48D5-AE07-78DEA4B0370A}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly1\module.php');
		$result = (new IPS_Shelly1($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{BE266877-6642-4A80-9BAA-8C5B3B4DAF80}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly2\module.php');
		$result = (new IPS_Shelly2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{F56CC544-581D-42EB-AAF0-F5E9E908916C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly4Pro\module.php');
		$result = (new IPS_Shelly4Pro($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{ED5E1057-C47A-4D73-A130-B4E2912A026C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyPlug\module.php');
		$result = (new IPS_ShellyPlug($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{3286C438-2174-E03B-85CE-B6B7C1A685D0}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyRGBW2\module.php');
		$result = (new IPS_ShellyRGBW2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{9E5FA0B2-AA98-48D5-AE07-78DEA4B0370A}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly1\module.php');
		$result = (new IPS_Shelly1($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{BE266877-6642-4A80-9BAA-8C5B3B4DAF80}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly2\module.php');
		$result = (new IPS_Shelly2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{F56CC544-581D-42EB-AAF0-F5E9E908916C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly4Pro\module.php');
		$result = (new IPS_Shelly4Pro($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{ED5E1057-C47A-4D73-A130-B4E2912A026C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyPlug\module.php');
		$result = (new IPS_ShellyPlug($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{3286C438-2174-E03B-85CE-B6B7C1A685D0}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyRGBW2\module.php');
		$result = (new IPS_ShellyRGBW2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{9E5FA0B2-AA98-48D5-AE07-78DEA4B0370A}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly1\module.php');
		$result = (new IPS_Shelly1($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{BE266877-6642-4A80-9BAA-8C5B3B4DAF80}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly2\module.php');
		$result = (new IPS_Shelly2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{F56CC544-581D-42EB-AAF0-F5E9E908916C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly4Pro\module.php');
		$result = (new IPS_Shelly4Pro($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{ED5E1057-C47A-4D73-A130-B4E2912A026C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyPlug\module.php');
		$result = (new IPS_ShellyPlug($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{3286C438-2174-E03B-85CE-B6B7C1A685D0}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyRGBW2\module.php');
		$result = (new IPS_ShellyRGBW2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{9E5FA0B2-AA98-48D5-AE07-78DEA4B0370A}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly1\module.php');
		$result = (new IPS_Shelly1($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{BE266877-6642-4A80-9BAA-8C5B3B4DAF80}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly2\module.php');
		$result = (new IPS_Shelly2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{F56CC544-581D-42EB-AAF0-F5E9E908916C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly4Pro\module.php');
		$result = (new IPS_Shelly4Pro($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{ED5E1057-C47A-4D73-A130-B4E2912A026C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyPlug\module.php');
		$result = (new IPS_ShellyPlug($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{3286C438-2174-E03B-85CE-B6B7C1A685D0}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyRGBW2\module.php');
		$result = (new IPS_ShellyRGBW2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{9E5FA0B2-AA98-48D5-AE07-78DEA4B0370A}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly1\module.php');
		$result = (new IPS_Shelly1($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{BE266877-6642-4A80-9BAA-8C5B3B4DAF80}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly2\module.php');
		$result = (new IPS_Shelly2($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{F56CC544-581D-42EB-AAF0-F5E9E908916C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-Shelly4Pro\module.php');
		$result = (new IPS_Shelly4Pro($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{ED5E1057-C47A-4D73-A130-B4E2912A026C}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyPlug\module.php');
		$result = (new IPS_ShellyPlug($InstanceID))->SwitchMode($relay, $Value);
	}
	elseif(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{3286C438-2174-E03B-85CE-B6B7C1A685D0}") {
		require_once('C:\IP-Symcon\modules\.store\info.schnittcher.ips.shelly\IPS-ShellyRGBW2\module.php');
		$result = (new IPS_ShellyRGBW2($InstanceID))->SwitchMode($relay, $Value);
	}
	else {
		throw new Exception("Instance does not implement this function");
	}
	return $result;
}

Hat jemand eine Idee wie ich das fixen kann?

Gruß, Hugo

Bitte mal Symcon neu starten, und dann noch mal schauen.

schon getan, Server auch neu gestartet. Ändert nichts.

Hilft es das Modul zu löschen und über den Modul Store neu zu installieren?

Grüße,
Kai

Hallo Achim,

werde ich mir anschauen.
Kannst du mal ein Debug aus der Shelly 1PM Instanz posten?
Ich glaube das sieht in dem Debug irgendwie falsch aus.

Der Wert steht eigentlich im Payload.

Grüße,
Kai

Nein, hilft leider auch nichts. Ich habe die Mehrfacheinträge auch schon rausgelöscht, wenn ich das Modul neu installiere sind sie wieder da.

Gesendet von iPhone mit Tapatalk

Die mehrfach Einträge sind korrekt.
Schaut eher so aus, als wenn du den Befehl eine falsche InstanzID übergibst.
Michael

Ich lösche heute Abend mal die Instanz und lege eine neue an. Danke erstmal für den Tipp. Hoffe das löst das Problem.

Gesendet von iPhone mit Tapatalk

Ist 15948 wirklich eine Shelly Instanz?

Grüße,
Kai

Magst du einmal die neuste Beta-Version von IPS probieren? Dort haben wir diesbezüglich einiges verbessert.

paresy

@Kai, ja ich habe eine Shelly1 Instanz angelegt.
@Paresy: Probiere ich gerne aus. Ich schau mal zuerst ob eine neue Instanz mein Problem löst und versuche es dann mit der neuen Beta.
Kann das aber erst am Abend machen.

Also:
Instanz gelöscht und neu angelegt. Wird aber vom MQTT-Server nicht erkannt

Mit dem MQTT-Konfigurator wird folgendes angelegt:

Wenigstens kommt mit dem Testscript keine Fehlermeldung mehr:

<?php

Shelly_SwitchMode(57820,0 ,true); //Einschalten;
?>

was mache ich falsch?

Was steht denn jetzt im Debug von der Shelly Instanz?
Wie sieht die Konfiguration von der Instanz aus?

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Im Debug kommt nichts an.

1.PNG
2.PNG

Das Topic ist falsch.
In der Anleitung steht wie du an das richtige Topic kommst.
Sorry bin gerade nur am Handy.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Hallo Kai,
als Anlage die Shelly 1PM Instanz Debug.

Hattest Recht, sieht schon besser aus.

Gruß
Achim

Debug Shelly 1PM Instanz .txt (36.7 KB)

Super, das wars.

Wer lesen kann, ist klar im Vorteil! Vielen Dank!
LG
Hugo

Ich möchte jetzt auch mal mit Shelly spielen und habe gestern meine 2 Shelly 1 PM bekommen, die sind ja winzig :slight_smile: Warum habe ich die nicht vorher gefunden :smiley:

OK jetzt hatte ich vorher was gelesen das es bei einigen Modellen eine falsche Beschriftung gibt, finde dazu aber jetzt nur was zum Shelly 1 ohne PM.

Bei mir ist die Beschriftung auf dem Shelly 1PM
O-SW-L-L1-N

in der mitgelieferten Anleitung hingegen
O-SW-L1-L-N

Ich vermute mal die Anleitung ist richtig, macht von der Anordnung mehr Sinn.

EDIT: ich habe jetzt laut der Beschriftung auf dem Shelly angeschlossen, also L an L und N an N wie es auf dem Gehäuse steht.
Das Modul funktioniert :slight_smile:

Hallo Nisbo,
du hast es ja gelöst,
unabhängig davon, hier nochmal der Hinweis auf das deutsche Shelly Forum.
Alle Beschreibungen findet man im Lexikon, oft auch mit echten Anschlussbeispielen.

Offizielles Deutsches Shelly Support Forum

Gruß
Achim