WLAN an Feiertagen schalten

Begonnen von Heiner, 02 Mai 2013, 10:35:13

Vorheriges Thema - Nächstes Thema

Heiner

Hi,

also auf http://fhem.de/fritzbox.html steht vereinfacht gesagt:

Die AVM Laborfirmware mit FHEM ist in diesem chroot Umgebung und daher kann man nicht die Fritzbox Funktion selbst verändern
aber wenn man das FHEM Image dieser Seite nimmt, dann soll es gehen weil ausserhalb von chroot. Und genau dieses Image habe ich.

Aber der Befehl fuer die Komandozeile: {system("/etc/init.d/rc.net wlanstart")}
fuehrt auch bei mir zum Ergebnis "-1" und das bedeutet laut dem link'failed to execute'.

Also das Log das nun einfach -1 sagt bedeutet wohl dasselbe.

Ich hab aber noch was gefunden im Wiki http://www.fhemwiki.de/wiki/Fritzbox:_WLAN_ein/ausschalten
aber wenn ich den Code eingebe:

######## Switch FB WLAN on/off ############
# call from notify with {doWLANswitch("%")}
sub
doWLANswitch($) {
 my $cmd = shift;
 my $ret = "";
 if ($cmd =~ m"on"i) {      # on or ON
 $ret .= "ATD: " . `echo "ATD#96*1*" | nc 127.0.0.1 1011` ;
 sleep 1 ;
 $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
 }
 if ($cmd =~ m"off"i) {      # off or OFF
 $ret .= "ATD: " . `echo "ATD#96*0*" | nc 127.0.0.1 1011` ;
 sleep 1 ;
 $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
 }
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
 Log 1, "doWLANswitch($cmd) returned: $ret";
}
define WLANschalten notify btn {doWLANswitch("%")}
attr WLANschalten room Technik


 wie krieg ich dann den Event des WLANschalten ausprobiert?
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

MisterEltako

Nur das Event testen:

"trigger btn"

in die Kommandozeile und dann Enter drücken...

oder als Testbutton über FhemWeb.

define Testbtn dummy
attr Testbtn webCmd on
attr devStateIcon on:on:on off:off:on

define WLANschalten notify Testbtn {\
doWLANswitch("%");;\
fhem("define Aus at +00:00:01 set Testbtn off");;\
}


MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Heiner

ich steh auf dem Schlauch....

Also ich habe wie gefordert in die 99_myUtils.pm die Zeile
use FritzBoxUtils;
eingefuegt, und gespeichert und ein shutdown restart gemacht.

wenn ich dann den Code:
######## Switch FB WLAN on/off ############
# call from notify with {doWLANswitch("%")}
sub
doWLANswitch($) {
 my $cmd = shift;
 my $ret = "";
 if ($cmd =~ m"on"i) {      # on or ON
 $ret .= "ATD: " . `echo "ATD#96*1*" | nc 127.0.0.1 1011` ;
 sleep 1 ;
 $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
 }
 if ($cmd =~ m"off"i) {      # off or OFF
 $ret .= "ATD: " . `echo "ATD#96*0*" | nc 127.0.0.1 1011` ;
 sleep 1 ;
 $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
 }
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
 Log 1, "doWLANswitch($cmd) returned: $ret";
}
eingebe und speichern will erscheint der Fehler:

Unknown command sub, try help Unknown command doWLANswitch($), try help Unknown command my, try help Unknown command my, try help Unknown command if, try help Unknown command $ret, try help Unknown command $ret, try help Unknown command }, try help Unknown command if, try help Unknown command $ret, try help Unknown command $ret, try help Unknown command }, try help Unknown command $ret, try help Unknown command Log, try help Unknown command }, try help Please define WLANschalten first



Aber auch wenn ich den code von oben eingebe:
define Testbtn dummy
attr Testbtn webCmd on
attr deviceStateIcon on:on:on off:off:on

define WLANschalten notify Testbtn {\
doWLANswitch("%");;\
fhem("define Aus at +00:00:01 set Testbtn off");;\
}
bekomme ich den Fehler:
Testbtn: unknown attribute webCmd, choose one of room group comment alias eventMap userReadings loglevel:0,1,2,3,4,5,6 setList event-on-change-reading event-on-update-reading event-min-interval stateFormat or use attr global userattr webCmd Please define deviceStateIcon first WLANschalten already defined, delete it first

Aber zumindest der Teil muessete doch unabhaengig vom ersten code funktionieren koennen.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

