Telegram und mehrere User

Begonnen von Pflasterbicker, 14 November 2017, 03:27:38

Vorheriges Thema - Nächstes Thema

Pflasterbicker

Hallo

Ich suche schon seit Stunden nach einer Lösung die wahrscheinlich total leicht zu lösen ist, ich komm nur nicht auf den Fehler...

In FHEM hab ich Telegram installiert, es funktioniert auch wunderbar wenn ich mit meinem Handy etwas Abfrage oder hinschicke. Von FHEM aus kann ich nur zu meinem Handy senden wenn das Attribut ,,defaultPeer" mit @meinBenutzername gesetzt ist. Lösche ich dieses Attribut kann ich keine Nachrichten empfangen. Ansich kein Problem, ich möchte aber dass mehrere User Readings abrufen und Befehle senden können. Ist defaultPeer gesetzt kann zwar ich empfangen aber sonst niemand.

In den Contacts sind die User korrekt drin, TelegramBot kann also empfangen und erkennt den zweiten oder dritten User.

Was muss ich machen damit mehrere User mit FHEM kommunizieren können?

Danke für Eure Hilfe !

Michael

igami

Du musst die Befehle so verwenden wie in der commandref beschrieben mit @<userID>
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

schnitzelbrain

#2
Beispiel

set telegram_bot message @@user1_benutzername @@user2_benutzername Testnachricht

Der Benutzername ist der bei Telegram eingetragene.


Grüße
Schnitzelbrain

Pflasterbicker

Vielen Dank schon mal für Eure Antworten.
Ich check das leider noch immer nicht ganz.
Wenn ich das Attribut "defaultPeer" auf "@MeinTelegramName" setze dann kann ich in Telegramm einen Befehl senden der beantwortet wird.
Als Beispiel kann ich "Temp" senden und bekomme dafür aus einem Notify bestimmte Temperturwerte die ich aus den Reading der Geräte auslese. Das kann aber nur ich empfangen. Wenn User2 Temp sendet bekommt User2 gar keine Antwort denn sie kommt bei User1 an...

Lösche ich das Attribut "defaultPeer" dann überhaupt niemand etwas empfangen, Telegram reagiert überhaupt nicht darauf...

Wisst Ihr was ich meine?

Mit Sicherheit hab ich noch irgendwo einen Fehler drin. In meiner WhatsApp-Instanz funktioniert das ja auch alles, alle Familienmitglieder können dort Befehle an FHEM senden und diese werden beantwortet und ausgeführt. Das muss doch bei Telegram auch funktionieren...

Hier mal das Notify welches ich für Telegram erstellt habe:
Telegram:msgText.* {
    if ($EVTPART1 eq 'Filterpumpe') {
        if ($EVENT =~ 'an') {
            fhem("set Steckdose_Pool_Filterpumpe_Sw on");
        }
        elsif ($EVENT =~ 'aus') {
           fhem("set Steckdose_Pool_Filterpumpe_Sw off");
        }
    }
    elsif ($EVTPART1 eq 'Garage') {
        fhem("set Garagentor on-for-timer 1");
        fhem("set $NAME send Das Garagentor sollte sich nun bewegen");
    }
    elsif( $EVTPART1 eq 'Ruhe' ) {
        fhem("set Ruhemodus_OG aktiv");
      fhem("set $NAME send Der HvO-Alarm im OG ist AUS");
    }
    elsif( $EVTPART1 eq 'Bereit' ) {
        fhem("set Ruhemodus_OG inaktiv");
      fhem("set $NAME send Der HvO-Alarm im OG ist AN");
    }
    elsif ($EVTPART1 eq 'Temp') {
        my $atemp = ReadingsVal("netatmo_M02_00_00_19_0f_0c", "temperature", "");
        fhem("set $NAME send Aussentemperatur: $atemp °C");
        my $watertemp = ReadingsVal("Temp.Poolwasser", "temperature", "");
        fhem("set $NAME send Pool Wassertemperatur: $watertemp °C");
        my $tectemp = ReadingsVal("Temp.Technikraum", "temperature", "");
        my $techum = ReadingsVal("Temp.Technikraum", "humidity", "");
        fhem("set $NAME send Technikraum: $tectemp °C, $techum %");
        my $htemp = ReadingsVal("netatmo_M03_00_00_03_a4_64", "temperature", "");
        my $hhum = ReadingsVal("netatmo_M03_00_00_03_a4_64", "humidity", "");
        fhem("set $NAME send Poolhalle: $htemp °C, $hhum %");
        my $saunatemp = ReadingsVal("netatmo_D70_ee_50_18_fc_9e", "temperature", "");
        my $saunahum = ReadingsVal("netatmo_D70_ee_50_18_fc_9e", "humidity", "");
        fhem("set $NAME send Saunahaus: $saunatemp °C, $saunahum %");
    }
    else {

    }
}


Nochmals danke für Eure Unterstützung

Pflasterbicker

Hab jetzt das Notify nochmal abgeändert und das $Name entfernt und durch Telegram ersetzt, selbes, ich bekomme keine Antwort.
Nur als Info, set Telegram message @@User1 @@User2 Testnachricht funktioniert, es kommt bei beiden User etwas an

