Auslesen einer Zeile mit HTTPMOD / Anel Elektronik IP Steckdosen

Begonnen von Groej, 08 Oktober 2016, 07:45:13

Vorheriges Thema - Nächstes Thema

Groej

Moin,

das setzten von Variablen ist ja nicht das Problem. Ich denk Du meinst damit die Sache mit den Namen auslesen und setzten als Attribut alias. Das Problem ist ob Variablen bei alias überhaupt zugelassen sind. Glaube fast nicht.

Gruß

Jörg
FHEM - RaspPi2 - KNXD - KNX - CUL 868 - FS20 - HMS - WH3080 - Signalduino 433 MHz - Telegram - Anel Elektronik IP Steckdosen - BME280

Masterciw

Hallo Groej,

sorry das ich mich jetzt erst melde. Hatte in den letzten Tagen viel zu tun.
Hoffe Dir geht es gut und das Attentat in Berlin ist an Dir und Deinen lieben vorbeigegangen.

Habe in der Zwischenzeit ein wenig experimentiert und habe leider immer noch Probleme mit Deinen letzten Codefetzen den Status in den Dummy zu schreiben. Das Auslesen funktioniert einwandfrei. Nur das setzen im Dummy mit den DOIF Befehlen habe ich noch nicht so recht verstanden.

Auch habe ich eine Möglichkeit gefunden den Namen der Steckdose dynamisch in das Alias Atttribut einzulesen. Dazu antworte ich aber in Deinem anderen Thread in diesem Forum.

Könntest Du mir die Zeilen mit dem DOIF mal ein wenig näher erklären. Wie soll das Ganze in der WebUI nachher aussehen?

Gruss aus Ratingen nach Berlin.

Masterciw



Groej

Hallo Masterciw,

erstmal Danke für die Anteilnahme in Namen aller Berlinerinnen und Berliner. Ich habe zum Glück keine Verletzten bzw. Tote in der Familie oder Freundeskreis und ich selbst bin auch ok - Danke.

Ich zwar gerade schwer die Kurve zu bekommen aber Leben MUSS weitergehen.

So nun aber zu unseren eigentlichen Thema. Ich habe mal Kommentare zu dem Code hinzugefügt. Ich hoffe Du verstehst was ich meine.


#Hiermit lese ich alle 5 Minuten die Namen der Dose 7 und 8 aus und schreibe die ins Value namen7 bzw. namen8
define anel_bln_rel0 HTTPMOD http://192.168.10.4/strg.cfg?Auth:udpudp 540
attr anel_bln_rel0 userattr reading07Name reading07RegOpt reading07Regex reading08Name reading08RegOpt reading08Regex set1Data set1Name setHeader setURL
attr anel_bln_rel0 alias Anel Berlin Namen lesen
attr anel_bln_rel0 reading07Name name7
attr anel_bln_rel0 reading07RegOpt g
attr anel_bln_rel0 reading07Regex ^(?:[^;;]*;;){16}([^;;]*);;
attr anel_bln_rel0 reading08Name name8
attr anel_bln_rel0 reading08RegOpt g
attr anel_bln_rel0 reading08Regex ^(?:[^;;]*;;){17}([^;;]*);;

#hier lese ich alle 8 Sekunden den Status der Dose 7 und 8 aus und schreibe diese ins Value value7 bzw. value8
define anel_bln_rel7 HTTPMOD http://192.168.10.4/strg.cfg?Auth:udpudp 8
attr anel_bln_rel7 userattr reading07Name reading07RegOpt reading07Regex reading08Name reading08RegOpt reading08Regex set1Data set1Name setHeader setURL
attr anel_bln_rel7 reading07Name value7
attr anel_bln_rel7 reading07RegOpt g
attr anel_bln_rel7 reading07Regex ^(?:[^;;]*;;){26}([^;;]*);;
attr anel_bln_rel7 reading08Name value8
attr anel_bln_rel7 reading08RegOpt g
attr anel_bln_rel7 reading08Regex ^(?:[^;;]*;;){27}([^;;]*);;
attr anel_bln_rel7 set1Data F6=T
attr anel_bln_rel7 set1Name an/aus
attr anel_bln_rel7 setHeader Content-Type: text/html
attr anel_bln_rel7 setURL http://192.168.10.4/ctrl.htm?Auth:udpudp
attr anel_bln_rel7 stateFormat value7
attr anel_bln_rel7 timeout 2
attr anel_bln_rel7 verbose 0
attr anel_bln_rel7 webCmd an/aus 0