MisterEltako

Ich habe leider keine Fritzbox, sondern FHEM auf einem NAS-System. Also ist die Simulation hier etwas schwierig!

Habe jedoch gerade getestet:

in FHEM.cfg:

define Testbtn dummy
attr Testbtn webCmd on
attr Testbtn devStateIcon on:on:on off:off:on

define WLANschalten notify Testbtn {\
doWLANswitch("%");;\
fhem("define Aus at +00:00:01 set Testbtn off");;\
}


in 99_Utils.pm ganz oben:

use POSIX;
use FritzBoxUtils;

sub
myExperimentUtils_Initialize($$)
{
  my ($hash) = @_;
}


in 99_Utils.pm (irgenwo, wo Platz ist):
#---------------------------------------------------------------------------------------------------
sub
doWLANswitch($) {
my $cmd = shift;
my $ret = "";
if ($cmd =~ m"on"i) { # on or ON
$ret .= "ATD: " . `echo "ATD#96*1*" | nc 127.0.0.1 1011` ;
sleep 1 ;
$ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
}
if ($cmd =~ m"off"i) { # off or OFF
$ret .= "ATD: " . `echo "ATD#96*0*" | nc 127.0.0.1 1011` ;
sleep 1 ;
$ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
}
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 1, "doWLANswitch($cmd) returned: $ret";
}
#--------------------------------------------------------------------------------------------------------


Das geht ohne Fehlermeldung bei mir! Ob es natürlich dein Fritzbox auf WLAN schaltet kann ich nicht testen... ;o)

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Heiner

Da ist mein Fehler, den letzten grossen Teil des Code mit der SUB  rountine hab ich bloederweise in die fhem.cfg geschrieben.

Ich probiers heute Abend gleich noch mal aus und werde posten obs nun geht.

Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Heiner

Geht immer noch nicht. beim speichern der fhem.cfg bekomme ich nun:

Testbtn: unknown attribute webCmd, choose one of room group comment alias eventMap userReadings loglevel:0,1,2,3,4,5,6 setList event-on-change-reading event-on-update-reading event-min-interval stateFormat or use attr global userattr webCmd Testbtn: unknown attribute devStateIcon, choose one of room group comment alias eventMap userReadings loglevel:0,1,2,3,4,5,6 setList event-on-change-reading event-on-update-reading event-min-interval stateFormat or use attr global userattr devStateIcon

was kann das sein?
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Heiner

Hi,

bitte letzten Beitrag ignorieren !!!

Also mein code lautet jetzt in der fhem.cfg:

define Testbtn dummy
attr Testbtn devStateIcon on:WLAN_Status.1:on off:WLAN_Status.0:off
attr Testbtn room Technik
attr Testbtn webCmd on:off

define WLANschalten notify Testbtn {doWLANswitch("%");fhem("define Aus at +00:00:01 set Testbtn off")}

bis hier hin (;) versteh ich den code (so in etwas toogle WLAN)
aber was exakt soll der Rest bewirken?
 ?? definiere die Variable Aus 1 Sekunde nach dem Event und setze das Tastensymbol auf off ??
 


Ich hab einen huebschen Button daneben steht on und off und wenn ich drauf clicke veraendert sich der Button. Prima
Im Log steht jedoch:

2013.05.15 12:25:23 1: doWLANswitch() returned:
2013.05.15 12:25:25 1: doWLANswitch(off) returned: ATD:  ATH:
2013.05.15 12:25:25 3: define off at +00:00:01 set Testbtn off : off already defined, delete it first
2013.05.15 12:25:25 3: WLANschalten return value: Aus already defined, delete it first


Was bedeutet ATD und ATH? nix passiert weil da nix drin steht?
Das log hat auch Probleme den codeteil zu verstehen

Kann mir bitte noch einmal jemand helfen? Bitte, Bitte.

Danke.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

MisterEltako

Zitat2013.05.15 12:25:25 3: define off at +00:00:01 set Testbtn off : off already defined, delete it first
2013.05.15 12:25:25 3: WLANschalten return value: Aus already defined, delete it first

Das bedeutet du musst eine Zeile vor dem Anlegen des defines prüfen, ob es schon existiert und ggf. löschen.

also z.B.:
in der fhem.cfg:

define WLANschalten notify Testbtn {\
  doWLANswitch("%");;\
  if (defined($defs{Aus})){fhem('delete Aus')};;\
  fhem("define Aus at +00:00:01 set Testbtn off")}


