GetFileFromUrl - Was mache ich falsch?

Begonnen von Raik, 11 Juni 2017, 15:11:46

Vorheriges Thema - Nächstes Thema

Raik

Hallo zusammen,

ich habe zuhause einen Bereich der mit einer ip-Kamera überwacht wird. Nun möchte ich im Fall eines Ereignisses oder Alarm, automatisch angerufen werden.
Hierzu muss ich bei einem Anbieter eine bestimmte Url aufrufen. Der Aufruf funktioniert bei der Eingabe in jedem Webbrowser.

Nun bin ich dabei dies mittels fhem zu realisieren. Aber irgendwie bin ich dafür offensichtlich zu doof.
Ich habe in fhem ein dummy device namens Testschalter definiert, um den Aufruf mal zu testen. Wenn man diesen drückt soll die Url aufgerufen werden und mein Telefon soll klingeln.

dann per notify folgendes eingefügt:

define html_aufruf notify Testschalter:on { GetFileFromUrl("https://gateway.sms77.io/api/voice?u=username&p=passwort&to=4917112345678&text=Alarm") }

dann kommt folgende message im Log:

2017.06.11 13:51:06 3: html_aufruf return value: Unknown command GetFileFromUrl("https://gateway.sms77.io/api/voice?u=username&p=passwort&to=4917112345678&text=Alarm");, try help.

Was mach ich falsch? Ich bin am verzweifeln!
Vielen Dank vorab

Gruß
Raik


CoolTux

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

dev0


Raik

Danke für die Antworten,
aber Hinweise auf Wiki ö.ä. hilft mir nicht weiter. Da habe ich schon zig mal geschaut. All das habe ich schon durch. 3 Tager googeln...und und und!

Deshalb frage ich doch hier weil ich ratlos bin !!!!!!!!

Hat denn niemand eine Lösung? Und zwar so als wäre ich 10 Jahre alt!!!!



CoolTux

#4
Aber klar doch, als wärst Du zehn Jahre alt. Fällt ja nicht schwer.

Der Aufruf Deiner Sub lautet GetFileFromUrl, die Sub lautet aber tatsächlich GetFileFromURL

Also Du schreibst Url mit großem U und kleinem rl aber Du musst schreiben großes U großes R und großes L
Sollten noch Fragen sein bitte melde Dich, ich schicke dann meine 9 jährige mit der Fibel vorbei.
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

Raik

Aaaaahhhh jetzt ja!!!!   Ich habs net gsehn ich habs net gsehn herrje!!

mit so kleinen Dingen kann man einen anscheinend glücklich machen :D

und schon kommt das nächste Problem. Es kommt jetzt zwar keine Fehlermeldung mehr im Log, aber das Tel klingelt immer noch nicht.
Ist es sicher dass die URL raus ging?

.... und nein ich habe mich da nicht vertippt...ich hab die funktionierende Zeile aus dem Browser kopiert.

CoolTux

Zitat
Die Funktion GetFileFromURL ruft die HTTP-URL auf und gibt als Funktionsergebnis den Seiteninhalt zurück.

Es wird also irgendwas anscheinend zurück gegeben. Dieses etwas könnte nun dazu dienen eine weitere Analyse zu machen.

Daher

my $response = GetFileFromURL...

Und $response einfach mal als Debug ausgeben lassen.
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

Raik

wie debugged man denn bei fhem?
Kann man irgendwie ein Textfeld generieren in dem die Ausgabe erscheint? Wenn alles funktioniert müssten drei Zahlen von der URL zurückgegeben werden.
Bitte net bös werden  :) ich bin blutiger Anfänger in fhem und auch kein Informatiker. Ich versuchs nur irgendwie hinzukriegen

CoolTux

Zitat von: Raik am 11 Juni 2017, 18:16:44
wie debugged man denn bei fhem?
Kann man irgendwie ein Textfeld generieren in dem die Ausgabe erscheint? Wenn alles funktioniert müssten drei Zahlen von der URL zurückgegeben werden.
Bitte net bös werden  :) ich bin blutiger Anfänger in fhem und auch kein Informatiker. Ich versuchs nur irgendwie hinzukriegen

Wenn Du mir zeigt das Du Dich bemühst werde ich nicht böse  ;D

Du kannst entweder ein Log 1, $response; machen oder einfach main::Debug $response;



Sollte es nicht gehen bitte hier in sogenannten Codetags die Fehlermeldung Posten. Codetags ist in der Symbolleiste das Rautezeichen
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

Raik

Mein Kopf platzt.
Ich komme mit den Dollar Zeichen ($) und der Syntax irgendwie nicht zurecht.

