PoE Ein/Ausschalten mit D-Link Switch

Begonnen von crusader, 18 August 2020, 21:18:06

Vorheriges Thema - Nächstes Thema

Heuberg

Naja, ALT ist Ansichtssache ;D
FW 1100-08PV2 1.00.003 Firmware 20.05.2020
https://eu.dlink.com/de/de/products/dgs-1100-series-gigabit-smart-switches?revision=deu_v2#downloads
Das finde ich nicht so alt -> kleiner 1 Jahr  8)
Brandneu würde ich sagen :D
HM, MAX, MySensors, Fronius, Conbee II, ZigBee, VCONTROL, Modbus, RPi, AVM

crusader

Ja, hab's auch gesehen.
Siehe Korrektur im letzten Post.

Heuberg

SNMPWALK hat mir auf den ersten Wurf nichts gezeigt (hab es erst gerade installiert) -> auch nicht nach der Configuration im Switch....

Im Menü ist SNMP aufgeführt:
SNMP   
SNMP Global Settings   
SNMP Community Table Settings   
SNMP Host Settings

Anbei die drei Menüs im Anhang


HM, MAX, MySensors, Fronius, Conbee II, ZigBee, VCONTROL, Modbus, RPi, AVM

crusader

#18
SNMPv2c auswählen, Community String auf public

Dann.
snmpwalk -v 2c -c public <ip-vom-Switch>

Edit: SNMP Global State muss auf 'Enabled' stehen.

Heuberg

Jap, da kommt reichlich zurück, aber auf den ersten Blick kein PoE:


iso.3.6.1.2.1.1.1.0 = STRING: "DGS-1100-08PV2 Gigabit Ethernet Switch"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.171.10.173.4.1
iso.3.6.1.2.1.1.3.0 = Timeticks: (934500) 2:35:45.00
iso.3.6.1.2.1.1.4.0 = ""
iso.3.6.1.2.1.1.5.0 = STRING: "Switch_PoE"
iso.3.6.1.2.1.1.6.0 = ""
iso.3.6.1.2.1.1.7.0 = INTEGER: 2
iso.3.6.1.2.1.1.8.0 = Timeticks: (934500) 2:35:45.00
iso.3.6.1.2.1.2.1.0 = INTEGER: 8
iso.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.1.3 = INTEGER: 3
iso.3.6.1.2.1.2.2.1.1.4 = INTEGER: 4
iso.3.6.1.2.1.2.2.1.1.5 = INTEGER: 5
iso.3.6.1.2.1.2.2.1.1.6 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.1.7 = INTEGER: 7
iso.3.6.1.2.1.2.2.1.1.8 = INTEGER: 8
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "port1"
iso.3.6.1.2.1.2.2.1.2.2 = STRING: "port2"
iso.3.6.1.2.1.2.2.1.2.3 = STRING: "port3"
iso.3.6.1.2.1.2.2.1.2.4 = STRING: "port4"
iso.3.6.1.2.1.2.2.1.2.5 = STRING: "port5"
iso.3.6.1.2.1.2.2.1.2.6 = STRING: "port6"
iso.3.6.1.2.1.2.2.1.2.7 = STRING: "port7"
iso.3.6.1.2.1.2.2.1.2.8 = STRING: "port8"
iso.3.6.1.2.1.2.2.1.3.1 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.2 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.3 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.4 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.5 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.6 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.7 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.8 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.4.1 = INTEGER: 1566
iso.3.6.1.2.1.2.2.1.4.2 = INTEGER: 1566
iso.3.6.1.2.1.2.2.1.4.3 = INTEGER: 1566
iso.3.6.1.2.1.2.2.1.4.4 = INTEGER: 1566
iso.3.6.1.2.1.2.2.1.4.5 = INTEGER: 1566
iso.3.6.1.2.1.2.2.1.4.6 = INTEGER: 1566
iso.3.6.1.2.1.2.2.1.4.7 = INTEGER: 1566
iso.3.6.1.2.1.2.2.1.4.8 = INTEGER: 1566
iso.3.6.1.2.1.2.2.1.5.1 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.2 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.3 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.4 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.5 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.6 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.7 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.8 = Gauge32: 1000000000
iso.3.6.1.2.1.2.2.1.6.1 = Hex-STRING: 78 98 E8 EB A0 01
iso.3.6.1.2.1.2.2.1.6.2 = Hex-STRING: 78 98 E8 EB A0 02
iso.3.6.1.2.1.2.2.1.6.3 = Hex-STRING: 78 98 E8 EB A0 03
iso.3.6.1.2.1.2.2.1.6.4 = Hex-STRING: 78 98 E8 EB A0 04
iso.3.6.1.2.1.2.2.1.6.5 = Hex-STRING: 78 98 E8 EB A0 05
iso.3.6.1.2.1.2.2.1.6.6 = Hex-STRING: 78 98 E8 EB A0 06
iso.3.6.1.2.1.2.2.1.6.7 = Hex-STRING: 78 98 E8 EB A0 07
iso.3.6.1.2.1.2.2.1.6.8 = Hex-STRING: 78 98 E8 EB A0 08
iso.3.6.1.2.1.2.2.1.7.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.2 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.3 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.4 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.5 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.6 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.7 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.8 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.8.1 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.2 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.3 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.4 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.5 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.6 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.7 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.8 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.9.1 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.2 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.3 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.4 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.5 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.6 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.7 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.8 = Timeticks: (1100) 0:00:11.00
iso.3.6.1.2.1.2.2.1.10.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.8 = Counter32: 4628153
iso.3.6.1.2.1.2.2.1.11.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.8 = Counter32: 11716
iso.3.6.1.2.1.2.2.1.12.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.8 = Counter32: 37369
iso.3.6.1.2.1.2.2.1.13.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.8 = Counter32: 35598
iso.3.6.1.2.1.2.2.1.14.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.8 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.8 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.8 = Counter32: 301045
iso.3.6.1.2.1.2.2.1.17.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.8 = Counter32: 2131
iso.3.6.1.2.1.2.2.1.18.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.8 = Counter32: 155
iso.3.6.1.2.1.2.2.1.19.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.8 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.7 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.8 = Counter32: 0
iso.3.6.1.2.1.4.3.0 = Counter32: 2213
iso.3.6.1.2.1.4.7.0 = Counter32: 0
iso.3.6.1.2.1.4.9.0 = Counter32: 2213
iso.3.6.1.2.1.4.10.0 = Counter32: 2142
iso.3.6.1.2.1.5.1.0 = Counter32: 1
iso.3.6.1.2.1.5.8.0 = Counter32: 0
iso.3.6.1.2.1.5.9.0 = Counter32: 0
iso.3.6.1.2.1.5.14.0 = Counter32: 0
iso.3.6.1.2.1.5.15.0 = Counter32: 0
iso.3.6.1.2.1.6.4.0 = INTEGER: 12
iso.3.6.1.2.1.6.10.0 = Counter32: 1810
iso.3.6.1.2.1.6.11.0 = Counter32: 1752
iso.3.6.1.2.1.7.1.0 = Counter32: 413
iso.3.6.1.2.1.7.2.0 = Counter32: 0
iso.3.6.1.2.1.7.4.0 = Counter32: 401
iso.3.6.1.2.1.11.1.0 = Counter32: 412
iso.3.6.1.2.1.11.2.0 = Counter32: 400
iso.3.6.1.2.1.11.3.0 = Counter32: 12
iso.3.6.1.2.1.11.4.0 = Counter32: 0
iso.3.6.1.2.1.11.5.0 = Counter32: 0
iso.3.6.1.2.1.11.6.0 = Counter32: 0
iso.3.6.1.2.1.11.8.0 = Counter32: 0
iso.3.6.1.2.1.11.9.0 = Counter32: 1
iso.3.6.1.2.1.11.10.0 = Counter32: 0
iso.3.6.1.2.1.11.12.0 = Counter32: 0
iso.3.6.1.2.1.11.15.0 = Counter32: 0
iso.3.6.1.2.1.11.16.0 = Counter32: 411
iso.3.6.1.2.1.11.17.0 = Counter32: 0
iso.3.6.1.2.1.11.29.0 = Counter32: 1
iso.3.6.1.2.1.31.1.1.1.6.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.6.2 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.6.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.6.5 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.6.6 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.6.7 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.6.8 = Counter64: 4639005
iso.3.6.1.2.1.31.1.1.1.10.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.2 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.3 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.5 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.6 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.7 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.8 = Counter64: 308102
iso.3.6.1.2.1.31.1.1.1.10.8 = No more variables left in this MIB View (It is past the end of the MIB tree)

HM, MAX, MySensors, Fronius, Conbee II, ZigBee, VCONTROL, Modbus, RPi, AVM

crusader

