[gelöst] Befehl über Notify an Programm in 99_myUtils weitergeben und ausführen

Begonnen von Claus1985, 25 Januar 2020, 12:06:21

Vorheriges Thema - Nächstes Thema

Claus1985

Hi Zusammen,

ich verzweifel gerade etwas.. Vielleicht könnt ihr mir weiterhelfen.

Ich bastel gerade ein Konstrukt, dass per RFID-Scan (Arduino) eine
Einkaufsliste in Todoist (über FHEM) befüllt.

Dafür möchte ich folgendes erreichen:

1. FHEM empfängt per MQTT eine Kartennummer vom Arduino (funktioniert)
2. FHEM führt über ein Notify ein Programm in 99_myUtils aus (funktioniert)
3. Das Notify übergibt die Kartennummer an das Programm in 99_myUtils (funktioniert nicht)
4. Das Programm in 99_myUtils durchsucht eine Tabelle nach der Kartennummer, ordnet einen String zu und führt diesen dann in FHEM aus (funktioniert nicht).
5. Wenn die Karte nicht gefunden wird, soll FHEM einen Fehler im log ausgeben (z.B. "Karte nicht gefunden")

Ich bin sicher, dass das an der Syntax liegt und ich Fehler drin habe.. Könnt Ihr mir weiterhelfen?

zu 3. Das Notify macht folgendes:
define n_RFID_kanban notify RFID_kanban:(karte).* {RFIDZuordnung($NAME)}

zu 4. Das Programm in 99_myUtils sieht aus wie folgt:
#RFID Kanban Zuordnung
sub RFIDZuordnung($)
{
my ($device, $karte) = @_;
my $kartenInhalt = ReadingsVal("device", "$karte", -1);
my %befehl = (
"546447664"             => "set einkaufsliste_supermarkt addTask 1 x Senf scharf/körnig",
"546447675"             => "set einkaufsliste_supermarkt addTask 1 x Rotkraut",
);
my $state = (defined $befehl{$kartenInhalt}) ? $befehl{$kartenInhalt} : "-1";
fhem($state);
}


Zu 5. habe ich keine Idee wie ich das hinbekomme.

Wenn ich das Ganze ausführe erhalte ich im log immer wieder eine Fehlermeldung:
0.01.25 11:54:33 1 : PERL WARNING: Use of uninitialized value $karte in string at ./FHEM/99_myUtils.pm line 26.
2020.01.25 11:54:33 3 : eval: my $EVTPART0='karte:';my $EVENT='karte: 956417882';my $TYPE='MQTT_DEVICE';my $SELF='n_RFID_kanban';my $EVTPART1='956417882';my $NAME='RFID_kanban';{RFIDZuordnung($NAME)}
2020.01.25 11:54:33 3 : -1 : Unknown command -1, try help.
2020.01.25 11:54:33 3 : n_RFID_kanban return value: Unknown command -1, try help.


Danke und Gruß,

Claus

Claus1985

Habs hinbekommen, lag lediglich am Notify!
So funktioniert es nun:
RFID_kanban:(karte).* {RFIDZuordnung('karte')}

Otto123

Hi,

ich behaupte mal, so ist Deine Variable $karte in der SUb einfach undef:
Zitatsub RFIDZuordnung($)
{
my ($device, $karte) = @_;
Du übergibst einen Wert willst aber in der sub zwei Werte haben ...
Ich weiß nicht wieso das wirklich jetzt funktionieren sollte  ::)

Mit $NAME übergibst Du das auslösende Device my $NAME='RFID_kanban' Du willst doch my $EVTPART1='956417882'
Oder habe ich das falsch verstanden?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz