Modul für Omada SDN Controller

Begonnen von MatthiasL, 30 September 2022, 15:43:08

Vorheriges Thema - Nächstes Thema

Supadone

Zitat von: MatthiasL am 02 Dezember 2022, 11:54:12
So gehts:
Mit set NAME reconnectClient 00-00-00-00-00 (Device MAC)

set01Header01 Content-Type: application/x-www-form-urlencoded
   set01Header02 Csrf-Token: $sid
   set01Method POST
   set01Name  reconnectClient
   set01TextArg 1
   set01URL   https://ip:port/%%omadacId%%/api/v2/sites/%%siteId%%/cmd/clients/$val/reconnect


Super, funktioniert auf Anhieb :) Tausend Dank :)

Grüße

Andy

KOAL

HI,

ich kann nun auch denk ich auch alles lesen.  :)
Danke für dei Hilfe, das mit dem http auslesen hab ich noch nie so verstanden.

Wenn ich ein Wifi abschalten möchte (GästeWifi) kann ich das über POST machen?
.../{omadacId}/api/v2/sites/{siteId}/setting/wlans/{wlanId}/ssids/{ssidId}  und dann auf " action" ein "0" senden?

Wie kann ich den was senden? >> So wie Andy mit dem Client reconnect?


Danke
LG
KOAL
1X DEBAIN 11 ESXI VM, Openvpn-Server, FHEM, DHCP, HM-LAN W, USB-Enocean, Smartvisu V3.X
1X UBUNU 20.X LTS ESXI VM, AUTO-SERVER, Openvpn-Backup Server
1X UBUNU 20.X LTS ESXI VM, MAILSERVER, CLOUD
1X Lockerstor 4, NAS + APC CS650
1X WIN-10 ESXI VM, BLUEIRIS CAM Server

MatthiasL

Das müsste mit einem Patch gehen. Antwort #9
Habe ich aber auch schon mal probiert, ging aber nicht.
Müsste ich auch noch mal ansehen.

MatthiasL

Zitat von: KOAL am 02 Dezember 2022, 20:59:59
HI,

ich kann nun auch denk ich auch alles lesen.  :)
Danke für dei Hilfe, das mit dem http auslesen hab ich noch nie so verstanden.

Wenn ich ein Wifi abschalten möchte (GästeWifi) kann ich das über POST machen?
.../{omadacId}/api/v2/sites/{siteId}/setting/wlans/{wlanId}/ssids/{ssidId}  und dann auf " action" ein "0" senden?

Wie kann ich den was senden? >> So wie Andy mit dem Client reconnect?


Danke
LG
KOAL

Also das geht dann mit einem Zeitplan - von 00:00 - 24:00 Uhr auf der SSID.
Sonst frisst er "Action" nicht.

MatthiasL

Hier noch das Listing zum Ein/Aus-schalten von WiFi SSIDs.
Wichtig - es muss ein Zeitplan dazu existieren.
Außerdem müssen die Daten in Set Data entsprechend euren Settings gesetzt werden.

set02Data  {
    "name": "SSID NAME",
    "band": ,
    "guestNetEnable": ,
    "security": ,
    "broadcast": ,
    "vlanEnable": ,
    "vlanId": ,
    "portalEnable": ,
    "accessEnable": ,
    "rateLimit": {
        "downLimitEnable": ,
        "upLimitEnable":
    },
    "pskSetting": {
        "versionPsk": ,
        "encryptionPsk": ,
        "gikRekeyPskEnable": ,
        "securityKey": ""
    },
    "wlanScheduleEnable": true,
    "action": $val,
    "scheduleId": "",
    "macFilterEnable": ,
    "rateAndBeaconCtrl": {
        "rate2gCtrlEnable": ,
        "rate5gCtrlEnable":
    },
    "multiCastSetting": {
        "multiCastEnable": ,
        "arpCastEnable": ,
        "filterEnable":
    }
}
   set02Hint  0,1
   set02Max   1
   set02Method PATCH
   set02Min   0
   set02Name  DEIN_NAME
   set02URL   https://ip:port/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/wlans/%%wlanId%%/ssids/%%ssidId%%
   setHeader1 Content-Type: application/json
   setHeader2 Csrf-Token: $sid


%%wlanÍD%% bekommt man aus: https://ip:port/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/wlans
result_data_XX_id
%%ssidId%% bekommt man aus: https://ip:port/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/wlans/%%wlanId%%/ssids
result_data_XX_id

KOAL

Danke,
werd ich versuchen sobald ich wieder gesund bin :)


super Hilfe bisher :) :)
LG
KOAL
1X DEBAIN 11 ESXI VM, Openvpn-Server, FHEM, DHCP, HM-LAN W, USB-Enocean, Smartvisu V3.X
1X UBUNU 20.X LTS ESXI VM, AUTO-SERVER, Openvpn-Backup Server
1X UBUNU 20.X LTS ESXI VM, MAILSERVER, CLOUD
1X Lockerstor 4, NAS + APC CS650
1X WIN-10 ESXI VM, BLUEIRIS CAM Server

Loopo

Hallo MatthiasL,

erst mal vielen Dank für die ganze Arbeit und ich kann bereits aus fhem auf Omada zugreifen. Auslesen vom groben POE Status und den Sites wie von dir beschrieben geht auch.

Jetzt möchte ich noch einen POE Port komplett aus bzw. ein schalten ("Switch-SG2008P, Port2") und hänge gerade etwas in der Luft. Übers Webinterface habe ich es bereits gut versteckt gefunden.

Du hast ja bereits die Set Befehle für den Reconnect und auch das schalten vom WiFi gepostet und wo man die Infos zum WiFi findet.
Die Infos zum PoE müsste ich unter "/{omadacId}/api/v2/sites/{siteId}/insight/switch/port/poe" (kopiert aus der API Doku) finden.

Jetzt die Fragen:

- Hast du zum Schalten deines PoE Ports ein komplett neues Device angelegt? (falls ja kannst du bitte evtl. die entsprechenden Infos posten?)
- Falls kein Device dasteht über die angepassten Set Befehle zum schalten von WiFi bzw reconnect (wie schon vorher gepostet) => muss ich die set befehle definieren und wenn ja in welchem Device?

Aktuell läuft ein ER605 V2, Omada Software Controller auf Linux 5.7.4, er SG3210 und der SG2008P.

Mit fhem bin ich schon seit Jahren unterwegs, nur mit dem HTTPMOD bin ich bisher noch komplett raus.

Vielen Dank und Grüße
Loopo

MatthiasL

Hi,
Das Device zum schalten von POE ist am größten, weil per PATCH sämtliche NetworkIDs (tagged und untagged) mitgegeben werden müssen.
Ich habe dazu noch ein Decoding Device angelegt weil die IDs der Ports sich nach Updates gerne mal ändern.
Ich poste am Montag mal die Listings. Es ist wirklich ziemlich aufwändig, funktioniert am Ende aber Prima.

MatthiasL

Zitat von: Loopo am 14 Januar 2023, 11:40:00
Hallo MatthiasL,

erst mal vielen Dank für die ganze Arbeit und ich kann bereits aus fhem auf Omada zugreifen. Auslesen vom groben POE Status und den Sites wie von dir beschrieben geht auch.

Jetzt möchte ich noch einen POE Port komplett aus bzw. ein schalten ("Switch-SG2008P, Port2") und hänge gerade etwas in der Luft. Übers Webinterface habe ich es bereits gut versteckt gefunden.

Du hast ja bereits die Set Befehle für den Reconnect und auch das schalten vom WiFi gepostet und wo man die Infos zum WiFi findet.
Die Infos zum PoE müsste ich unter "/{omadacId}/api/v2/sites/{siteId}/insight/switch/port/poe" (kopiert aus der API Doku) finden.

Jetzt die Fragen:

- Hast du zum Schalten deines PoE Ports ein komplett neues Device angelegt? (falls ja kannst du bitte evtl. die entsprechenden Infos posten?)
- Falls kein Device dasteht über die angepassten Set Befehle zum schalten von WiFi bzw reconnect (wie schon vorher gepostet) => muss ich die set befehle definieren und wenn ja in welchem Device?

Aktuell läuft ein ER605 V2, Omada Software Controller auf Linux 5.7.4, er SG3210 und der SG2008P.

Mit fhem bin ich schon seit Jahren unterwegs, nur mit dem HTTPMOD bin ich bisher noch komplett raus.

Vielen Dank und Grüße
Loopo

Jetzt wirds schon irgendwie unangenehm glaube ich.
%%addr%% habe ich mittlerweile mittels "SetReading" im Omada Device gesetzt: https://IP:PORT
Die NetzwerkProfile auf meinen 4 relevanten POE Ports, die ich schalten kann heißen:
AllAZPoe, AllWZPoe, AllOutdoorPoe und AllWiFiPoe.

Da du nur einen Port explizit schalten möchtest, wird das natürlich einfacher...
Müsste im Regex entsprechend angepasst werden...


define OmadaSettingLanProfiles HTTPMOD %%addr%%/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/lan/profiles?currentPage=1&currentPageSize=1000 3600



   enableControlSet 1
   enableCookies 1
   event-on-update-reading .*
   extractAllJSON 1
   get01CheckAllReadings 1
   get01Name  SettingLanProfiles
   get01URL   %%addr%%/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/lan/profiles?currentPage=1&currentPageSize=1000
   getHeader1 Content-Type: application/json
   getHeader2 Csrf-Token: $sid
   handleRedirects 0
   reAuthAlways 0
   reAuthRegex <!DOCTYPE HTML>
   reading101JSON result_data_01_tagNetworkIds_.*
   reading101Name result_data_01_tagNetworkIds
   reading101RecombineExpr join '","', @matchlist
   reading102JSON result_data_02_tagNetworkIds_.*
   reading102Name result_data_02_tagNetworkIds
   reading102RecombineExpr join '","', @matchlist
   reading103JSON result_data_03_tagNetworkIds_.*
   reading103Name result_data_03_tagNetworkIds
   reading103RecombineExpr join '","', @matchlist
   reading104JSON result_data_04_tagNetworkIds_.*
   reading104Name result_data_04_tagNetworkIds
   reading104RecombineExpr join '","', @matchlist
   reading105JSON result_data_05_tagNetworkIds_.*
   reading105Name result_data_05_tagNetworkIds
   reading105RecombineExpr join '","', @matchlist
   reading106JSON result_data_06_tagNetworkIds_.*
   reading106Name result_data_06_tagNetworkIds
   reading106RecombineExpr join '","', @matchlist
   reading107JSON result_data_07_tagNetworkIds_.*
   reading107Name result_data_07_tagNetworkIds
   reading107RecombineExpr join '","', @matchlist
   reading108JSON result_data_08_tagNetworkIds_.*
   reading108Name result_data_08_tagNetworkIds
   reading108RecombineExpr join '","', @matchlist
   reading109JSON result_data_09_tagNetworkIds_.*
   reading109Name result_data_09_tagNetworkIds
   reading109RecombineExpr join '","', @matchlist
   reading110JSON result_data_10_tagNetworkIds_.*
   reading110Name result_data_10_tagNetworkIds
   reading110RecombineExpr join '","', @matchlist
   reading111JSON result_data_11_tagNetworkIds_.*
   reading111Name result_data_11_tagNetworkIds
   reading111RecombineExpr join '","', @matchlist
   reading112JSON result_data_12_tagNetworkIds_.*
   reading112Name result_data_12_tagNetworkIds
   reading112RecombineExpr join '","', @matchlist
   reading113JSON result_data_13_tagNetworkIds_.*
   reading113Name result_data_13_tagNetworkIds
   reading113RecombineExpr join '","', @matchlist
   reading114JSON result_data_14_tagNetworkIds_.*
   reading114Name result_data_14_tagNetworkIds
   reading114RecombineExpr join '","', @matchlist
   reading115JSON result_data_15_tagNetworkIds_.*
   reading115Name result_data_15_tagNetworkIds
   reading115RecombineExpr join '","', @matchlist
   reading116JSON result_data_16_tagNetworkIds_.*
   reading116Name result_data_16_tagNetworkIds
   reading116RecombineExpr join '","', @matchlist
   replacement01Mode expression
   replacement01Regex %%omadacId%%
   replacement01Value ReadingsVal("Omada", "omadacId", "")
   replacement02Mode text
   replacement02Regex %%apiVer%%
   replacement02Value 2
   replacement03Mode expression
   replacement03Regex %%siteId%%
   replacement03Value ReadingsVal("OmadaSites", "id", "")
   replacement04Mode key
   replacement04Regex %%password%%
   replacement04Value password
   replacement05Mode expression
   replacement05Regex %%AZdataname%%
   replacement05Value ReadingsVal("OmadaDecode", "AZdataname", "")
   replacement06Mode expression
   replacement06Regex %%Outdoordataid%%
   replacement06Value ReadingsVal("OmadaDecode", "Outdoordataid", "")
   replacement07Mode expression
   replacement07Regex %%Outdoordataname%%
   replacement07Value ReadingsVal("OmadaDecode", "Outdoordataname", "")
   replacement08Mode expression
   replacement08Regex %%WZdataid%%
   replacement08Value ReadingsVal("OmadaDecode", "WZdataid", "")
   replacement09Mode expression
   replacement09Regex %%WZdataname%%
   replacement09Value ReadingsVal("OmadaDecode", "WZdataname", "")
   replacement10Mode expression
   replacement10Regex %%WiFidataid%%
   replacement10Value ReadingsVal("OmadaDecode", "WiFidataid", "")
   replacement11Mode expression
   replacement11Regex %%WiFidataname%%
   replacement11Value ReadingsVal("OmadaDecode", "WiFidataname ", "")
   replacement12Mode expression
   replacement12Regex %%AZdataid%%
   replacement12Value ReadingsVal("OmadaDecode", "AZdataid", "")
   replacement13Mode expression
   replacement13Regex %%AZdatanativeNetworkId%%
   replacement13Value ReadingsVal("OmadaDecode", "AZdatanativeNetworkId", "")
   replacement14Mode expression
   replacement14Regex %%OutdoordatanativeNetworkId%%
   replacement14Value ReadingsVal("OmadaDecode", "OutdoordatanativeNetworkId", "")
   replacement15Mode expression
   replacement15Regex %%WZdatanativeNetworkId%%
   replacement15Value ReadingsVal("OmadaDecode", "WZdatanativeNetworkId ", "")
   replacement16Mode expression
   replacement16Regex %%WiFidatanativeNetworkId%%
   replacement16Value ReadingsVal("OmadaDecode", "WiFidatanativeNetworkId", "")
   replacement17Mode expression
   replacement17Regex %%AZtagNetworkIds%%
   replacement17Value ReadingsVal("Omada", "AZtagNetworkIds", "")
   replacement18Mode expression
   replacement18Regex %%WZtagNetworkIds%%
   replacement18Value ReadingsVal("Omada", "WZtagNetworkIds", "")
   replacement19Mode expression
   replacement19Regex %%WiFitagNetworkIds%%
   replacement19Value ReadingsVal("Omada", "WiFitagNetworkIds", "")
   replacement20Mode expression
   replacement20Regex %%addr%%
   replacement20Value ReadingsVal("Omada", "addr", "")
   replacement21Mode expression
   replacement21Regex %%OutdoortagNetworkIds%%
   replacement21Value ReadingsVal("Omada", "OutdoortagNetworkIds", "")
   requestHeader1 Content-Type: application/json
   requestHeader2 Csrf-Token: $sid
   room       Omada
   set01Data  {
    "id": "%%AZdataid%%",
    "site": "%%siteId%%",
    "name": "%%AZdataname%%",
    "poe": "$val",
    "nativeNetworkId": "%%AZdatanativeNetworkId%%",
    "tagNetworkIds": [AZtagNetworkIds],
    "untagNetworkIds": [],
    "dot1x": 1,
    "portIsolationEnable": false,
    "lldpMedEnable": true,
    "bandWidthCtrlType": 0,
    "spanningTreeEnable": false,
    "loopbackDetectEnable": false
}
   set01Hint  0,1,2
   set01Max   2
   set01Method PATCH
   set01Min   0
   set01Name  AZ_POE
   set01URL   %%addr%%/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/lan/profiles/%%AZdataid%%
   set02Data  {
    "id": "%%WZdataid%%",
    "site": "%%siteId%%",
    "name": "%%WZdataname%%",
    "poe": "$val",
    "nativeNetworkId": "%%WZdatanativeNetworkId %%",
    "tagNetworkIds": [WZtagNetworkIds],
    "untagNetworkIds": [],
    "dot1x": 1,
    "portIsolationEnable": false,
    "lldpMedEnable": true,
    "bandWidthCtrlType": 0,
    "spanningTreeEnable": false,
    "loopbackDetectEnable": false
}
   set02Hint  0,1,2
   set02Max   2
   set02Method PATCH
   set02Min   0
   set02Name  WZ_POE
   set02URL   %%addr%%/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/lan/profiles/%%WZdataid%%
   set03Data  {
    "id": "%%Outdoordataid%%",
    "site": "%%siteId%%",
    "name": "%%Outdoordataname%%",
    "poe": "$val",
    "nativeNetworkId": "%%OutdoordatanativeNetworkId %%",
    "tagNetworkIds": [OutdoortagNetworkIds],
    "untagNetworkIds": [],
    "dot1x": 1,
    "portIsolationEnable": false,
    "lldpMedEnable": true,
    "bandWidthCtrlType": 0,
    "spanningTreeEnable": false,
    "loopbackDetectEnable": false
}
   set03Hint  0,1,2
   set03Max   2
   set03Method PATCH
   set03Min   0
   set03Name  Outdoor_POE
   set03URL   %%addr%%/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/lan/profiles/%%Outdoordataid%%
   set04Data  {
    "id": "%%WiFidataid%%",
    "site": "%%siteId%%",
    "name": "%%WiFidataname%%",
    "poe": "$val",
    "nativeNetworkId": "%%WiFidatanativeNetworkId%%",
    "tagNetworkIds": [WiFitagNetworkIds],
    "untagNetworkIds": [],
    "dot1x": 1,
    "portIsolationEnable": false,
    "lldpMedEnable": true,
    "bandWidthCtrlType": 0,
    "spanningTreeEnable": false,
    "loopbackDetectEnable": false
}
   set04Hint  0,1,2
   set04Max   2
   set04Method PATCH
   set04Min   0
   set04Name  WiFi_POE
   set04URL   %%addr%%/%%omadacId%%/api/v%%apiVer%%/sites/%%siteId%%/setting/lan/profiles/%%WiFidataid%%
   setHeader1 Content-Type: application/json
   setHeader2 Csrf-Token: $sid
   showMatched 0
   sid01Data  {"username":"admin","password":"%%password%%"}
   sid01Header Content-Type: application/json
   sid01IdJSON result_token
   sid01URL   %%addr%%/%%omadacId%%/api/v%%apiVer%%/login
   sslArgs    SSL_VERIFY_NONE
   stateFormat result_data_02_name result_data_02_poe result_data_03_name result_data_03_poe result_data_04_name result_data_04_poe result_data_05_name result_data_05_poe


