FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: gloob am 15 Januar 2016, 13:36:27

Titel: dynv6.com
Beitrag von: gloob am 15 Januar 2016, 13:36:27
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"
Titel: Antw:dynv6.com
Beitrag 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")
Titel: Antw:dynv6.com
Beitrag von: Bapt. Reverend Magersuppe am 15 Januar 2016, 14:07:37
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.


Titel: Antw:dynv6.com
Beitrag von: gloob am 15 Januar 2016, 14:11:06
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")";;\
}

Titel: Antw:dynv6.com
Beitrag von: betateilchen am 15 Januar 2016, 14:40:58
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");;\

}


Titel: Antw:dynv6.com
Beitrag von: gloob am 21 Januar 2016, 10:35:01
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