Gembird Energenie Unterstützung

Begonnen von alexus, 09 Juni 2013, 14:19:44

Vorheriges Thema - Nächstes Thema

alexus

Hallo!

Gibt es neben dem SIS_PM auch Unterstützung für die Gembird Energenie-Serie, z.B. EG-PM2-LAN?

Habe mir die Mühe gemacht, das Fontend über ein php-Script anzusteuern, aber das geht doch sicher auch in perl?! Hat das schon jemand versucht? Wäre das nicht eine schöne Erweiterung für FHEM?

elbielefeld

Hi,

ich habe ein Modul für die EGPMS2LAN Steckdosenleiste geschrieben. Ist allerdings noch nicht komplett fertig (Schalten der Dosen funktioniert, Auslesen und Dokumentation steht noch aus)
Vielleicht kannste es ja trotzdem schon einsetzen ;) Momentan funktioniert es nur ohne Passwort für die Leiste.


define <NAME> EGPMS2LAN <IP>

#Schalten
#set <NAME> on/off <Nummer>
set Steckdosenleiste on 1
set Steckdosenleiste off 4


Gruß, Eric

alexus

Super!! :-)
Das werde ich gleich mal auf dem PI ausprobieren!!

alexus

Hallo!

Dein Modul funktioniert ausgezeichnet. Danke!
Habe für meine Zwecke noch Passwort-Unterstützung hinzugefügt und ein Logoff eingebaut, damit der Zugriff auf die Web-Oberfläche wieder frei wird.

define <NAME> EGPMS2LAN <IP> [Password]
Wenn jetzt noch der Status ausgelesen wird, ist´s perfekt!

elbielefeld

Hi,

habe auch noch ein bisschen weiter gemacht. Passwort und manuelle Abfrage des Status (über set Befehl statusrequest) ist drin. Vielleicht möchtest du ja das Modul fertig stellen? Hab im Moment irgendwie wenig Lust, da alles, was ich benötige, bereits fertig ist ;) Ein tolles Feature wäre noch, wenn man über einen Befehl automatisch Dummys erstellen könnte, welche die Steckdosenleiste jeweils auf einem Port schalten (habe das bei mir von Hand gemacht).

Habe das Modul umbenannt, als ich gesehen habe, dass ich ein EG-PM2-LAN habe...aber es sollte ja bei beiden Steckdosenleisten funktionieren.

MfG, Eric

alexus

Hallo!

Klasse, ich hatte mich mit dem Statusupdate schon rumgequält. Du hast es elegant gelöst.
Habe Dein Modul nochmal etwas erweitert und die Readings verbessert. Nach dem Schalten wird der Status automatisch nachgelesen.

Wie meinst Du das mit den Dummys? Für jede Steckdose (Socket) ein Dummy anlegen?
Vielleicht könnte man nach dem Vorbild SISPM (Host) und SIS_PMS (Socket) ein weiteres Modul schreiben, welches die einzelnen Sockets definiert? Eigentlich gibt es die Namen für jede Steckdose ja auch schon in der Web-Oberfläche von Gembird.
Ich könnte das mal versuchen, allerdings kenne ich mich mit Perl (noch) nicht so gut aus ;-)
Würde vorher noch eine "All off" Funktion einbauen, weil ich das in meiner Steuerung benötige.
Was hälst Du davon?

Stephan81

Guten Abend,
das Modul habe ich schon lange gesucht.
Leider funktioniert es bei mir nicht so ganz oder ich stell mich einfach zu dumm an.

Ich habe die aktuellste Datei heruntergeladen und in das Verzeichnis Fhem zu den anderen Modulen kopiert.

Wenn ich nun das ganze in der fhem.cfg mit folgender Zeile konfiguriere:

define Leiste_Server EGPMS2LAN 192.168.5.2 "Hier steht eigentlich das Passwort"

bekomme ich beim abspeichern die Meldung :
Cannot load module EGPMS2LAN

Ich habe das ganze auch schon ohne ein Passwort versucht aber an der Fehlermeldung ändert sich nichts.
Habt ihr vielleicht dazu noch eine Idee, woran das liegen könnte?

Fhem läuft bei mir auf einer FritzBox 7390.

Vielen Dank für die Hilfe.

Gruß
Stephan

Stephan81

Ich sollte vielleicht auch noch den Auszug aus der Log File liefern: :-)

2013.07.08 19:14:44 0: Undefined subroutine &main::EGPMS2LAN_Initialize called at fhem.pl line 1654, <$fh> line 184.

Stephan81

Habe es jetzt mal mit einer der älteren File probiert und da geht es.
Kann es sein, dass ein Fehler bei der Umbenennung von EGPM2LAN in EGPMS2LAN passiert ist?


elbielefeld

hi stephan,

klar, das Gerät muss dann als EGPM2LAN definiert werden. immer so, wie auch das Modul heisst.

define Leiste_Server EGPM2LAN 192.168.5.2

@alexus
ja so meine ich das. Mit dem Host und Socket ist auch eine gute Idee. Für mich aber uninteressant, da ich bei den Dummys noch die Möglichkeit habe, die angeschlossenen Geräte vor der Stromwegnahme auszuschalten. Könnte man bei Host+Socket bestimmt auch einbauen aber mir reicht es so.