Ich versuche gerade die Rückgabe der URL in eine Textdatei zu schreiben. Hierzu habe ich eine Routine "FileWrite" gefunden. Ich habs irgendwie mal geschafft, dass eine Datei namens "Rückgabe erzeugt wurde, aber leider ohne Inhalt.

Folgenden Code probiere ich gerade, kriegs aber nicht hin (Syntaxfehler).

define html_aufruf notify Testschalter:on { FileWrite("Rückgabe.txt, GetFileFromURL("https://gateway.sms77.io/api/voice?u=username&p=passwort&\to=491711234567&text=Alarm")"),  }

Ich möchte sozusagen die Rückgabe aus dem URL Aufruf in die Datei "Rückgabe.txt" schreiben.



amenomade

{ FileWrite("Rückgabe.txt, GetFileFromURL("https://gateway.sms77.io/api/voice?u=username&p=passwort&\to=491711234567&text=Alarm")"),  }

1 - Du kannst nicht mehrere Zeichenkette mit den gleichen Delimiters " ineinander  schreiben. So wird es interpretiert:
Zitat{ FileWrite("Rückgabe.txt, GetFileFromURL("https://gateway.sms77.io/api/voice?u=username&p=passwort&\to=491711234567&text=Alarm")"),  }
Die gesamte URL ist dann ein Syntax Error.

2 - Warum \ nach passwort& ?
3 - Warum , am Ende ?

Also...
1 - pass mal auf die Syntax auf
2 - warum machst Du nicht wie CoolTux gesagt hat ?
Zitatmy $response = GetFileFromURL...
und
Zitat
Log 1, $response
3 - Was ist die Fehlermeldung ?

Vermutlich wäre folgendes besser:
{ FileWrite("Rückgabe.txt, GetFileFromURL('https://gateway.sms77.io/api/voice?u=username&p=passwort&to=491711234567&text=Alarm')")  }
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Raik

Hi amenomade,

bei deinem letzten Vorschlag kommt zumindest keine Fehlermeldung mehr bzgl. Syntax. Leider kommt: "html_aufruf return value: Can't open /share/Web/fhem5.8/Rückgabe.txt..... no such file or directory".
Ich habe probiert solch Datei zuvor anzulegen...bringt aber nix. Wie gesagt ich bin absoluter Newbie...ich hab von Syntax keine Ahnung.

Zu deinen Fragen Nr 2 u. 3.  ...mit den & und ?.... das stammt nicht von mir, das gehört zur zu aufrufenden URL, welche vom Provider, der dann mein Telefon anruft, vorgegeben ist. Im Browser funktionierts.

Ich hab mal folgenden Debug probiert, so ähnlich wie CoolTux gesagt hat.

define html_aufruf notify Testschalter:on { Debug => GetFileFromURL("https://gateway.sms77.io/api/voice?u=username&p=passwort&to=491711234567&text=Alarm") }

daraufhin kam folgende Meldung im Log: "html_aufruf return value: HASH(0x38410b0)"

Das ist doch der Rückgabewert...oder??  Und was bedeutet das jetzt?




Raik

mit "wget" habe ich es nun auch probiert. Folgender code:

define html_aufruf notify Testschalter:on { system("wget https://gateway.sms77.io/api/voice?u=username&p=passwort&to=491711234567&text=Alarm") }

Als return value kam:

html_aufruf return value: 256

wget ist doch sozusagen das gleiche wie ein Browser ohne GUI. Aber im Browser funktionierts...per wget nicht.

Ich bin am Ende. Ich will doch blos eine URL aufrufen !!!  :'( :'( :'(

CoolTux


define html_aufruf notify Testschalter:on { my $response = GetFileFromURL ("https://gateway.sms77.io/api/voice?u=username&p=passwort&to=491711234567&text=Alarm");
main ::Debug "$response";
}


Bitte eins zu eins so übernehmen und im fhem.log schauen was ausgegeben wurde.
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

Raik

Ah so gibst du das ein :D

Folgende Ausgabe im Log:

2017.06.12 12:37:05 1: PERL WARNING: Use of uninitialized value $response in string at (eval 163) line 2.
2017.06.12 12:37:05 3: eval: my $TYPE='dummy';my $NAME='Testschalter';my $EVENT='on';my $EVTPART0='on';my $SELF='html_aufruf';{ my $response = GetFileFromURL ("https://gateway.sms77.io/api/voice?u=username&p=passwort&to=491711234567&text=Alarm");
main::Debug "$response";
}
2017.06.12 12:37:05 1: DEBUG>