[gelöst] Aufruf einer Sub über notify

Begonnen von call_me_driver, 08 April 2018, 20:05:10

Vorheriges Thema - Nächstes Thema

call_me_driver

Hey,

ich hab in einem Reading einen Wert, denn ich gern bearbeiten möchte. Allerdings geht dies nicht mit einem Einzeiler, daher würde ich gern eine Sub dazu schreiben.
Die 99_Myutils.pm hab ich angelegt, die Sub ist auch geschrieben. Ich hab mir ein Userreading angelegt und ein notify. Aber es passiert nichts....

userReading: attr <device> userReadings usrURLX { }
notify: define n_URLmod notify <device> { clean_url(ReadingsVal("<device>","<reading>","")) }

sub:
sub clean_url($) {
  my ($obj) = @_;

  my $url = Value($obj);
  $url = "nur ein test";
  fhem ("set usrURLX $url");
}


Hab auch schon hinters device n reading gesetzt (beim notify) oder in die sub es device vors userreading... aber keine änderung.
Logfile is auch kein Eintrag, daher geh ich davon aus - es liegt am notify?

An den Reload der 99_Myutils.pm hab ich natürlich gedacht...

*thx*

CoolTux

Da ist so gut wie alles falsch.
Was soll das mit dem userReading und dem set userURLX.
Du weißt aber schon wazu ein userReading da ist?

{ clean_url(ReadingsVal("<device>","<reading>","")) }


Geht so sofern man den Readings Wert auch wirklich an die sub übergeben will.
Aber was soll das dann hier
my $url = Value($obj);

Ist der Readingswert ein Devicename?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

call_me_driver

das... is natürlich ungünstig.

hatte die sub erst ohne userReading. dann hab ich gedacht... naja.. iwohin muss ers ja schreiben.
naja, ich hätte des jetzt grob definiert... n reading is ne variable. die wird gefüllt wenn das gerät
die werte übergibt. n userreading is ne selbst definierte variable die ich mit werten befüllen kann.
hab auch schon ein paar angelegt die halt dann z.b. aus dem standard-reading (kw/h)  den preis
multiplizieren und dann die summe im reading ablegen - klappt auch.

des grundgerüst der sub hab ich mir iwo her kopiert und nur leicht modifiziert ...

Nein im Reading (des was an die sub übergeben wird) steht eben ein String (ne URL)

CoolTux

Mach bitte ein list vom Notify und von den beteiligten Devices.
list ist ein FHEM Befehl.

Das was du mit ReadingsVal aus ließt, ist das eventuell schon Teil des Events welcher das Notify triggert?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Ganz vergessen. Wozu dient das eigentlich? Willst du den Wert eines einzelnes Reading in ein neues Device schreiben?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

call_me_driver

jup. der ausgelesene wert is auch der grund fürs notify

ich will eine url die vom device in einem reading übergeben wird so in ein userreading speichern damit ich sie im tablet ui verwenden kann.

CoolTux

So ganz verstanden habe ich Dich zwar nicht, aber schau Dir Mal readingsProxy an.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

call_me_driver

im prinzip recht simple..

ich hab im device ein reading welches z.b. so aussieht
url -> web: http%3a%2f%2fwww.blablabla.de$2fsowieso

und ich möchte n userreading welches dann so aussieht
usrURL -> http://www.blablabla.de/sowieso

also von der idee... recht einfach :D

KernSani

und du willst das Ergebnis in ein userreading des selben devices schreiben? Dann brauchst du kein notify...

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

call_me_driver

jup alles 1 device - original reading und user reading.

notfiy war die einzige möglichkeit die ich gefunden hab die sub aufzurufen...

CoolTux

Da reicht ein userReading völlig aus.
Aber wir brauchen immer noch ein list des Devices
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

stefanpf

Versuch mal in UserReading in dieser Art:

usrURL:url.* {urlDecode ( substr (ReadingsVal($NAME,"url",""),4))}


call_me_driver

des decode war die lösung.. vielen dank. mehr brauchte ich net :D

KernSani

Dann bitte noch ein [Gelöst] vor das subject des ersten Posts.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...