[32_yowsup.pm] Whatsapp versenden (Mit Handy- oder Festnetznummer)

Begonnen von AHA1805, 01 Oktober 2014, 21:58:55

Vorheriges Thema - Nächstes Thema

justme1968

blackmore hat raugefunden das man \r als zeilenumbruch verwenden kann.

im modul werden ab morgen im gesendeten text alle \n (LF) durch \r (CR) ersetzt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

regenbieger

@Blackmore
Ich übe zwar noch aber mit folgendem notify hab ich von WhatsApp eine Antwort oder Ausführung:

49XXXXXXXXXX:message.*|49YYYYYYYYYY:message:.*
{
my @chn=split(/\:/,$EVENT);;
my $dev=$chn[0];;
my $sta=$chn[1];;
if (index(lc($sta), lc("wetter")) != -1)
{
$sta="Torney ".ReadingsTimestamp('WS2350','Temperatur','')." Garten: ".ReadingsVal('WS2350','Temperatur','')."°C Feucht: ".ReadingsVal('WS2350','Luftfeuchtigkeit','')."% Wohnz: ".ReadingsVal('WS2350','WZ_Temperatur','')."°C Feucht: ".ReadingsVal('WS2350','WZ_Luftfeuchtigkeit','')."%";;
fhem ("set $NAME send $sta");;
}
elsif (index(lc($sta), lc("tvmsg")) != -1) {
if (fhem ("get SATReceiver power") eq "off")
{
$sta="Satreceiver ist aus";;
fhem ("set $NAME send $sta");;
} else
{
my $find = "tvmsg";;
$sta=~ s/$find//gi;;
$sta=~ s/^\s+|\s+$//g;;
fhem ("set SATReceiver showText $sta");;
fhem ("set $NAME send $sta");;
}}
elsif (index(lc($sta), lc("diagramm")) != -1) {
my $find = "diagramm";;
$sta=~ s/$find//gi;;
$sta=~ s/^\s+|\s+$//g;;
if (index(lc($sta), lc("ti")) != -1) {
$sta='/home/weewx/public_html/dayinside.png';;
}
elsif (index(lc($sta), lc("ta")) != -1) {
$sta='/home/weewx/public_html/daytempdew.png';;
}
elsif (index(lc($sta), lc("hum")) != -1) {
$sta='/home/weewx/public_html/dayhumidity.png';;
}
elsif (index(lc($sta), lc("wind")) != -1) {
$sta='/home/weewx/public_html/daywind.png';;
}
elsif (index(lc($sta), lc("bar")) != -1) {
$sta='/home/weewx/public_html/daybarometer.png';;
}
fhem ("set $NAME image $sta");;
}
elsif (index(lc($sta), lc("hilfe")) != -1)
{
$sta='wetter, diagramm ti ta hum wind bar, tvmsg XXX';;
fhem ("set $NAME send $sta");;
}
}
FHEM und WEEWX auf Raspberry

Blackmore

Noch nicht perfekt, aber es wird langsam...

Im Moment ist nur realisiert:
Die einzelnen Geräte werden nach TYP abgefragt und mir per WhatsApp zurückgesendet...

Jetzt muss ich nur noch rausfinden, wie ich das Notiy so einstell, das es auf alle Events aus dem Typ yowsup reagiert...äund dann innerhalb des Scripts abfragen, was wer darf...
Also - ALL - Abfrage der Werte
Schatzüüü - Abfragen der Werte, Schalten von Licht, Ändern der Heizung
Ich - darf latürnich alles....