#das ist der Dummy der mit Schalter Icon im FHEMWeb angezeigt wird
define anel_bln_rel7_dummy dummy
attr anel_bln_rel7_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr anel_bln_rel7_dummy group Anel Berlin
attr anel_bln_rel7_dummy room Power Control
attr anel_bln_rel7_dummy setList state:on,off
attr anel_bln_rel7_dummy webCmd :

#füllt das alias Attribut mit dem ausgelesenden Namen der Steckdose. Das kennst Du ja. Ich habe noch einen Save dahinter gesetzt#
#damit fhem.cfg auch gesichert wird. Mich nervte da rote Fragezeichen hinter SAVE CONFIG.
define anel_bln_rel7_dummy_notify notify anel_bln_rel0:(name7).* {\
  fhem("attr anel_bln_rel7_dummy alias ".(ReadingsVal("anel_bln_rel0","name7", "")));;\
  fhem("save");;\
}

#hier schalte ich die Dose und den Zustand den der Dummy hat wenn die Dose einen anderen Zustand als der Dummy hat
define anel_bln_rel7_on DOIF ([anel_bln_rel7_dummy] eq "on" and [anel_bln_rel7:value7] eq "0") (set anel_bln_rel7 an/aus 1)
define anel_bln_rel7_off DOIF ([anel_bln_rel7_dummy] eq "off" and [anel_bln_rel7:value7] eq "1") (set anel_bln_rel7 an/aus 0)

#hier schalte ich den Dummy in den Status der Dose
define anel_bln_rel7_dummy_on_doif DOIF ([anel_bln_rel7:value7] eq "1") (set anel_bln_rel7_dummy on)
define anel_bln_rel7_dummy_off_doif DOIF ([anel_bln_rel7:value7] eq "0") (set anel_bln_rel7_dummy off)


Gruß

Jörg
FHEM - RaspPi2 - KNXD - KNX - CUL 868 - FS20 - HMS - WH3080 - Signalduino 433 MHz - Telegram - Anel Elektronik IP Steckdosen - BME280

Masterciw

Hi Groej,

hoffe Du hattest ein schönes Weihnachtsfet im Kreis Deiner Familie.

Mittlerweile bin ich ein gutes Stück weitergekommen. Wenn ich Deinen letzten Code verwende, kommt es aber beim Hinzufügen weiterer Steckdosen zu Timeouts und die zurückgelieferten Readings sind unvollständig bzw. auf Timeout gelaufen.

Dies führt dazu das die Steckdosen undefiniert geschaltet werden und diese ist so nicht für mich tragbar.

Habe dann den Code nochmals komplett umgestellt und nutze nun nur noch ein Reading das alle 8 Sekunden erfolgt. Des Weiteren habe ich ein Bash Script zum Schalten der Steckdosen eingebaut. Dies spart mir das erneute Auslesen, dass ja für jede Steckdose erfolgte.

#####################################################################################################################
# Anel NetPower Control Steckdosenleiste - 8-fach                                                                   #
#####################################################################################################################