gruß eric

alexus

Hallo!

Ok!
Hatte auch gehofft, das ich mit einem Call alles aus- oder einschalten kann. Das scheint der Hersteller aber nicht implementiert zu haben :-(
Egal, lassen wir dieses Feature einfach weg.
Aktuell bastel ich an einem Modul "EG-PM" für die einzelnen Steckdosen (Sockets), die dann hoffentlich über ein Auto-Create mit erstellt werden.
Melde mich dann wieder mit einem Ergebnis zum Testen.

elbielefeld

Hi,

ja, pro Anfrage kann nur ein Schaltvorgang durchgeführt werden. Das hindert dich aber nicht daran, mehrere Anfragen abzusenden, um alles aus- bzw. anzuschalten ;)
Beim Einschalten zumindest ist es sowieso nicht sinvoll alle Geräte zeitgleich einzuschalten, sondern z.B. jeweils 1 Sekunde versetzt, da der Einschaltstrom pro Gerät meist viel höher ist, als die Dauerbelastung. Kommt natürlich auf die angeschlossenen Geräte drauf an.

MfG, Eric

alexus

Hallo!

Geschafft! Wie bereits angedroht, habe ich neben dem Hauptmodul für die Steckdosenleiste (EGPM2LAN) ein Modul für die einzelnen Steckdosen/Sockets (EGPM) gebaut. Wenn man mehrere Leisten ansteuern möchte, empfiehlt es sich, diese zunächst über das Webinterface zu konfigurieren und Namen für die einzelnen Steckdosen zu vergeben. Diese werden dann automatisch in FHEM übernommen, damit man die Übersicht behält.

Wie bisher kann die Leiste wie folgt in FHEM bekannt gemacht werden:
define mainswitch EGPM2LAN 10.192.192.20 SecretGarden
attr mainswitch room Wohnzimmer
Bedeutet also define <Name> EGPM2LAN <IP-Adresse> <Passwort>
Wenn man die globale Autcreate-Funktion aktiviert hat, reicht die folgende Anweisung, um die zugehörigen Steckdosen automatisch anlegen zu lassen:
Set mainswitch statusrequest
Natürlich geht das auch manuell. Angenommen, an der 1. Steckdose hängt eine Leselampe:
define Leselampe EGPM mainswitch 1Bedeutet also define <Name> EGPM <Steckdosenleiste> <Steckdosen-Nr.>
Jetzt wird´s ernst. Zum Einschalten braucht es jetzt nur noch:
Set Leselampe onAlso dann: Energie! ;-)

Hier die aktuellste Version zum Download (alte Versionen mit 98_... bitte vorher löschen)
17_EGPM2LAN.pm
70_EGPM.pm

@Eric: Ich hoffe, Du kannst die neue Lösung statt der Dummy-Module verwenden.

elbielefeld

Hi alexus,

ich würds gern testen, habe aber ein Problem: Es funktioniert nichts :). Ich kann die Leiste mit deinem Modul nicht schalten ("set bla on 1" klappt nicht). Auch das autocreate klappt nicht.
Du hast den CustomGetFileFromURL Aufruf ja geändert auf


my $post = "http://" . $hash->{IP} . "/ POST:";
$post .= "cte1=" . ($params == "1" ? "1" : "") . "&cte2=" . ($params == "2" ? "1" : "") . "&cte3=" . ($params == "3" ? "1" : "") . "&cte4=". ($params == "4" ? "1" : "");
CustomGetFileFromURL($hash, $post, 0, $logLevel);


In meiner (standard) HttpUtils.pm werden folgende Parameter erwartet:


# - if data (which is urlEncoded) is set, then a POST is performed, else a GET.
# - noshutdown must be set for e.g the Fritz!Box
# 4.0 is needed for some clients trying to reach fhem.de, 2.0 was not enough
sub
CustomGetFileFromURL($$@)
{
  my ($quiet, $url, $timeout, $data, $noshutdown, $loglevel) = @_;


Kann doch so nicht funktionieren oder? Ich bin auch nicht gerade der Perl Experte ;)
PS: Aktivier mal die PM Funktion im Forum.

Gruß, Eric

alexus

Hallo, Eric!

Hmmh, der Grund muss woanders liegen, denn die Parameter stimmen mit der "Ur-Version" überein. Nur der Post-String wird jetzt zusammengebaut. Bei mir funktioniert das mit (Version aus Logfile):version Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3405 2013-07-11 19:46:39Z rudolfkoenig $, pid 1892Die letzten Parameter werden optional gemacht siehe HttpUtils.pm:sub
CustomGetFileFromURL($$@)
{
  my ($quiet, $url, $timeout, $data, $noshutdown, $loglevel) = @_;
  $timeout = 4.0 if(!defined($timeout));
  $loglevel = 1 if(!$loglevel);
Kannst Du mal den Loglevel vom EGPM2LAN auf "1" stellen? Steht dann was im LogFile? Nutzt Du eine Fritzbox? Bin jetzt per Mail erreichbar.

Gruß alexus