NEWS
IP Adressen abgleich
-
Hey Ho @paul53
seid dem ich das neue Aquarium laufen habe und mit einer neueren Version vom Iobroker (js-controller) etc gibt die Steuerung von dir einen Fehler aus, weißt du was da falsch ist !?
Fehler:javascript.0 (1399) at script.js.AquaPi.ESP_IP_MAC_Abgleich.Aqua_Control:12:5
Blockly
1 var MAC, cmd, ip, result; 2 3 4 MAC = '2c:f4:32:57:b7:14'; 5 // ermittelt den Gerätenamen 6 cmd = ['arp -a|grep ',MAC,'|cut -f1 -d" "'].join(''); 7 // ermittelt IP-Adresse 8 cmd = ['arp -a|grep ',MAC,'|cut -f2 -d"("|cut -f1 -d")"'].join(''); 9 exec(cmd, async (error, result, stderr) => { 10 ip = ('' + result).trim(); 11 if (!(ip == '')) { 12 setState('0_userdata.0.Aqua_Control.0.IP_MAC_Abgleich.Aqua_Control' /* Aqua_Control */, ip, true); 13 } else { 14 console.log('Keine IP Adresse gefunden!'); 15 } 16 });
-
@aphofis ohne Zeilennummern nicht gar so einfach
12:5 ist das 5. Zeichen der 12. Zeile.gibt es den State noch?
-
Mahlzeit @paul53 ist es möglich das so zu gestalten, das wenn zu der MAC Adresse keine IP geliefert wird im Datenpunkt wo die IP eingetragen wird dann 0.0.0.0 aktualisiert wird.
Das was ich versucht hatte geht nicht.var MAC, cmd, ip, result; MAC = '50:02:91:67:cf:da'; // ermittelt den Gerätenamen cmd = ['arp -a|grep ',MAC,'|cut -f1 -d" "'].join(''); // ermittelt IP-Adresse cmd = ['arp -a|grep ',MAC,'|cut -f2 -d"("|cut -f1 -d")"'].join(''); exec(cmd, async (error, result, stderr) => { ip = ('' + result).trim(); if (!(ip == '')) { setState('0_userdata.0.Aqua_Control.0.IP_MAC_Abgleich.Aqua_Float_IP' /* Aqua_Float_IP */, ip, true); } else { console.info('Keine IP Adresse gefunden!'); if (getState('sonoff.0.Aqua_Float.alive').val == false) { setState('0_userdata.0.Aqua_Control.0.IP_MAC_Abgleich.Aqua_Float_IP' /* Aqua_Float_IP */, (('' + '0.0.0.0').trim()), true); } } });
-
@aphofis sagte: keine IP geliefert wird im Datenpunkt wo die IP eingetragen wird dann 0.0.0.0 aktualisiert wird.
Was liefert dann
result
?
Einen Leerstring oder null? Dann prüft man einfachif(!result) { ip = '0.0.0.0'; log('Keine IP Adresse gefunden!'); } else ip = ('' + result).trim(); setState('0_userdata.0.Aqua_Control.0.IP_MAC_Abgleich.Aqua_Float_IP' /* Aqua_Float_IP */, ip, true);
-
@paul53
Supi Vielen Dank! läuft perfekt