zu ATH & ATD kann ich dir leider nicht weiterhelfen. Irgendwie sind das Telefoncodes mit dem man Fritzboxen beeinflussen kann, ähnlich wie bei Fernabfrage eines Anrufbeantworters...

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Heiner

Licht am ende des Tunnels:

Das folgende klappt zum schlaten des Gaeste WLAN. Somit muesste man doch auch irgendwie das generalle WLAN an Feiertragen automatisch schalten koennen, oder? Nur wie genau?

define GuestWLAN FS20 a3a3 ac
# GuestWLAN an mit FB
define guest_wlanON notify GuestWLAN:on.* {my $g_wlan="";  $g_wlan=qx(/usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled 1);;\
  $g_wlan=1;  fhem "set Status_Guest_WLAN $g_wlan";;}
# GuestWLAN aus mit FB
define guest_wlanOFF notify GuestWLAN:off.* {my $g_wlan="";  $g_wlan=qx(/usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled 0);;\
  $g_wlan=0;  fhem "set Status_Guest_WLAN $g_wlan";;}


Das ging ja leider nicht:
    define FeiertagsWLAN at *08:30:00 {if ($we) {system('/etc/init.d/rc.net wlan$wstate &')}}
Sollte es dann nicht so lauten?:
    define FeiertagsWLAN at *08:30:00 {if ($we) {system('/usr/bin/ctlmgr_ctl w wlan settings/ap_enabled 1')}}
klappt aber leider nicht....
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

MisterEltako

define GuestWLAN FS20 a3a3 ac

# GuestWLAN an mit FB


define FeiertagsWLAN at *08:30:00 {\
  if (($we) && (Value("GuestWLAN") eq "on")){\
    my $g_wlan="";;\
    $g_wlan=qx(/usr/bin/ctlmgr_ctl w wlan settings/ap_enabled 1);;\
    $g_wlan=1;;\
    fhem "set Status_Guest_WLAN $g_wlan";;\
  }else {\
   Log 3, "Es ist keine Wochenende oder Feiertag, WLAN bleibt aus!!;;\
  }\
}



MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Heiner

Hallo noch mal, ich hab's nun fast geschafft.

Erst einmal für alle die fhem über Freetz ansprechen: die AT Befehle der Fritz Box gehen so lange nicht bis man manuell in Freetz die module einschaltet die in der original FW eh laufen, nämlich
      "Standard packages->netcat 0.7.1"
      "Busybox applets->Networking utilities->nc"

Nun aber zurück zu meinem FeiertagsWLAN

ein manuelles schalten funktioniert mit
# WLAN einschalten
define WLAN_on notify WLAN:on.* {;;\
  qx(/usr/bin/ctlmgr_ctl w wlan settings/ap_enabled 1)}


mein FeiertagsWLAN (einschalten um 8:30) versuche ich somit so zu machen:

define FeiertagsWLAN at *08:30:00 {\
 if (($we) eq "on")){\
 my $wlan="";;\
 $wlan=qx(/usr/bin/ctlmgr_ctl w wlan settings/ap_enabled 1);;\
 $wlan=1;;\
 fhem "set WLAN $wlan";;\
 }}

Leider scheint da noch eine Kleinigkeit falsch zu sein.

Im Log lese ich.

2013.05.30 08:30:00 3: syntax error at (eval 570) line 1, near "))"
syntax error at (eval 570) line 1, near "}}"

Aber ich sehe einfach nicht wo hier eine Klammer falsch gesetzt sein soll.

Kann mir hier noch mal jemand auf die Sprünge helfen?

vielen Dank
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Puschel74

Hallo,

das
if (($we) eq "on")){\
gehört mMn so:
if ($we){\

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Elektrolurch

Hallo,

Frage zu dem Thema "holiday". Gibt es holiday-Dateien zum herunterladen, wenn ja wo? Ich suche die für Bayern. In meinem FHEM gibt es keine '.holiday Dateien von Haus aus.

Elektrolurch
configDB und Windows befreite Zone!

Puschel74

Hallo,

wenn jemand sowas für Basel(Stadt/Land) hat wäre ich auch dankbar.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Puschel74

Hallo,

@Elektrolurch

ich hab dir hier mal für Bayern eine feiertag.holiday angehängt.
Ich hoffe ich hab keine Feiertage übersehen.

Grüße

P.S.: Basel hab ich mir grad eingetragen.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.