define Anel_SD HTTPMOD http://192.168.2.100/strg.cfg?Auth:admin12345678 8
attr Anel_SD userattr reading01Name reading01RegOpt reading01Regex reading02Name reading02RegOpt reading02Regex reading03Name reading03RegOpt reading03Regex reading04Name reading04RegOpt reading04Regex reading05Name reading05RegOpt reading05Regex reading06Name reading06RegOpt reading06Regex reading07Name reading07RegOpt reading07Regex reading08Name reading08RegOpt reading08Regex reading11Name reading11RegOpt reading11Regex reading12Name reading12RegOpt reading12Regex reading13Name reading13RegOpt reading13Regex reading14Name reading14RegOpt reading14Regex reading15Name reading15RegOpt reading15Regex reading16Name reading16RegOpt reading16Regex reading17Name reading17RegOpt reading17Regex reading18Name reading18RegOpt reading18Regex
attr Anel_SD alias Anel Ratingen Namen lesen
attr Anel_SD group Readings
attr Anel_SD reading01Name name1
attr Anel_SD reading01RegOpt g
attr Anel_SD reading01Regex ^(?:[^;;]*;;){10}([^;;]*);;
attr Anel_SD reading02Name name2
attr Anel_SD reading02RegOpt g
attr Anel_SD reading02Regex ^(?:[^;;]*;;){11}([^;;]*);;
attr Anel_SD reading03Name name3
attr Anel_SD reading03RegOpt g
attr Anel_SD reading03Regex ^(?:[^;;]*;;){12}([^;;]*);;
attr Anel_SD reading04Name name4
attr Anel_SD reading04RegOpt g
attr Anel_SD reading04Regex ^(?:[^;;]*;;){13}([^;;]*);;
attr Anel_SD reading05Name name5
attr Anel_SD reading05RegOpt g
attr Anel_SD reading05Regex ^(?:[^;;]*;;){14}([^;;]*);;
attr Anel_SD reading06Name name6
attr Anel_SD reading06RegOpt g
attr Anel_SD reading06Regex ^(?:[^;;]*;;){15}([^;;]*);;
attr Anel_SD reading07Name name7
attr Anel_SD reading07RegOpt g
attr Anel_SD reading07Regex ^(?:[^;;]*;;){16}([^;;]*);;
attr Anel_SD reading08Name name8
attr Anel_SD reading08RegOpt g
attr Anel_SD reading08Regex ^(?:[^;;]*;;){17}([^;;]*);;
attr Anel_SD reading11Name value1
attr Anel_SD reading11RegOpt g
attr Anel_SD reading11Regex ^(?:[^;;]*;;){20}([^;;]*);;
attr Anel_SD reading12Name value2
attr Anel_SD reading12RegOpt g
attr Anel_SD reading12Regex ^(?:[^;;]*;;){21}([^;;]*);;
attr Anel_SD reading13Name value3
attr Anel_SD reading13RegOpt g
attr Anel_SD reading13Regex ^(?:[^;;]*;;){22}([^;;]*);;
attr Anel_SD reading14Name value4
attr Anel_SD reading14RegOpt g
attr Anel_SD reading14Regex ^(?:[^;;]*;;){23}([^;;]*);;
attr Anel_SD reading15Name value5
attr Anel_SD reading15RegOpt g
attr Anel_SD reading15Regex ^(?:[^;;]*;;){24}([^;;]*);;
attr Anel_SD reading16Name value6
attr Anel_SD reading16RegOpt g
attr Anel_SD reading16Regex ^(?:[^;;]*;;){25}([^;;]*);;
attr Anel_SD reading17Name value7
attr Anel_SD reading17RegOpt g
attr Anel_SD reading17Regex ^(?:[^;;]*;;){26}([^;;]*);;
attr Anel_SD reading18Name value8
attr Anel_SD reading18RegOpt g
attr Anel_SD reading18Regex ^(?:[^;;]*;;){27}([^;;]*);;
attr Anel_SD room Power Control
attr Anel_SD timeout 5

#####################################################################################################################
# Anel NetPower Control Steckdosenleiste - Dummies für die 8 Steckdosen definieren                                  #
#####################################################################################################################

define Anel_SD_01_dummy dummy
attr Anel_SD_01_dummy alias SD 01: Cloudy
attr Anel_SD_01_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr Anel_SD_01_dummy group Anel Ratingen
attr Anel_SD_01_dummy room Power Control
attr Anel_SD_01_dummy webCmd :
define Anel_SD_01_dummy_off notify Anel_SD_01_dummy:off {system('/opt/fhem/mycfg/scripts/netpower.sh set 1 off');;}
define Anel_SD_01_dummy_on notify Anel_SD_01_dummy:on {system('/opt/fhem/mycfg/scripts/netpower.sh set 1 on');;}