Nö, da ist kein MIB für die PoE-Settings dabei.

Ärgerlich, dass D-Link selbst in der neuen Version des DGS-1100 keinen snmp-Zugang eingebaut hat.


papr1989

Hi,

ich weiß das Thema ist schon alt, aber evtl. hilft es einem weiter.

Ich Besitze ein mal den DGS-1100-08P und den DGS-1100-08PV2. Somit ging bis jetzt ein schalten des V2 nicht.
Da ich FHEM nur für den DGS-1100-08P nutze und sonst mit ioBroker und NodeRed... arbeite, wollte ich nun FHEM ablösen und den Switch per NodeRed ansteuern.

Es hat ne weile gedauert, da ich mich in die HTTP-Request erst mal rein Arbeiten musste und das mit den Cookies ein wenig anders funktionierte als gedacht (viel Try an Error  ;D )
Aber am ende habe ich es für den DGS-1100-08P hinbekommen, die POE Ports über NodeRed zu schalten.
Jetzt wollte ich es für den DGS-1100-08PV2 auch noch schaffen. Problem hier war ebenso, dass ich keinen Gambit bekam.
Am ende fehlte nicht viel zum Ziel.
Damit man einen Gambit erhält (bei der V2 übrigens 16-Stellig), benötigt es noch einen Header:
Referer: http://IP-Switch/DGS-1100-08PV2_1.00.003/login2.htm
Das ganze hab ich in FHEM auch eingepflegt, um zu testen ob es da auch funktioniert.
Und ja, es funktioniert. Zumindest lassen sich die POE-Ports ein und ausschalten. Das lesen der Werte funktioniert nicht. Evtl. eine andere Menüstruktur oder es fehlt noch ein Header, aber da habe ich jetzt keine lust weiter zu suchen :D

