Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Hjelp til nettverksovervåkning via events


TropiskNektar

Anbefalte innlegg

Jeg skulle gjerne hatt noen tips og forslag til hvordan jeg kan gjøre dette på en bedre måte.

 

Jeg bruker plugin for å pinge enheter i nettverket mitt og vise dem som ONLINE eller OFFLINE i HomeSeer. 

Og i HSTouch har jeg da en egen side hvor jeg lister opp alle enhetene, og om en av de jeg definerer som kritisk går ned, så skal menyknappen lyse rødt ved å bruke StatusTracking.

 

For å løse det, så har jeg opprettet en counter med navn PINGStatuser hvor 1 = Alt OK og 2 = Feil.

Og for å sette denne telleren så bruker jeg 2 events:

Pingstatuser - ERROR

If Router changes and becomes OFFLINE

Or If Server1 changes and becomes OFFLINE

Or If Switch01 changes and becomes OFFLINE

Or If Switch02 changes and becomes OFFLINE

Or if NAS01 changes and becomes OFFLINE

Then Reset counter PINGStatuser to value 2

 

Pingstatuser - OK

If PINGStatuser value has become this absolute value: 2

And If Router has a value equal to ONLINE

And If Server1 has a value equal to ONLINE

And If Switch01 has a value equal to ONLINE

And If Switch02 has a value equal to ONLINE

And If NAS01 has a value equal to ONLINE

Then Wait 15 Seconds

Then Reset counter PINGStatuser to value 1

 

Problemet her er at telleren ofte ikke går til 1. Hvis jeg setter den manuelt til 2, så går den over til 1 etter 15 sekunder slik den skal, men det virker som at dersom eventen ikke slår inn første gangen, og at da verdien allerede er 2 neste gang istedenfor at den blir 2, så vil ikke eventen kjøre.

Videre er jeg redd for at det skal skje noe loop eller noe lignende, og det er derfor jeg har lagt inn at den skal vente 15 sekunder med å sette verdien til 1.

 

Hvilket andre måter kan jeg løse dette på?

 

Her er screenshot av hvordan jeg har satt opp events:

MEVNRXBF.jpeg

 

 

Endret av TropiskNektar
Lenke til kommentar
Del på andre sider

Har aldri brukt counter til noe sånt og ville nok heller brukt en device. Devicen kan ha verdi 0 (ok) eller 1 (error). 

 

Vet ikke om det løser problemet, men jeg ser ikke noen grunn til at det ikke skulle virke i hvertfall :)

 

Hvordan pinger du, forresten?

Endret av ZoRaC
Lenke til kommentar
Del på andre sider

Hvis du bruker BLLAN kan du prøve dette scriptet. 

Legg inn Or IF  "This device just had its value changed" for hver enhet du vil skal sjekkes.

Og på linje 2 merket i scriptet legger du inn device reference til alle enhetene du vil sjekke og på linje tre legger du inn reference til enheten du vil skal vise statusen..

Public Sub Main(Parm As Object)

    Dim enheter = New Integer() {165, 141, 143, 142, 140, 139, 138} 'Her legges alle enhetene som skal sjekkes
    Dim utenhet As Integer = 194 'Enhet som skal holde statusen som settes på slutten
    Dim teller As Integer
    Dim tempval As Integer

    For Each enhet As Integer In enheter
        tempval = hs.DeviceValueEx(enhet)
        If tempval = 0 Then
            teller = teller + 1

        End If
    Next

    If teller = 0 Then
        hs.SetDeviceValueByRef(utenhet, 100, True)
    Else
        hs.SetDeviceValueByRef(utenhet, 0, True)
    End If

End Sub

Ikke helt oppe og går på vb.net men det er det jeg bruker, da trenger du bare en event og den vil oppdateres hver gang det er en endring.

Lenke til kommentar
Del på andre sider

Jeg brukte en SNMP monitor og ble veldig glad i den, men før jeg rakk å kjøpe den så forsvant den fra de offisielle listene og jeg fant aldri noe lignende igjen... Så tusen takk for tipset om Jon00 sin SNMP plugin! :-)