Das Decoding Device ist ein Notify:

OmadaSettingLanProfiles:result_data_[0-9][0-9]_name:.All[a-zA-Z0-9]*Poe.* {
  my ($num) = $EVTPART0 =~ /([\d]+)/; #14
  my ($poe) = $EVTPART1 =~ /(All([a-zA-Z0-9]*)Poe)/;
  my ($poedev) = $EVTPART1 =~ /All([a-zA-Z0-9]*)Poe/;
    fhem("setReading OmadaDecode $poedev $num");
    my $quellReading = $num."_name";
    if (ReadingsVal("OmadaSettingLanProfiles",$quellReading,"") eq $poe) {fhem("setReading OmadaDecode $poedev $num")};
}



event-on-update-reading .*
   room       Omada
   userReadings AZdataid {
my $resultnumber = ReadingsVal($NAME,"AZ","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_id","");;
}, AZdataname {
my $resultnumber = ReadingsVal($NAME,"AZ","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_name","");;
}, AZdatanativeNetworkId {
my $resultnumber = ReadingsVal($NAME,"AZ","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_nativeNetworkId","");;
}, AZdatatagNetworkIds {
my $resultnumber = ReadingsVal($NAME,"AZ","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_tagNetworkIds","");;
my $tagList = '"'.$result.'"'
}, WZdataid {
my $resultnumber = ReadingsVal($NAME,"WZ","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_id","");;
}, WZdataname {
my $resultnumber = ReadingsVal($NAME,"WZ","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_name","");;
}, WZdatanativeNetworkId {
my $resultnumber = ReadingsVal($NAME,"AZ","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_nativeNetworkId","");;
}, WZdatatagNetworkIds {
my $resultnumber = ReadingsVal($NAME,"WZ","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_tagNetworkIds","");;
my $tagList = '"'.$result.'"'
}, Outdoordataid {
my $resultnumber = ReadingsVal($NAME,"Outdoor","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_id","");;
}, Outdoordataname {
my $resultnumber = ReadingsVal($NAME,"Outdoor","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_name","");;
}, OutdoordatanativeNetworkId {
my $resultnumber = ReadingsVal($NAME,"Outdoor","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_nativeNetworkId","");;
}, OutdoordatatagNetworkIds {
my $resultnumber = ReadingsVal($NAME,"Outdoor","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_tagNetworkIds","");;
my $tagList = '"'.$result.'"'
}, WiFidataid {
my $resultnumber = ReadingsVal($NAME,"WiFi","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_id","");;
}, WiFidataname {
my $resultnumber = ReadingsVal($NAME,"WiFi","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_name","");;
},  WiFidatanativeNetworkId {
my $resultnumber = ReadingsVal($NAME,"WiFi","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_nativeNetworkId","");;
}, WiFidatatagNetworkIds {
my $resultnumber = ReadingsVal($NAME,"WiFi","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_tagNetworkIds","");;
my $tagList = '"'.$result.'"'
}