Hier der Abgeänderte Code:
defmod DGS_1100 HTTPMOD http://192.168.178.99/ 300
attr DGS_1100 userattr get01Name get01Regex get01URL get02Name get02Regex get02URL get03Name get03Regex get03URL get04Name get04Poll:0,1 get04Regex get04URL get05Name get05OExpr get05Regex get05URL getHeader1 getHeader2 passwd reading01Name reading01Regex replacement1Mode:reading,internal,text,expression,key replacement1Regex replacement1Value replacement2Mode:reading,internal,text,expression,key replacement2Regex replacement2Value replacement3Mode:reading,internal,text,expression,key replacement3Regex replacement3Value replacement4Mode:reading,internal,text,expression,key replacement4Regex replacement4Value replacement9Mode:reading,internal,text,expression,key replacement9Regex replacement9Value set01Data set01Name set01URL set02Data set02Name set02URL set03Data set03Name set03URL set04Data set04Name set04URL setHeader1 setHeader2 setHeader3 sid0URL sid1Data sid1Header1 sid1Header2 sid1IDRegex sid1URL
attr DGS_1100 get01Name SwitchInfo
attr DGS_1100 get01Regex SwitchInfo=\[(.*?)\];;
attr DGS_1100 get01URL %%MainURL%%%%RT%%/DS/const.js
attr DGS_1100 get02Name DeviceInfo
attr DGS_1100 get02Regex DeviceInfo=\[(.*?)\];;
attr DGS_1100 get02URL %%MainURL%%%%RT%%/DS/Switch.js
attr DGS_1100 get03Name PortSetting
attr DGS_1100 get03Regex (?s)ds\_PortSetting=\[.*\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\]\];;
attr DGS_1100 get03URL %%MainURL%%%%RT%%/DS/Port.js
attr DGS_1100 get04Name PoEPort
attr DGS_1100 get04Poll 1
attr DGS_1100 get04Regex (?s)ds\_PoEPort=\[.*\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\]\];;
attr DGS_1100 get04URL %%MainURL%%%%RT%%/DS/PoEPort.js
attr DGS_1100 get05Name PoeUsedPower
attr DGS_1100 get05OExpr $val/10
attr DGS_1100 get05Regex PoeUsedPower=(.*?);;
attr DGS_1100 get05URL %%MainURL%%%%RT%%/DS/PoE.js
attr DGS_1100 getHeader2 Cookie: SessID=%%SessID%%;; Gambit=%%Gambit%%
attr DGS_1100 httpVersion 1.1
attr DGS_1100 passwd admin
attr DGS_1100 reAuthAlways 0
attr DGS_1100 reAuthRegex Gambit=;;|showMsg\(Login
attr DGS_1100 reading01Name RT
attr DGS_1100 reading01Regex <script>RT='\/(.*?)\/';;<\/script>
attr DGS_1100 replacement1Mode internal
attr DGS_1100 replacement1Regex %%MainURL%%
attr DGS_1100 replacement1Value MainURL
attr DGS_1100 replacement2Mode expression
attr DGS_1100 replacement2Regex %%SessID%%
attr DGS_1100 replacement2Value ($defs{$name}{sid} =~ /SessID=(.*?);;/)[0]
attr DGS_1100 replacement3Mode expression
attr DGS_1100 replacement3Regex %%Gambit%%
attr DGS_1100 replacement3Value ($defs{$name}{sid} =~ /Gambit=(.*?);;/)[0]
attr DGS_1100 replacement4Mode reading
attr DGS_1100 replacement4Regex %%RT%%
attr DGS_1100 replacement4Value RT
attr DGS_1100 replacement9Mode expression
attr DGS_1100 replacement9Regex %%passwd%%
attr DGS_1100 replacement9Value md5_hex(AttrVal($name,"passwd",""))
attr DGS_1100 room Infotainment
attr DGS_1100 set01Data port_f=$val&port_t=$val&stats=1&speed=0&flow=0&desc=&C0=1&C1=1&C2=1&C3=1&C4=1
attr DGS_1100 set01Name EnablePort
attr DGS_1100 set01URL %%MainURL%%cgi/set_port.cgi
attr DGS_1100 set02Data port_f=$val&port_t=$val&stats=0&speed=0&flow=0&desc=&C0=1&C1=1&C2=1&C3=1&C4=1
attr DGS_1100 set02Name DisablePort
attr DGS_1100 set02URL %%MainURL%%cgi/set_port.cgi
attr DGS_1100 set03Data port_f=$val&port_t=$val&state=1&Priority=1&Legacy=0&PowerLimit=0
attr DGS_1100 set03Name EnablePoE
attr DGS_1100 set03URL %%MainURL%%cgi/poe_port.cgi
attr DGS_1100 set04Data port_f=$val&port_t=$val&state=0
attr DGS_1100 set04Name DisablePoE
attr DGS_1100 set04URL %%MainURL%%cgi/poe_port.cgi
attr DGS_1100 setHeader1 Content-Type: application/x-www-form-urlencoded
attr DGS_1100 setHeader2 Referer: %%MainURL%%%%STATE%%/login2.htm
attr DGS_1100 setHeader3 Cookie: SessID=%%SessID%%;; Gambit=%%Gambit%%
attr DGS_1100 showBody 0
attr DGS_1100 sid0URL %%MainURL%%
attr DGS_1100 sid1Data pass=%%passwd%%
attr DGS_1100 sid1Header1 Content-Type: application/x-www-form-urlencoded
attr DGS_1100 sid1Header2 Referer: %%MainURL%%%%STATE%%/login2.htm
attr DGS_1100 sid1IDRegex (?s)(document.cookie=.*?).<\/script>
attr DGS_1100 sid1URL %%MainURL%%cgi/login.cgi
attr DGS_1100 stateFormat RT
attr DGS_1100 userReadings powerPoE-1:PoEPort-1.* {(split(/,/,ReadingsVal($name,"PoEPort-1",0)))[4]/10},\
powerPoE-2:PoEPort-2.* {(split(/,/,ReadingsVal($name,"PoEPort-2",0)))[4]/10},\
powerPoE-3:PoEPort-3.* {(split(/,/,ReadingsVal($name,"PoEPort-3",0)))[4]/10},\
powerPoE-4:PoEPort-4.* {(split(/,/,ReadingsVal($name,"PoEPort-4",0)))[4]/10},\
powerPoE-5:PoEPort-5.* {(split(/,/,ReadingsVal($name,"PoEPort-5",0)))[4]/10},\
powerPoE-6:PoEPort-6.* {(split(/,/,ReadingsVal($name,"PoEPort-6",0)))[4]/10},\
powerPoE-7:PoEPort-7.* {(split(/,/,ReadingsVal($name,"PoEPort-7",0)))[4]/10},\
powerPoE-8:PoEPort-8.* {(split(/,/,ReadingsVal($name,"PoEPort-8",0)))[4]/10}
attr DGS_1100 verbose 0
attr DGS_1100 widgetOverride userattr:textField-long

Folgendes wurde angepasst:
attr DGS_1100 userattr get01Name get01Regex get01URL get02Name get02Regex get02URL get03Name get03Regex get03URL get04Name get04Poll:0,1 get04Regex get04URL get05Name get05OExpr get05Regex get05URL getHeader1 getHeader2 passwd reading01Name reading01Regex replacement1Mode:reading,internal,text,expression,key replacement1Regex replacement1Value replacement2Mode:reading,internal,text,expression,key replacement2Regex replacement2Value replacement3Mode:reading,internal,text,expression,key replacement3Regex replacement3Value replacement4Mode:reading,internal,text,expression,key replacement4Regex replacement4Value replacement9Mode:reading,internal,text,expression,key replacement9Regex replacement9Value set01Data set01Name set01URL set02Data set02Name set02URL set03Data set03Name set03URL set04Data set04Name set04URL setHeader1 setHeader2 setHeader3 sid0URL sid1Data sid1Header1 sid1Header2 sid1IDRegex sid1URL
.
.
attr DGS_1100 setHeader2 Referer: %%MainURL%%%%STATE%%/login2.htm
attr DGS_1100 setHeader3 Cookie: SessID=%%SessID%%;; Gambit=%%Gambit%%
.
.
attr DGS_1100 sid1Header1 Content-Type: application/x-www-form-urlencoded
attr DGS_1100 sid1Header2 Referer: %%MainURL%%%%STATE%%/login2.htm

Funktioniert mit dem DGS-1100-08P und DGS-1100-08PV2

P.S.
Warum die Dinger überhaupt SNMP haben wenn man damit nichts anfangen kann, verstehe ich nicht wirklich.

Gruß

Paul


Flachzange

Ihr seid meine Helden!

Genau wie ihr, stand ich vor meinem DGS-1100-05PDV2 und versuche vergeblich die Ports mit SNMP zu schalten. Ich war schon auf der Suche nach vergleichbarer Hardware mit vernünftigen SNMP, aber Switches mit PoE in, PoE out und SNMP sind eine unfassbare Rarität.

Mit dem HTTPMOD device brauche ich das jetzt nicht! Daher danke!

Ich bin leider kein HTTPMOD-Experte, aber ich habe mal versucht nachzuvollziehen, was ihr da macht. Dabei habe ich festgestellt, dass die JS-Struktur auf dem Switch identisch geblieben ist. Mit verbose=5 habe ich dann gesehen, dass bei den get-requests die Authentifizierung nicht funktioniert. Also mal stumpf die Header vom set kopiert und tada...jetzt gehen auch die Get request:


attr DGS_1100 getHeader1 Referer: %%MainURL%%%%STATE%%/login2.htm
attr DGS_1100 getHeader2 Cookie: SessID=%%SessID%%;; Gambit=%%Gambit%%


Generell zu beachten ist noch, dass die Regexe in dem Faden hier auf den 8-Port-Switch zugeschnitten sind. Bei meinem 5-Port davon 2 PoE muss ich die Gets etwas modifieren:

attr DGS_1100 get03Regex (?s)ds\_PortSetting=\[.*\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\],\n\[(.*?)\]\];;
attr DGS_1100 get04Regex (?s)ds\_PoEPort=\[.*\[(.*?)\],\n\[(.*?)\]\];;

Torxgewinde

Von OpenWRT werden mittlerweile auch einige Switche unterstützt (eurer hier leider nicht). Vorteil: Ganz lange Firmwareupdates erhalten.

In OpenWRT kann man PoE auch an den Ports schalten mit einfachen Befehlen über die Kommandozeile via "ubus":

ubus call poe manage "{ 'port': 'lan4', 'enable': false }" && \
sleep 10 && \
ubus call poe manage "{ 'port': 'lan4', 'enable': true }"

bertl

Hallo Leute,

danke für das tolle Codeschnipsel, somit ist der Switch noch etwas smarter  ;)

Folgende Zusatzinfo zum angepassten Code:

Zitat von: papr1989 am 12 März 2024, 18:21:09Folgendes wurde angepasst:
attr DGS_1100 userattr get01Name get01Regex get01URL get02Name get02Regex get02URL get03Name get03Regex get03URL get04Name get04Poll:0,1 get04Regex get04URL get05Name get05OExpr get05Regex get05URL getHeader1 getHeader2 passwd reading01Name reading01Regex replacement1Mode:reading,internal,text,expression,key replacement1Regex replacement1Value replacement2Mode:reading,internal,text,expression,key replacement2Regex replacement2Value replacement3Mode:reading,internal,text,expression,key replacement3Regex replacement3Value replacement4Mode:reading,internal,text,expression,key replacement4Regex replacement4Value replacement9Mode:reading,internal,text,expression,key replacement9Regex replacement9Value set01Data set01Name set01URL set02Data set02Name set02URL set03Data set03Name set03URL set04Data set04Name set04URL setHeader1 setHeader2 setHeader3 sid0URL sid1Data sid1Header1 sid1Header2 sid1IDRegex sid1URL
.
.
attr DGS_1100 setHeader2 Referer: %%MainURL%%%%STATE%%/login2.htm
attr DGS_1100 setHeader3 Cookie: SessID=%%SessID%%;; Gambit=%%Gambit%%
.
.
attr DGS_1100 sid1Header1 Content-Type: application/x-www-form-urlencoded
attr DGS_1100 sid1Header2 Referer: %%MainURL%%%%STATE%%/login2.htm
Einheitlicher wäre es, wenn das %%STATE%% durch %%RT%% ersetzt wird.

