FHEM Forum

FHEM => Automatisierung => Thema gestartet von: heinzfo am 10 Mai 2016, 22:43:39

Titel: Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: heinzfo am 10 Mai 2016, 22:43:39
Hallo zusammen


Code zu Item 1.

##############################################
# $Id: 99_WhatsAppUtils.pm $
package main;

use strict;
use warnings;
use POSIX;

sub
WhatsAppUtils_Initialize($$)

{ my ($hash) = @_; }


###################################################
###    write ReadingsVal in Variable            ###
###################################################

my $FB =
"\xF0\x9F\x93\xB6 *... FB7390 Info ...* \xF0\x9F\x93\xB6 ###"
.ReadingsVal("FB7390","box_fwVersion","") ." FW Version ###"
."......................................................... ###";


###################################################
###    WhatsApp Heinz Mobil                     ###
###################################################

### define WhatsappHeinz notify HeinzMobil:message.* {WhatsappHeinz("$EVENT")}
sub WhatsappHeinz($)
{

my ($EVENT) = @_;

if( $EVENT eq 'message: Licht' ) {fhem "set HeinzMobil send Licht im Wohnzimmer ist jetzt eingeschaltet \xF0\x9F\x92\xA1"; fhem "set AlleLampen.wz on";}
### FB7390
elsif( $EVENT eq 'message: Fb' ) {fhem "set HeinzMobil send $FB";}
### wrong command
else {fhem "set HeinzMobil send Wie bitte?"}}


###################################################
###    WhatsApp Navi Kyocera                    ###
###################################################

### define WhatsappNavi notify HeinzNavi:message.* {WhatsappNavi("$EVENT")}
sub WhatsappNavi($)
{

my ($EVENT) = @_;

if( $EVENT eq 'message: Licht an' ) {fhem "set HeinzNavi send Licht im Wohnzimmer ist jetzt eingeschaltet \xF0\x9F\x92\xA1"; fhem "set AlleLampen.wz on";}
### IP FB7390
elsif( $EVENT eq 'message: Fb' ) {fhem "set HeinzNavi send $FB";}
### wrong command
else {fhem "set HeinzNavi send Wie bitte?"}}

1;


Beste Grüße
Heinz
Titel: Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: justme1968 am 10 Mai 2016, 23:53:50
deine globale variable $FB wird nur genau ein mal beim einlesen des myHtils files initialisiert und gefüllt.

wenn du den string jedes mal neu zusammen bauen möchtest musst du das zusammen bauen auch zum zeitpunkt des aufrufs deiner routinen machen. z.b. in dem du den string in einer eigenen routine zusammen baust und zurück gibst und diese aus deinen zwei routinen aus aufrufst.

da deine beiden routinen aber scheinbar exakt das gleiche machen nur für unterschiedliche empfänger reicht auch eine einzige routine der du auch noch das auslösende device (d.h. den empfänger) übergibst. damit vermeiden du auch tippfehler wie das fehlende an hinter Licht in der ersten routine.

### define WhatsappHeinz notify HeinzMobil:message.* {WhatsappAnswer($NAME,$EVENT)}
sub WhatsappAnswer($$)
{
  my ($NAME,$EVENT) = @_;

  if( $EVENT eq 'message: Licht' ) {
    fhem "set $NAME send Licht im Wohnzimmer ist jetzt eingeschaltet \xF0\x9F\x92\xA1";
    fhem "set AlleLampen.wz on";

  } elsif( $EVENT eq 'message: Fb' ) {
    my $FB = "\xF0\x9F\x93\xB6 *... FB7390 Info ...* \xF0\x9F\x93\xB6 ###"
                    .ReadingsVal("FB7390","box_fwVersion","") ." FW Version ###"
                    ."......................................................... ###";

    fhem "set $NAME send $FB";

  } else {
    fhem "set $NAME send Wie bitte?"
  }
}


gruss
  andre

ps: ich glaube du würdest es dir einfacher machen wenn du deinen code sinnvoll einrückst und nicht alles in die erste spalte quetschst.
Titel: Antw:Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: heinzfo am 11 Mai 2016, 08:43:49
Danke justme1968

Das funktioniert schon mal :-)

Die beiden define für HeinzMobil und HeinzNavi habe ich angepasst.

Wie bekomme ich noch das Navi in den Code, ohne das ich meine Fb doppelt brauche?

Danke und beste Grüße
Heinz
Titel: Antw:Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: justme1968 am 11 Mai 2016, 08:46:32
hast du dir abgeschaut was ich oben gepostet habe?
Titel: Antw:Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: heinzfo am 11 Mai 2016, 09:08:02
Jetzt sehe ich es :-)

Gesendet von meinem GT-I9505 mit Tapatalk

Titel: Antw:Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: heinzfo am 12 Mai 2016, 07:37:13
Hallo justme1968

Ich habe nun alle meine Readings eingebaut.
Vielen Dank für diesen klasse Tipp, es funktioniert bestens   ;D ;D ;D

Beste Grüße
Heinz
Titel: Antw:Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: heinzfo am 24 Mai 2016, 07:07:28
Hallo

Wie kann ich den Teil (\d+)/ aus dem Code so anpassen, das ich on und off verarbeiten kann?


elsif( $EVENT =~ /message: Wandlampe Dim (\d+)/ ) {fhem "set $NAME send Dim Wandlampe $1%"; fhem "set Stehlampe.wz dim$1%";}


Beste Grüße
Heinz
Titel: Antw:Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: marvin78 am 24 Mai 2016, 08:04:02
https://danielfett.de/de/tutorials/tutorial-regulare-ausdrucke/
Titel: Antw:Wie kann ich das lösen? 99_WhatsAppUtils.pm
Beitrag von: heinzfo am 24 Mai 2016, 08:54:29
Hallo

So gehts!

(on|off)

elsif( $EVENT =~ /message: Nsw1 (on|off)/ ) {fhem "set $NAME send NETIO $1"; fhem "set NET_IO_Switch1 $1";}

Beste Grüße
Heinz