define Anel_SD_02_dummy dummy
attr Anel_SD_02_dummy alias SD 02: SERVER05
attr Anel_SD_02_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr Anel_SD_02_dummy group Anel Ratingen
attr Anel_SD_02_dummy room Power Control
attr Anel_SD_02_dummy webCmd :
define Anel_SD_02_dummy_off notify Anel_SD_02_dummy:off {system('/opt/fhem/mycfg/scripts/netpower.sh set 2 off');;}
define Anel_SD_02_dummy_on notify Anel_SD_02_dummy:on {system('/opt/fhem/mycfg/scripts/netpower.sh set 2 on');;}

define Anel_SD_03_dummy dummy
attr Anel_SD_03_dummy alias SD 03: Backup HDD
attr Anel_SD_03_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr Anel_SD_03_dummy group Anel Ratingen
attr Anel_SD_03_dummy room Power Control
attr Anel_SD_03_dummy webCmd :
define Anel_SD_03_dummy_off notify Anel_SD_03_dummy:off {system('/opt/fhem/mycfg/scripts/netpower.sh set 3 off');;}
define Anel_SD_03_dummy_on notify Anel_SD_03_dummy:on {system('/opt/fhem/mycfg/scripts/netpower.sh set 3 on');;}

define Anel_SD_04_dummy dummy
attr Anel_SD_04_dummy alias SD 04: Daniela 2 TB
attr Anel_SD_04_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr Anel_SD_04_dummy group Anel Ratingen
attr Anel_SD_04_dummy room Power Control
attr Anel_SD_04_dummy webCmd :
define Anel_SD_04_dummy_off notify Anel_SD_04_dummy:off {system('/opt/fhem/mycfg/scripts/netpower.sh set 4 off');;}
define Anel_SD_04_dummy_on notify Anel_SD_04_dummy:on {system('/opt/fhem/mycfg/scripts/netpower.sh set 4 on');;}

define Anel_SD_05_dummy dummy
attr Anel_SD_05_dummy alias SD 05: Netgear Switch
attr Anel_SD_05_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr Anel_SD_05_dummy group Anel Ratingen
attr Anel_SD_05_dummy room Power Control
attr Anel_SD_05_dummy webCmd :
define Anel_SD_05_dummy_off notify Anel_SD_05_dummy:off {system('/opt/fhem/mycfg/scripts/netpower.sh set 5 off');;}
define Anel_SD_05_dummy_on notify Anel_SD_05_dummy:on {system('/opt/fhem/mycfg/scripts/netpower.sh set 5 on');;}

define Anel_SD_06_dummy dummy
attr Anel_SD_06_dummy alias SD 06: Raspberry
attr Anel_SD_06_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr Anel_SD_06_dummy group Anel Ratingen
attr Anel_SD_06_dummy room Power Control
attr Anel_SD_06_dummy webCmd :
define Anel_SD_06_dummy_off notify Anel_SD_06_dummy:off {system('/opt/fhem/mycfg/scripts/netpower.sh set 6 off');;}
define Anel_SD_06_dummy_on notify Anel_SD_06_dummy:on {system('/opt/fhem/mycfg/scripts/netpower.sh set 6 on');;}

define Anel_SD_07_dummy dummy
attr Anel_SD_07_dummy alias SD 07: Michael 1,5 TB
attr Anel_SD_07_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr Anel_SD_07_dummy group Anel Ratingen
attr Anel_SD_07_dummy room Power Control
attr Anel_SD_07_dummy webCmd :
define Anel_SD_07_dummy_off notify Anel_SD_07_dummy:off {system('/opt/fhem/mycfg/scripts/netpower.sh set 7 off');;}
define Anel_SD_07_dummy_on notify Anel_SD_07_dummy:on {system('/opt/fhem/mycfg/scripts/netpower.sh set 7 on');;}