Dann gibt es auch kein Problem, wenn das stateFormat nicht gesetzt oder anderweitig verwendet wird.attr DGS_1100 stateFormat RT
Gruß Robert

bertl

Falls es wen stört, dass das Passwort in Klartext als Attribut vorkommt, dann einfach folgende Änderung vornehmen:

In der FHEM Web UI Kommandozeile folgendes eingeben:
{md5_hex("<password>")}
Die Ausgabe vom vorherigen md5_hex Befehl hier einfügen:
set DGS_1100 storeKeyValue passwd <Ausgabe von md5_hex>
Folgende Attribute löschen:
attr DGS_1100 passwd admin
attr DGS_1100 replacement9Mode expression
attr DGS_1100 replacement9Regex %%passwd%%
attr DGS_1100 replacement9Value md5_hex(AttrVal($name,"passwd",""))

Folgende Attribute einfügen:
attr DGS_1100 replacement05Mode key
attr DGS_1100 replacement05Regex %%passwd%%
attr DGS_1100 replacement05Value passwd

Fertig!

Flachzange

Gute Anpassungen. Vielen Dank!

P.S. in den Get-Requests wird STATE auch nochmal verwendet.

bertl

Hier noch eine paar kleine Erweiterung,

...falls jemanden die Details der SwitchInfo und DeviceInfo in eigene Readings haben möchte:

attr DGS_1100 get01-1Name _DeviceName
attr DGS_1100 get01-2Name _Firmware
attr DGS_1100 get01-3Name _BootPROM
attr DGS_1100 get01Name SwitchInfo
attr DGS_1100 get01Regex SwitchInfo=\['(.*?)','(.*?)','(.*?)'\];;
attr DGS_1100 get01URL %%MainURL%%%%RT%%/DS/const.js
attr DGS_1100 get02-1Name _Hardware
attr DGS_1100 get02-2Name _Serial
attr DGS_1100 get02-3Name _MAC
attr DGS_1100 get02Name DeviceInfo
attr DGS_1100 get02Regex DeviceInfo=\['(.*?)','(.*?)','(.*?)'\];;
attr DGS_1100 get02URL %%MainURL%%%%RT%%/DS/Switch.js

...falls jemanden die Runtime/Uptime interessiert:

attr DGS_1100 get06Name Runtime
attr DGS_1100 get06Poll 1
attr DGS_1100 get06RecombineExpr { \
  if( scalar( @matchlist ) >= 4 ) {\
    sprintf( "%d days %d hours %d minutes %d seconds", $matchlist[0], $matchlist[1], $matchlist[2], $matchlist[3] );;\
  }\
  else {\
    "0 days 0 hours 0 minutes 0 seconds";;\
  }\
}
attr DGS_1100 get06Regex ds\_TimeUp=\[(.*?),(.*?),(.*?),(.*?)\];;
attr DGS_1100 get06URL %%MainURL%%%%RT%%/DS/Switch.js

Anmerkung:
Mit dem get02URL Aufruf wäre eigentlich die Runtime Information schon drinnen. Leider weiß ich aber nicht, wie man diese Information in einem Schritt auslesen kann, ohne nochmals die gleich URL mit get06URL aufzurufen (wäre performanter).
Vielleicht hat ja jemand eine Idee bzw. Lösung dazu.

Schönen Tag
Robert