Vielen Dank @jeep für deine Infos!
Werde mal etwas rumexperimentieren
Kurze Zwichenfrage:
Gibt es ein Script mit dem ich alle ID’s auflisten kann mit dem Namen?
Verliere etwas die Übersicht welches Gerät zu welcher ID gehört. Speziell
heute morgen hat es mir oben angezeigt das was mit der ID 405 nicht stimmt,
bis ich jetzt rausgefunden habe welches Modul das ist…
Hi,
das passt jetzt nicht zum Mesh Thema, aber probier mal das. Vielleicht hilft es Dir dass nächste mal beim suchen.
--[[
--]]
-- Copyleft 2018 {jeep}
-- Szene auf manuell starten setzen
local Debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
alldevices = api.get('/devices/?enabled=true&isPlugin=false');
function checkDevIDs()
for id=1, #alldevices do
if tonumber(alldevices[id].parentId) == 1 then
Debug('cyan','Master ID: ' ..alldevices[id].id )
else
print('ID: ' ..alldevices[id].id ..' - '..alldevices[id].name )
end
end
end
checkDevIDs()
Hi Jeep,
vielen Dank
/André
Hallo zusammen,
mal ein kleines update zum Mesh-Script. Keine großen Änderungen aber die Zusammenfassung am Ende zeigt jetzt die Anzahl der Geräte mit der Anzahl der hops.
Beispiel:
[DEBUG] 15:34:58: Direkte routen, [1] zum HC2: 54
[DEBUG] 15:34:58: Routen über 1 hop, zum HC2 : 13
[DEBUG] 15:34:58: Routen über 2 hops zum HC2 : 6
[DEBUG] 15:34:58: Routen über 3 hops zum HC2 : 2
[DEBUG] 15:34:58: Routen über 4 hops zum HC2 : 1
[DEBUG] 15:34:58: -------------------------------
[DEBUG] 15:34:58: Devices ohne Nachbarn [] : 7
[DEBUG] 15:34:58: Devices ohne routen [] : 8
--[[
%% properties
--]]
-- File : RoutingInfo.lua
-- Version : 0.1.4 {07.01.2019}
-- nach einer Vorlage aus dem Fibaro Forum (thanks @tinmann)
-- Build on FW 4.510 {08-2018 } Ändy, Gerhard, Jeep
--
-- Abkürzung : working route respose time = WRRT
local Debug = function ( color, message )
fibaro:debug(string.format('<%s style="font-family:Courier New;font-size:12px;color:%s;">%s', "span", color, message, "span"))
end
local function getSNamebyID(sectionID)
--fibaro:debug (sectionID)
if tonumber(sectionID) > 0 then
local section = api.get("/sections/" .. tostring(sectionID))
return string.sub(tostring(section.name),1, 10)
end
return 'No section'
end
local function getSectionNameByDeviceID(DevID)
if DevID == nil then
return 'nil'
else
local sectionID = fibaro:getSectionID(DevID)
if sectionID == nil then
return 'nil'
else
return getSNamebyID(sectionID)
end
end
end
local function countc(s,c)
local _,n = s:gsub(c,"")
if (n==1) then r1h = r1h +1
elseif n==2 then r2h = r2h +1
elseif n==3 then r3h = r3h +1
elseif n==4 then r4h = r4h +1
end
end
local filter = '/devices/?enabled=true&isPlugin=false'
local allDevices = api.get(filter)
local html = true
local output = ''
if (html == false) then d = true
elseif ( html == true) then d = false;Debug('cyan','Daten werden im HTML Format ausgegeben - Bitte warten...')
end
local nn,r,nr=0,0,0
r1h,r2h,r3h,r4h=0,0,0,0
local n=1 --nur Geräte mit parentId = 1
for id = 1, #allDevices do
if (allDevices[id].parentId == 1 ) then
local mDevID = allDevices[id].id
if mDevID ~= nil then
local name = fibaro:getName(mDevID+1)
if name == nil then
name = "No Name"
end
if(tonumber(allDevices[id+1].roomID) == 0) then
room = 'No room';
else
room = fibaro:getRoomNameByDeviceID(allDevices[id+1].id)
end
local section = getSectionNameByDeviceID(mDevID+1)
if section == nil then
section = "No Name"
end
-- api.post('/devices/'.. mDevID ..'/action/getNeighborList')
thisDev = "Neighbours of device " .. mDevID ..') '..name ..' (' .. room .. '|' .. section .. ') : ' .. fibaro:getValue(mDevID, "neighborList")
if thisDev:find("%p[%p]") then
Debug('red','Device '.. name..'('..mDevID..')'.. ' hat keine Nachbarn')
nn = nn + 1
end
if html then output = "<pre>"..output..thisDev.."</pre>" end
if d then Debug('withe', thisDev) end
local lwr = fibaro:getValue(mDevID, "lastWorkingRoute")
thisDevRoute = "Last working route used by device " .. mDevID .. " : " .. lwr
if thisDevRoute:find("%p[%p]") then
Debug('orange', 'Device ' ..name..'('..mDevID..')'.. ' hat keine Routen')
nr = nr +1
end
if string.len(lwr) == 3 then r = r +1
else
countc(lwr,',')
end
if html then output = "<pre>"..output..thisDevRoute.."</pre>" end
if d then Debug('withe', thisDevRoute) end
thisDevTimeStamp = tonumber(fibaro:getValue(mDevID, "lastWorkingRouteResponseTimestamp"))
thisDevLWRRTime = "Last WRRT for device ".. mDevID .. ': '.. (os.date("%X - %d %b. %y", thisDevTimeStamp ))
if html then output = "<pre>"..output..thisDevLWRRTime.."</pre>"..n..'-- <br />' end
--if d then Debug('yellow', thisDevLWRRTime) end
if d then Debug('cyan', n..'--') end
n =n+1
fibaro:sleep(100)
end
end
end --for
Debug('cyan', output)
Debug('green',"Direkte routen, [1] zum HC2: "..r)
Debug('green',"Routen über 1 hop, zum HC2 : "..r1h)
Debug('green',"Routen über 2 hops zum HC2 : "..r2h)
Debug('green',"Routen über 3 hops zum HC2 : "..r3h)
Debug('green',"Routen über 4 hops zum HC2 : "..r4h)
Debug('white',"-------------------------------")
Debug('red', "Devices ohne Nachbarn [] : "..nn)
Debug('orange',"Devices ohne routen [] : "..nr)
Danke @jeep für diese Erweiterung.
Konnte damit herausfinden dass ich 43 Devices ohne Nachbarn und 15 ohne Routen hab, sind das bei euch auch so viele ??
Weiters würde ich gerne rausfinden welches Device 4 Hops brauch, kann ich das irgendwie aus dem Debug entnehmen??
[DEBUG] 10:36:31: Direkte routen, [1] zum HC2: 31
[DEBUG] 10:36:31: Routen über 1 hop, zum HC2 : 18
[DEBUG] 10:36:31: Routen über 2 hops zum HC2 : 9
[DEBUG] 10:36:31: Routen über 3 hops zum HC2 : 0
[DEBUG] 10:36:31: Routen über 4 hops zum HC2 : 1
[DEBUG] 10:36:31: -------------------------------
[DEBUG] 10:36:31: Devices ohne Nachbarn [] : 43
[DEBUG] 10:36:31: Devices ohne routen [] : 15
@pblacky, das ist enorm viel, warte mal einen Tag ob es sich bessert. Eventuell hat das mit Deinem letzten update zu tun.
Leider sieht man (noch) nicht sofort welche devices 4 hops brauchen, aber wenn Du die Debug-ausgabe genau anschaust müsstest
Du das an irgendeiner “Last working route” erkennen. Sieht dann ungefähr so aus: Last working route used by device 268 : [1,255,135,171,165]
Da sollten außer der 1 noch 4 andere IDs in der Zeile stehen.
Danke @jeep, für deine Hilfe!
Da sich nach einigen Tagen nichts an der Anzahl der 43 Devices ohne Nachbarn geändert hat, habe ich mal vor ca. 5 Tagen eine Mesh Netzwerkrekonfiguration für das gesamte MESH Netzwerk gemacht.
Es hat sich bis heute trotzdem nichts daran geändert, dass von knapp 80 Geräten 43 keine Nachbarn finden, sehr komisch…
Hab ich eventuell bei den Einstellungen etwas falsch.
Was bedeutet z.B. Netzknoten als inaktiv markieren (siehe Anhang)
@jeep, danke fürs Update. Läuft.
@pblacky, hier zum Vergleich meine Statistik:
[DEBUG] 09:18:15: Direkte routen, [1] zum HC2: 24
[DEBUG] 09:18:15: Routen über 1 hop, zum HC2 : 9
[DEBUG] 09:18:15: Routen über 2 hops zum HC2 : 5
[DEBUG] 09:18:15: Routen über 3 hops zum HC2 : 0
[DEBUG] 09:18:15: Routen über 4 hops zum HC2 : 0
[DEBUG] 09:18:15: -------------------------------
[DEBUG] 09:18:15: Devices ohne Nachbarn [] : 0
[DEBUG] 09:18:15: Devices ohne routen [] : 0
Schon merkwürdig bei Dir.
Ich denke “tote Netzwerkknoten als inaktiv markieren” bedeutet, dass die Geräte in der Oberfläche als tot (rotes “X”) angezeigt werden, wenn diese nicht erreichbar sind.
Eine grafische Lösung wird im Fibaro Forum angeboten. Nicht ganz unkompliziert einzurichten (geht aber auch ohne RPI usw), jedoch schön anzuschauen und übersichtlich. Damit ist es einfach so ein Gerät zu finden. Suche mal nach “Yet Another lastWorkingRoute visualiser”.
Ich bin übrigens immer davon ausgegangen, dass das Datum von der WRRT den Zeitpunkt der Ermittlung dieses Wertes durch das HC darstellt. Nach dem Update, welches bewirkt, dass kein automatisches Remesh angestoßen wird, bleibt dieser Wert unverändert. Das bedeutet wohl, dass das Datum lediglich den Zeitpunkt des Remesh darstellt.
Ich habe mir das “Yet Another lastWorkingRoute visualiser” zusammengesucht. Die Anleitung im Fibaro Forum ist an einigen STellen sehr komplex mit PHP Installation beschrieben.
Glaube allerdings einen EINFACHEN Weg gefunden zu haben.
1.) Man lädt sich die im Forenbeitrag verlinkte “index.html” herunter
2.) Man holt sich die beiden Dateien mit Eingabe von
http://192.168.1.12/api/rooms (IP-anpassen!!)
http://192.168.1.12/api/devices (IP-anpassen!!)
und speichert sie dort ab, wo auch das Index File liegt.
3.) Auf dem Dateipfad sollte danach eine “devices.json” und eine “rooms.json” gespeichert sein
4.) Anschliessend einfach die index.html starten und ca. 1 Min warten…
Vielleicht mag das ja wer nachprobieren, bei mir hat es funktioniert.
@pblacky, konntest Du dein Devices damit finden? Hast Du die Anzahl der Hops verringern können?
Ich hab übrigens einen PHP Server installiert, den ich bei Bedarf über ein kleines Batch-Programm starte und dann die entsprechende HTML-Seite aufrufe. Damit gelingt die Darstellung innerhalb einer Sekunde. Man muss halt sich im Klaren sein, dass man seine Zugangsdaten hinterlegen muss.
Was mich etwas beschäftigt, ist dass das Datum der Routen seit dem Update unverändert bleibt. Ist das so richtig? Ich dachte immer, das Z-Wave Netz reagiert variabel und gestaltet sich auch alleine um. Andererseits warum sollte man dann eine Mesh Netzwerk Rekonfiguration anstoßen? Kann mir hier jemand auf die Sprünge helfen?
@pblacky, konntest Du dein Device damit finden? Hast Du die Anzahl der Hops verringern können?
Ich hab übrigens einen PHP Server installiert, den ich bei Bedarf über ein kleines Batch-Programm starte und dann die entsprechende HTML Seite aufrufe. Damit gelingt die Darstellung innerhalb einer Sekunde. Man muss halt sich im Klaren sein, dass man seine Zugangsdaten hinterlegen muss.
Was mich etwas beschäftigt, ist dass das Datum der Routen seit dem Update unverändert bleibt. Ist das so richtig? Ich dachte immer, das Z-Wave Netz reagiert variabel und gestaltet sich auch alleine um. Andererseits warum sollte man dann eine Mesh Netzwerk Rekonfiguration anstoßen? Kann mir hier jemand auf die Sprünge helfen?
Sorry wegen Mehrfachposts. Bekam keine Rückmeldung über korrekte Übertragung.
Hi Ändy,
das habe ich auch schon festgestellt, ist jetzt alles sehr statisch. Vermutlich hat Fibaro nach den vielen Beschwerden den Fehler in die andere Richtung produziert.
Ich habe gerade bei zwei Geräten eine manuelle reconfig angestoßen. Das hat funktioniert, also die “Last WRRT” hat sich geändert.
Leider hat niemand von uns vorher solche Erfahrungen dokumentiert. Aber ich bin schon der Meinung dass es jetzt nach 10 Tagen doch zu statisch ist.
Hi @Ändy
Danke der Nachfrage!
Habe seit einiger das RoutingInfo.lua (0.1.4) fast täglich im Einsatz und damit folgende Erfahrungen zu berichten:
Habe vor ca. eine Woche das gesamte Mesh Netzwerk reconfiguriert und dadurch haben sie die HOPS verändert.
Habe seither KEINE Geräte mit mehr als 3 Hops mehr und nur EIN Gerät mit 3 Hops, das finde ich super!
Die Devices ohne Nachbarn sind immer noch 43, was mich sehr nachdenklich macht!
Entweder gibt es da im Skript noch ein Problem, oder ich habe irgendeine Konfiguration übersehen!?
Würde mal einige weitere Erfahrungen von euch interessieren.
Hat irgendwer außer mir d"Devices ohne Nachbarn" mit dem Skript gefunden??
Auch das „Yet Another lastWorkingRoute visualiser“ funktioniert gut, wie ich es oben beschrieben hab.
Da bin ich jetzt auf der Suche nach einer Möglichkeit die Grafik aus dem HTML irgendwie abzuspeichern und mir mal mehrere Versionen zu erstellen um Veränderungen sehen zu können!
@pblacky, Windows 7 oder höher? Nimm doch das snipping tool von windows. Oder wenn der Rechner nicht komplett runtergefahren wird einfach die Tabs im Browser stehen lassen.
Ich glaube nicht dass es am Script liegt. Ich denke eher dass die Information vom HC2 selbst nicht ermittelt werden konnte. Die Daten stehen ja so auch in …/api/devices.
Vermutlich liest das HC nur bei einer Reconfiguration mit und gelangt so an die Infos. Evtl kann da auch was schief gehen und das Feld oder die Information bleibt leer. Das würde aber auch bedeuten, dass wir, wie schon mal vermutet, nur ein Abbild von irgendwann sehen und den augenblicklichen Stand gar kennen.
Leider alles nur reine Vermutung.
Hi ihr Lieben,
Hab mich jetzt mal auf die Suche nach einer Erklärung für die “fehlenden Nachbarn” gemacht.
Dabei hab ich eine Seite gefunden, wo es ebenfalls Skripte gibt, die das Mesh Netzwerk auslesen.
https://www.intelligentes-haus.de/tutorials/fibaro-tutorials/fibaro-home-center-2-mesh-netzwerk-analysieren
Mit dem Skript von dort, habe ich die Devices abgefragt, die mir “ohne Nachbarn” angezeigt wurden und festgestellt, dass sie DOCH Nachbarn haben!
Kann nicht beurteilen welche Skripte was genau machen, dazu fehlen mir die LUA Kenntnisse!
Aber vielleicht hilft es ja jemandem hier
Mir ist gerade was zu dem “Nachbarn” Thema eingefallen:
Ich habe einige Geräte (ca. 5-8 Stück) die ich in der HC2 angelernt, habe, aber derzeit nicht brauche. Diese liegen ohne Batterie in einer Lade!
Meist sind es Fernbedienungen, Plugs oder Türkontakte.
Ich habe diese Geräte in der HC2 nicht deaktiviert!
Kann es sein, dass benachbarte Geräte damit ein Problem haben?
Werde mal diese Geräte alle deaktivieren und nachsehen, obe sich was ändert!
Habe alle Geräte die nicht verwendet werden auf inaktiv gesetzt und danach das Mesh Netzwerk in der HC2 neu erstellt.
Trotzden 42 Geräte ohne Nachbarn!
Das wars also nicht …
Hi @pblacky
wenn Du weiterhin auf der Suche bist kannst Du mal prüfen ob es sich um Devices handelt, die die Ids nicht in zusammenhängender Reihenfolge haben. Ich mein da gab es ein Problem. Kannst z.B. mit dem HC Toolkit machen. Da gibt es eine schöne übersichtliche Liste. Weiß nur grad nicht wo und wie.