define Anel_SD_08_dummy dummy
attr Anel_SD_08_dummy alias SD 08: SERVER01
attr Anel_SD_08_dummy devStateIcon on:taster_ch_an_gruen:off off:taster_ch_aus_rot:on
attr Anel_SD_08_dummy group Anel Ratingen
attr Anel_SD_08_dummy room Power Control
attr Anel_SD_08_dummy webCmd :
define Anel_SD_08_dummy_off notify Anel_SD_08_dummy:off {system('/opt/fhem/mycfg/scripts/netpower.sh set 8 off');;}
define Anel_SD_08_dummy_on notify Anel_SD_08_dummy:on {system('/opt/fhem/mycfg/scripts/netpower.sh set 8 on');;}

#####################################################################################################################
# Anel NetPower Control Steckdosenleiste - Namen auslesen und dann in Alias schreiben                               #
# Das Alias Attribut mit den ausgelesenden Namen der Steckdose befüllen und dann das Ganze speichern.               #
# Somit umgeht man das rote Fragezeichen hinter SAVE CONFIG in der FHEM WebUI.                                      #
#####################################################################################################################

define Anel_SD_dummy_notify notify Anel_SD:.* {\
  fhem("attr Anel_SD_01_dummy alias SD 01: ".(ReadingsVal("Anel_SD","name1", "")));;\
  fhem("attr Anel_SD_02_dummy alias SD 02: ".(ReadingsVal("Anel_SD","name2", "")));;\
  fhem("attr Anel_SD_03_dummy alias SD 03: ".(ReadingsVal("Anel_SD","name3", "")));;\
  fhem("attr Anel_SD_04_dummy alias SD 04: ".(ReadingsVal("Anel_SD","name4", "")));;\
  fhem("attr Anel_SD_05_dummy alias SD 05: ".(ReadingsVal("Anel_SD","name5", "")));;\
  fhem("attr Anel_SD_06_dummy alias SD 06: ".(ReadingsVal("Anel_SD","name6", "")));;\
  fhem("attr Anel_SD_07_dummy alias SD 07: ".(ReadingsVal("Anel_SD","name7", "")));;\
  fhem("attr Anel_SD_08_dummy alias SD 08: ".(ReadingsVal("Anel_SD","name8", "")));;\
  fhem("save");;\
  define Anel_SD_01_dummy_on_doif DOIF ([Anel_SD:value1] eq "1") (set Anel_SD_01_dummy on) DOELSE (set Anel_SD_01_dummy off)
  define Anel_SD_02_dummy_on_doif DOIF ([Anel_SD:value2] eq "1") (set Anel_SD_02_dummy on) DOELSE (set Anel_SD_02_dummy off)
  define Anel_SD_03_dummy_on_doif DOIF ([Anel_SD:value3] eq "1") (set Anel_SD_03_dummy on) DOELSE (set Anel_SD_03_dummy off)
  define Anel_SD_04_dummy_on_doif DOIF ([Anel_SD:value4] eq "1") (set Anel_SD_04_dummy on) DOELSE (set Anel_SD_04_dummy off)
  define Anel_SD_05_dummy_on_doif DOIF ([Anel_SD:value5] eq "1") (set Anel_SD_05_dummy on) DOELSE (set Anel_SD_05_dummy off)
  define Anel_SD_06_dummy_on_doif DOIF ([Anel_SD:value6] eq "1") (set Anel_SD_06_dummy on) DOELSE (set Anel_SD_06_dummy off)
  define Anel_SD_07_dummy_on_doif DOIF ([Anel_SD:value7] eq "1") (set Anel_SD_07_dummy on) DOELSE (set Anel_SD_07_dummy off)
  define Anel_SD_08_dummy_on_doif DOIF ([Anel_SD:value8] eq "1") (set Anel_SD_08_dummy on) DOELSE (set Anel_SD_08_dummy off)
}
attr Anel_SD_dummy_notify verbose 0


