NEWS
UNSOLVED Ping Hostname
-
Hallo zusammen,
ping-Adapter, Net-tool, radar2 - alle diese Adapter funktionieren nicht mit einem Hostnamen.
Wie kann ich überprüfen lassen, ob ein Gerät per Hostname im Netzwerk verfügbar ist?
Ich würde gerne den Ping im Node-Red für ioBroker entsprechend umschreiben (von node-red-ping auf iobroker get value).
Oder ist es vom Ansatz besser, per Node-Red-Adapter einen Wert in IoBroker zu übermitteln? (dort klappt Hostname - Ping problemlos)Schönen Gruß
-
@jokersmiler Also der pingAdapter funktioniert bei mir mit Hostnamen.
Eventuell fehlt der Haken bei Dir - Use Name
-
@mickym bei mir klappt es leider nicht. Ich hab auch keine IP eingetragen.
-
Dagegen über den Adapter Node-Red + Ping Addin klappt es.
-> Node: Manuell einstellen wandelt den Rückgabewert "float" (z.B. 0.34) in ein "true". -
@jokersmiler Ja habs bei mir ausprobiert - wenn die IP Adresse nicht eingetragen ist, dann scheint er auch den Namen nicht zu nutzen bzw. dann wäre das ja sinnlos, weil man ja mit dem Namen unabhängig von der IP Adresse sein muss.
Ich hätte an Deiner Stelle aber auch kein Problem den NodeRed Adapter zu verwenden. Ich schrieb ja schon oft, dass man dadurch sein iobroker System indirekt um alle Interface Nodes erweitern kann.
Ich nehm beispielsweise auch die snmp Nodes - da die besser funktionieren als der Adapter.
Ich habe auch generell einen SubFlow geschrieben, mit dem man dann Datenpunkte von JSON oder JS Objekten dann in iobroker Datenpunkte schreibt. So funktioniert auch mancher Wetteradapter nicht, wie ich mir das vorstellte und das kann ich mit NodeRed gut lösen und habe trotzdem im iobroker die Datenstruktur permanent zur Verfügung.
-
@mickym Danke für deine Hilfe und Bestätigung. Das gleiche dachte ich mir auch. Es scheint so, als wenn der Adapter keine DNS-Anfrage macht, im Gegensatz zum Node-Red. Dort sehe ich am DNS-Server, dass ich vor einem Ping eine DNS-Abfrage erhalte. Dann werde ich deiner Empfehlung folgen und das über Node-Red lösen. Dort schicke ich z.B. nur bei einem Zustandswechsel (Ping true/false) mit der "rbe-node" den Wert an den ioBroker.
SNMP wird das nächste sein, was ich angehen werde - jedoch belasse ich die "Kern-Kompetenz" eher bei einem Monitoring-Tool wie z.B. zabbix. Dadurch gibt es die Möglichkeit über eine längere Zeit einen Verlauf des Sensors abzulesen, wo ich mir eine effektive Umsetzung mit den anderen Tools (ioBroker/Node-Red) nur schwer vorstellen kann. D.h. ich brauche als nächstes einen Weg Zabbix mit IoBroker zu verbinden. Letztendlich bleibt aber die erste Anlaufstelle für die Zustände und Visualisierung beim ioBroker.
-
@jokersmiler sagte in Ping Hostname:
SNMP wird das nächste sein, was ich angehen werde - jedoch belasse ich die "Kern-Kompetenz" eher bei einem Monitoring-Tool wie z.B. zabbix. Dadurch gibt es die Möglichkeit über eine längere Zeit einen Verlauf des Sensors abzulesen, wo ich mir eine effektive Umsetzung mit den anderen Tools (ioBroker/Node-Red) nur schwer vorstellen kann. D.h. ich brauche als nächstes einen Weg Zabbix mit IoBroker zu verbinden. Letztendlich bleibt aber die erste Anlaufstelle für die Zustände und Visualisierung beim ioBroker.
Wie ich gesagt habe - im iobroker gibts keinen Adapter, aber über NodeRed sollte es kein Problem sein entsprechende Datenpunkte zu erstellen.
Die Zabbix API wurde anscheinend in NodeRed implementiert und Du kannst damit (z. Bsp. meinem Subflow), die Datenpunkte in den iobroker schreiben. Du kannst über die Sendernode sogar Ereignisse von NodeRed - also auch Deinem iobroker System in Deine Zabbix Installation schreiben.iobroker ist bei mir die Datenbank, NodeRed meine präferierte Logikmaschine.
Interfaces zu anderen Systemen - nehme ich das was am BEsten funktioniert.
Insofern sind beide Systeme eine perfekte Synergie und ich verstehe nicht, warum immer das Entweder Oder - dafür gibt es ja den NodeRed Adapter im iobroker und einen javascript Adapter. Beide stehen nach meiner Ansicht einander ebenbürtig zur Verfügung.Die Implementierung des Zabbix API in Node Red ist für mich wieder ein perfektes Beispiel wie man diese Systeme, für die es keine Adapter gibt, auch in den iobroker perfekt integrieren kann. Wie gesagt für die Responses aus dieser Zabbix Node bietet sich mein Subflow in meinen Augen perfekt an.
-
@jokersmiler Also ich spiel hier mal den Klugscheißer:
Black_Pearl und pfsense sind keine richtigen Namen zum anpingen. Warum?
Weil ping entweder eine IP-Adresse oder einen DNS-Namen nimmt. Ist es ein DNS-Name wird der DNS nach der IP gefragt und die dann gepingt.Also, dein ioBroker-Host hat einen DNS-Server eingestellt. Das wird der System-DNS sein. Und den fragt er dann nach pfsense oder Black_Pearl
Wenn dein ioBroker-Host den Google DNS 8.8.8.8 fragt wird der sagen "kenn ich nicht".Falls eine DNS-Domäne/Suchdomäne hinterlegt ist, hängt er diese immer unaufgefordert hinten dran. Ist die tollesnetz.local sucht er also in Wirklichkeit immer nach pfsense.tollesnetz.local
Ist dein DNS die Fritzbox - die hängt, wenn nicht anders eingestellt, immer ein fritz.box hinten dran, also pfsense.fritz.box.
Aber, woher soll der DNS Eintrag denn kommen? Geräte die einen DNS eingetragen haben wie z.B. ein Windows-Rechner, die Registrieren sich am DNS Server mit Ihren Namen und dann kennt dieser DNS-Server den Namen. Diese tauchen in der FritzBox dann mit dem gewählten Gerätenamen auf. Allen anderen gibt die FritzBox einfach künstliche Namen die aus der IP gebildet werden. Die kann man auf der FritzBox ändern.
Linux-Geräte machen das oft nicht, also das mit den Registrieren.Also, prüfe welchen DNS dein ioBroker-Host nutzt, dann prüfe ob es auf diesen DNS auch Einträge für deine Geräte gibt.
Falls das so ist prüfe ob du das DNS-Suffix (fritz.box oder ähnlich) mit angeben musst.Alternativ: Bearbeite die hosts Datei auf deinem ioBroker Host und schreibe die direkt dort rein. Die hosts Datei wird immer zuerst gefragt und dann erst der DNS.
Dort kannst du so etwas wie192.168.178.1 pfsense 192.168.178.2 Black_Pearl
reinschreiben.
Unter Linux liegt die in der Regel unter (Pfad mit Dateiname)/etc/hosts
Unter Windows
C:\Windows\System32\drivers\etc\hosts
-
Zu Zabbix: Es gibt schon einen Adpater: https://github.com/shady2k/ioBroker.zabbix
Ich nutze den aber auch nicht mehr für die Verbindung zu meinen Zabbix.Ich will aber auch nur Werte an Zabbix senden und von Zabbix die Auswertung bekommen.
Werte senden mache ich per zabbix_sender und entsprechenden Parametern:
const g_zabbix_Server = "127.0.0.1"; const g_zabbix_port = "10051"; const g_zabbix_host = "ioBroker.znil.local"; function SendValue_with_ZabbixSender(_zbx_Host, _zbx_Item, _zbx_Value) { exec('/usr/bin/zabbix_sender -z ' + g_zabbix_Server + ' -p ' + g_zabbix_port + ' -s ' + _zbx_Host + ' -k ' + _zbx_Item + ' -o "' + _zbx_Value + '"'); // console.warn('/usr/bin/zabbix_sender -z ' + g_zabbix_Server + ' -p ' + g_zabbix_port + ' -s ' + _zbx_Host + ' -k ' + _zbx_Item + ' -o "' + _zbx_Value + '"'); } /* Kleiner Test: */ //SendValue_with_ZabbixSender( g_zabbix_host, "iobroker.test.value", 98); // #################################################################################################################################################### // Wasseruhr on({ id: "mqtt.0.esp32.esp32water.zaehlerstand", change: "ne"}, function (obj) { var s_value_mqtt = obj.state.val; //if ( getState("mqtt.0.esp32.esp32water.error").val == "" ) { SendValue_with_ZabbixSender( g_zabbix_host, "iobroker.esp32cam.wasseruhr", obj.state.val); //} });
Werte Empfang mache ich über MQTT - Wenn auf dem Zabbix ein Trigger auslöst, starte dazu eine Action die den Wert nach MQTT sendet:
mosquitto_pub -h 192.168.178.18 -p 1883 -u benutzername -P passwort -r -i "MQTT-Clientname" -m {TRIGGER.DESCRIPTION} -t zabbix/{HOST.NAME}/{TRIGGER.URL}
Man könnet natürlich auch die ioBroker API dafür nehmen - aber ich mag MQTT
Zabbix kann - mit den neuem Zabbix-Agent2 auch MQTT abonnieren. In Zukunft will ich das über den Weg machen, kam aber noch nicht dazu. -
@bananajoe Danke für den Hinweis. Es wird die Domain "localdomain" über den DHCP-Server durchgereicht. Ich habe auch schon an den domain-name gedacht, jedoch angenommen, dass der das suffix automatisch mit anhängt wird, da es ja beim node-red adapter bereits funktioniert. Entweder setzte ich den hostname falsch oder bei nicht verfügbaren suffix des darunterliegenden Systems wird der Punkt falsch wegen der Struktur-Trennung vom ping-Adapter in den Object-Tree übergeben, bei dem wohl dieser eher für die Abfrage dann hergenommen wird? (Das tiefere Debugging hab ich noch nicht gefunden)
lt. Ping wird der Domain-Name natürlich mit angehängt und ist auch erreichbar.
Ich sehe jedoch per tcpdump auch nicht mal den Versuch einer DNS-Abfrage seitens des ping-Adapters. Beim Node-Red Adapter dagegen sehe ich die Anfrage rausgehen.
Die /etc/hosts wird klappen, würde jedoch gerne versuchen es dynamisch zu halten, da später weitere Clients dazukommen werden.
-
@bananajoe Zabbix mit MQTT hört sich interessant an und find ich auch recht elegant. Werde das auch mal probieren.