Telegram senden/empfangen/schalten

Begonnen von otto, 29 Februar 2020, 19:01:24

Vorheriges Thema - Nächstes Thema

otto

Hallo möchte mit denn Handys und Telegramm verschiedene Zustände abfragen und Schaltvorgänge machen,
das meiste funktioniert auch nur beim if mit EVTPART1 und EVENT hauts nicht hin
Licht  an/aus geht nicht
teleBot:msgText:.* {

my $sender = ReadingsVal($NAME, "msgPeerId", 0);
my $EVTPART1 = ReadingsVal($NAME, "msgText", "");

Log "Sender", "$sender";
Log "Nachricht", "$EVTPART1";

if ($EVTPART1 eq 'Licht') {
        if ($EVENT =~ 'an') {
  fhem("set teleBot message \@$sender Licht an");
      fhem("set Logo8_1 on");

        }
        elsif ($EVENT =~ 'aus') {
            fhem("set Logo8_1 off");
            fhem("set teleBot message \@$sender Licht aus");
        }

    }
elsif ($EVTPART1 eq 'Temp') {
        fhem("set teleBot message \@$sender Temperaturen \n Aussen [TH_Aussen:STATE]°\n Kessel  [Kessel:STATE]\°\n  Zisterne [Zisterne:level] %\n Boiler [Boiler:STATE]°");
}
       elsif ($EVTPART1 eq 'Ak_ein') {
        fhem("set Ausgang3 off");
fhem("set teleBot message \@$sender Akustik ist nun ein...");
    }
elsif ($EVTPART1 eq 'Reset') {
        fhem("set Ausgang2 on");
fhem("set teleBot message \@$sender Reset....");
    }
        elsif ($EVTPART1 eq 'Ak_aus') {
        fhem("set Ausgang3 on");
fhem("set teleBot message \@$sender Akustik ist nun aus...");
    }
        elsif ($EVTPART1 eq 'Br_ein') {
        fhem("set Buero_LED_RM on");
fhem("set teleBot message \@$sender Buero_LED_RM ist nun ein...");
    }
        elsif ($EVTPART1 eq 'Br_aus') {
        fhem("set Buero_LED_RM off");
fhem("set teleBot message \@$sender Buero_LED_RM ist nun aus...");
    }
        elsif ($EVTPART1 eq 'A_ein') {
        fhem("set Alarm_LED_RM on");
fhem("set teleBot message \@$sender Alarm_LED_RM ist nun ein...");
    }
        elsif ($EVTPART1 eq 'A_aus') {
        fhem("set Alarm_LED_RM off");
fhem("set teleBot message \@$sender Alarm_LED_RM ist nun aus...");
    }
}


Gruß Otto

Raymund

#1
Hallo otto,

was steht denn im Logfile für $EVTPART1 und $sender?

Und warum bleibst Du bei den Vergleichen mit $EVENT nicht beim "eq" und nimmst plötzlich den Regex-Operator =~ ?

Gruß
Raymund

otto

#2
Das waren eigendlich alles Schnipsel die ich aufgegriffen habe und an meine Bedürfnisse angepasst habe,
dachte evtl. kann mir einer sagen warum das so nicht geht
bei dieser conf ist es noch gegangen:
define teleBot_notify_1 notify teleBot:msgText.* {\
    if ($EVTPART1 eq 'Licht') {\
        if ($EVENT =~ 'an') {\
  fhem("set teleBot message Licht an");;\
      fhem("set Logo8_1 on");;\
\
        }\
        elsif ($EVENT =~ 'aus') {\
            fhem("set Logo8_1 off");;\
            fhem("set teleBot message Licht aus");;\
        }\
    }\



Gruß Otto

Raymund

Gib doch bitte mal die Variablen in das Logfile aus, speziell $EVENT. Dann kannst Du (bzw. "einer") sehen, ob Deine Vergleiche überhaupt passen können.

Wie soll dir "einer" ohne diese Infos sagen, ob es gehen kann oder nicht?

viegener

Vielleicht schaust Du Dir mal den Befehl msg an, vielleicht kommst Du damit leichter zum Ziel?

https://forum.fhem.de/index.php/topic,39983.0.html

Dialoge lassen sich damit auch gestalten über msgDialog


Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Raymund

Hallo Otto,

schau mal z.B. hier: http://majorshark.de/index.php/blog/15-vordefinierte-variablen-in-fhem

Du vergleichst $EVENT mit 'an' bzw. 'aus'. Da steht aber der ganze (!) Event drin, also vermutlich sowas wie 'msgText: Hallo' und eben nicht 'an'.