Dies funktioniert nun auch soweit einwandfrei, aber was mich momentan noch stört ist die Authentifizierung gegen die Steckdose.
Obwohl im Aufruf die richtigen Benutzerdaten angegeben sind, funktioniert die Anmeldung nur wenn ich im Interface der Steckdose
unter USER -> keine Authentifizierung auswähle.

Wie hast Du das bei Dir realisiert? Möchte diese Einstellung ungern so lassen.

Des Weiteren würde ich gerne mein verwendetes Bash Script nach Perl konvertieren und mich würde interessieren, ab Du mich dabei unterstützen kannst und ob überhaupt Interesse besteht.

Was Perl angeht bin ich jedoch blutiger Anfänger und es wird sicherlich noch einige Zeit vergehen bis wir eine lauffähige Lösung haben.

Hier mal ein Auszug meiner 99_myUtils.pm

########################################################################################
# Net Power Control - Funktion zum Schalten der Anel NetPower Control Steckdosenleiste #
########################################################################################
sub
AnelToggle($$$$)
{
    my ($user, $password, $steckdose, $ip) = @_;
    $steckdose--;
    my $curl=`curl -s --user "$user:$password" --data "F$steckdose=T" "http://$ip/ctrl.htm?Auth:"`
}


Mit dieser Funktion kann man den Zustand der Steckdose toggeln. Wenn ich diese Funktion auf der Linux Console mit perl test.pm user passwort steckdose ip aufrufe
funktioniert das einwandfrei und die Steckdose wird getoggelt.

Momentan suche ich aber nach einer Möglichkeit den Code aus FHEM aufzurufen und weiß noch nicht genau wie.

So das wars erst einmal aus Ratingen


Gruß Masterciw


Masterciw



Groej

Hallo Masterciw,

ja danke bin ein paar Kilo schwerer  :D. Hoffe Du hattest auch schöne Tage.

Freut mich das ich Dir etwas helfen konnte. Würde Dir gerne helfen aber alles was ich hier so mache ist reines googeln und testen. Klar wächst das wissen dadurch aber ich glaub nicht das ich ein Modul hinbekommen würde obwohl ich sowas für meine Taupunktberechnung gemacht habe. Warte mal. Ich hatte da doch schon mal was am Laufen.
Vielleicht kannste was damit Anfange. Ich weiß nicht ob ich das hier im Forum gefunden hatte oder im Forum bei Anel. Es hat jedenfalls damit funktioniert und ich konnte die Dosen schalten. Ich bin mir nicht mehr sicher ob ich im Linux dafür nachinstallieren mußte.


########## ANEL
## Script wird aufgerufen mit Z.B. {Anel('192.168.10.4','Sw_on7udpudp\x00\n')}.
## In diesen Fall wird Dose 7 eingeschaltet mit dem User UDP mit Passwort UDP
sub Anel($$) {
my ($leisteip,$status) = @_;
    use IO::Socket;
   my $sock = new IO::Socket::INET (
           PeerAddr => $leisteip,
           PeerPort => '75',
           Proto => 'udp',
        );
    die "Could not create socket: $!\n" unless $sock;
        print $sock "$status";
        close($sock);
}
########## ANEL Ende


Also ich habe eine Pro und eine HUT Version. In beiden habe ich kein Haken gesetzt bei "keine Authentifikation" und es geht. Auch habe ich keine undefinierte Zustände der Dosen. Wie schon gesagt hab ich raus gefunden dass das WebUI der Dose nicht immer hinterher kommt aber die Dosen schalten. Hat Deine Dose die letzte Firmware für Deine Variante drin? Versuch doch mal einen anderen User als den admin zu nehmen. Hab einen User angelegt der nur steuern darf.

Gruß aus Berlin

Jörg

FHEM - RaspPi2 - KNXD - KNX - CUL 868 - FS20 - HMS - WH3080 - Signalduino 433 MHz - Telegram - Anel Elektronik IP Steckdosen - BME280

StefanStrobel

Hallo Masterciw,

