Projekt: Home Automation med en iPhone

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2008-08-13 21:53

Jaha, alltid kul när man börjar koda på något nytt som kan bli riktigt bra när det är färdigt, bara för att upptäcka att det finns ett par "buggar" som man inte riktigt själv kan fixa...

Jag tänkte se om jag kunde göra ett AppleScript som märker av när min iPhone är i närheten av lägenheten och då gör saker när jag kommer och går. Idéen var att när jag lämnar min lägenhet så stoppas automatiskt musiken, Adium sätter rätt status osv (och i framtiden att lampor, högtalare, tv-spel etc stängs av med hjälp av X10 eller liknande - en chans att vara miljövänlig OCH lat ).

För att kolla om iPhonen är här eller ej pingas den över nätverket var 20:e sekund (lite overkill kanske men jag ville att allt ska vara redo när jag kommer in genom dörren).

Nu kommer den tråkiga biten: mobilen ansluter bara till nätverket när den är vaken. Dvs, jag kan inte bara vandra in genom dörren med mobilen i fickan och tro att allt är igång. Det är rätt lätt fixat genom jag får trycka igång mobilen, som automatiskt ansluter till nätverket, samtidigt som jag drar fram nycklarna. Går att överleva men inte perfekt.
Ett större problem däremot är att mobilen lämnar nätverket efter ca 30 sekunder om den är i vila och inte laddas, enda lösningen jag har kommit på är att lämna iPhonen i dockan hela tiden när man är hemma. Rätt effektiv påminnelse om att ladda mobilen men tar man med sig den ut i köket så hade hela huset släckts ner vilket kan bli lite tröttsamt i längden...
Å andra sidan använder jag app:en Remote med Stay Connected aktivt större delen av tiden jag spenderar hemma vilket borde hålla igång nätverksanslutningen och därmed minimera antalet blackouts...

Iaf här är första delen av mitt nya hobbyprojekt, ett AppleScript som kollar ifall iPhonen (eller vilken annan nätverksenhet som helst faktiskt) finns på nätverket och gör saker.

Om någon har några bra tips & idéer på hur man kan lösa nätverksproblemen och förbättra saker så hojta till!

Nu gäller det att klura ut hur man får X10 att fungera med en Mac...

-- =================
-- iPhone / Network Device Detection Script
-- Mikael Mannberg 2008
-- =================

-- =================
-- Configuration
-- =================

set DeviceIP to "192.168.1.67"
global DeviceIP


-- =================
-- Actions
-- =================

to deviceConnected()
	
	say "The device has connected to the network."
	
	-- Do stuff here
	
end deviceConnected


to deviceLeft()
	
	say "The device has left the network."
	
	-- Do stuff here
	
end deviceLeft


-- =================
-- Main
-- =================

set previousResult to 1
global oldResult
set theResult to 1
global theResult

repeat
	
	set previousResult to theResult
	set theResult to pingDevice()
	
	if not theResult = previousResult then
		
		if theResult = 1 then
			deviceConnected()
		else if theResult = 0 then
			deviceLeft()
		else
			display dialog "Error: " & theResult
		end if
		
	end if
	
	delay 20
	
end repeat


-- =================
-- Functions
-- =================

to pingDevice()
	
	try
		-- Ping the IP but only return the last line which reports whether packets were received or not.
		set Ping to (do shell script "ping -c3 " & DeviceIP & " | grep \"3 packets\"")
		
		set text item delimiters to " "
		set successfullPings to text item 4 of Ping as string
		set text item delimiters to ""
		
		if successfullPings > 0 then
			return 1
		else
			return 0
		end if
		
		
	on error number errNum
		
		set text item delimiters to ""
		return errNum
		
	end try
	
end pingDevice

Går det inte att använda Bluetooth istället?

Ifall du bara ska göra saker på datorn så finns det program för det redan exempelvis Home Zone.

/Adam

Edit: Kollade lite i Home Zone och går att ställa in den att öppna en fil dvs ett applescript eller liknande. Datorn hittar min iPhone även om den är i viloläge.

  • Medlem
  • International user
  • 2008-08-13 23:16
Ursprungligen av adamsen87:

Går det inte att använda Bluetooth istället?

Ifall du bara ska göra saker på datorn så finns det program för det redan exempelvis Home Zone.

/Adam

Edit: Kollade lite i Home Zone och går att ställa in den att öppna en fil dvs ett applescript eller liknande. Datorn hittar min iPhone även om den är i viloläge.

Jo, har använt HomeZone förut med min gamla mobil, problemet då var att det hade alldeles för kort räckvidd, bara jag gick utanför mitt rum så såg den inte min mobil via BT längre. Ungefär samma problem som med iPhonen, bara olika anledning Och, när jag testade HomeZone tidigare idag hittade den bara min iPhone 3G om Bluetooth sidan i Settings var öppen. Med WiFi har jag samma problem som med mitt script, mobilen kopplar ner när laddaren inte är ansluten. Hur har du gjort för att få den att hitta din mobil?

Tänkte inte på det men satte iPhonen i vila när den var i Bluetoothinställningarna och då hittade datorn iPhonen. Så det är som du säger tyvärr för skulle gärna ha någon liknande lösning själv.

/Adam

Först vill jag säga att jag tycker det är en mycket bra idé! Ett tips kanske kunde vara att använda Bonjour. Då slipper du periodisk ping. Problemet är ju att du förmodligen måste ha en app igång, och det kanske inte är så bra om spisen stängs av när det ringer.

En annan fördel är att jag misstänker att man kan automatisera Bonjour-events. Dvs. när en enhet dyker upp i .local så kan man agera på det. Kan hända att du behöver en liten app i OS X som håller reda på det dock.

Men jag ska fundera vidare på det..

1
Bevaka tråden