Telegram:msgText.* {
    if ($EVTPART1 eq 'Filterpumpe') {
        if ($EVENT =~ 'an') {
            fhem("set Steckdose_Pool_Filterpumpe_Sw on");
        }
        elsif ($EVENT =~ 'aus') {
           fhem("set Steckdose_Pool_Filterpumpe_Sw off");
        }
    }
    elsif ($EVTPART1 eq 'Garage') {
        fhem("set Garagentor on-for-timer 1");
        fhem("set Telegram message Das Garagentor sollte sich nun bewegen");
    }
    elsif( $EVTPART1 eq 'Ruhe' ) {
        fhem("set Ruhemodus_OG aktiv");
      fhem("set Telegram message Der HvO-Alarm im OG ist AUS");
    }
    elsif( $EVTPART1 eq 'Bereit' ) {
        fhem("set Ruhemodus_OG inaktiv");
      fhem("set Telegram message Der HvO-Alarm im OG ist AN");
    }
    elsif ($EVTPART1 eq 'Temp') {
        my $atemp = ReadingsVal("netatmo_M02_00_00_19_0f_0c", "temperature", "");
        fhem("set Telegram message Aussentemperatur: $atemp °C");
        my $watertemp = ReadingsVal("Temp.Poolwasser", "temperature", "");
        fhem("set Telegram message Pool Wassertemperatur: $watertemp °C");
        my $tectemp = ReadingsVal("Temp.Technikraum", "temperature", "");
        my $techum = ReadingsVal("Temp.Technikraum", "humidity", "");
        fhem("set Telegram message Technikraum: $tectemp °C, $techum %");
        my $htemp = ReadingsVal("netatmo_M03_00_00_03_a4_64", "temperature", "");
        my $hhum = ReadingsVal("netatmo_M03_00_00_03_a4_64", "humidity", "");
        fhem("set Telegram message Poolhalle: $htemp °C, $hhum %");
        my $saunatemp = ReadingsVal("netatmo_D70_ee_50_18_fc_9e", "temperature", "");
        my $saunahum = ReadingsVal("netatmo_D70_ee_50_18_fc_9e", "humidity", "");
        fhem("set Telegram message Saunahaus: $saunatemp °C, $saunahum %");
    }
    else {

    }
}

Esjay

Es wundert mich ein wenig, das Igami nicht auf sein Modul verwiesen hat, aber kennst du das schon? Dort ist es auch so, dass der eine es nicht mal mitbekommt, wenn der andere das Menü anfordert.
https://forum.fhem.de/index.php/topic,77297.0.html

Grüße

igami

Ich kann ja nicht überall darauf hinweisen :D
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

schnitzelbrain

Zitat von: Pflasterbicker am 17 November 2017, 09:47:30
Hab jetzt das Notify nochmal abgeändert und das $Name entfernt und durch Telegram ersetzt, selbes, ich bekomme keine Antwort.
Nur als Info, set Telegram message @@User1 @@User2 Testnachricht funktioniert, es kommt bei beiden User etwas an

Telegram:msgText.* {
    if ($EVTPART1 eq 'Filterpumpe') {
        if ($EVENT =~ 'an') {
            fhem("set Steckdose_Pool_Filterpumpe_Sw on");
        }
        elsif ($EVENT =~ 'aus') {
           fhem("set Steckdose_Pool_Filterpumpe_Sw off");
        }
    }
    elsif ($EVTPART1 eq 'Garage') {
        fhem("set Garagentor on-for-timer 1");
        fhem("set Telegram message Das Garagentor sollte sich nun bewegen");
    }
    elsif( $EVTPART1 eq 'Ruhe' ) {
        fhem("set Ruhemodus_OG aktiv");
      fhem("set Telegram message Der HvO-Alarm im OG ist AUS");
    }
    elsif( $EVTPART1 eq 'Bereit' ) {
        fhem("set Ruhemodus_OG inaktiv");
      fhem("set Telegram message Der HvO-Alarm im OG ist AN");
    }
    elsif ($EVTPART1 eq 'Temp') {
        my $atemp = ReadingsVal("netatmo_M02_00_00_19_0f_0c", "temperature", "");
        fhem("set Telegram message Aussentemperatur: $atemp °C");
        my $watertemp = ReadingsVal("Temp.Poolwasser", "temperature", "");
        fhem("set Telegram message Pool Wassertemperatur: $watertemp °C");
        my $tectemp = ReadingsVal("Temp.Technikraum", "temperature", "");
        my $techum = ReadingsVal("Temp.Technikraum", "humidity", "");
        fhem("set Telegram message Technikraum: $tectemp °C, $techum %");
        my $htemp = ReadingsVal("netatmo_M03_00_00_03_a4_64", "temperature", "");
        my $hhum = ReadingsVal("netatmo_M03_00_00_03_a4_64", "humidity", "");
        fhem("set Telegram message Poolhalle: $htemp °C, $hhum %");
        my $saunatemp = ReadingsVal("netatmo_D70_ee_50_18_fc_9e", "temperature", "");
        my $saunahum = ReadingsVal("netatmo_D70_ee_50_18_fc_9e", "humidity", "");
        fhem("set Telegram message Saunahaus: $saunatemp °C, $saunahum %");
    }
    else {

    }
}

Du musst es nicht nur durch telegram ersetzen sondern durch telegram @@user1 @@user2 wenn es beide bekommen sollen.


Oder hast bei deinem code post die user nur weggelassen das es übersichtlicher ist?

Grüße

Schnitzelbrain


Pflasterbicker

Zitat von: schnitzelbrain am 17 November 2017, 11:01:42
Du musst es nicht nur durch telegram ersetzen sondern durch telegram @@user1 @@user2 wenn es beide bekommen sollen.


Oder hast bei deinem code post die user nur weggelassen das es übersichtlicher ist?

Grüße

Schnitzelbrain

Es sollen ja nicht beide bekommen sondern nur DERJENIGE der die Anfrage stellt...

igami

Dann guck dir doch einfach mal das msgDialog Modul an.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED