Joey Zuerst: "Host not found"
bsb-lan.local ist keine normale Domain, sondern ein DNS-SD hostname (aka Rendezvous, Bonjour, Avahi, ZeroConf). Diese werden nicht vom DNS-Server aufgelöst, der über DHCP bereitgestellt wird, deshalb nützt auch ein konfigurierter Nameserver nichts. Eine Plattform muss einen speziellen Service dafür haben, der die dezentrale Liste der Services im lokalen Netz unterhält und Abfragen ermöglicht. Auf dem Mac ist das der mDNSResponder, unter Linux avahi/systemd. Auf OpenWrt (die Platform der P44) ist kein DNS-SD-Resolver standardmässig eingebunden.
Der Grund ist, dass DNS-SD mehr kann, als nur die IP für einen Host-Namen zu finden. Das SD in DNS-SD steht für Service Discovery, die Idee ist, dass es damit möglich ist zu fragen: was gibt es an Geräten im lokalen Netz, die ein Webinterface haben? Oder Drucker die AirPrint können?
Dafür gibts in p44script seit 2.8.1 (besser noch: aktuelle Beta, es gab noch Bugfixes) die Funktion dnssdbrowse().
Damit lässt sich die Auflösung von http://bsb-lan.local/ bewerkstelligen:
var dnssd_infos = dnssdbrowse('_http._tcp', 'bsb-lan.local')
// Rückgabewert ist ein Array mit den Resultaten - nur eines wenn der Hostname angegeben wird wie hier
if (elements(dnssdinfos)>0) {
// gefunden
var dnssd_info = dnssdinfos[0] // erstes Element
var url_tw_temp = dnssd_info.url // das ist die URL mit IP, Port und Pfad
}
// jetzt kann url_tw_temp in geturl, posturl, httprequest etc. verwendet werden
DNS-SD löst genauer auf als nur Name->IP, z.B. die Portnummer ist enthalten, der Pfad des Services auf dem Host, ein lesbarer Name etc.
Wenn Du in der p44script-IDE-Console eingibst dnssdbrowse('_http._tcp'), dann erhältst Du eine Liste aller im lokalen Netz verfügbaren Webinterfaces, normalerweise sind das Drucker, NAS, der dSS, und alle P44), so in der Art wie hier:
[
{
"hostaddress": "192.168.59.162",
"hostname": "npie9d5e9.local",
"interface": 2,
"ipv6": false,
"name": "HP Color LaserJet MFP M183fw (E9D5E9)",
"port": 80,
"txts": {
"UUID": "564e4333-3330-3037-3536-040e3ce9d5e9"
},
"url": "http://192.168.59.162:80"
},
{
"hostaddress": "192.168.59.222",
"hostname": "p44dsbx50013630.local",
"interface": 2,
"ipv6": false,
"name": "plan44.ch P44-DSB-X \"Mixwerk X\" #50013630",
"port": 80,
"txts": {
"path": "/index.html"
},
"url": "http://192.168.59.222:80/index.html"
},
{
"hostaddress": "192.168.59.211",
"hostname": "dSS-LUZ-Testing.local",
"interface": 2,
"ipv6": false,
"name": "dSS",
"port": 80,
"txts": {},
"url": "http://192.168.59.211:80"
},
// ...
]