Viel Spaß damit und vor allem Viel Erfolg.
Bei Fragen, gerne melden...

Loopo

Wow... das ist richtig viel Arbeit!

1000 Dank dafür!

Bin aktuell noch dabei das ganze auf meine Anforderung zu adaptieren.

Lan Profil erstellt "AllITPoe", die beiden Devices laufen und zeigen etwas an. Nur das schalten klappt noch nicht so ganz.

Ich schau morgen nochmal in Ruhe an.

Loopo

#25
Also ich bekomme es nicht zum laufen. Was ich bisher gemacht habe:

In Omada habe ich ein Profil "AllITPoe" angelegt und Port 2 meines SG2008P zugewiesen. Einstellungen beim Port und im Profil sind so eingestellt, dass Profil immer Device überschreibt.

Attribute des OmadaSettingLanProfiles device habe ich übernommen, auslesen aus dem Omada klappt. "set01Name" = IT_POE", "set01Data" habe ich wie folgt angepasst:
{\
"id": "%%ITdatanativeNetworkId%%",
"site": "%%siteId%%",
"name": "%%ITdataname%%",
"poe": "$val",
"nativeNetworkId": "%%ITdatanativeNetworkId%%",
"tagNetworkIds": [ITtagNetworkIds],
"untagNetworkIds": [],
"dot1x": 1,
"portIsolationEnable": false,
"lldpMedEnable": true,
"bandWidthCtrlType": 0,
"spanningTreeEnable": false,
"loopbackDetectEnable": false
}