Wenn Deine Steckdose einfach nur basic auth haben möchte, kannst Du Benutzernamen und passwort beim define angeben.
Siehe https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_create_a_valid_session_id_that_might_be_necessary

Das Schalten der Dose kannst Du auch direkt mit HTTPMOD machen. Alles was ein externer Aufruf von curl macht, geht auch direkt als Set-Option in Fhem:
https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_define_a_set_command_and_send_data_to_a_device

Weitere Beispiele findest Du im Forum.

Gruss
   Stefan

Masterciw

Hallo Stefan,

vielen Dank für Deinen Tip. Habe die Define Zeile für die Steckdose nun umgebaut und es funktioniert einwandfrei.

Die Zeile sieht nun folgendermaßen aus:
define Anel_SD HTTPMOD http://user:passwort@192.168.2.100/strg.cfg? 8

Somit konnte ich nun im Webinterface der Steckdose den Haken für ohne Authentifizierung wieder entfernen.
Danke nochmals für die Links, haben mir sehr geholfen.

Bezüglich des Schalten mit Set muss ich mir das nochmals ein wenig genauer anschauen. Leider habe ich das noch nicht so ganz verstanden und die Dokumentation dazu habe ich zwar gelesen, aber noch nicht verstanden.

Werde mir das die Tage nochmals anschauen. Sollte mir noch was unklar sein, komme ich gerne nochmals auf Dich zu.


@Groej: Deinen Tip habe ich auch ausprobiert. Hatte dazu einen neuen Benutzer angelegt, der nur steuern durfte. Leider hatte ich damit die gleichen Probleme.


Ich wünsche Euch einen guten Rutsch ins neue Jahr.

Gruß Masterciw

hdosw

Zitat von: Masterciw am 28 Dezember 2016, 12:56:42
netpower.sh
Hallo Masterciw,

ich fange gerade mit fhem an. Hab schon meine Funksteckdosen erfolgreich definiert und bin jetzt dran mein Anel Net-Power Steckdosenleiste einzurichten. Dank Deines Beitrags habe ich es jetzt soweit, dass sie Steckdosen mit Namen und Status angezeigt werden. Leider klappt das schalten nicht da mir die netpower.sh fehlt. Kannst Du mir diese zukommen lassen?

Lieben Gruß aus FFB

Masterciw

Hallo HDO,

aber klar doch. Freut mich wenn ich helfen kann.
Hier der Code der Datei netpower.sh. Hoffe das hilft Dir weiter.


#!/bin/bash

user='fhem'
pw='xxxxxxxx'
ip='192.168.2.100'

function strg {
curl -s --user "$user:$pw" "http://$ip/strg.cfg"
}

function toggle {
curl -s --user "$user:$pw" --data "F$[$1-1]=S" "http://$ip/ctrl.htm" > /dev/null
}

function status {
strg="$(strg)"

if [[ "$?" != "0" ]]; then
echo 'Geht nicht'
exit
fi

printf 'Nr Bezeichnung Status'
echo

for i in {1..8}; do
echo "$strg" | cut -d\; -f2$i | while read state; do
aaa=bbb

echo -n $i
printf ' '
echo -n "$(echo "$strg" | cut -d\; -f1$i)"
printf ' '

case "$state" in
0 )
echo -e "\e[31mDeaktiviert\e[0m"
;;

1 )
echo -e "\e[32mAktiviert\e[0m"
;;

* )
echo "!!FEHLER!!"
;;
esac
done
done | sed 's/\t/_|/g' |  column -t -s '_' | awk '1;!(NR%1){print "--------------------------------------";}'

return $aaa
}

case "$1" in
status )
status
;;

toggle )
case "$2" in
[1-8] )
echo -e "\e[1mVorher:\e[0m"
echo
status

echo
echo 'Jetzt toggle ich...'
echo

toggle $2

echo -e "\e[1mNachher:\e[0m"
echo
status
;;

* )
echo "Die Steckdose $2 gibts nicht!"
;;
esac
;;

