Modul für Anel Pwr Control (Netzwerksteckdosen)

Begonnen von IchEben, 29 Oktober 2017, 17:32:29

Vorheriges Thema - Nächstes Thema

IchEben

Hi,

hab ein Modul für die Netzwerksteckdosen von Anel geschrieben. Ist mein erstes Perl Scipt. Also eventuell noch nicht ganz Käfer frei.  ;)
Theoretisch müsste es mit jeder Hardware von Anel zurecht kommen. Aber nur wenn die neueste Firmware (4.5) installiert ist!
Getestet habe ich es mit der kleinsten HOME Variante. Bitte mal mit anderer Hardware probieren und eine Rückmeldung geben.

Installation:
-Script 47_anelPwrCtrl.pm downloaden
-Datei 47_anelPwrCtrl.pm unter /opt/fem/FHEM/47_anelPwrCtrl.pm kopieren
-Owner der Datei auf fhem setzen mit sudo chown fhem:dialout /opt/fhem/FHEM/47_anelPwrCtrl.pm
-Fhem neustarten
-Ein neues Device anlegen mit: define <name> AnelPwrCtrl <ip-adresse-der-steckdose>
-Eventuell username und password attribute ändern

Beispiel:
define anel anelPwrCtrl 192.168.178.70

Changelog:
2017.11.04 Zusätzliche Überprüfung zur Abfrage der Argumente eingebaut um Warnmeldung zu verhindern.
2018.02.12 Fehler beim auslesen der Sensordaten behoben. Danke an Aigl!

enno

Moin,

Ich werde dieses Wochenende das Teil auf aktuelle Firmware updaten und dann dein Modul testen. Bin gespannt. Ich habe allerdings auch nur die Home Version....

Melde mich mit Ergebnissen wieder.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

enno

#2
Beim intensiven Schalten der Dose 1 kam folgende Warnung im Log hoch:
2017.11.04 20:03:58 1: PERL WARNING: Use of uninitialized value $arg in string eq at ./FHEM/47_anelPwrCtrl.pm line 233.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

IchEben

Hi Enno,

danke für die Rückmeldung. Hab das Modul überarbeitet. Sollte jetzt nicht mehr vorkommen.
Ist dir sonst noch was aufgefallen?

Grüße
Tim

enno

Moin Tim,

danke fuer das Update. Ich habe es eingebaut.

Zur Zeit läuft es auf meinem Testsystem. Bisher ist mir nur aufgefallen, dass es reibungslos und ohne Probleme funktioniert. Ich kann schalten und bekomme alle Statusänderungen sofort geliefert. Falls mir etwas weiteres auffällt, melde ich mich wieder.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

enno

Moin Tim,

habe dein Modul auf mein Produktivsystem umgezogen. Alles bestens! Keine Fehlermeldungen, keine Probleme. Ich schalte drei POE Injektoren für meine Webcams damit. Mehrfach am Tag an und aus. Alles stabil und "geräuschlos".

Danke noch mal für die Arbeit.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

SnakeZZ

Hallo!

Ich habe eben meine NET-PwrCtrl Power IO angebunden, und sie scheint ganz gut zu funktionieren mit FHEM.
Besten Dank für das Modul!

Wie sind denn Deine Pläne für die Weiterentwicklung? Z.B. Auslesen der Temperatur, Wechsel von 0 und 1 in FHEM auf on/off etc.?

Beste Grüsse,

SnakeZZ

Aigl

#7
Hallo!

Ich möchte das Modul mit einem NET-PwrCtrl HUT  nutzen und daran einen NET-PwrCtrl HUT EX(tender)  sowie einen Sensor1 anschliessen.

Die Relais vom HUT  funktioniert erstmal.

UPDATE: Sensor angeschlossen und nun werden die Variablen sensor_temperature, sensor_humidity und sensor_temperature zwar angezeigt aber in allen steht nur die Temperatur. Siehe Bild im Anhang!

Bei mir hat es leider nicht funktioniert das Passwort zu ändern, scheinbar nimmt er immer den Standard aus dem Modul.

Oder mache ich was falsch?

Ansonsten, tolle Arbeit!!

Gruß
Aigl

Aigl

Falls es jemanden interessiert:

Es läuft nun korrekt, d.h. Temperatur, Luftfeuchte und Helligkeit werden korrekt zugeordnet (siehe Bild im Anhang).

Folgendes muss im Modul angepasst werden (jeweils die Zuordnung hinter $sensors):


if (scalar(@sensors) >= 4) {
readingsBulkUpdateIfChanged($hash,'sensor_temperature',$sensors[1],1);
readingsBulkUpdateIfChanged($hash,'sensor_humidity',$sensors[2],1);
readingsBulkUpdateIfChanged($hash,'sensor_brightness',$sensors[3],1);
}


IchEben

#9
Hallo Aigl,

da war ich 10 Minuten zu langsam, du hast den Fehler schon selbst gefunden!  :)
Danke fürs testen, ich hab's geändert und im Hauptpost neu hochgeladen.
Username und Password habe ich eben bei mir nochmal getestet und es scheint soweit zu funktionieren. Wurde denn der von dir eingegebene Username / das Passwort in die Internal Variabelen übernommen? Also wird es oben richtig angezeigt?

@SnakeZZ:
Die Temperatur wird schon ausgelesen. Die Readings erscheinen allerdings erst, wenn es auch etwas auszulesen gibt.  ;)
1/0 durch on/off ersetzen wollte ich erst machen, habe es mir dann aber anders überlegt, da all meine notifys nun auf 0/1 reagieren und ich im Moment keine Lust habe das zu ändern. *Schäm*
Die generelle Weiterentwicklung werde ich vorantreiben, allerdings nur das nötigste, da ich momentan viel für die Arbeit unterwegs bin. Daher auch die späte Rückmeldung.