Men jeg tror ikke det spiller noen rolle om jeg bruker en virtuell enhet eller en teller.. For HSTouch sin del så spiller det ingen rolle og funksjonen for å sette verdien 1 eller 2 fungerer som den skal. Eneste er at eventen ikke kjører.

 

En jallaløsning som jeg får til selv er kanskje å ha at eventen kjører hvert minutt, og hvis en av enhetene er OFFLINE, så skal verdien settes til 2, og om alle er ONLINE så skal den settes til 1.

Er det noen som kan se noe problem i å gjøre det på den måten?

Altså starte eventen med:

IF The event will automatically trigger every 1m, 0s

Også resten av enhetene som skal være ONLINE eller OFFLINE

 

EDIT:

Jeg bruker forøvrig "PINGER" for å pingteste enhetene

Endret av TropiskNektar
Lenke til kommentar
Del på andre sider

Ah, jeg skjønte ikke hva du mente som ikke fungerte, men ser det nå. :) 

 

Du kan ha event 2 til å være disablet som default, men satt til å kjøre hvert minutt. I første event (en enhet går offline) så enabler du event nr 2 (som sjekker online). Den vil da kjøre hvert minutt til alle enheter er online igjen. Legg så til at den skal disable seg selv igjen. 

 

Usikker om du kan enable/disable direkte eller om du må bruke "immidiate script". 

Lenke til kommentar
Del på andre sider

Har også lekt litt med nettverks status. Bruker virual devicer, bruker enten en for hver network item eller en virutal device som status for alt, eller kan også bruke kombi av dette

 

Her er C# eksempel kode for å oppdatere en Virtual Device for hver network device. Jeg bruker HOSTS fil og lager samme navn på network device og virtual device (som i hostnames array i kode) for å gjøre det enkelt. Bruker .net Ping, har da mulig for sette timeout og ping respons++.

public object Main(object[] Parms)
{
	// @Backspace networkstatus example

    string[] hostnames = { "Workstation", "Router", "Printer" }; // updated in HOSTS file with IP, Virtual devices have same name

	Ping myping = new Ping();
	PingReply preply;
	int timeout = 1000; // timeout for ping in milliseconds 
	foreach (string h in hostnames)
	{
		
		preply = myping.Send(h, timeout); // ping network device

		if (preply.Status == IPStatus.Success)
		{
			hs.SetDeviceStringByName(h,h.ToString() + " [" + preply.Address.ToString() + "] is alive - " + preply.RoundtripTime.ToString() + " ms",true);
			hs.SetDeviceValueByName(h,0); // set OK status			
		}
		else
		{
			hs.SetDeviceStringByName(h,"Ping " + h.ToString() + " failed!",true);
			hs.SetDeviceValueByName(h,1); // set failed status						
		}

	}

return 0;
}

Resultat blir da når en enhet ikke svarer:

networkstatus1.PNG

 

Laget også en annen variant hvor jeg bare bruker bare en Virtual Device og samler status på den + text. Hvis en av de er feil blir status satt til "Failed".

 

networkstatus2.PNG

 

Hvis alt OK ser det slik ut:

networkstatus3.PNG

 

Så veldig greit å kunne scripte litt for HS triggers og logikk er litt tungvindt synes jeg (spesielt når en ikke har "else") ?

 

 

 

  • Like 2
Lenke til kommentar
Del på andre sider

Vanlig time trigger, f.eks  hvert 5 min eller hva en ønsker. Men jeg har ikke noe behov for å monitorere så mye av dette enda så det går ikke fast hos meg. Tenkte kanskje heller lage et internet knapp/icon med status som "connected", latency til en kjent norsk server, samt upload/download rate test en gang eller to i døgnet for litt statistikk... men lyse sitt fiber nett er veldig stabilt og raskt her jeg bor så ser ikke helt nyttverdien her for meg bortsett fra å lære noe mere HS og scripting? 

 

Trigger.PNG

 

Lenke til kommentar
Del på andre sider

Ser ut som et bra script det backspace :) Men jeg er usikker på om det løser problemet jeg har.