Die anderen 3 Profile samt dazugehörigen replacements sind raus geflogen.

Ebenfalls angepasst sind die replacements für %%ITdadaname%%, %%ITdataid%% und %%ITdatanativeNetworkId%%. Passwort, Nutzername, addr etc auch.

Auslesen funktioniert.


Die Attribute (userReadings) vom OmadaDecode notify sind wie folgt angepasst:
ITdataid {
my $resultnumber = ReadingsVal($NAME,"IT","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_id","");;
}, ITdataname {
my $resultnumber = ReadingsVal($NAME,"IT","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_name","");;
}, ITdatanativeNetworkId {
my $resultnumber = ReadingsVal($NAME,"IT","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_nativeNetworkId","");;
}, ITdatatagNetworkIds {
my $resultnumber = ReadingsVal($NAME,"IT","");;
my $result = ReadingsVal("OmadaSettingLanProfiles","result_data_".$resultnumber."_tagNetworkIds","");;
my $tagList = '"'.$result.'"'
}


die Readings werden meiner Meinung nach auch richtig aus dem OmadaSettingLanProfiles device richtig übernommen und auch richtig benannt.


Wenn ich "set OmadaSettingLanProfiles IT_POE 1" (oder einen anderen Wert) auswähle, passiert in Omada garnix.

