NEWS
Script: HP-ILO 4 Abfrage Temperaturen und FanSpeed
-
Script läuft auf dem ersten Server gut und ruft ordentlich Daten ab.
iLO 4 v2.61Etwas viel logging ist noch drinnen, liegt aber vermutlich noch an der Testversion.
Bekomme aber bei jedem Durchlauf folgende Fehler ausgeworfen:
javascript.0 2025-06-30 09:16:02.143 warn at processImmediate (node:internal/timers:454:9) javascript.0 2025-06-30 09:16:02.143 warn at runNextTicks (node:internal/process/task_queues:60:5) javascript.0 2025-06-30 09:16:02.143 warn at createState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2987:34) javascript.0 2025-06-30 09:16:02.143 warn at Object.<anonymous> (script.js.Eigene_Scripte.ilo4:255:25) javascript.0 2025-06-30 09:16:02.143 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2090:20) javascript.0 2025-06-30 09:16:02.137 warn You are assigning a object to the state "javascript.0.ilo4-testing.bios.links" which expects a string. Please fix your code to use a string or change the state type to object. This warning might become an error in future versions.
EDIT:
Den anderen Server habe ich nun auch getestet.
Auf ilo5 2.72 klappt es teilweise.
Mache Werte werden befüllt, manch andere werden falsch befüllt.javascript.0 11:35:32.719 info registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions javascript.0 11:35:34.489 info Thermal-Daten erfolgreich abgerufen. javascript.0 11:35:34.489 error Fehler beim Abrufen der Thermal-Daten: Cannot read properties of undefined (reading 'trim') javascript.0 11:35:35.710 info System Data erfolgreich abgerufen. javascript.0 11:35:36.878 info PSU Data erfolgreich abgerufen. javascript.0 11:35:37.533 info Firmware Data erfolgreich abgerufen. javascript.0 11:35:37.951 info Network Data erfolgreich abgerufen. javascript.0 11:35:38.762 info 🧬 BIOS-Felder: • @odata.context: /redfish/v1/$metadata#Bios.Bios • @odata.etag: W/"B2467190023E121212858C6490CB8F5B" • @odata.id: /redfish/v1/systems/1/bios/settings/ • @odata.type: #Bios.v1_0_0.Bios • AttributeRegistry: BiosAttributeRegistryU41.v1_2_68 • Attributes: [object Object] • Id: settings • Name: BIOS Pending Settings javascript.0 11:35:38.763 info BIOS-Settings erfolgreich abgerufen. javascript.0 11:35:38.770 warn at Object.<anonymous> (script.js.Eigene_Scripte.ilo5:255:25) javascript.0 11:35:39.228 info Disks Data erfolgreich abgerufen. javascript.0 11:35:39.228 warn Keine PhysicalDrives-Verlinkung gefunden. javascript.0 11:35:39.575 info Raid Data erfolgreich abgerufen. javascript.0 11:35:39.575 warn Keine LogicalDrives-Verlinkung gefunden.
-
Hey,
ich habe anhand der Refence zu ILO 4 das ganze für die V2.81 getestet, eine andere ILO Version habe ich nicht.
Die ILO 5 sollte garnicht laufen, da dort die API nach den Refenzen ganz anders funktioniert.
Wie du siehst sind schon zwischen 2.6x und 2.8x gravirende Unterschiede.
Meine beiden Server (je mit V2.81) geben einwandfrei alle Daten Preis.
Hast du ILO Adv. Lizenzen?
Vielleicht mal up auf 2.81?ILO 4 Refences:
https://hewlettpackard.github.io/ilo-rest-api-docs/ilo4/P.S. Ich habe noch einen DL360G6 8HE hier rumfliegen, ich habe gerade Lust das zu einem Proxmox Backup Server zu machen, aber das würde witzig werden, ILO -1 läuft nur mit einem gammeligen Windows XP. Auf neuen Browsern gibts nichtmal mehr eine Verbindung.
-
@lucifor1976 sagte in Script: HP-ILO 4 Abfrage Temperaturen und FanSpeed:
Hast du ILO Adv. Lizenzen?
Was ist das?
Vielleicht mal up auf 2.81?
Das ist ein alter Server auf der Arbeit wo ich Proxmox drauf gepackt habe. Die 2.61 ist die aktuellste Version die ich online ohne irgend welche Zugänge finden konnte.Kenne mich da nicht so aus.
Hab das alte Teil (10 Jahre alt, einfach neu aufgesetzt und spiele mit rum.).
Der andere mit ilo5 ist ein Produktiver Server. Der wird auch von extern überwacht.EDIT
Habs wohl
-
Ohh das ist ein ML, ich habe nur DL, somit kann ich mit der letzen ILO wohl auch nicht aushelfen.
Ich sehe gerade für einen ist 2.82 verfügbar.. Ne das tu ich mir jetzt aber nicht an.Sieht so aus als wäre das Script dann für dich nicht geeignet..
-
Auf dem 4er klappt ja alles.
Bekomme gefühlt hunderte Datenpunkte korrekt ausgefüllt.Hab nur die Fehler im log.
-
Jetzt bin ich verwirrt, hast du die Fehler im Log bei der Maschine wo es aber geht?
Weil: Die Reference zu ILO 4 2.61 sagt das Raid und Disk nicht über die API ausgelesen werden können.
(Das steht auch so im Log (erfolgreich gelesen, aber keine links gefunden bei Raid und Disks)
Die Fehler im Log rühren nicht vom Script her, die sehen anders aus, ich vermute axios?Noch eine Frage, läuft das Script in einer iobroker Umgebung? Diese wird erwartet, das ist kein Shell Script.
Das Script erwartet die Javascript Engine von iobroker.Etwas weiter unten im Log steht was von ILO5?
Ich kann ein Script für ILO 5 bauen, aber nur im Blindflug, da ich keine Maschine mit ILO 5 habe.
Geht sicherlich, dauert aber lang .. ständig logs und Scripte hin und her... -
Hallo,
Das erste log kommt vom ilo 4.
Also dieses:javascript.0 2025-06-30 09:16:02.143 warn at processImmediate (node:internal/timers:454:9) javascript.0 2025-06-30 09:16:02.143 warn at runNextTicks (node:internal/process/task_queues:60:5) javascript.0 2025-06-30 09:16:02.143 warn at createState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2987:34) javascript.0 2025-06-30 09:16:02.143 warn at Object.<anonymous> (script.js.Eigene_Scripte.ilo4:255:25) javascript.0 2025-06-30 09:16:02.143 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2090:20) javascript.0 2025-06-30 09:16:02.137 warn You are assigning a object to the state "javascript.0.ilo4-testing.bios.links" which expects a string. Please fix your code to use a string or change the state type to object. This warning might become an error in future versions.
Der DP bios.links ist so befüllt
{"self":{"href":"/rest/v1/systems/1/bios/Settings"}}
Vom lesen her können die Fehlerlos durchaus komplett wegen dem DP sein...?
Sonst ist das Log super und alle DPs da.Das folgende Log ist vom Abruf des ilo 5
javascript.0 11:35:32.719 info registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions javascript.0 11:35:34.489 info Thermal-Daten erfolgreich abgerufen. javascript.0 11:35:34.489 error Fehler beim Abrufen der Thermal-Daten: Cannot read properties of undefined (reading 'trim') javascript.0 11:35:35.710 info System Data erfolgreich abgerufen. javascript.0 11:35:36.878 info PSU Data erfolgreich abgerufen. javascript.0 11:35:37.533 info Firmware Data erfolgreich abgerufen. javascript.0 11:35:37.951 info Network Data erfolgreich abgerufen. javascript.0 11:35:38.762 info 🧬 BIOS-Felder: • @odata.context: /redfish/v1/$metadata#Bios.Bios • @odata.etag: W/"B2467190023E121212858C6490CB8F5B" • @odata.id: /redfish/v1/systems/1/bios/settings/ • @odata.type: #Bios.v1_0_0.Bios • AttributeRegistry: BiosAttributeRegistryU41.v1_2_68 • Attributes: [object Object] • Id: settings • Name: BIOS Pending Settings javascript.0 11:35:38.763 info BIOS-Settings erfolgreich abgerufen. javascript.0 11:35:38.770 warn at Object.<anonymous> (script.js.Eigene_Scripte.ilo5:255:25) javascript.0 11:35:39.228 info Disks Data erfolgreich abgerufen. javascript.0 11:35:39.228 warn Keine PhysicalDrives-Verlinkung gefunden. javascript.0 11:35:39.575 info Raid Data erfolgreich abgerufen. javascript.0 11:35:39.575 warn Keine LogicalDrives-Verlinkung gefunden.
Teilweise bekomme ich korrekte DPs angelegt, teils mit falschen Inhalt.
Beide Script laufen im iobroker.
Ich habe die beiden Scripte im iobroker ilo4 und ilo5 genannt. Deshalb findest du die Begriffe im Log. -
Schau mal auf hithup, ich habe ein Script für ILO5 hinzugefügt, teste das mal.
Wie gesagt im Blindflug. -
Cool,
danke.
Lauft jetzt deutlich stabiler.
Scheint allgemein etwas weniger Infos zu geben, aber zumindest mich jucken die tiefsten BIOS Datenpunkte nicht.Nur zu den Drives werden keine Infos gefunden, das ist schade.
Und es scheint den gleichen oder ähnlichen Fehler zu geben, der mir auch bei der Version für den ILO4 ausgegeben wird.
javascript.0 2025-07-03 08:05:04.144 warn script.js.Eigene_Scripte.ilo5: Keine LogicalDrives-Verlinkung gefunden. javascript.0 2025-07-03 08:05:03.994 warn script.js.Eigene_Scripte.ilo5: Keine PhysicalDrives-Verlinkung gefunden. javascript.0 2025-07-03 08:05:03.854 warn at processImmediate (node:internal/timers:454:9) javascript.0 2025-07-03 08:05:03.854 warn at runNextTicks (node:internal/process/task_queues:60:5) javascript.0 2025-07-03 08:05:03.854 warn at createState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2987:34) javascript.0 2025-07-03 08:05:03.854 warn at Object.<anonymous> (script.js.Eigene_Scripte.ilo5:232:22) javascript.0 2025-07-03 08:05:03.854 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2090:20) javascript.0 2025-07-03 08:05:03.853 warn You are assigning a object to the state "javascript.0.ilo5-testing.bios.Attributes" which expects a string. Please fix your code to use a string or change the state type to object. This warning might become an error in future versions. javascript.0 2025-07-03 08:05:03.848 info script.js.Eigene_Scripte.ilo5: BIOS-Settings erfolgreich abgerufen. javascript.0 2025-07-03 08:05:03.467 info script.js.Eigene_Scripte.ilo5: Netzwerkdaten erfolgreich abgerufen. javascript.0 2025-07-03 08:05:03.309 info script.js.Eigene_Scripte.ilo5: Firmware-Version erfolgreich abgerufen. javascript.0 2025-07-03 08:05:03.092 info script.js.Eigene_Scripte.ilo5: Power erfolgreich abgerufen. javascript.0 2025-07-03 08:05:02.945 info script.js.Eigene_Scripte.ilo5: Systeminfo erfolgreich abgerufen. javascript.0 2025-07-03 08:05:02.705 info script.js.Eigene_Scripte.ilo5: Thermal-Daten erfolgreich abgerufen. javascript.0 2025-07-03 08:05:01.737 info script.js.Eigene_Scripte.ilo5: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions javascript.0 2025-07-03 08:05:01.732 info Start JavaScript script.js.Eigene_Scripte.ilo5 (Javascript/js) javascript.0 2025-07-03 08:05:01.636 info Stopping script script.js.Eigene_Scripte.ilo5
Da habe ich jetzt die beiden DPs, über die beide Scriptversionen meckern, (bei beiden ein Verschiedener unter Bios) von String auf Object geändert.
Bei der v4 Version "links" und bei der v5 Version "Attributes". Jetzt gibts keine Fehler mir und es kommt nur das reguläre logging. -
@david-g
Sehr gut..
Mach die Änderung bitte auch auf Githup
Wenn Deine Version nicht ILO5 V2.95 ist bitte ein neues js File. Dito für ILO 4, langsam herantasten..
Am Wochenende schau ich mal ob ich etwas aus Disk und Raid herausgekitzelt bekomme..
Hab heute und morgen keine Zeit.. -
Hab es nicht im Script angepasst.
Hab die beiden vom Script angelegten DPs im Admin angepasst.Ka ob es im Skript Sinn macht. Bei dir scheint der Typ ja zu stimmen der eingetragen wird bei der ilo4 Variante und bei mir nicht.
Hab gtad nochmal geschaut.
Das Script schreibt in die DPs bei mir wirklich ein array.Beim 4er unter bios.links
{"self":{"href":"/rest/v1/systems/1/bios/Settings"}}
Beim 5er unter bios.attributes
{"AcpiHpet":"Enabled","AcpiRootBridgePxm":"Enabled","AcpiSlit":"Enabled","AdjSecPrefetch":"Enabled","AdminEmail":"","AdminName":"","AdminOtherInfo":"","AdminPhone":"","AdvCrashDumpMode":"Disabled","AdvancedMemProtection":"FastFaultTolerantADDDC","AsrStatus":"Enabled","AsrTimeoutMinutes":"Timeout10","AssetTagProtection":"Unlocked","AutoPowerOn":"RestoreLastState","BootMode":"Uefi","BootOrderPolicy":"RetryIndefinitely","ChannelInterleaving":"Enabled","CollabPowerControl":"Disabled","ConsistentDevNaming":"LomsAndSlots","CustomPostMessage":"","DaylightSavingsTime":"Disabled","DcuIpPrefetcher":"Enabled","DcuStreamPrefetcher":"Enabled","Dhcpv4":"Enabled","DynamicPowerCapping":"Disabled","EmbNicAspm":"Disabled","EmbNicEnable":"Auto","EmbNicLinkSpeed":"Auto","EmbNicPCIeOptionROM":"Enabled","EmbSas1Aspm":"Disabled","EmbSas1Boot":"TwentyFourTargets","EmbSas1Enable":"Auto","EmbSas1LinkSpeed":"Auto","EmbSas1PcieOptionROM":"Enabled","EmbSata1Aspm":"Disabled","EmbSata2Aspm":"Disabled","EmbVideoConnection":"Auto","EmbeddedDiagnostics":"Enabled","EmbeddedSata":"Ahci","EmbeddedSerialPort":"Com2Irq3","EmbeddedUefiShell":"Enabled","EmsConsole":"Disabled","EnabledCoresPerProc":0,"EnergyEfficientTurbo":"Disabled","EnergyPerfBias":"MaxPerf","EnhancedProcPerf":"Disabled","EraseUserDefaults":"No","ExtendedAmbientTemp":"Disabled","ExtendedMemTest":"Disabled","F11BootMenu":"Enabled","FCScanPolicy":"CardConfig","FanFailPolicy":"Shutdown","FanInstallReq":"EnableMessaging","FlexLom1Aspm":"Disabled","HttpSupport":"Auto","HwPrefetcher":"Enabled","IODCConfiguration":"Auto","IntelDmiLinkFreq":"Auto","IntelNicDmaChannels":"Enabled","IntelPerfMonitoring":"Disabled","IntelProcVtd":"Enabled","IntelligentProvisioning":"Enabled","InternalSDCardSlot":"Enabled","IpmiWatchdogTimerAction":"PowerCycle","IpmiWatchdogTimerStatus":"IpmiWatchdogTimerOff","IpmiWatchdogTimerTimeout":"Timeout30Min","Ipv4Address":"0.0.0.0","Ipv4Gateway":"0.0.0.0","Ipv4PrimaryDNS":"0.0.0.0","Ipv4SecondaryDNS":"0.0.0.0","Ipv4SubnetMask":"0.0.0.0","Ipv6Address":"::","Ipv6ConfigPolicy":"Automatic","Ipv6Duid":"Auto","Ipv6Gateway":"::","Ipv6PrimaryDNS":"::","Ipv6SecondaryDNS":"::","LLCDeadLineAllocation":"Enabled","LlcPrefetch":"Disabled","LocalRemoteThreshold":"Auto","MaxMemBusFreqMHz":"Auto","MaxPcieSpeed":"PerPortCtrl","MemClearWarmReset":"Disabled","MemFastTraining":"Enabled","MemMirrorMode":"Full","MemPatrolScrubbing":"Enabled","MemRefreshRate":"Refreshx1","MemoryControllerInterleaving":"Auto","MemoryRemap":"NoAction","MinProcIdlePkgState":"NoState","MinProcIdlePower":"NoCStates","MixedPowerSupplyReporting":"Enabled","NetworkBootRetry":"Enabled","NetworkBootRetryCount":20,"NicBoot1":"NetworkBoot","NicBoot2":"Disabled","NicBoot3":"Disabled","NicBoot4":"Disabled","NodeInterleaving":"Disabled","NumaGroupSizeOpt":"Clustered","NvmeOptionRom":"Enabled","OpportunisticSelfRefresh":"Disabled","PciPeerToPeerSerialization":"Disabled","PciResourcePadding":"Normal","PciSlot1Bifurcation":"Auto","PciSlot2Bifurcation":"Auto","PciSlot3Bifurcation":"Auto","PciSlot5Bifurcation":"Auto","PciSlot6Bifurcation":"Auto","PciSlot7Bifurcation":"Auto","PciSlot8Bifurcation":"Auto","PersistentMemBackupPowerPolicy":"WaitForBackupPower","PostBootProgress":"Disabled","PostDiscoveryMode":"Auto","PostF1Prompt":"Delayed20Sec","PostVideoSupport":"DisplayAll","PostedInterruptThrottle":"Enabled","PowerButton":"Enabled","PowerOnDelay":"NoDelay","PowerRegulator":"StaticHighPerf","PreBootNetwork":"Auto","PrebootNetworkEnvPolicy":"Auto","PrebootNetworkProxy":"","ProcAes":"Enabled","ProcHyperthreading":"Enabled","ProcTurbo":"Enabled","ProcVirtualization":"Enabled","ProcX2Apic":"Enabled","ProcessorConfigTDPLevel":"Normal","ProcessorJitterControl":"Disabled","ProcessorJitterControlFrequency":0,"ProcessorJitterControlOptimization":"ZeroLatency","ProductId":"P21788-421","RedundantPowerSupply":"BalancedMode","RefreshWatermarks":"Auto","RemovableFlashBootSeq":"ExternalKeysFirst","RestoreDefaults":"No","RestoreManufacturingDefaults":"No","RomSelection":"CurrentRom","SataSecureErase":"Disabled","SaveUserDefaults":"No","SecStartBackupImage":"Disabled","SecureBootStatus":"Enabled","SerialConsoleBaudRate":"BaudRate115200","SerialConsoleEmulation":"Vt100Plus","SerialConsolePort":"Auto","SerialNumber":"CZJ2401PP3","ServerAssetTag":"","ServerConfigLockStatus":"Disabled","ServerName":"WILESXI-01.ad.wilke.de","ServerOtherInfo":"","ServerPrimaryOs":"","ServiceEmail":"","ServiceName":"","ServiceOtherInfo":"","ServicePhone":"","SetupBrowserSelection":"Auto","Slot1MctpBroadcastSupport":"Enabled","Slot2MctpBroadcastSupport":"Enabled","Slot3MctpBroadcastSupport":"Enabled","Slot5MctpBroadcastSupport":"Enabled","Slot6MctpBroadcastSupport":"Enabled","Slot7MctpBroadcastSupport":"Enabled","Slot8MctpBroadcastSupport":"Enabled","Sriov":"Enabled","StaleAtoS":"Disabled","SubNumaClustering":"Enabled","ThermalConfig":"OptimalCooling","ThermalShutdown":"Enabled","TimeFormat":"Utc","TimeZone":"UtcP1","TpmChipId":"None","TpmFips":"NotSpecified","TpmState":"NotPresent","TpmType":"NoTpm","UefiOptimizedBoot":"Enabled","UefiSerialDebugLevel":"Disabled","UefiShellBootOrder":"Disabled","UefiShellScriptVerification":"Disabled","UefiShellStartup":"Disabled","UefiShellStartupLocation":"Auto","UefiShellStartupUrl":"","UefiShellStartupUrlFromDhcp":"Disabled","UefiVariableAccessFwControl":"Disabled","UncoreFreqScaling":"Maximum","UrlBootFile":"","UrlBootFile2":"","UrlBootFile3":"","UrlBootFile4":"","UsbBoot":"Enabled","UsbControl":"UsbEnabled","UserDefaultsState":"Disabled","UtilityLang":"English","VirtualInstallDisk":"Disabled","VirtualSerialPort":"Com1Irq4","VlanControl":"Disabled","VlanId":0,"VlanPriority":0,"WakeOnLan":"Enabled","WorkloadProfile":"Virtualization-MaxPerformance","XptPrefetcher":"Auto","iSCSIPolicy":"SoftwareInitiator"}
BIOS sieht dafür so aus:
Als ob die Werte bei beiden Werten erst eine Ebene tiefer extrahiert werden dürften.
Ich teste morgen mal (chatgpt)
const valueType = typeof val === 'boolean' ? 'boolean' : typeof val === 'number' ? 'number' : typeof val === 'object' && val !== null && !Array.isArray(val) ? 'object' : Array.isArray(val) ? 'array' : 'string';
ob das die Fehler aus dem Log wirft. Wobei das ja die DPs vermutlich dadurch nicht entsprechend befüllt.
EDIT:
Habe jetzt unter BIOS die Erkennung in der ilo4 Variante vom Type zufor (const [key, val] of Object.entries(bios)) { try { const dp = dpPrefix + 'bios.' + sanitizeId(key); const valueType = typeof val === 'boolean' ? 'boolean' : typeof val === 'number' ? 'number' : typeof val === 'object' && val !== null && !Array.isArray(val) ? 'object' : Array.isArray(val) ? 'array' : 'string';
erweitert.
Bei der ilo5 Variante (Eigentlich das gleiche, nur hast du es da in einer Zeile stehen)
const valueType = typeof val === 'boolean' ? 'boolean' : typeof val === 'number' ? 'number' : typeof val === 'object' && val !== null && !Array.isArray(val) ? 'object' : Array.isArray(val) ? 'array' : 'string';
Jetzt ist das Log still.
(DPs aber nicht korrekt befüllt, siehe Screenshot)EDIT2
Habe auf git erst aus versehen einen pull request für v4 gemacht. Sollte v5 werden. Kannst du den ablehnen? sehe nicht wo ich das wiederrufen kann.