PINGER funker veldig bra til å pinge en virtual device og gi status når den er offline eller online, men problemet kommer når jeg har en VD som skal varsle dersom en av enhetene er online, også fjerne varselet når alle enhetene er online.

 

Årsaken til at jeg har det er at jeg har en nettverksfane i HSTouch og jeg ønsker at menyknappen skal lyse rødt dersom jeg har en kjernekomponent som er nede.

gateway, aksesspunkt, DNS/DHCP server, etc.

 

Jeg har prøvd å tenke ut hvordan jeg skal løse dette i noen dager nå uten å ha kommet noe lenger.. Jeg som ikke kan powershell har klart å sette sammen et powershell script som pinger alle enhetene mine og setter min moder-VD til offline dersom en av den går ned, men jeg kom ikke lenger når jeg ville ha moder-VDen til å kun gå til online dersom alle enhetene var online samtidig.. Så samme problem her som jeg har med Events.

Lenke til kommentar
Del på andre sider

29 minutter siden, Blodstrupmoen skrev:

Fikk satt opp PRTG her nå, det ser ut til å være midt i blinken for overvåking av hjemmenettet.

Ja, det er det det er laget for. :) 

Jeg har satt opp pushvarsel hvis nede, og email hvis nede over 5 minutter.

 

Har lurt på om jeg skal gjøre noe for å få det inn i HomeSeer, men jeg har ikke hatt behovet enda.

Lenke til kommentar
Del på andre sider

23 hours ago, TropiskNektar said:

Ser ut som et bra script det backspace :) Men jeg er usikker på om det løser problemet jeg har.

PINGER funker veldig bra til å pinge en virtual device og gi status når den er offline eller online, men problemet kommer når jeg har en VD som skal varsle dersom en av enhetene er online, også fjerne varselet når alle enhetene er online.

 

Årsaken til at jeg har det er at jeg har en nettverksfane i HSTouch og jeg ønsker at menyknappen skal lyse rødt dersom jeg har en kjernekomponent som er nede.

gateway, aksesspunkt, DNS/DHCP server, etc.

 

Jeg har prøvd å tenke ut hvordan jeg skal løse dette i noen dager nå uten å ha kommet noe lenger.. Jeg som ikke kan powershell har klart å sette sammen et powershell script som pinger alle enhetene mine og setter min moder-VD til offline dersom en av den går ned, men jeg kom ikke lenger når jeg ville ha moder-VDen til å kun gå til online dersom alle enhetene var online samtidig.. Så samme problem her som jeg har med Events.

 

Hvis jeg forstår det riktig så ønsker du å oppdatere en VD med status på dine "nettverks VD'er". Det blir litt som den VD med multistatus jeg viste i forrige post. Sjekker  f.eks 3 VD som oppdateres av PINGER (eller i mitt tilfelle et script), og så setter status på en egen "status" VD. Virker fint med C# script.

 

Men jeg prøvde å sette opp to events som du hadde i utgangspunktet:

 

Har 3 stk nettverks items (Router, Printer, Workstation), når alle er OK så er "master" status Network Monitor også OK.

Network_devices.thumb.PNG.4301f225163050a66dd8b2fe0fc87e77.PNG

 

Men hvis en av disse 3 network items har "No Respons", så blir det ERROR også på Network Monitor VD:

Network_devices2.thumb.PNG.b6a902fd63804c4ffeb72c532399fa82.PNG

 

Så jeg prøvde med å sette opp 2 Events er nedenfor litt likt det du gjør. Forskjell er at jeg i "OK" event bruker network monitor VD "have been ERROR for at least 1 s" i stedet for "has become" som du brukte". Dette virker ihverfall for meg, når en eller flere items er "no response" så er også master VD flagget med ERROR, når alt er OK igjen så er også master VD flagget OK :

Network_events.thumb.PNG.060877ed57d368c2a254232266be4522.PNG

 

...vet ikke helt om det var dette du prøver å gjøre?  Uansett lettere med script når en først greier å sette seg inn i det.

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.