Aber erstmal um 4 aufstehen und auf Tagschicht... Wieder ganze 12h  >:(  >:(  >:(


49152xxxxxx:message.* {
if ($EVTPART1 eq "TempGraph") {
   fhem ("set WhatsApp image $NAME /opt/fhem/log/wetter.jpg")
} elsif ($EVTPART1 eq "Temp") {
   my $msg = "";
   foreach my $devi (devspec2array("TYPE=HMS")) {
    $msg = $msg. AttrVal($devi, 'alias', $devi). ":\rTemp: ". ReadingsVal($devi, 'temperature', 0). " °C\rLuft: ". ReadingsVal($devi, 'humidity', 0). " %rel  \rBatterie: ". ReadingsVal($devi, 'battery', 0). "\r\r";
   }
   foreach my $devi (devspec2array("TYPE=LaCrosse")) {
    $msg = $msg. AttrVal($devi, 'alias', $devi). ":\rTemp: ". ReadingsVal($devi, 'temperature', 0). " °C\rLuft: ". ReadingsVal($devi, 'humidity', 0). " %rel  \rBatterie: ". ReadingsVal($devi, 'battery', 0). "\r\r";
   }
   fhem ("set WhatsApp send $NAME ". $msg);
} elsif ($EVTPART1 eq "Nummer") {
   fhem ("set WhatsApp send $NAME Deine Nummer lautet: $NAME")
} elsif ($EVTPART1 eq "FHT") {
   my $msg = "";
   foreach my $devi (devspec2array("TYPE=FHT")) {
    $msg = $msg. AttrVal($devi, 'alias', $devi). ":\rIST: ". ReadingsVal($devi, 'measured-temp', 0). " °C\rSOLL: ". ReadingsVal($devi, 'desired-temp', 0). "°C  \rVentil: ". ReadingsVal($devi, 'actuator', 0). "\r\r";
   }
   fhem ("set WhatsApp send $NAME ". $msg);
} elsif ($EVTPART1 eq "PCA301") {
   my $msg = "";
   foreach my $devi (devspec2array("TYPE=PCA301")) {
    $msg = $msg. AttrVal($devi, 'alias', $devi). ":\rState: ". ReadingsVal($devi, 'state', 0). "\rPower: ". ReadingsVal($devi, 'power', 0). "W  \rLeistung: ". ReadingsVal($devi, 'consumption', 0). "kW\r\r";
   }
   fhem ("set WhatsApp send $NAME ". $msg);
} elsif ($EVTPART1 eq "Bat") {
   fhem ("set WhatsApp send $NAME Batterie-Status:")
} elsif ($EVTPART1 eq "Help") {
   fhem ("set WhatsApp send $NAME mögliche Befehle:\r\rTempGraph - Temp - Help - Nummer - FHT - PCA301 - Bat")
} else {
   fhem ("set WhatsApp send $NAME keine weiteren Infos")
}
}

karl0123

Zitat von: justme1968 am 08 Juli 2015, 22:47:39
blackmore hat raugefunden das man \r als zeilenumbruch verwenden kann.

im modul werden ab morgen im gesendeten text alle \n (LF) durch \r (CR) ersetzt.

gruss
  andre

Wie sieht das in der Praxis aus? Verwende ich \n oder \r in einer sub oder in der Kommandozeile, werden einfach nur die Zeichen weitergeleitet, verwende ich "echte" LF, werden diese nicht verwendet.

justme1968

aktuell geht das nur von perl code bzw. perl strings aus.

ich kann es auch für die fhem ebene einbauen. und ein \ gefolgt von einem n durch \n bzw. dann \r ersetzen.

wird das gebraucht?

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

karl0123

Ich habe es ja in PerlCode in einer sub verwendet. Deshalb frage ich ja, wie das in der Praxis aussieht. Wenn ich bspw. eine Variable nehme:

my $text="Test\nTest";
fhem ('set wa.Device send '.$text);


Klappt das genauso wenig wie:

my $text="Test\rTest";
fhem ('set wa.Device send '.$text);


oder

my $text="Test
Test";
fhem ('set wa.Device send '.$text);

karl0123

Wobei tatsächlich die \n ersetzt werden (verschwinden), aber es ergeben sich keine Zeilenvorschübe. Möglicherweise funktioniert das nur auf Apple Geräten!?

justme1968

gerade probiert mit{fhem("set xxx send test\ntest")}und ihn bekomme den zeilenumbruch.

welche version des moduls hast du? diese hier muss es mindestens sein:
Zitat# $Id: 32_yowsup.pm 8925 2015-07-08 20:38:25Z justme1968 $

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

karl0123

# $Id: 32_yowsup.pm 8925 2015-07-08 20:38:25Z justme1968 $

und mit dem identischen Test, kein Zeilenumbruch, sondern nur ein Leerzeichen. Also bin ich nicht blöd, es funktioniert aber offenbar nicht überall.

justme1968

läuft dein whatsapp auf iOS oder android?

bei mir ist es iOS und bei Blackmore glaube ich auch.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

karl0123

Deshalb fragte ich ja oben, ob das eventuell nur auf Apple-Geräten funktioniert. Ich verwende Android, wie sicher die meisten.

Aber wegen mir kein Stress. Ich wollte nur wissen, ob es an mir liegt...

Blackmore

evtl mal mit '\n\r' probieren...

hin und wieder reicht eins von beiden nicht...

wieso - hab ich noch nicht herausgefunden...

grad im Internet gefunden:
Zitat
\r = CR (Carriage Return) // Used as a new line character in Mac OS before X

\n = LF (Line Feed) // Used as a new line character in Unix/Mac OS X

\r\n = CR + LF // Used as a new line character in Windows

marvin78

Das ist so. Bringt hier aber nix, da \n durch \r ersetzt wird ;)

Unter Android sollte \n funktionieren. Da das aber durch \r ersetzt wird, gibt es dir keinen Zeilenumbruch.

justme1968

\n bringt auch den yowsup cli client durcheinander weil er das als return bzw. kommando ende interpretiert und sich nicht mehr fängt weil das ' noch offen ist.

das lässt sich nicht ohne änderung am yowsup code  fixen. siehe weiter oben im thread.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Blackmore

Zitat von: marvin78 am 09 Juli 2015, 22:30:41
Das ist so. Bringt hier aber nix, da \n durch \r ersetzt wird ;)

Unter Android sollte \n funktionieren. Da das aber durch \r ersetzt wird, gibt es dir keinen Zeilenumbruch.

Und im Empfänger-Device ein

attr <NAME> OS (Android||iOS)???

Und evtl mit den Entwicklern von yowsup schreiben?¿?