set )
case "$2" in
[1-8] )
case "$3" in
on|off )
echo -e "\e[1mVorher:\e[0m"
echo
status

state="$(strg | cut -d\; -f2$2)"

[[ "$3" == "on" ]] && [[ "$state" == "0" ]] && toggle=1
[[ "$3" == "off" ]] && [[ "$state" == "1" ]] && toggle=1

if [[ "$toggle" == "1" ]]; then
echo "Jetzt toggle ich..."
echo

toggle $2

echo -e "\e[1mNachher:\e[0m"
echo
status
else
echo "Also mache ich nix."
fi
;;

* )
echo "$3 ist kein gültiges Argument!"
;;
esac
;;

* )
echo "$2 ist keine Steckdose!"
;;
esac
;;

* )
echo "Usage:"
echo "$0 status"
echo "$0 toggle {1-8}"
echo "$0 set {1-8} {on|off}"
;;
esac


Code in eine Datei namens netpower.sh kopieren (Gross/Kleinschreibung beachten). Diese in den richtigen Ordner auf dem Raspberry kopieren. Pfad sieht man in der Definition der Steckdosen.

In der Datei netpower.sh die folgenden Variablen pflegen.
user='fhem'
pw='xxxxxxxx'
ip='192.168.2.100'

Ich hatte mir damals einen Benutzer im Webinterface der Steckdose für die Schaltvorgänge erstellt.

Die Datei netpower.sh ausführbar machen.

Nun sollte einem Test nichts mehr im Wege stehen.

Hoffe das Ganze hilft Dir weiter. Habe das Ganze damals für die Netpower Control V2 entwickelt und hoffe das funktioniert auch mit den neueren Versionen. Da meine beiden Devices nach wie vor einwandfrei funktionieren (ab und zu hakt mal ein Relais) habe ich mir bisher noch kein neueres Device zugelegt.

Happy testing.

Würde mich freuen wenn Du den Code modifizierst, wenn Du das Ergebnis hier postet. So haben dann auch andere Spaß damit.
Für Fragen stehe ich soweit ich diese beantworten kann gerne zur Verfügung.

Schönen Abend noch.

Gruß Masterciw


hdosw

Hallo Masterciw,

ich danke Dir für die schnelle und zielführende Antwort. Es funktioniert wunderbar. Das einzige was komisch ist, ist dass ich immer wieder die Meldung

Connection lost, trying a reconnect every 5 seconds

Hast Du das auch und wenn ja weisst Du warum dies kommt und auch eine Lösung?
Den timeout habe ich schon auf 60 erhöht. Jetzt kommt die Meldung nicht mehr ganz so oft aber sie kommt  :(

Liebe Grüße
Dieter

Masterciw

Hallo Dieter,

schau Dir mal den folgenden Link an:
https://forum.fhem.de/index.php?topic=76983.0

Der könnte bei der Behebung des Problemes helfen.
Wo bekommst Du den Fehler genau angezeigt.

Wie kommst Du zu der Vermutung, das dieser mit der Steckdose in Zusammenhand steht?
Wie ist der Loglevel in FHEM eingestellt?

Bei mir sehe ich diese Fehler nicht.

Gruß und eine schöne Weihnachtszeit.

Michael



hdosw

Hallo Michael,

danke für Deine Antwort. Den Link schau ich mir heute an. Die Fehlermeldung hab ich als Bild angehängt und der kommt erst seitdem ich die Anel-Steckdose  eingerichtet habe. Mein Log-Level steht auf 3 und es wird auch kein Fehler eingetragen.

Ich wünsche Deiner Familie und Dir eine schöne Weihnachtszeit.

Liebe Grüße
Dieter

Masterciw

Hallo Dieter,

jetzt wo ich die Meldung sehe, kann ich mich entsinnen, dass diese auch ab und an in meiner FHEM Gui auftaucht. Das sollten wir dann nach Weihnachten mal gemeinsam forschen woran das liegen könnte.

Gruß und auch Dir und Deinen Lieben eine schöne Weihnachtszeit.

Michael