Hallo,
Hat jemand von euch den DynDNS Service von https://dynv6.com in Benutzung?
Es ist ein kostenloser dyndns Service und funktioniert im Moment wunderbar.
Hat jemand eine Idee wie ich die IP automatisch von FHEM aktualisieren lassen kann?
Es soll einen wget Befehl geben, allerdings habe ich keine Ahnung wie ich den von FHEM absetzen lassen kann.
$bin "http://dynv6.com/api/update?hostname=$hostname&ipv6=$current&token=$token"
$bin "http://ipv4.dynv6.com/api/update?hostname=$hostname&ipv4=auto&token=$token"
Wenn es weiter nichts ist, schau doch einfach mal in die Datei ./FHEM/HttpUtils.pm da findest Du verschiedene Funktionen, um URLs aufzurufen. Das funktioniert dann sicher auch für Deinen Anwendungsfall
Spontan würde ich auf folgende Lösung tippen:
GetHttpFile("http://dynv6.com","/api/update?hostname=$hostname&ipv6=$current&token=$token")
Hi,
das würde ich nicht aus FHEM heraus machen sondern direkt im System verackern.
Dazu gibt es ein Skript für die Automatisierung: https://gist.github.com/corny/7a07f5ac901844bd20c9 (https://gist.github.com/corny/7a07f5ac901844bd20c9).
Da noch den Token einsetzen in der oberen Portion (kann man sogar auch noch histname und Schnittstelle vom Ethernet rein tun) vom Skript und dies per Cron alle 10 Minuten starten.
Das Skript meldet nur dann eine IP an dynv6 wenn die sich auch verändert.
Läuft bei mir wirklich prima und so ist es möglich von unterwegs zu zugreifen.
Zitat von: betateilchen am 15 Januar 2016, 13:56:26
Wenn es weiter nichts ist, schau doch einfach mal in die Datei ./FHEM/HttpUtils.pm da findest Du verschiedene Funktionen, um URLs aufzurufen. Das funktioniert dann sicher auch für Deinen Anwendungsfall
Spontan würde ich auf folgende Lösung tippen:
GetHttpFile("http://dynv6.com","/api/update?hostname=$hostname&ipv6=$current&token=$token")
Kann ich die Parameter $hosename, $token irgendwie übergeben?
Aktuell denke ich an etwas wie:
define pushmsg_ip at *07:05:00 { \
my $ip=getip;; \
my $token=1234567890;;\
my $hostname=abcd;;\
fhem "GetHttpFile("http://dynv6.com","/api/update?hostname=$hostname&ipv6=$current&token=$token")";;\
}
Zitat von: gloob am 15 Januar 2016, 14:11:06
Kann ich die Parameter $hosename, $token irgendwie übergeben?
abgesehen davon, dass es hostname heißt und nicht hosename, wo ist das Problem?
define pushmsg_ip at *07:05:00 { \
my $current = getip;; \
my $token= 1234567890;;\
my $hostname = abcd;;\
GetHttpFile("http://dynv6.com","/api/update?hostname=$hostname&ipv6=$current&token=$token");;\
}
Leider bekomme ich nur folgende Fehlermeldung:
2016.01.21 10:34:00 5: exec at command pushmsg_ip_2
2016.01.21 10:34:00 3: pushmsg_ip_2: Unknown command {, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command GetHttpFile("http://dynv6.com","/api/update?hostname=$hostname&ipv6=$current&token=$token"), try help.
2016.01.21 10:34:00 5: redefine at command pushmsg_ip_2 as *10:34:00 {
my $current = getip;
my $token= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
my $hostname = hasenpups;
GetHttpFile("http://dynv6.com","/api/update?hostname=$hostname&ipv6=$current&token=$token");
Hat noch jemand eine Idee, was falsch sein könnte?
Das Device ist wie folgt definiert:
Internals:
COMMAND {
my $current = getip;
my $token= 3hfsidyuzHt9rHy8UZVSd7s-tZJfkC;
my $hostname = hasenpups;
GetHttpFile("http://dynv6.com","/api/update?hostname=$hostname&ipv6=$current&token=$token");
DEF *10:40:30 {
my $current = getip;
my $token= xxxxxxxxxxxxxxxxxxxxx;
my $hostname = hasenpups;
GetHttpFile("http://dynv6.com","/api/update?hostname=$hostname&ipv6=$current&token=$token");
NAME pushmsg_ip_2
NR 35
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 10:40:30
TIMESPEC 10:40:30
TRIGGERTIME 1453455630
TRIGGERTIME_FMT 2016-01-22 10:40:30
TYPE at
Readings:
2016-01-21 10:41:50 state Next: 10:40:30
Attributes:
room Systemstate
verbose 5