Fragen:
1. Muss ich den Namen des Profils in Omada noch anpassen (AllITPoe) oder in Omada noch etwas einrichten (Zeitplan wie bei WiFi?).
2. Beim "%%ITtagNetworkIds%%" beziehst du dich auf das "Omada" device, reading "ITtagNetworkIds". Wo bekommt das Device "Omada" die Information her? Auch über "setreading"?
3. hab ich irgendwo was übersehen?

Vielen Dank und Grüße
Loopo

MatthiasL

#26
Mein Fehler:
tagNetworkIds": [%%ITdatatagNetworkIds%%],

MatthiasL

Oh und ja!!! Den Zeitplan braucht man. Den habe ich ganz vergessen!
Habe von 00:00-24:00 Uhr eingestellt

Loopo

#28
So, jetzt hab ich es endlich hin bekommen.:

- Netzwerkprofil heißt "AllITPoe" und ist dem entsprechendem Port zugewiesen.
- In Omada gibt es einen POESchedule "AllITPoe", entsprechender Port ausgwählt. 0-24 Uhr
- das eine "replacement" angepasst:
replacement07Mode expression
replacement07Regex %%ITdatatagNetworkIds%%
replacement07Value ReadingsVal("OmadaDecode", "ITdatatagNetworkIds", "")


set01Data sieht jetzt erst mal so aus:


{
"site": "%%siteId%%",
"name": "%%ITdataname%%",
"poe": "$val",
"nativeNetworkId": "%%ITdatanativeNetworkId%%",
"untagNetworkIds": [],
"dot1x": 1,
"portIsolationEnable": false,
"lldpMedEnable": true,
"bandWidthCtrlType": 0,
"spanningTreeEnable": false,
"loopbackDetectEnable": false
}


sobald ich allerdings
"tagNetworkIds": [%%ITdatatagNetworkIds%%],

hinzufüge, geht es nicht mehr.

Reading im OmadaDecode spuckt folgendes aus: ITdatatagNetworkIds ""

Vielen Dank nochmal für Deine Hilfe!

MatthiasL

Kannst du mal mit Verbose 5 ein get starten und den Output anschauen/Posten?
Sollte fast identisch mit dem Set01Data sein.
Was steht in OmadaDecode im Reading ITdatatagNetworkIds?