Grüße
Tim

Aigl

Hallo Tim,

ich gucke mir das mit dem Passwort die Tage mal an.

Selbst geholfen habe ich mir, in dem ich im Modul entsprechend das Passwort angepasst habe  :)

Für die ersten Testzwecke reicht es hin und ich bin echt zufrieden, vielen Dank für die Mühe!  ;)

Gruß
Andi

Aigl

Scheint alles soweit zuverlässig zu laufen.

Wäre es nicht sinnvoll das Modul direkt in FHEM zu integrieren?


janh64

Hallo,

super Mdul. Über die FHEM-Weboberfläche kann ich die einzelnen Relais schalten, aber wie definiere ich denn einzelne Ein- und Ausschalter? Ich bin leider nicht so tief drin.

Danke und Grüße
Jan

IchEben

Hey Jan,

ich habe mir dafür ein Dummy-Device + zwei Notifys für jede Steckdose angelegt. In etwa so:

Dummy:
defmod anel2 dummy
attr anel2 cmdIcon seton:black_Steckdose.on setoff:black_Steckdose.off
attr anel2 devStateIcon on:message_socket_on2:setoff off:message_socket_off2:seton setoff:message_socket_unknown:seton seton:message_socket_unknown:setoff
attr anel2 icon ge_wht_steckdose
attr anel2 room Keller
attr anel2 setList on off
attr anel2 webCmd seton:setoff

setstate anel2 off

Notify1:
anel2.* {
if ($EVTPART0 eq 'seton') {
fhem("set anel outlet2_state on");
} elsif ($EVTPART0 eq 'setoff') {
fhem("set anel outlet2_state off");
}
}

Notify2:
anel:outlet2_state.* {
if ($EVTPART1 eq '1') {
fhem("set anel2 on");
} else {
fhem("set anel2 off");
}
}


Das geht bestimmt noch viel eleganter. Aber ich nutze das FHEM-front-end ehr selten. Daher benötige ich keine einzelnen Ein- bzw. Ausschalter.  ;)

Probier mal, ob dir das weiterhilft. Grüße,
Tim

Aigl

Hallo zusammen!

Nachdem das Modul zwar sehr zuverlässig läuft und fleissig das macht was es soll habe ich folgendes Problem festgestellt:

Das Modul erzeugt einen nicht unerheblichen Datenverkehr im Netzwerk. Durch meine neue Netzwerkinstallation konnte ich feststellen, daß zwischem FHEM und dem Anel Pwr Control innerhalb von 24 Stunden ca. 15 GB Daten ausgetauscht werden. Ich vermute mal es handelt sich um die Statusabfrage der Relais sowie der Temperatur durch das Modul.

Gibt es Möglichkeiten den Traffic deutlich zu reduzieren?

Gruß
Aigl

IchEben

Hallo Aigl,

du kannst über das interval Attribut die Zeit anpassen wie oft die Steckdose abgefragt wird. Standard ist 30 Sekunden. Wenn du den Interval auf 60 Sekunden erhöhst, sollte sich der Datenverbrauch halbieren.
attr anel interval 60

Allerdings erscheinen mir 15 Gigabyte deutlich zu hoch. Wenn man mal schnell nachrechnet:
Das Paket für die Statusabfrage ist ca. 300 Byte groß. Gehen wir einfach mal von 500 Byte aus. 500 Byte â 30 Sekunden macht 1MB pro Minute. Also 60MB pro Stunde oder 1440MB pro Tag. Also sollten eigentlich niemals mehr als 1,5 GB pro Tag verbraucht werden, was einer Netzwerkauslastung von ca. 0,15% entspräche.

Kann es sein, dass du vielleicht sehr lange Passwörter oder Namen verwendest? Oder häufig Schaltbefehle ausführst?

Wie hast du die Auslastung gemessen? Mit Wireshark?

Grüße
Tim

IchEben

Hey,
hab das eben mal mit Wireshark überprüft. Die Steckdose macht noch ein HTTP 302 - Redirect. Daher ist der Traffic doch um einiges höher als erwartet. Ich habe grade bei 30 Sekunden Interval ca. 6,5GB pro Tag gemessen. (0,6% Netzwerklast bei 100 Mbit)
Die Einzige Möglichkeit die ich sehe um den Verbrauch zu reduzieren ist den Interval zu erhöhen. Was kein Problem darstellen sollte, solange du die Steckdosen nur aus FHEM steuerst. Ansonsten stimmt dann halt die Anzeige des Status in FHEM für die Zeit des Intervals nicht.

klausa

Danke für diese Modul. Ich habe es seit zwei Tagen am laufen und bin sehr zufrieden. Die von mir benutzte Leiste ist eine PRO mit acht Steckdosen.  :)

mr.sulu

Hallo,
vielen Dank für das super Modul. Das Modul läuft jetzt schon eine Zeitlang sehr gut bei mir. Nun wollte ich auch noch gerne die Leiste mit Google und Alexa steuern. Google habe ich schon hin bekommen, Alexa weigert sich noch ein wenig. Für alle die auch schon gesucht haben, hier mal meine Google Lösung:

genericDeviceType switch
homebridgeMapping On=state,valueOn=seton,valueOff=setoff,cmdOff=setoff,cmdOn=seton


Alles andere wie von Tim(IchEben) beschrieben.
Für Verbesserungen bzw. ein Tipp wie es mit Alexa auch funktioniert, wäre ich dankbar.

Gruß
Karsten