Jag har ju flera varianter av "CheckIfHome" script, som är avsedda för flera olika varianter av routers med ASUSWRT installerat i formen av RMerlins variant av firmware.
Jag tänker uppgradera detta script, och göra det lite mera generellt så att säga, så att man slipper så mycket ändringar och ja lättare att installera. Det har visat sig att det inte alltid är så lätt som jag önskat, så det är dags att ta tag i det hela.
Men jag behöver få tillgång till användare som kan köra lite testar åt mig, det är mycket enkla tester i första omgången, som man enbart kör en gång för att verifiera vad för typ av router man kör.
Jag letar således efter någon som har AC68 och AC87 router som kan bistå? Jag har själv AC3200 och AC88 - tillsammans så kan vi nog täcka in det mesta Evnt en AC56 eller N56 kan gärna vara med nu när jag tänker på de? Det kanske finns någon annan model också? AC66 eller N66 eller vad den heter?
Poängen är att jag behöver OLIKA routers så att scriptet kan anpassa sig själv och inte tvärt om...
Frivilliga?
Kör du med Asus router? Vill du bistå med lite test?
Hehehe jag är ju en av de där som du har fått hjälpa en himla massa så om du vill att jag ska hjälpa till så har jag ju som du kanske vet en AC87U
Kan tillägga att ditt script fungerar lysande hemma nu och det har verkligen möjliggjort en massa roliga scener.
Kan tillägga att ditt script fungerar lysande hemma nu och det har verkligen möjliggjort en massa roliga scener.
Den här får man testa på egen risk, supporten är lite bristfällig kan vi säga - det är en BETA trots allt
Jag kör den för närvarande live hemma, så den är nog rätt stabil.
Det sagt/skrivet: Detta är en helt ny variant på script och den kräver andra förutsättningar än mitt tidigare script. Dels så skall denna INTE startas varje minut (denna körs oändligt vart 5e sekund), och dels så måste den startas annorlunda.
Således, om vi antar att ni har den gamla versionen och ni lagt till en rad med "cru a ...." så måste ni ta bort den raden med "cru d ..." - om ni vill veta vad ni skapat tidigare så slå "cru l" så listas alla aktiva tidsstyrda aktiviteter upp - ta sedan bort den som startar den gamla CheckIfHome...
När ni gjort det så fungerar självklart inte någon övervakning när något kommer eller går, så skapa då denna fil i /jffs/scripts - döp den till något kul...
Ni behöver antagligen ändra lite i början på de variabler som sätter upp det hela - OBS ni behöver bara ändra i början, ni slipper hacka koden på alla ställen... Observera att denna version skapar en map på RAM disken som finns i alla Asus routers med RMerlin firmware - så ni slipper alltså slitaget på USB minnet osv.
När ni skapat filen ovan så behöver ni också ändra i /jffs/scripts/services-start genom att lägga till start av ovanstående script. Om ni döpte scriptet ovan till CheckIfHome2 så blir det:
Sedan MÅSTE ni starta om routern - scriptet blir inte aktivt utan att ni gör det....
Testa på egen risk - glöm inte ändra IP / Password / VD-ID och MAC adresserna ovan.
Just det, för närvarande är VDn samma som senaste versionen med 2 labels och 4 knappar.
Jag kör den för närvarande live hemma, så den är nog rätt stabil.
Det sagt/skrivet: Detta är en helt ny variant på script och den kräver andra förutsättningar än mitt tidigare script. Dels så skall denna INTE startas varje minut (denna körs oändligt vart 5e sekund), och dels så måste den startas annorlunda.
Således, om vi antar att ni har den gamla versionen och ni lagt till en rad med "cru a ...." så måste ni ta bort den raden med "cru d ..." - om ni vill veta vad ni skapat tidigare så slå "cru l" så listas alla aktiva tidsstyrda aktiviteter upp - ta sedan bort den som startar den gamla CheckIfHome...
När ni gjort det så fungerar självklart inte någon övervakning när något kommer eller går, så skapa då denna fil i /jffs/scripts - döp den till något kul...
Code: Select all
#!/bin/sh
#
# HC2 info
HC2Password=<ett lösenord till er HC2 admin konto>
HC2IP=191.168.1.5
HC2VDDeviceID=14
#
# MacAdresser att hålla reda på....
Mac1=48:5A:3F:8C:BD:48
Mac2=48:5A:3F:6E:CB:A4
#
########################### Don't touch #################################
#
# Kolla om mappen finns i /tmp (RAM disken - måste återskapas varje omstart)
if [ ! -d /tmp/CheckUser ];
then
mkdir /tmp/CheckUser
fi
#
# Oändlig loop - skall aldrig dö, förhoppningsvis...
while [ 1 = 1 ]
do
#
# Variabler för status
User1=Borta
User2=Borta
#
# Samla ihop alla trådlösa IP adresser...
macadresser=`wl -i eth1 assoclist`
#
# AC87 har en Quantenna för 5GHz, kräver specialkod
if uname -n | grep -q AC87; then
macadresser=`wl -i eth1 assoclist`
antal=`qcsapi_sockrpc get_count_assoc wifi0`
while [ $antal -gt 0 ]
do
antal=`expr $antal - 1`
macadresser="`qcsapi_sockrpc get_station_mac_addr wifi0 $antal`;$macadresser"
done
else
macadresser=$macadresser";"`wl -i eth2 assoclist`
# AC3200 har två 5GHz band, kräver specialkod
if uname -n | grep -q AC3200; then
macadresser=$macadresser";"`wl -i eth3 assoclist`
fi
fi
#
# User 1
case "$macadresser" in
*$Mac1*)
User1=Hemma
;;
esac
#
if [ "$User1" = Hemma ]
then
if [ ! -f /tmp/CheckUser/Hemma_User1 ]
then
touch /tmp/CheckUser/Hemma_User1
wget -qO- "http://admin:${HC2Password}@${HC2IP}/api/callAction?deviceID=${HC2VDDeviceID}&name=pressButton&arg1=3" >/dev/null 2>&1
fi
else
if [ -f /tmp/CheckUser/Hemma_User1 ]
then
rm -f /tmp/CheckUser/Hemma_User1
wget -qO- "http://admin:${HC2Password}@${HC2IP}/api/callAction?deviceID=${HC2VDDeviceID}&name=pressButton&arg1=5" >/dev/null 2>&1
fi
fi
#
# User 2
case "$macadresser" in
*$Mac2*)
User2=Hemma
;;
esac
#
if [ "$User2" = Hemma ]
then
if [ ! -f /tmp/CheckUser/Hemma_User2 ]
then
touch /tmp/CheckUser/Hemma_User2
wget -qO- "http://admin:${HC2Password}@${HC2IP}/api/callAction?deviceID=${HC2VDDeviceID}&name=pressButton&arg1=4" >/dev/null 2>&1
fi
else
if [ -f /tmp/CheckUser/Hemma_User2 ]
then
rm -f /tmp/CheckUser/Hemma_User2
wget -qO- "http://admin:${HC2Password}@${HC2IP}/api/callAction?deviceID=${HC2VDDeviceID}&name=pressButton&arg1=6" >/dev/null 2>&1
fi
fi
#
# Avvakta några sekunder innan nästa koll
sleep 5
#
done
När ni skapat filen ovan så behöver ni också ändra i /jffs/scripts/services-start genom att lägga till start av ovanstående script. Om ni döpte scriptet ovan till CheckIfHome2 så blir det:
Code: Select all
source /jffs/scripts/CheckIfHome2
Testa på egen risk - glöm inte ändra IP / Password / VD-ID och MAC adresserna ovan.
Just det, för närvarande är VDn samma som senaste versionen med 2 labels och 4 knappar.
Kör Home Assistant efter totalt nederlag för HomeSeer
Wow! Fick lite tid över idag och testade ditt uppdaterade script. Så snyggt och bra uppdaterat! Kan meddela att scriptet fungerade utan problem!
Dock försökte du lura mig med denna rad.
Har man döpt filen till CheckIfHome2 så ska den självklart vara länkad till den och inte update-hosts.sh
Dock försökte du lura mig med denna rad.
Code: Select all
source /jffs/scripts/update-hosts.sh
Just nu känns det stabilt
Om du får lite tid över och/eller har möjlighet så får du gärna titta på något lösning för repeaters. Kollade runt lite men hittar inget vlan där mina enheter ligger(På repeatern). Försökte med vlan3 men fanns inget som hette så. Har även Googlat runt lite på iptables men det känns som steget där är för lång för mig
Om du får lite tid över och/eller har möjlighet så får du gärna titta på något lösning för repeaters. Kollade runt lite men hittar inget vlan där mina enheter ligger(På repeatern). Försökte med vlan3 men fanns inget som hette så. Har även Googlat runt lite på iptables men det känns som steget där är för lång för mig
För att svarar på repeater frågan behöver jag lite skärmbilder/information:
Om du har en mobil uppkopplad enbart på WiFi repeatern, hur ser det då ut i listan över anslutna devices som du kan klicka på i översiktsbilden i GUIt på routern? Och sortera gärna på vilken typ (dvs så att man ser vilka enheter som sitter på kabel, wifi 2.4GHz och wifi 5.0GHz osv)?
Om du gör en "iptables -Lv" - vilken output får du då?
Om du har en mobil uppkopplad enbart på WiFi repeatern, hur ser det då ut i listan över anslutna devices som du kan klicka på i översiktsbilden i GUIt på routern? Och sortera gärna på vilken typ (dvs så att man ser vilka enheter som sitter på kabel, wifi 2.4GHz och wifi 5.0GHz osv)?
Om du gör en "iptables -Lv" - vilken output får du då?
Kör Home Assistant efter totalt nederlag för HomeSeer
Repeatern är en RP-AC52 från Asus.
Som du ser nedan på bilden så ser man ansluta enheter till repeatern genom att det skapas en siffra upptill på ikonen. Min mobil är på bilden uppkopplad på repeatern och såldes inte "hemma". Karins mobil ligger dock kvar på routern och är då hemma eftersom den ligger på vlan1. Mobilerna ansluter till repeaterns 2.4 band. Repeatern ligger med i listan på vlan1.
iptables -Lv ger mig endast
iptables: No chain/target/match by that name.
Dock ger iptables -L mig en lista. Vill du ha en printscreen av den?
Som du ser nedan på bilden så ser man ansluta enheter till repeatern genom att det skapas en siffra upptill på ikonen. Min mobil är på bilden uppkopplad på repeatern och såldes inte "hemma". Karins mobil ligger dock kvar på routern och är då hemma eftersom den ligger på vlan1. Mobilerna ansluter till repeaterns 2.4 band. Repeatern ligger med i listan på vlan1.
iptables -Lv ger mig endast
iptables: No chain/target/match by that name.
Dock ger iptables -L mig en lista. Vill du ha en printscreen av den?
jag får inte detta att funka.. har lagt scriptet i rätt katalog på routern och det heter
checkifhome.sh
men när jag försöker köra det får jag bara felkod
här är scriptet:
vad gör jag för fel?
checkifhome.sh
men när jag försöker köra det får jag bara felkod
Code: Select all
-sh: /jffs/scripts/checkifhome.sh: line 33: syntax error: unexpected word (expecting "in")
Code: Select all
#!/bin/sh
#
# HC2 info
HC2Password=xxxxxx
HC2IP=191.168.1.47
HC2VDDeviceID=14
#
# MacAdresser att hålla reda på....
Mac1=EC:1F:72:xxxxxx
Mac2=40:B8:37:xxxxxx
#
########################### Don't touch #################################
#
# Kolla om mappen finns i /tmp (RAM disken - måste återskapas varje omstart)
if [ ! -d /tmp/CheckUser ];
then
mkdir /tmp/CheckUser
fi
#
# Oändlig loop - skall aldrig dö, förhoppningsvis...
while [ 1 = 1 ]
do
#
# Variabler för status
User1=Borta
User2=Borta
#
# Samla ihop alla trådlösa IP adresser...
macadresser=`wl -i eth1 assoclist`
#
# User 1
case "$macadresser" in
*$Mac1*)
User1=Hemma
;;
esac
#
if [ "$User1" = Hemma ]
then
if [ ! -f /tmp/CheckUser/Hemma_User1 ]
then
touch /tmp/CheckUser/Hemma_User1
wget -qO- "http://admin:${HC2Password}@${HC2IP}/api/callAction?deviceID=${HC2VDDeviceID}&name=pressButton&arg1=3" >/dev/null 2>&1
fi
else
if [ -f /tmp/CheckUser/Hemma_User1 ]
then
rm -f /tmp/CheckUser/Hemma_User1
wget -qO- "http://admin:${HC2Password}@${HC2IP}/api/callAction?deviceID=${HC2VDDeviceID}&name=pressButton&arg1=5" >/dev/null 2>&1
fi
fi
#
# User 2
case "$macadresser" in
*$Mac2*)
User2=Hemma
;;
esac
#
if [ "$User2" = Hemma ]
then
if [ ! -f /tmp/CheckUser/Hemma_User2 ]
then
touch /tmp/CheckUser/Hemma_User2
wget -qO- "http://admin:${HC2Password}@${HC2IP}/api/callAction?deviceID=${HC2VDDeviceID}&name=pressButton&arg1=4" >/dev/null 2>&1
fi
else
if [ -f /tmp/CheckUser/Hemma_User2 ]
then
rm -f /tmp/CheckUser/Hemma_User2
wget -qO- "http://admin:${HC2Password}@${HC2IP}/api/callAction?deviceID=${HC2VDDeviceID}&name=pressButton&arg1=6" >/dev/null 2>&1
fi
fi
#
# Avvakta några sekunder innan nästa koll
sleep 5
#
done
Hej jolerius,
Om du låter bli att ändra i min kod så kommer det antagligen att fungera - du har tagit bort kod under "Don't touch" - då kan det bli exakt det du nu råkar ut för, saker slutar att fungera.
Om du låter bli att ändra i min kod så kommer det antagligen att fungera - du har tagit bort kod under "Don't touch" - då kan det bli exakt det du nu råkar ut för, saker slutar att fungera.
Kör Home Assistant efter totalt nederlag för HomeSeer
Jag trodde jag bara tagit bort det som hade specifikt med de mer speciella routrarna och göra?? Eller kan den koden ligga kvar trots att man inte har någon av de routrarna?Bamsefar wrote:Hej jolerius,
Om du låter bli att ändra i min kod så kommer det antagligen att fungera - du har tagit bort kod under "Don't touch" - då kan det bli exakt det du nu råkar ut för, saker slutar att fungera.
Skickat från min SM-G928F via Tapatalk
Syftet med koden är att ALLA skall använde HELA och SAMMA kod, och är det någon modell som kommer till med speciella radio delar (som AC87 resp AC3200, och troligen AC5300 men den har jag inte tillgång till) så kommer jag uppdatera koden så att den täcker även den modellen. Många, de flesta, av Asus routers använder liknande kommandon till att extrahera ut MAC adresserna osv. Så i det längre perspektivet så kommer det antagligen att underlätta det hela.
Jag är inte säker på vad som händer när man klipper ut koden såsom du gjort, jag har aldrig och kommer aldrig supporta ändrad kod. Men troligen är det så att dina mobiler använder 5GHz nätet, och du tittar enbart på 2.4GHz nätet med den koden du har. Och det troliga felet är att alltså ingen mobil är uppkopplad mot 2.4GHz nätet, och då är strängen för MAC adresser tom, och då snubblar koden - av en händelse så fixar original koden detta läget utan att bugga ut
Jag är inte säker på vad som händer när man klipper ut koden såsom du gjort, jag har aldrig och kommer aldrig supporta ändrad kod. Men troligen är det så att dina mobiler använder 5GHz nätet, och du tittar enbart på 2.4GHz nätet med den koden du har. Och det troliga felet är att alltså ingen mobil är uppkopplad mot 2.4GHz nätet, och då är strängen för MAC adresser tom, och då snubblar koden - av en händelse så fixar original koden detta läget utan att bugga ut
Kör Home Assistant efter totalt nederlag för HomeSeer
tyvärr hjälpte det inte att klistra in scriptet i sin helhet.
Får samma fel, men på en annan rad nu. Dock är det samma rad, bara att den har flyttats ner pga att det är flerrader ovanför i scriptet.
Så jag förstår verkligen inte vad jag gör för fel? Använder notepad++ för att göra själva scriptet och spara det som "unix script file (*.bash; *.sh; *.bsh; *.csh). Kan det ha något med formateringen att göra? Använder windows 10 om det spelar någon roll?
Kan jag skapa scriptet direkt i routern på nåt sätt???
Får samma fel, men på en annan rad nu. Dock är det samma rad, bara att den har flyttats ner pga att det är flerrader ovanför i scriptet.
Code: Select all
-sh: checkifhome: line 48: syntax error: unexpected word (expecting "in")
Kan jag skapa scriptet direkt i routern på nåt sätt???
Ändrade programmeringsspråk till unix i notepad++ och blev av med felet.
Men hur vet jag att det har hänt något innan jag startar om routern?
När jag skriver så verkar det som att det inte händer något. När jag trycker på enter så kommer det bara upp en ny tom rad, där jag kan skriva, men den uppfattar det inte som kommandon.
Kan inte heller hitta services-start i /jffs/scripts/ hur skapar jag den lr vad har jag missat??
Skickat från min SM-G928F via Tapatalk
Men hur vet jag att det har hänt något innan jag startar om routern?
När jag skriver
Code: Select all
source /jffs/scripts/chekcifhome
Kan inte heller hitta services-start i /jffs/scripts/ hur skapar jag den lr vad har jag missat??
Skickat från min SM-G928F via Tapatalk
Aha du försökte dig på att göra så. Jag gör allt direkt i routern med t.ex. vi editorn. Men så är jag gammal UNIX sysadm också...
Skapa den filen som heter services-start. Det är välkommenterat i asuswrt forumet under RMerlin, och i hans readme fil resp wiki sidor.
Skapa den filen som heter services-start. Det är välkommenterat i asuswrt forumet under RMerlin, och i hans readme fil resp wiki sidor.
Kör Home Assistant efter totalt nederlag för HomeSeer